import type { SamplePrepStep, SamplePrepStepInput, SampleRecord, } from './types' import { idFromName, sampleIdFromName, } from './builderIdUtils' export function normalizeSampleRecord(sample: SampleRecord): SampleRecord { return { ...sample, metadata: sample.metadata ?? {}, } } export function presetSampleRecords(samples: Array): SampleRecord[] { return samples.map((sample, index) => { if (typeof sample !== 'string') return normalizeSampleRecord(sample) return { sampleId: sampleIdFromName(sample, index), name: sample, metadata: {}, } }) } export function normalizeSamplePrepStep( step: SamplePrepStepInput, prepType: SamplePrepStep['type'], volumeUnit: string, order: number, index: number ): SamplePrepStep { const type = step.type ?? prepType const sourceSampleId = step.sourceSampleId const name = step.name || `Prepare ${sourceSampleId ?? index + 1}` return { id: step.id || idFromName(name, `${type}-${index + 1}`), order: step.order ?? order, type, name, sourceSampleId, sourcePlateId: step.sourcePlateId, sourceWellId: step.sourceWellId, destinationSampleId: step.destinationSampleId, destinationPlateId: step.destinationPlateId, destinationWellId: step.destinationWellId, reagentId: step.reagentId, inputVolume: step.inputVolume, outputVolume: step.outputVolume, volumeUnit: step.volumeUnit || volumeUnit, durationMin: step.durationMin, status: step.status ?? 'planned', metadata: step.metadata ?? {}, } }