All files / metadata/src/displayset resolveInstances.ts

0% Statements 0/11
0% Branches 0/6
0% Functions 0/1
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                                                                   
import type { NaturalizedInstance } from './types';
 
export type ResolveInstancesOptions = {
  /** When true, skip missing ids silently; otherwise they are omitted with optional warn. */
  skipMissing?: boolean;
  onMissing?: (imageId: string) => void;
};
 
/**
 * Resolves imageIds to naturalized instances in input order.
 */
export function resolveInstances(
  imageIds: string[],
  getNaturalizedInstance: (imageId: string) => NaturalizedInstance | undefined,
  options: ResolveInstancesOptions = {}
): NaturalizedInstance[] {
  const { skipMissing = true, onMissing } = options;
  const instances: NaturalizedInstance[] = [];
 
  for (const imageId of imageIds) {
    const instance = getNaturalizedInstance(imageId);
    if (!instance) {
      if (!skipMissing) {
        throw new Error(`No naturalized instance for imageId: ${imageId}`);
      }
      onMissing?.(imageId);
      continue;
    }
    instances.push(instance);
  }
 
  return instances;
}