import {Service} from '@e22m4u/js-service'; import {ProjectDataOptions} from './project-data.js'; import {ProjectionSchema} from './projection-schema.js'; import {ProjectionSchemaDefinition} from './projection-schema-definition.js'; /** * Data projector. */ export class DataProjector extends Service { /** * Define schema. * * @param schemaDef */ defineSchema(schemaDef: ProjectionSchemaDefinition): this; /** * Project. * * @param data * @param schema * @param options */ project( data: T, schema: ProjectionSchema, options?: ProjectDataOptions, ): T; /** * Project input. * * @param data * @param schema * @param options */ projectInput( data: T, schema: ProjectionSchema, options?: Omit, ): T; /** * Project output. * * @param data * @param schema * @param options */ projectOutput( data: T, schema: ProjectionSchema, options?: Omit, ): T; }