{"version":3,"sources":["jsdelivr-header.js","/npm/circ-json@1.0.4/app/dist/esm/circJson.mjs"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,MAAM,SAAY,KAA2B,iBAAV,GACnB,MAAT,GACE,aAAiB,SACjB,aAAiB,MACjB,aAAiB,QACjB,aAAiB,QACjB,aAAiB,QACpB,UAAa,GAAU,IAAM,EAAM,KAAI,GAAQ,OAAO,GAAM,QAAQ,KAAM,MAAM,QAAQ,MAAO,QAAO,KAAK,KAC3G,IAAM,OAAO,eACZ,SAAS,UACZ,MAAM,EAAQ,IAAI,QAClB,OAAO,SAAkB,EAAK,GAC1B,GAAY,SAAR,IAAoC,iBAAV,GAAuB,aAAiB,SAAW,EAAM,OAAU,EAAM,WAAW,KAC9G,MAAO,IAAM,EACjB,GAAI,SAAS,GAAQ,CAEjB,GADa,EAAM,IAAI,GACb,CACN,MAAM,EAAO,IAAI,OAAO,UAAU,EAAM,IAAI,KAE5C,OADA,EAAK,MAAO,EACL,CAAE,OACb,CAEI,EAAM,IAAI,EAAO,IAAI,EAAM,IAAI,OAAS,GAAI,GAEpD,CACA,OAAO,CACX,CACJ,QACO,SAAS,aACZ,MAAM,EAAU,IAAI,QACd,EAAO,IAAI,QACX,EAAO,IAAI,IAKjB,SAAS,EAAY,GACjB,MAAM,EAAQ,EAAI,KAAK,MAAM,GAAG,MAAM,KACtC,IAAI,EAAK,EAAQ,EAAQ,KACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAC9B,EAAM,EAAM,GAAG,QAAQ,MAAO,KAAK,QAAQ,MAAO,KAClD,EAAQ,EAAM,GAElB,EAAS,EAAQ,IAAI,GACrB,EAAO,EAAK,IAAI,IAAQ,CAC5B,CACA,OAAO,SAAiB,EAAK,GACzB,GAAY,SAAR,GAAmC,iBAAV,EAAoB,CAC7C,GAAI,EAAM,WAAW,MACjB,OAAO,EAAM,MAAM,GAClB,GAAI,EAAM,WAAW,KAEtB,OADA,EAAK,IAAI,MACF,CAEf,CACI,SAAS,KACY,KAAR,GAA2C,IAA7B,OAAO,KAAK,MAAM,OAEzC,EAAK,QAAQ,EAAa,OAG1B,EAAQ,IAAI,EAAO,MACnB,EAAK,IAAI,EAAO,KAGxB,OAAO,CACX,CACJ,QACO,SAAS,MAAM,GAClB,QAAY,IAAR,EAEJ,OAAO,KAAK,MAAM,EAAK,aAC3B,QACO,SAAS,UAAU,EAAK,GAC3B,OAAO,KAAK,UAAU,EAAK,UAAW,EAC1C","file":"/npm/circ-json@1.0.4/app/dist/esm/circJson.mjs","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/circ-json@1.0.4/app/dist/esm/circJson.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// This is a port of json-decycle. It has a few bug fixes and is in ts.\nconst isObject = (value) => typeof value === 'object'\n    && value != null\n    && !(value instanceof Boolean)\n    && !(value instanceof Date)\n    && !(value instanceof Number)\n    && !(value instanceof RegExp)\n    && !(value instanceof String);\nconst toPointer = (parts) => '#' + parts.map(part => String(part).replace(/~/g, '~0').replace(/\\//g, '~1')).join('/');\nconst sym = Symbol('$ref');\nexport function decycle() {\n    const paths = new WeakMap();\n    return function replacer(key, value) {\n        if (key === '$ref' && (typeof value === \"string\" || (value instanceof String && !value[sym])) && value.startsWith(\"#\"))\n            return \"#\" + value;\n        if (isObject(value)) {\n            const seen = paths.has(value);\n            if (seen) {\n                const $ref = new String(toPointer(paths.get(value)));\n                $ref[sym] = true;\n                return { $ref };\n            }\n            else {\n                paths.set(value, [...paths.get(this) ?? [], key]);\n            }\n        }\n        return value;\n    };\n}\nexport function retrocycle() {\n    const parents = new WeakMap();\n    const keys = new WeakMap();\n    const refs = new Set();\n    /**\n     * @param {{ $ref: string }} ref\n     * @this object\n     */\n    function dereference(ref) {\n        const parts = ref.$ref.slice(1).split('/');\n        let key, parent, value = this;\n        for (var i = 0; i < parts.length; i++) {\n            key = parts[i].replace(/~1/g, '/').replace(/~0/g, '~');\n            value = value[key];\n        }\n        parent = parents.get(ref);\n        parent[keys.get(ref)] = value;\n    }\n    return function reviver(key, value) {\n        if (key === '$ref' && typeof value === \"string\") {\n            if (value.startsWith(\"##\"))\n                return value.slice(1);\n            else if (value.startsWith(\"#\")) {\n                refs.add(this);\n                return value;\n            }\n        }\n        if (isObject(value)) {\n            var isRoot = key === '' && Object.keys(this).length === 1;\n            if (isRoot) {\n                refs.forEach(dereference, this);\n            }\n            else {\n                parents.set(value, this);\n                keys.set(value, key);\n            }\n        }\n        return value;\n    };\n}\nexport function parse(str) {\n    if (str === undefined)\n        return undefined;\n    return JSON.parse(str, retrocycle());\n}\nexport function stringify(obj, space) {\n    return JSON.stringify(obj, decycle(), space);\n}\n"]}