TypeScript object mapper library with fluent API
npm install @heritsilavo/mapper.forMember()
.reverseMap()
.mapArray()
bash
npm install @heritsilavo/mapper
`
π Quick Start
`typescript
import { Mapper } from '@heritsilavo/mapper';
// Define your classes
class User {
id!: number;
firstName!: string;
lastName!: string;
age!: number;
}
class UserDto {
id!: number;
fullName!: string;
ageCategory!: string;
}
// Create mapper instance
const mapper = new Mapper();
// Configure mapping
mapper.createMap(User, UserDto)
.forMember('fullName', s => ${s.firstName} ${s.lastName})
.forMember('ageCategory', s => s.age >= 18 ? 'Adult' : 'Minor');
// Use the mapper
const user = Object.assign(new User(), {
id: 1,
firstName: 'Heritsilavo',
lastName: 'Andriantsilavina',
age: 22
});
const dto = mapper.map(user, UserDto);
console.log(dto);
// Output: { id: 1, fullName: 'Heritsilavo Andriantsilavina', ageCategory: 'Adult' }
`
π Documentation
$3
`typescript
// Auto-mapping (properties with same name)
mapper.createMap(Product, ProductDto);
const dto = mapper.map(product, ProductDto);
`
$3
`typescript
mapper.createMap(User, UserDto)
.forMember('fullName', s => ${s.firstName} ${s.lastName})
.forMember('displayAge', s => ${s.age} years old);
`
$3
`typescript
const users: User[] = [...];
const dtos = mapper.mapArray(users, UserDto);
`
$3
`typescript
mapper.createMap(User, UserDto)
.forMember('fullName', s => ${s.firstName} ${s.lastName})
.reverseMap()
.forMember('firstName', s => s.fullName.split(' ')[0])
.forMember('lastName', s => s.fullName.split(' ')[1]);
`
$3
`typescript
import { MappingProfile } from '@heritsilavo/mapper';
class UserMappingProfile extends MappingProfile {
configure(mapper: Mapper): void {
mapper.createMap(User, UserDto)
.forMember('fullName', s => ${s.firstName} ${s.lastName});
mapper.createMap(User, UserSummaryDto)
.forMember('name', s => s.firstName);
}
}
mapper.addProfile(new UserMappingProfile());
`
$3
`typescript
mapper.createCustomMap(User, UserDto, (source) => ({
id: source.id,
fullName: ${source.firstName} ${source.lastName},
ageCategory: source.age >= 18 ? 'Adult' : 'Minor'
}));
`
$3
`typescript
mapper.createMap(User, UserDto)
.disableAutoMap()
.forMember('id', s => s.id)
.forMember('fullName', s => ${s.firstName} ${s.lastName});
`
π§ API Reference
$3
| Method | Description |
|--------|-------------|
| createMap(Source, Destination) | Create a mapping configuration |
| .forMember(key, transform) | Define custom transformation |
| .reverseMap() | Create reverse mapping |
| .map(source, Destination) | Map single object |
| .mapArray(sources, Destination) | Map array of objects |
| .addProfile(profile) | Add mapping profile |
| .createCustomMap(Source, Destination, fn) | Create fully custom mapper |
| .clear()` | Clear all configurations |