in api/Serialization.ts [157:254]
function _getTranslatedField(fieldValue: any, fieldMetadata: ContractFieldMetadata, serialize: boolean, preserveOriginal: boolean) {
if (!fieldValue) {
return fieldValue;
}
if (fieldMetadata.isArray) {
if (Array.isArray(fieldValue)) {
var newArray: any[] = [],
processedArray: any[] = fieldValue;
for(var index = 0; index < fieldValue.length; index++) {
var arrayValue = fieldValue[index];
var processedValue = arrayValue;
if (fieldMetadata.isDate) {
processedValue = _getTranslatedDateValue(arrayValue, serialize);
}
else if (fieldMetadata.enumType) {
processedValue = _getTranslatedEnumValue(fieldMetadata.enumType, arrayValue, serialize);
}
else if (fieldMetadata.typeInfo) {
if (Array.isArray(arrayValue)) {
processedValue = _getTranslatedArray(arrayValue, fieldMetadata.typeInfo, serialize, preserveOriginal);
}
else {
processedValue = _getTranslatedObject(arrayValue, fieldMetadata.typeInfo, serialize, preserveOriginal);
}
}
if (preserveOriginal) {
newArray.push(processedValue);
if (processedValue !== arrayValue) {
processedArray = newArray;
}
}
else {
fieldValue[index] = processedValue;
}
}
return processedArray;
}
else {
return fieldValue;
}
}
else if (fieldMetadata.isDictionary) {
var dictionaryModified = false;
var newDictionary = <any>{};
for(var key in fieldValue) {
var dictionaryValue = fieldValue[key];
var newKey = key,
newValue = dictionaryValue;
if (fieldMetadata.dictionaryKeyIsDate) {
newKey = _getTranslatedDateValue(key, serialize);
}
else if (fieldMetadata.dictionaryKeyEnumType) {
newKey = _getTranslatedEnumValue(fieldMetadata.dictionaryKeyEnumType, key, serialize);
}
if (fieldMetadata.dictionaryValueIsDate) {
newValue = _getTranslatedDateValue(dictionaryValue, serialize);
}
else if (fieldMetadata.dictionaryValueEnumType) {
newValue = _getTranslatedEnumValue(fieldMetadata.dictionaryValueEnumType, dictionaryValue, serialize);
}
else if (fieldMetadata.dictionaryValueTypeInfo) {
newValue = _getTranslatedObject(newValue, fieldMetadata.dictionaryValueTypeInfo, serialize, preserveOriginal);
}
else if (fieldMetadata.dictionaryValueFieldInfo) {
newValue = _getTranslatedField(dictionaryValue, fieldMetadata.dictionaryValueFieldInfo, serialize, preserveOriginal);
}
newDictionary[newKey] = newValue;
if (key !== newKey || dictionaryValue !== newValue) {
dictionaryModified = true;
}
}
return dictionaryModified ? newDictionary : fieldValue;
}
else {
if (fieldMetadata.isDate) {
return _getTranslatedDateValue(fieldValue, serialize);
}
else if (fieldMetadata.enumType) {
return _getTranslatedEnumValue(fieldMetadata.enumType, fieldValue, serialize);
}
else if (fieldMetadata.typeInfo) {
return _getTranslatedObject(fieldValue, fieldMetadata.typeInfo, serialize, preserveOriginal);
}
else {
return fieldValue;
}
}
}