33 lines
		
	
	
		
			818 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			818 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
"use strict";
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
    value: true
 | 
						|
});
 | 
						|
Object.defineProperty(exports, "cloneMetadata", {
 | 
						|
    enumerable: true,
 | 
						|
    get: function() {
 | 
						|
        return cloneMetadata;
 | 
						|
    }
 | 
						|
});
 | 
						|
const TYPE_URL = '__METADATA_URL';
 | 
						|
function replacer(_key, val) {
 | 
						|
    // clone URL as string but recover it as URL
 | 
						|
    if (val instanceof URL) {
 | 
						|
        return {
 | 
						|
            _type: TYPE_URL,
 | 
						|
            value: val.href
 | 
						|
        };
 | 
						|
    }
 | 
						|
    return val;
 | 
						|
}
 | 
						|
function reviver(_key, val) {
 | 
						|
    if (typeof val === 'object' && val !== null && val._type === TYPE_URL) {
 | 
						|
        return new URL(val.value);
 | 
						|
    }
 | 
						|
    return val;
 | 
						|
}
 | 
						|
function cloneMetadata(metadata) {
 | 
						|
    const jsonString = JSON.stringify(metadata, replacer);
 | 
						|
    return JSON.parse(jsonString, reviver);
 | 
						|
}
 | 
						|
 | 
						|
//# sourceMappingURL=clone-metadata.js.map
 |