Skip to content

paddls/ts-mapperize

Repository files navigation

TS-Mapperize

ts-mapperize-ci Coverage Status npm version GitHub GitHub repo size GitHub last commit GitHub issues GitHub top language

Informations

⚠️ Since version 1.0.2, ts-mapperize has been published under @paddls namespace. We continue to maintain @witty-services namespace.

Get Started

Install

npm install @paddls/ts-mapperize

or

npm install @witty-services/ts-mapperize

Create simple mapper

class A {
  a: string;
}

class B {
  b: string;
}


class MyMapper {

    @Mapper(() => B, [
      {target: 'b', source: 'a'}
    ])
    public mapAToB: MapperFn<A, B>;
  
}

const mapper: MyMapper = new MyMapper();

mapper.mapAToB(new A())
// should return B{ b: '...' }

Working with array

Define all mapping behavior

class A {
  a: string;
}

class B {
  b: string;
}


class MyMapper {

    @ArrayMapper(() => B, [
      {target: 'b', source: 'a'}
    ])
    public mapAToB: ArrayMapperFn<A, B>;
  
}

const mapper: MyMapper = new MyMapper();

mapper.mapAToB([new A()])
// should return [B{ b: '...' }]

Reuse behavior from function

class A {
  a: string;
}

class B {
  b: string;
}


class MyMapper {

    @Mapper(() => B, [
      {target: 'b', source: 'a'}
    ])
    public mapAToB: MapperFn<A, B>;

    @ArrayMapper('mapAToB')
    public mapAToBArray: ArrayMapperFn<A, B>;
  
}

const mapper: MyMapper = new MyMapper();

mapper.mapAToBArray([new A()])
// should return [B{ b: '...' }]

API

MapperParamContext

Argument Type Required Description
source string, keyof<Input> false select from the input, the value to be mapped
target string, keyof<Output> false select the destination of the value inside the output object
customTransformer (() => new(...args: any[]) => CustomTransformer<any, any>) false use an existing CustomTransformer class
transform (input: any) => any false custom function to map value from selected source to target
type () => new(...args: any[]) => any false type of the child object
params MapperParamContext<any, any>[] false list of mapping information for child object

How to run Unit Tests

To run unit tests and generate coverage with Jest, run :

npm run test

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published