UNPKG

json-canonicalize

Version:
20 lines (13 loc) 1.86 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.JsonCanonicalize = {})); }(this, (function (exports) { 'use strict'; var CircularRootPathName="$";function _serialize(r,e){var t="",i=e&&e.include,n=e&&e.exclude;n&&"string"==typeof n&&(n=[n]),i&&i.sort();var o=new WeakMap,a=e&&e.allowCircular,c=e&&e.filterUndefined,f=e&&e.undefinedInArrayToNull;return function r(e,l){if(null===e||"object"!=typeof e||null!=e.toJSON)t+=JSON.stringify(e);else if(Array.isArray(e)){if(void 0!==(s=o.get(e))&&l.startsWith(s)){if(!a)throw new Error("Circular reference detected");return void(t+='"[Circular:'+s+']"')}o.set(e,l),t+="[";var u=!1;e.forEach((function(e,i){u&&(t+=","),u=!0,f&&void 0===e&&(e=null),r(e,l+"["+i+"]");})),t+="]";}else {var s;if(void 0!==(s=o.get(e))&&l.startsWith(s)){if(!a)throw new Error("Circular reference detected");return void(t+='"[Circular:'+s+']"')}o.set(e,l),t+="{";var d=!1,v=function(i){n&&n.includes(i)||(d&&(t+=","),d=!0,t+=JSON.stringify(i),t+=":",r(e[i],l+"."+i));};if(l===CircularRootPathName&&i)i.forEach((function(r){e.hasOwnProperty(r)&&v(r);}));else {var h=Object.keys(e);c&&(h=h.filter((function(r){return void 0!==e[r]}))),h.sort(),h.forEach((function(r){v(r);}));}t+="}";}}(r,CircularRootPathName),t} function canonicalize(e,i){return _serialize(e,{allowCircular:i,filterUndefined:!0,undefinedInArrayToNull:!0})} function canonicalizeEx(i,e){return _serialize(i,e)} exports.canonicalize = canonicalize; exports.canonicalizeEx = canonicalizeEx; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=index.umd.min.js.map