···1203120312041204// #region Object schema
1205120512061206+// `ObjectSchema` accepts a `LooseObjectShape` instead of `ObjectShape` to allow
12071207+// for circular references, and this means preventing TypeScript from attempting
12081208+// to eagerly evaluate the shape, unfortunate that this means we can't throw a
12091209+// type issue if you add a non-schema value into the shape though
12101210+12061211export type LooseObjectShape = Record<string, any>;
12071212export type ObjectShape = Record<string, BaseSchema>;
12081213···12391244 readonly type: 'object';
12401245 readonly shape: Readonly<TShape>;
1241124612471247+ // passing `InferObjectX` into `extends BaseSchema<...>` eagerly evaluates the
12481248+ // shape, however, passing it as a property means that it's only evaluated if
12491249+ // you attempt to grab the value. `InferX` is conditioned to grab from
12501250+ // `kObjectType` first before going to `kType`
12421251 readonly [kObjectType]?: { in: InferObjectInput<TShape>; out: InferObjectOutput<TShape> };
12431252}
12441253