All files / packages/core/src/utilities genericMetadataProvider.ts

88.88% Statements 8/9
100% Branches 2/2
66.66% Functions 2/3
88.88% Lines 8/9

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 35 36 37 38 39 40 41 42 43 44    1x       1x             15x   15x 5x       15x                 44x                     1x      
import { addProvider } from '../metaData';
 
let state: Record<string, any> = {}; // Calibrated pixel spacing per imageId
/**
 * Simple metadata provider that stores some sort of meta data for each imageId.
 */
const metadataProvider = {
  /**
   * Adds metadata for an imageId.
   * @param imageId - the imageId for the metadata to store
   * @param payload - the payload
   */
  add: (imageId: string, payload: any): void => {
    const type = payload.type;
 
    if (!state[imageId]) {
      state[imageId] = {};
    }
 
    // Create a deep copy of payload.metadata
    state[imageId][type] = JSON.parse(JSON.stringify(payload.metadata));
  },
 
  /**
   * Returns the metadata for an imageId if it exists.
   * @param type - the type of metadata to enquire about
   * @param imageId - the imageId to enquire about
   */
  get: (type: string, imageId: string): any => {
    return state[imageId]?.[type];
  },
 
  /**
   * Clears all metadata.
   */
  clear: (): void => {
    state = {};
  },
};
 
addProvider(metadataProvider.get);
 
export default metadataProvider;