UNPKG

@toolpad/utils

Version:

Shared utilities used by Toolpad packages.

1 lines 2.48 kB
{"version":3,"sources":["../src/json.ts"],"sourcesContent":["export type Replacer = (this: object, key: PropertyKey, value: unknown) => unknown;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references\nexport function getCircularReplacer(): Replacer {\n const ancestors: object[] = [];\n return function replacer(key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop();\n }\n if (ancestors.includes(value)) {\n return '[Circular]';\n }\n ancestors.push(value);\n return value;\n };\n}\n\nfunction replaceRecursiveImpl(obj: unknown, replacer: Replacer): unknown {\n if (Array.isArray(obj)) {\n return obj.map((item, i) => {\n const newItem = replacer.call(obj, i, item);\n return replaceRecursiveImpl(newItem, replacer);\n });\n }\n if (obj && typeof obj === 'object') {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const newValue = replacer.call(obj, key, value);\n return [key, replaceRecursiveImpl(newValue, replacer)];\n }),\n );\n }\n return obj;\n}\n\n// Replaces nested properties using the same semantics as JSON.stringify\nexport function replaceRecursive(obj: unknown, replacer: Replacer): unknown {\n return (replaceRecursiveImpl({ '': obj }, replacer) as { '': unknown })[''];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,sBAAgC;AAC9C,QAAM,YAAsB,CAAC;AAC7B,SAAO,SAAS,SAAS,KAAK,OAAO;AACnC,QAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,aAAO;AAAA,IACT;AAGA,WAAO,UAAU,SAAS,KAAK,UAAU,GAAG,EAAE,MAAM,MAAM;AACxD,gBAAU,IAAI;AAAA,IAChB;AACA,QAAI,UAAU,SAAS,KAAK,GAAG;AAC7B,aAAO;AAAA,IACT;AACA,cAAU,KAAK,KAAK;AACpB,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,KAAc,UAA6B;AACvE,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,MAAM,MAAM;AAC1B,YAAM,UAAU,SAAS,KAAK,KAAK,GAAG,IAAI;AAC1C,aAAO,qBAAqB,SAAS,QAAQ;AAAA,IAC/C,CAAC;AAAA,EACH;AACA,MAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACxC,cAAM,WAAW,SAAS,KAAK,KAAK,KAAK,KAAK;AAC9C,eAAO,CAAC,KAAK,qBAAqB,UAAU,QAAQ,CAAC;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,iBAAiB,KAAc,UAA6B;AAC1E,SAAQ,qBAAqB,EAAE,IAAI,IAAI,GAAG,QAAQ,EAAsB,EAAE;AAC5E;","names":[]}