/** * Projection schema. */ export type ProjectionSchema = { [property: string]: boolean | ProjectionSchemaPropertyOptions | undefined; }; /** * Projection schema key. */ export type ProjectionSchemaKey = string | symbol; /** * Projection schema factory. */ export type ProjectionSchemaFactory = () => | ProjectionSchema | ProjectionSchemaKey; /** * Projection schema property options. */ export type ProjectionSchemaPropertyOptions = { select?: boolean; scopes?: ProjectionSchemaScopes; schema?: ProjectionSchema | ProjectionSchemaFactory | ProjectionSchemaKey; }; /** * Projection schema scopes. */ export type ProjectionSchemaScopes = { [scope: string]: boolean | ProjectionSchemaScopeOptions | undefined; }; /** * Projection schema scope options. */ export type ProjectionSchemaScopeOptions = { select?: boolean; };