@automapper/types
Version:
AutoMapper TypeScript Type Definitions
177 lines (176 loc) • 19.5 kB
TypeScript
import { TransformationType } from './enums';
import type { CreateMapOptions, MapArrayOptions, MapOptions } from './options';
import type { Dictionary, PrimitiveConstructorWithDate, PrimitiveWithDate, Selector, SelectorReturn, ValueSelector } from './utils';
import type { MapPlugin } from './plugin';
export interface ConditionPredicate<TSource extends Dictionary<TSource> = any> {
(source: TSource): boolean;
}
export interface MapAction<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any> {
(source: TSource, destination: TDestination): void;
}
export interface NamingConvention {
splittingExpression: RegExp;
separatorCharacter: string;
transformPropertyName: (sourcePropNameParts: string[]) => string;
}
export interface Resolver<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TResolvedType = SelectorReturn<TDestination>> {
resolve(source: TSource, destination?: TDestination): TResolvedType;
}
export interface Converter<TConvertSource = unknown, TConvertDestination = unknown> {
convert(source: TConvertSource): TConvertDestination;
}
export declare type MemberMapReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = MapDeferReturn<TSource, TDestination, TSelectorReturn> | MapWithReturn<TSource, TDestination, TSelectorReturn> | MemberMapReturnNoDefer<TSource, TDestination, TSelectorReturn>;
export declare type MemberMapReturnNoDefer<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = MapInitializeReturn<TSource, TDestination, TSelectorReturn> | MapFromReturn<TSource, TDestination, TSelectorReturn> | ConditionReturn<TSource, TDestination, TSelectorReturn> | FromValueReturn<TSource, TDestination, TSelectorReturn> | ConvertUsingReturn<TSource> | NullSubstitutionReturn<TSource, TDestination, TSelectorReturn> | IgnoreReturn | MapWithArgumentsReturn<TSource, TDestination, TSelectorReturn>;
export declare type PreConditionReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
preConditionPredicate: (source: TSource) => boolean,
defaultValue?: TSelectorReturn
];
export interface DeferFunction<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> {
(source: TSource): MemberMapReturnNoDefer<TSource, TDestination, TSelectorReturn> | MapWithReturn<TSource, TDestination, TSelectorReturn>;
}
export declare type MapDeferReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.MapDefer,
DeferFunction<TSource, TDestination, TSelectorReturn>
];
export declare type MapFromReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.MapFrom,
(source: TSource, destination?: TDestination) => TSelectorReturn,
ValueSelector<TSource, TDestination, TSelectorReturn> | null
];
export declare type MapWithReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.MapWith,
(sourceObj: TSource, mapper: Mapper) => TSelectorReturn | undefined | null,
ValueSelector<TSource>
];
export declare type ConditionReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.Condition,
(source: TSource, sourceMemberPath: string[]) => TSelectorReturn
];
export declare type FromValueReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [TransformationType.FromValue, () => TSelectorReturn];
export declare type ConvertUsingReturn<TSource extends Dictionary<TSource> = any, TConvertSource = TSource> = [TransformationType.ConvertUsing, Selector<TSource, TConvertSource>];
export declare type NullSubstitutionReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.NullSubstitution,
(source: TSource, sourceMemberPath: string[]) => TSelectorReturn
];
export declare type IgnoreReturn = [TransformationType.Ignore];
export declare type MapWithArgumentsReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
TransformationType.MapWithArguments,
(source: TSource, extraArguments: Record<string, any>) => TSelectorReturn
];
export declare type MapInitializeReturn<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [TransformationType.MapInitialize, Selector<TSource, TSelectorReturn>];
export declare type PrimitiveConstructorReturnType<TType extends PrimitiveConstructorWithDate> = TType extends DateConstructor ? InstanceType<TType> : ReturnType<TType>;
export interface Mapper {
name: string;
plugin: MapPlugin;
addTypeConverter<TSourceType extends PrimitiveConstructorWithDate = PrimitiveConstructorWithDate, TDestinationType extends PrimitiveConstructorWithDate = PrimitiveConstructorWithDate>(source: TSourceType, destination: TDestinationType, converter: Selector<PrimitiveConstructorReturnType<TSourceType>, PrimitiveConstructorReturnType<TDestinationType>> | Converter<PrimitiveConstructorReturnType<TSourceType>, PrimitiveConstructorReturnType<TDestinationType>>): Mapper;
createMap<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any>(source: new (...args: unknown[]) => TSource, destination: new (...args: unknown[]) => TDestination, options?: CreateMapOptions): CreateMapFluentFunction<TSource, TDestination>;
createMap<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>>(source: string, destination: string, options?: CreateMapOptions): CreateMapFluentFunction<TSource, TDestination>;
getMapping<TKey = unknown>(source: TKey, destination: TKey): Mapping | undefined;
getMapping<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any>(source: new (...args: unknown[]) => TSource, destination: new (...args: unknown[]) => TDestination): Mapping<TSource, TDestination> | undefined;
getMapping<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>>(source: string, destination: string): Mapping<TSource, TDestination> | undefined;
addProfile(profile: MappingProfile): Mapper;
map<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, options?: MapOptions<TSource, TDestination, TExtraArguments>): TDestination;
map<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: string, source: string, options?: MapOptions<TSource, TDestination, TExtraArguments>): TDestination;
map<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, destinationObj: TDestination, options?: MapOptions<TSource, TDestination, TExtraArguments>): void;
map<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: string, source: string, destinationObj: TDestination, options?: MapOptions<TSource, TDestination, TExtraArguments>): void;
mapAsync<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, options?: MapOptions<TSource, TDestination, TExtraArguments>): Promise<TDestination>;
mapAsync<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: string, source: string, options?: MapOptions<TSource, TDestination, TExtraArguments>): Promise<TDestination>;
mapAsync<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, destinationObj: TDestination, options?: MapOptions<TSource, TDestination, TExtraArguments>): Promise<void>;
mapAsync<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceObj: TSource, destination: string, source: string, destinationObj: TDestination, options?: MapOptions<TSource, TDestination, TExtraArguments>): Promise<void>;
mapArray<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceArray: TSource[], destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, options?: MapArrayOptions<TSource, TDestination, TExtraArguments>): TDestination[];
mapArray<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceArray: TSource[], destination: string, source: string, options?: MapArrayOptions<TSource, TDestination, TExtraArguments>): TDestination[];
mapArrayAsync<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceArray: TSource[], destination: new (...args: unknown[]) => TDestination, source: new (...args: unknown[]) => TSource, options?: MapArrayOptions<TSource, TDestination, TExtraArguments>): Promise<TDestination[]>;
mapArrayAsync<TSource extends Dictionary<TSource>, TDestination extends Dictionary<TDestination>, TExtraArguments extends Record<string, any> = Record<string, any>>(sourceArray: TSource[], destination: string, source: string, options?: MapArrayOptions<TSource, TDestination, TExtraArguments>): Promise<TDestination[]>;
dispose(): void;
}
export interface CreateMapFluentFunction<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any> {
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: MapFromReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: MapWithReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: ConditionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: FromValueReturn<TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: NullSubstitutionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: ConvertUsingReturn<TSource>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: ConditionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: IgnoreReturn): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, memberMapFunction: MapWithArgumentsReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: MapFromReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: MapWithReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: ConditionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: FromValueReturn<TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: NullSubstitutionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: ConvertUsingReturn<TSource>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: ConditionReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: IgnoreReturn): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, memberMapFunction: MapWithArgumentsReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, mapDeferFn: MapDeferReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forMember<TMemberType = SelectorReturn<TDestination>>(selector: Selector<TDestination, TMemberType>, preConditionFunction: PreConditionReturn<TSource, TDestination, TMemberType>, mapDeferFn: MapDeferReturn<TSource, TDestination, TMemberType>): CreateMapFluentFunction<TSource, TDestination>;
forSelf<TWith extends Dictionary<TWith> = any>(source: new (...args: unknown[]) => TWith, selector: Selector<TSource, TWith>): CreateMapFluentFunction<TSource, TDestination>;
forSelf(source: string, selector: Selector<TSource>): CreateMapFluentFunction<TSource, TDestination>;
beforeMap(action: MapAction<TSource, TDestination>): CreateMapFluentFunction<TSource, TDestination>;
afterMap(action: MapAction<TSource, TDestination>): CreateMapFluentFunction<TSource, TDestination>;
}
export declare type MappingTransformation<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
MemberMapReturn<TSource, TDestination, TSelectorReturn>,
boolean?,
PreConditionReturn<TSource, TDestination, TSelectorReturn>?
];
export declare type MappingProperty<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any, TSelectorReturn = SelectorReturn<TDestination>> = [
[
target: string[],
origin?: string[]
],
MappingTransformation<TSource, TDestination, TSelectorReturn>
];
export declare type Mapping<TSource extends Dictionary<TSource> = any, TDestination extends Dictionary<TDestination> = any> = [
[
source: TSource,
destination: TDestination
],
[
source: (new (...args: unknown[]) => TSource) | string,
destination: (new (...args: unknown[]) => TDestination) | string
],
Array<[
path: string[],
mappingProperty: MappingProperty<TSource, TDestination, SelectorReturn<TDestination>>,
nestedMappingPair?: [unknown, unknown]
]>,
[
beforeMap?: MapAction<TSource, TDestination>,
afterMap?: MapAction<TSource, TDestination>
],
Mapper,
[
source: NamingConvention,
destination: NamingConvention
]?,
[
baseSource: unknown,
baseDestination: unknown
][]?
];
export interface Disposable {
dispose(): void;
}
export interface MetadataStorage<TKey, TType = unknown> extends Disposable {
getMetadata(metaKey: TKey): Array<Metadata<TType>>;
getMetadataForKey(metaKey: TKey, key: string[]): Metadata<TType> | undefined;
addMetadata(metaKey: TKey, metadata: Metadata<TType>): void;
has(metaKey: TKey): boolean | undefined;
}
export interface MappingStorage<TKey> extends Disposable {
get(source: TKey, destination: TKey): Mapping | undefined;
set(source: TKey, destination: TKey, mapping: Mapping): void;
has(source: TKey, destination: TKey): boolean | undefined;
}
export declare type Metadata<TMetaType = unknown> = [
string[],
() => PrimitiveWithDate | TMetaType,
boolean?
];
export interface ErrorHandler {
handle: (message: string) => void;
}
export interface MappingProfile {
(mapper: Mapper): void;
}