32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| var stableStringify = require("fast-json-stable-stringify");
 | |
| var UNDEFINED = 'undefined';
 | |
| function stringify(input) {
 | |
|     return input === undefined ? UNDEFINED : stableStringify(input);
 | |
| }
 | |
| exports.stringify = stringify;
 | |
| function parse(input) {
 | |
|     return input === UNDEFINED ? undefined : JSON.parse(input);
 | |
| }
 | |
| exports.parse = parse;
 | |
| function normalize(input, _a) {
 | |
|     var _b = (_a === void 0 ? {} : _a).parse, parser = _b === void 0 ? parse : _b;
 | |
|     var result;
 | |
|     if (normalize.cache.has(input)) {
 | |
|         result = normalize.cache.get(input);
 | |
|     }
 | |
|     else {
 | |
|         var data = parser(input);
 | |
|         result = stringify(data);
 | |
|         if (result === input)
 | |
|             result = undefined;
 | |
|         normalize.cache.set(input, result);
 | |
|     }
 | |
|     return result === undefined ? input : result;
 | |
| }
 | |
| exports.normalize = normalize;
 | |
| (function (normalize) {
 | |
|     normalize.cache = new Map();
 | |
| })(normalize = exports.normalize || (exports.normalize = {}));
 |