34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
/**
 | 
						|
 * Remove invalid tags from a metadata and return a new object.
 | 
						|
 *
 | 
						|
 * At this time it is only removing tags that has `null` or `undefined` values
 | 
						|
 * which is our main goal because that breaks when `naturalizeDataset(...)` is
 | 
						|
 * called.
 | 
						|
 *
 | 
						|
 * Validating the tag id using regex like /^[a-fA-F0-9]{8}$/ make it run
 | 
						|
 * +50% slower and looping through all characteres (split+every+Set or simple
 | 
						|
 * FOR+Set) double the time it takes to run. It is currently taking +12ms/1k
 | 
						|
 * images on average which can change depending on the machine.
 | 
						|
 *
 | 
						|
 * @param srcMetadata - source metadata
 | 
						|
 * @returns new metadata object without invalid tags
 | 
						|
 */
 | 
						|
function removeInvalidTags(srcMetadata) {
 | 
						|
  // Object.create(null) make it ~9% faster
 | 
						|
  const dstMetadata = Object.create(null)
 | 
						|
  const tagIds = Object.keys(srcMetadata)
 | 
						|
  let tagValue
 | 
						|
 | 
						|
  tagIds.forEach((tagId) => {
 | 
						|
    tagValue = srcMetadata[tagId]
 | 
						|
 | 
						|
    if (tagValue !== undefined && tagValue !== null) {
 | 
						|
      dstMetadata[tagId] = tagValue
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  return dstMetadata
 | 
						|
}
 | 
						|
 | 
						|
export { removeInvalidTags as default, removeInvalidTags }
 |