2.0.0 • Published 3 years ago

data-transformation v2.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

Data transformation

This library provides helper that are for transforming one or multiple source objects to a target object. To transform a source type to a target type you need to define a mapping. The following example shows how:

interface SourceType {
  sourceField1: string,
  sourceField2: number,
}

interface TargetType {
  targetField1: string,
  targetField2: number,
  targetField3: string,
}

const sourceToTargetMapping: FieldMapping<SourceType, TargetType> = {
  targetField1: 'sourceField1',
  targetField2: 'sourceField2',
  targetField3: (sourceObject: SourceType) => sourceObject.sourceField2.toString(),
}

Mapping a source field to a target field can be done in two ways: 1. [target-field-name]: 'source-field-name' With this kind of definition the target object field with the name 'target-field-name' gets the value of the source field with the name 'source-field-name'. 2. [target-field-name]: function(sourceObject: SourceType): TargetFieldType When you need to transform a source field value to set the target field it is possible define a function which should return the target field value. As parameter this function get the whole source object.

Such mapping can then be given to the transformData helper method

const sourceObject: SourceType = {
  sourceField1: 'sourceField1',
  sourceField2: 3,
}

const result = transformData(sourceToTargetMapping, sourceObject)

Result should look now like this:

{
  targetField1: 'sourceField1',
  targetField2: 3,
  targetField3: '3',
}

It is also possible to apply a mapping to already existing target object:

const sourceObject: SourceType = {
  sourceField1: 'sourceField1',
  sourceField2: 3,
}

const targetObject = {
  targetField4: '3',
}

const result = transformData(sourceToTargetMapping, sourceObject, targetObject)

Result should look now like this:

{
  targetField1: 'sourceField1',
  targetField2: 3,
  targetField3: '3',
  targetField4: '3',
}