1.1.4 • Published 4 years ago

mapped v1.1.4

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

Mapped

Mapped is a lightweight TypeScript based library for implementing basic mapping between two objects.

Example

A basic example is shown here:

class SourceCls {
  public flag?: boolean;
  public other?: string;
}

class DestCls {
  public flag?: boolean;
  public other?: string;
}

function mapSomething(sourceObj: SourceCls): DestCls {
  const mapper = new Mapper();

  mapper.register(SourceCls, DestCls)
      .forMember((dest: DestCls) => dest.flag, (src: SourceCls) => src.flag)
      .forMember((dest: DestCls) => dest.other, (src: SourceCls) => src.other);

  const destObj = mapper.map(sourceObj, DestCls);

  return destObj;
}

Child objects will be created with all mappings provided; but types will not be created from their constructors (with this being JavaScript the type cannot be obtained). Anything can be returned from the mapped source object - including a new object.

Examples of both these cases are shown here. dest.child will be created with dest.child.further being a straight forward map from src.param. dest.child.random will be set to the new object created here.

mapper.register(Source, Dest)
      .forMember((dest: Dest) => dest.child!.further, (src: Source) => src.param)
      .forMember(
        (dest: Dest) => dest.child!.random,
        (src: Source) => { return {
                      prop: src.other,
                      nope: src.param,
                    } as RandomClass; },
      );