MCPcopy Index your code
hub / github.com/omkarcloud/botasaurus / transformRecordStream

Function transformRecordStream

js/botasaurus-server-js/src/views.ts:338–397  ·  view source on GitHub ↗
(targetFields: (Field | CustomField | ExpandDictField | ExpandListField)[], record: any)

Source from the content-addressed store, hash-verified

336}
337
338function* transformRecordStream(targetFields: (Field | CustomField | ExpandDictField | ExpandListField)[], record: any): Generator<any> {
339 let expandedRecords: any[] = [{}]
340
341 for (let i = 0; i < targetFields.length; i++) {
342 const field = targetFields[i]
343
344 if (field instanceof Field) {
345 const value = record[field.key]
346 const result = field.map ? field.map(value, record) : value
347 for (const expandedRecord of expandedRecords) {
348 expandedRecord[field.outputKey] = result
349 }
350 } else if (field instanceof CustomField) {
351 const result = field.map(record)
352 for (const expandedRecord of expandedRecords) {
353 expandedRecord[field.outputKey] = result
354 }
355 } else if (field instanceof ExpandDictField) {
356 const nestedFieldValues = createNestedFieldValues(record, field)
357 for (const expandedRecord of expandedRecords) {
358 Object.assign(expandedRecord, nestedFieldValues)
359 }
360 } else if (field instanceof ExpandListField) {
361 const nestedList = record[field.key] || []
362 const remainingFields = targetFields.slice(i + 1)
363
364 for (const item of nestedList) {
365 for (const baseExpandedRecord of expandedRecords) {
366 const newRecord = { ...baseExpandedRecord }
367 for (const nestedField of field.fields) {
368 if (nestedField instanceof Field) {
369 const value = item[nestedField.key]
370 newRecord[nestedField.outputKey] = nestedField.map ? nestedField.map(value, item, record) : value
371 } else if (nestedField instanceof CustomField) {
372 newRecord[nestedField.outputKey] = nestedField.map(item, record)
373 } else if (nestedField instanceof ExpandDictField) {
374 Object.assign(newRecord, createNestedFieldValuesListed(item, nestedField, record))
375 }
376 }
377 for (const rf of remainingFields) {
378 if (rf instanceof Field) {
379 const value = record[rf.key]
380 newRecord[rf.outputKey] = rf.map ? rf.map(value, record) : value
381 } else if (rf instanceof CustomField) {
382 newRecord[rf.outputKey] = rf.map(record)
383 } else if (rf instanceof ExpandDictField) {
384 Object.assign(newRecord, createNestedFieldValues(record, rf))
385 }
386 }
387 yield newRecord
388 }
389 }
390 return
391 }
392 }
393
394 for (const r of expandedRecords) {
395 yield r

Callers 3

executeTaskResultsFunction · 0.90
_applyViewForUiFunction · 0.85
_applyViewForUiLargeTaskFunction · 0.85

Calls 2

createNestedFieldValuesFunction · 0.85

Tested by

no test coverage detected