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 };
 |