{"version":3,"file":"dist-esm-comlink.cjs","sources":["../../../../../../node_modules/comlink/dist/esm/comlink.mjs"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n    canHandle: (val) => isObject(val) && val[proxyMarker],\n    serialize(obj) {\n        const { port1, port2 } = new MessageChannel();\n        expose(obj, port1);\n        return [port2, [port2]];\n    },\n    deserialize(port) {\n        port.start();\n        return wrap(port);\n    },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n    canHandle: (value) => isObject(value) && throwMarker in value,\n    serialize({ value }) {\n        let serialized;\n        if (value instanceof Error) {\n            serialized = {\n                isError: true,\n                value: {\n                    message: value.message,\n                    name: value.name,\n                    stack: value.stack,\n                },\n            };\n        }\n        else {\n            serialized = { isError: false, value };\n        }\n        return [serialized, []];\n    },\n    deserialize(serialized) {\n        if (serialized.isError) {\n            throw Object.assign(new Error(serialized.value.message), serialized.value);\n        }\n        throw serialized.value;\n    },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n    [\"proxy\", proxyTransferHandler],\n    [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n    for (const allowedOrigin of allowedOrigins) {\n        if (origin === allowedOrigin || allowedOrigin === \"*\") {\n            return true;\n        }\n        if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n    ep.addEventListener(\"message\", function callback(ev) {\n        if (!ev || !ev.data) {\n            return;\n        }\n        if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n            console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n            return;\n        }\n        const { id, type, path } = Object.assign({ path: [] }, ev.data);\n        const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n        let returnValue;\n        try {\n            const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n            const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n            switch (type) {\n                case \"GET\" /* MessageType.GET */:\n                    {\n                        returnValue = rawValue;\n                    }\n                    break;\n                case \"SET\" /* MessageType.SET */:\n                    {\n                        parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n                        returnValue = true;\n                    }\n                    break;\n                case \"APPLY\" /* MessageType.APPLY */:\n                    {\n                        returnValue = rawValue.apply(parent, argumentList);\n                    }\n                    break;\n                case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n                    {\n                        const value = new rawValue(...argumentList);\n                        returnValue = proxy(value);\n                    }\n                    break;\n                case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n                    {\n                        const { port1, port2 } = new MessageChannel();\n                        expose(obj, port2);\n                        returnValue = transfer(port1, [port1]);\n                    }\n                    break;\n                case \"RELEASE\" /* MessageType.RELEASE */:\n                    {\n                        returnValue = undefined;\n                    }\n                    break;\n                default:\n                    return;\n            }\n        }\n        catch (value) {\n            returnValue = { value, [throwMarker]: 0 };\n        }\n        Promise.resolve(returnValue)\n            .catch((value) => {\n            return { value, [throwMarker]: 0 };\n        })\n            .then((returnValue) => {\n            const [wireValue, transferables] = toWireValue(returnValue);\n            ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n            if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n                // detach and deactive after sending release response above.\n                ep.removeEventListener(\"message\", callback);\n                closeEndPoint(ep);\n                if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n                    obj[finalizer]();\n                }\n            }\n        })\n            .catch((error) => {\n            // Send Serialization Error To Caller\n            const [wireValue, transferables] = toWireValue({\n                value: new TypeError(\"Unserializable return value\"),\n                [throwMarker]: 0,\n            });\n            ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n        });\n    });\n    if (ep.start) {\n        ep.start();\n    }\n}\nfunction isMessagePort(endpoint) {\n    return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n    if (isMessagePort(endpoint))\n        endpoint.close();\n}\nfunction wrap(ep, target) {\n    const pendingListeners = new Map();\n    ep.addEventListener(\"message\", function handleMessage(ev) {\n        const { data } = ev;\n        if (!data || !data.id) {\n            return;\n        }\n        const resolver = pendingListeners.get(data.id);\n        if (!resolver) {\n            return;\n        }\n        try {\n            resolver(data);\n        }\n        finally {\n            pendingListeners.delete(data.id);\n        }\n    });\n    return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n    if (isReleased) {\n        throw new Error(\"Proxy has been released and is not useable\");\n    }\n}\nfunction releaseEndpoint(ep) {\n    return requestResponseMessage(ep, new Map(), {\n        type: \"RELEASE\" /* MessageType.RELEASE */,\n    }).then(() => {\n        closeEndPoint(ep);\n    });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n    new FinalizationRegistry((ep) => {\n        const newCount = (proxyCounter.get(ep) || 0) - 1;\n        proxyCounter.set(ep, newCount);\n        if (newCount === 0) {\n            releaseEndpoint(ep);\n        }\n    });\nfunction registerProxy(proxy, ep) {\n    const newCount = (proxyCounter.get(ep) || 0) + 1;\n    proxyCounter.set(ep, newCount);\n    if (proxyFinalizers) {\n        proxyFinalizers.register(proxy, ep, proxy);\n    }\n}\nfunction unregisterProxy(proxy) {\n    if (proxyFinalizers) {\n        proxyFinalizers.unregister(proxy);\n    }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n    let isProxyReleased = false;\n    const proxy = new Proxy(target, {\n        get(_target, prop) {\n            throwIfProxyReleased(isProxyReleased);\n            if (prop === releaseProxy) {\n                return () => {\n                    unregisterProxy(proxy);\n                    releaseEndpoint(ep);\n                    pendingListeners.clear();\n                    isProxyReleased = true;\n                };\n            }\n            if (prop === \"then\") {\n                if (path.length === 0) {\n                    return { then: () => proxy };\n                }\n                const r = requestResponseMessage(ep, pendingListeners, {\n                    type: \"GET\" /* MessageType.GET */,\n                    path: path.map((p) => p.toString()),\n                }).then(fromWireValue);\n                return r.then.bind(r);\n            }\n            return createProxy(ep, pendingListeners, [...path, prop]);\n        },\n        set(_target, prop, rawValue) {\n            throwIfProxyReleased(isProxyReleased);\n            // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n            // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n            const [value, transferables] = toWireValue(rawValue);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"SET\" /* MessageType.SET */,\n                path: [...path, prop].map((p) => p.toString()),\n                value,\n            }, transferables).then(fromWireValue);\n        },\n        apply(_target, _thisArg, rawArgumentList) {\n            throwIfProxyReleased(isProxyReleased);\n            const last = path[path.length - 1];\n            if (last === createEndpoint) {\n                return requestResponseMessage(ep, pendingListeners, {\n                    type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n                }).then(fromWireValue);\n            }\n            // We just pretend that `bind()` didn’t happen.\n            if (last === \"bind\") {\n                return createProxy(ep, pendingListeners, path.slice(0, -1));\n            }\n            const [argumentList, transferables] = processArguments(rawArgumentList);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"APPLY\" /* MessageType.APPLY */,\n                path: path.map((p) => p.toString()),\n                argumentList,\n            }, transferables).then(fromWireValue);\n        },\n        construct(_target, rawArgumentList) {\n            throwIfProxyReleased(isProxyReleased);\n            const [argumentList, transferables] = processArguments(rawArgumentList);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n                path: path.map((p) => p.toString()),\n                argumentList,\n            }, transferables).then(fromWireValue);\n        },\n    });\n    registerProxy(proxy, ep);\n    return proxy;\n}\nfunction myFlat(arr) {\n    return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n    const processed = argumentList.map(toWireValue);\n    return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n    transferCache.set(obj, transfers);\n    return obj;\n}\nfunction proxy(obj) {\n    return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n    return {\n        postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n        addEventListener: context.addEventListener.bind(context),\n        removeEventListener: context.removeEventListener.bind(context),\n    };\n}\nfunction toWireValue(value) {\n    for (const [name, handler] of transferHandlers) {\n        if (handler.canHandle(value)) {\n            const [serializedValue, transferables] = handler.serialize(value);\n            return [\n                {\n                    type: \"HANDLER\" /* WireValueType.HANDLER */,\n                    name,\n                    value: serializedValue,\n                },\n                transferables,\n            ];\n        }\n    }\n    return [\n        {\n            type: \"RAW\" /* WireValueType.RAW */,\n            value,\n        },\n        transferCache.get(value) || [],\n    ];\n}\nfunction fromWireValue(value) {\n    switch (value.type) {\n        case \"HANDLER\" /* WireValueType.HANDLER */:\n            return transferHandlers.get(value.name).deserialize(value.value);\n        case \"RAW\" /* WireValueType.RAW */:\n            return value.value;\n    }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n    return new Promise((resolve) => {\n        const id = generateUUID();\n        pendingListeners.set(id, resolve);\n        if (ep.start) {\n            ep.start();\n        }\n        ep.postMessage(Object.assign({ id }, msg), transfers);\n    });\n}\nfunction generateUUID() {\n    return new Array(4)\n        .fill(0)\n        .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n        .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n"],"names":["obj","returnValue","proxy"],"mappings":"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","x_google_ignoreList":[0]}