(targetFields: (Field | CustomField | ExpandDictField | ExpandListField)[], record: any)
| 285 | return processedResults; |
| 286 | } |
| 287 | function transformRecord(targetFields: (Field | CustomField | ExpandDictField | ExpandListField)[], record: any) { |
| 288 | let expandedRecords: any[] = [{}] |
| 289 | |
| 290 | for (const field of targetFields) { |
| 291 | if (field instanceof Field) { |
| 292 | const value = record[field.key] |
| 293 | const result = field.map ? field.map(value, record) : value |
| 294 | for (const expandedRecord of expandedRecords) { |
| 295 | expandedRecord[field.outputKey] = result |
| 296 | } |
| 297 | } else if (field instanceof CustomField) { |
| 298 | const result = field.map(record) |
| 299 | for (const expandedRecord of expandedRecords) { |
| 300 | expandedRecord[field.outputKey] = result |
| 301 | } |
| 302 | } else if (field instanceof ExpandDictField) { |
| 303 | const nestedFieldValues = createNestedFieldValues(record, field) |
| 304 | for (const expandedRecord of expandedRecords) { |
| 305 | Object.assign(expandedRecord, nestedFieldValues) |
| 306 | } |
| 307 | } else if (field instanceof ExpandListField) { |
| 308 | const nestedList = record[field.key] || [] |
| 309 | const newExpandedRecords: any[] = [] |
| 310 | |
| 311 | for (const item of nestedList) { |
| 312 | for (const baseExpandedRecord of expandedRecords) { |
| 313 | const newRecord = { ...baseExpandedRecord } |
| 314 | for (const nestedField of field.fields) { |
| 315 | if (nestedField instanceof Field) { |
| 316 | const value = item[nestedField.key] |
| 317 | if (nestedField.map) { |
| 318 | newRecord[nestedField.outputKey] = nestedField.map(value, item, record) |
| 319 | } else { |
| 320 | newRecord[nestedField.outputKey] = value |
| 321 | } |
| 322 | } else if (nestedField instanceof CustomField) { |
| 323 | newRecord[nestedField.outputKey] = nestedField.map(item, record) |
| 324 | } else if (nestedField instanceof ExpandDictField) { |
| 325 | const nestedFieldValues = createNestedFieldValuesListed(item, nestedField, record) |
| 326 | Object.assign(newRecord, nestedFieldValues) |
| 327 | } |
| 328 | } |
| 329 | newExpandedRecords.push(newRecord) |
| 330 | } |
| 331 | } |
| 332 | expandedRecords = newExpandedRecords |
| 333 | } |
| 334 | } |
| 335 | return expandedRecords |
| 336 | } |
| 337 | |
| 338 | function* transformRecordStream(targetFields: (Field | CustomField | ExpandDictField | ExpandListField)[], record: any): Generator<any> { |
| 339 | let expandedRecords: any[] = [{}] |
no test coverage detected