{"version":3,"sources":["../ts/lib/json-stable-stringify.js"],"names":["f","exports","module","define","amd","window","global","self","this","jsonStableStringifyD","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","json","JSON","isArray","obj","opts","space","cmp","cycles","Array","join","replacer","key","value","node","b","aobj","bobj","seen","stringify","parent","level","indent","colonSeparator","toJSON","undefined","out","item","push","indexOf","TypeError","keys","objectKeys","sort","keyValue","","x","toString","Object","has","prototype","hasOwnProperty","jsonify","2","parse","./lib/parse","./lib/stringify","3","number","string","ch","next","isFinite","error","at","text","escapee","\"","\\","/","m","name","message","c","charAt","hex","uffff","parseInt","String","fromCharCode","white","object","array","source","reviver","result","walk","holder","k","v","4","gap","rep","escapable","meta","\b","\t","\n","\f","\r","quote","lastIndex","test","replace","charCodeAt","slice","str","partial","mind","apply"],"mappings":"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","file":"json-stable-stringify.js","sourcesContent":["/*\r\n https://github.com/substack/json-stable-stringify\r\n License: MIT\r\n*/\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.jsonStableStringifyD = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n if (ch === '.') {\r\n string += '.';\r\n while (next() && ch >= '0' && ch <= '9') {\r\n string += ch;\r\n }\r\n }\r\n if (ch === 'e' || ch === 'E') {\r\n string += ch;\r\n next();\r\n if (ch === '-' || ch === '+') {\r\n string += ch;\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n }\r\n number = +string;\r\n if (!isFinite(number)) {\r\n error(\"Bad number\");\r\n } else {\r\n return number;\r\n }\r\n },\r\n \r\n string = function () {\r\n // Parse a string value.\r\n var hex,\r\n i,\r\n string = '',\r\n uffff;\r\n \r\n // When parsing for string values, we must look for \" and \\ characters.\r\n if (ch === '\"') {\r\n while (next()) {\r\n if (ch === '\"') {\r\n next();\r\n return string;\r\n } else if (ch === '\\\\') {\r\n next();\r\n if (ch === 'u') {\r\n uffff = 0;\r\n for (i = 0; i < 4; i += 1) {\r\n hex = parseInt(next(), 16);\r\n if (!isFinite(hex)) {\r\n break;\r\n }\r\n uffff = uffff * 16 + hex;\r\n }\r\n string += String.fromCharCode(uffff);\r\n } else if (typeof escapee[ch] === 'string') {\r\n string += escapee[ch];\r\n } else {\r\n break;\r\n }\r\n } else {\r\n string += ch;\r\n }\r\n }\r\n }\r\n error(\"Bad string\");\r\n },\r\n\r\n white = function () {\r\n\r\n// Skip whitespace.\r\n\r\n while (ch && ch <= ' ') {\r\n next();\r\n }\r\n },\r\n\r\n word = function () {\r\n\r\n// true, false, or null.\r\n\r\n switch (ch) {\r\n case 't':\r\n next('t');\r\n next('r');\r\n next('u');\r\n next('e');\r\n return true;\r\n case 'f':\r\n next('f');\r\n next('a');\r\n next('l');\r\n next('s');\r\n next('e');\r\n return false;\r\n case 'n':\r\n next('n');\r\n next('u');\r\n next('l');\r\n next('l');\r\n return null;\r\n }\r\n error(\"Unexpected '\" + ch + \"'\");\r\n },\r\n\r\n value, // Place holder for the value function.\r\n\r\n array = function () {\r\n\r\n// Parse an array value.\r\n\r\n var array = [];\r\n\r\n if (ch === '[') {\r\n next('[');\r\n white();\r\n if (ch === ']') {\r\n next(']');\r\n return array; // empty array\r\n }\r\n while (ch) {\r\n array.push(value());\r\n white();\r\n if (ch === ']') {\r\n next(']');\r\n return array;\r\n }\r\n next(',');\r\n white();\r\n }\r\n }\r\n error(\"Bad array\");\r\n },\r\n\r\n object = function () {\r\n\r\n// Parse an object value.\r\n\r\n var key,\r\n object = {};\r\n\r\n if (ch === '{') {\r\n next('{');\r\n white();\r\n if (ch === '}') {\r\n next('}');\r\n return object; // empty object\r\n }\r\n while (ch) {\r\n key = string();\r\n white();\r\n next(':');\r\n if (Object.hasOwnProperty.call(object, key)) {\r\n error('Duplicate key \"' + key + '\"');\r\n }\r\n object[key] = value();\r\n white();\r\n if (ch === '}') {\r\n next('}');\r\n return object;\r\n }\r\n next(',');\r\n white();\r\n }\r\n }\r\n error(\"Bad object\");\r\n };\r\n\r\nvalue = function () {\r\n\r\n// Parse a JSON value. It could be an object, an array, a string, a number,\r\n// or a word.\r\n\r\n white();\r\n switch (ch) {\r\n case '{':\r\n return object();\r\n case '[':\r\n return array();\r\n case '\"':\r\n return string();\r\n case '-':\r\n return number();\r\n default:\r\n return ch >= '0' && ch <= '9' ? number() : word();\r\n }\r\n};\r\n\r\n// Return the json_parse function. It will have access to all of the above\r\n// functions and variables.\r\n\r\nmodule.exports = function (source, reviver) {\r\n var result;\r\n \r\n text = source;\r\n at = 0;\r\n ch = ' ';\r\n result = value();\r\n white();\r\n if (ch) {\r\n error(\"Syntax error\");\r\n }\r\n\r\n // If there is a reviver function, we recursively walk the new structure,\r\n // passing each name/value pair to the reviver function for possible\r\n // transformation, starting with a temporary root object that holds the result\r\n // in an empty key. If there is not a reviver function, we simply return the\r\n // result.\r\n\r\n return typeof reviver === 'function' ? (function walk(holder, key) {\r\n var k, v, value = holder[key];\r\n if (value && typeof value === 'object') {\r\n for (k in value) {\r\n if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n v = walk(value, k);\r\n if (v !== undefined) {\r\n value[k] = v;\r\n } else {\r\n delete value[k];\r\n }\r\n }\r\n }\r\n }\r\n return reviver.call(holder, key, value);\r\n }({'': result}, '')) : result;\r\n};\r\n\r\n},{}],4:[function(require,module,exports){\r\nvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n gap,\r\n indent,\r\n meta = { // table of character substitutions\r\n '\\b': '\\\\b',\r\n '\\t': '\\\\t',\r\n '\\n': '\\\\n',\r\n '\\f': '\\\\f',\r\n '\\r': '\\\\r',\r\n '\"' : '\\\\\"',\r\n '\\\\': '\\\\\\\\'\r\n },\r\n rep;\r\n\r\nfunction quote(string) {\r\n // If the string contains no control characters, no quote characters, and no\r\n // backslash characters, then we can safely slap some quotes around it.\r\n // Otherwise we must also replace the offending characters with safe escape\r\n // sequences.\r\n \r\n escapable.lastIndex = 0;\r\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\r\n var c = meta[a];\r\n return typeof c === 'string' ? c :\r\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r\n }) + '\"' : '\"' + string + '\"';\r\n}\r\n\r\nfunction str(key, holder) {\r\n // Produce a string from holder[key].\r\n var i, // The loop counter.\r\n k, // The member key.\r\n v, // The member value.\r\n length,\r\n mind = gap,\r\n partial,\r\n value = holder[key];\r\n \r\n // If the value has a toJSON method, call it to obtain a replacement value.\r\n if (value && typeof value === 'object' &&\r\n typeof value.toJSON === 'function') {\r\n value = value.toJSON(key);\r\n }\r\n \r\n // If we were called with a replacer function, then call the replacer to\r\n // obtain a replacement value.\r\n if (typeof rep === 'function') {\r\n value = rep.call(holder, key, value);\r\n }\r\n \r\n // What happens next depends on the value's type.\r\n switch (typeof value) {\r\n case 'string':\r\n return quote(value);\r\n \r\n case 'number':\r\n // JSON numbers must be finite. Encode non-finite numbers as null.\r\n return isFinite(value) ? String(value) : 'null';\r\n \r\n case 'boolean':\r\n case 'null':\r\n // If the value is a boolean or null, convert it to a string. Note:\r\n // typeof null does not produce 'null'. The case is included here in\r\n // the remote chance that this gets fixed someday.\r\n return String(value);\r\n \r\n case 'object':\r\n if (!value) return 'null';\r\n gap += indent;\r\n partial = [];\r\n \r\n // Array.isArray\r\n if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n length = value.length;\r\n for (i = 0; i < length; i += 1) {\r\n partial[i] = str(i, value) || 'null';\r\n }\r\n \r\n // Join all of the elements together, separated with commas, and\r\n // wrap them in brackets.\r\n v = partial.length === 0 ? '[]' : gap ?\r\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\r\n '[' + partial.join(',') + ']';\r\n gap = mind;\r\n return v;\r\n }\r\n \r\n // If the replacer is an array, use it to select the members to be\r\n // stringified.\r\n if (rep && typeof rep === 'object') {\r\n length = rep.length;\r\n for (i = 0; i < length; i += 1) {\r\n k = rep[i];\r\n if (typeof k === 'string') {\r\n v = str(k, value);\r\n if (v) {\r\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // Otherwise, iterate through all of the keys in the object.\r\n for (k in value) {\r\n if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n v = str(k, value);\r\n if (v) {\r\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n }\r\n }\r\n }\r\n }\r\n \r\n // Join all of the member texts together, separated with commas,\r\n // and wrap them in braces.\r\n\r\n v = partial.length === 0 ? '{}' : gap ?\r\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\r\n '{' + partial.join(',') + '}';\r\n gap = mind;\r\n return v;\r\n }\r\n}\r\n\r\nmodule.exports = function (value, replacer, space) {\r\n var i;\r\n gap = '';\r\n indent = '';\r\n \r\n // If the space parameter is a number, make an indent string containing that\r\n // many spaces.\r\n if (typeof space === 'number') {\r\n for (i = 0; i < space; i += 1) {\r\n indent += ' ';\r\n }\r\n }\r\n // If the space parameter is a string, it will be used as the indent string.\r\n else if (typeof space === 'string') {\r\n indent = space;\r\n }\r\n\r\n // If there is a replacer, it must be a function or an array.\r\n // Otherwise, throw an error.\r\n rep = replacer;\r\n if (replacer && typeof replacer !== 'function'\r\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\r\n throw new Error('JSON.stringify');\r\n }\r\n \r\n // Make a fake root object containing our value under the key of ''.\r\n // Return the result of stringifying the value.\r\n return str('', {'': value});\r\n};\r\n\r\n},{}]},{},[1])(1)\r\n});"]}