{"version":3,"sources":["jsdelivr-header.js","/npm/chrome-runtime-connect@0.0.1/runtime.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,OAAO,QAAU,WACb,MAAM,EAAqB,GAuD3B,MAAO,CAIH,QAAS,EAAG,WACR,MAAM,EA1DI,KACd,MAAM,EAAqB,GACrB,EAAwB,GAC9B,IAAI,EAAY,KAEhB,MAAO,CACH,UAAW,CAAE,YAAa,GAAK,EAAmB,KAAK,IAEvD,YAAa,GAET,YAAW,IAAM,EAAU,UAAU,mBAAmB,SAAQ,GAAK,EAAE,MAAK,GAEhF,aAAc,CAAE,YAAa,GAAK,EAAsB,KAAK,IAC7D,WAAY,OACZ,OAAQ,UACR,OACA,UAAW,CACP,qBACA,wBACA,aAAc,GAAM,EAAY,GAEvC,EAqCgB,CAAU,GACjB,EAjCS,KACnB,MAAM,EAAqB,GACrB,EAAwB,GAExB,EAAY,CACd,UAAW,CAAE,YAAa,GAAK,EAAmB,KAAK,IAGvD,YAAa,GAAK,YAAW,IAEzB,EAAK,UAAU,mBAAmB,SAAQ,GAAK,EAAE,MAAK,GAE1D,aAAc,CAAE,YAAa,GAAK,EAAsB,KAAK,IAC7D,WAAY,OACZ,OAAQ,EAAK,OACb,KAAM,EAAK,KACX,UAAW,CACP,qBACA,0BAKR,OADA,EAAK,UAAU,aAAa,GACrB,CAAS,EAUM,CAAe,GAUjC,OADA,YAAW,IAAM,EAAmB,SAAQ,GAAM,EAAG,MAAa,GAC3D,CAAI,EAGf,UAAW,CAAE,YAAa,GAAY,EAAmB,KAAK,IAEtE","file":"/npm/chrome-runtime-connect@0.0.1/runtime.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/chrome-runtime-connect@0.0.1/runtime.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\nmodule.exports = function init() {\n    const onConnectCallbacks = [];\n\n    const spawnPort = name => {\n        const onMessageListeners = [];\n        const onDisconnectListeners = [];\n        let childPort = null;\n\n        return {\n            onMessage: { addListener: l => onMessageListeners.push(l) },\n\n            postMessage: m => \n                // Make sure this is async to give the chance to the other end to hook it's listeners \n                setTimeout(() => childPort._internal.onMessageListeners.forEach(l => l(m)), 0),\n\n            onDisconnect: { addListener: l => onDisconnectListeners.push(l) },\n            disconnect: () => {},\n            sender: 'sender?',\n            name,\n            _internal: {\n                onMessageListeners,\n                onDisconnectListeners,\n                setChildPort: cp => childPort = cp,\n            },\n        };\n    };\n\n    // a port that allows communication to another existing port\n    // it has the same interface, and is basically the other end of the port.\n    const spawnChildPort = port => {\n        const onMessageListeners = [];\n        const onDisconnectListeners = [];\n\n        const childPort = {\n            onMessage: { addListener: l => onMessageListeners.push(l) },\n\n            // Sends a messsage to the parent port\n            postMessage: m => setTimeout(() => \n                // Make sure this is async to give the chance to the other end to hook it's listeners \n                port._internal.onMessageListeners.forEach(l => l(m)), 0),\n\n            onDisconnect: { addListener: l => onDisconnectListeners.push(l) },\n            disconnect: () => {},\n            sender: port.sender,\n            name: port.name,\n            _internal: {\n                onMessageListeners,\n                onDisconnectListeners,\n            }\n        };\n\n        port._internal.setChildPort(childPort);\n        return childPort;\n        \n    };\n\n    return {\n\n        // Called by iJS to create a port\n        // Spawns a new port and fires all \"onConnect\" callbacks\n        connect: ({ name }) => {\n            const port = spawnPort(name);\n            const childPort = spawnChildPort(port);\n\n            // onConnectCallbacks.forEach(cb => cb(childPort))\n\n            // Those callbacks should be called asynchronously.\n            // `chrome.runtime.connect` runs synchronously, so the extensions code expect\n            // their code to be executed synchronously.\n            // If the callbacks are called synchronously, then creator of the port won't\n            // be given a chance to add listeners.\n            setTimeout(() => onConnectCallbacks.forEach(cb => cb(childPort)), 0);\n            return port;\n        },\n\n        onConnect: { addListener: callback => onConnectCallbacks.push(callback) }\n    };\n}\n"]}