{"_id":"@aspectly/transports","_rev":"12-962bcef285f65c37c09f1f365677fc7e","name":"@aspectly/transports","dist-tags":{"latest":"2.2.0"},"versions":{"0.1.0":{"name":"@aspectly/transports","version":"0.1.0","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@0.1.0","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"eaf0aa88a8e7950f5a8ca9f30761804fbb968f14","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-0.1.0.tgz","fileCount":55,"integrity":"sha512-K0f18OcT55RoqEE5QBmJ0jcR2p7z/42jyihcoPlT/kUmqUubl0EaUkrmjgaqv2mrKI9Y7o3jKahw0k0NRHnx9w==","signatures":[{"sig":"MEUCICT5jfkp0Qb4lsRXB0WrIpXmUMUrIeGZNaafOpLF0aSEAiEAhR2v02269SesJpiRatLupdUnKazDFgFaNriw9IwhF3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209750},"main":"./dist/index.js","_from":"file:aspectly-transports-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"},"_resolved":"/private/var/folders/jl/r2j_488s2qj2371yz3411q0h0000gn/T/4820347c8cf3cb2ce99cc7e734c37bd8/aspectly-transports-0.1.0.tgz","_integrity":"sha512-K0f18OcT55RoqEE5QBmJ0jcR2p7z/42jyihcoPlT/kUmqUubl0EaUkrmjgaqv2mrKI9Y7o3jKahw0k0NRHnx9w==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"10.9.2","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"21.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_0.1.0_1772939272373_0.1907908185924514","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aspectly/transports","version":"2.0.0","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.0","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"d4be8ef9dcadfff3179c73135027d1829c6f48fa","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.0.tgz","fileCount":55,"integrity":"sha512-xOfvJsT5SgFx8PQQLXq21P4kBCP5Xg5M/mSi9P9FtwkW+vrkbVbR7hKKfwW71c8JlDo9BfpUN1zI/kZIC11GRw==","signatures":[{"sig":"MEQCIFij6enBOjq0AsQFqsY0mi2wFX4Q9ddoXR1/F+iIbRC2AiAjAbulIObFoam6F04tfWRlm6K8sb0lRGiwM6rcctX3fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209750},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"},"_resolved":"/tmp/8beca1258d203132ec28d05ef3a5a5f6/aspectly-transports-2.0.0.tgz","_integrity":"sha512-xOfvJsT5SgFx8PQQLXq21P4kBCP5Xg5M/mSi9P9FtwkW+vrkbVbR7hKKfwW71c8JlDo9BfpUN1zI/kZIC11GRw==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"10.8.2","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.0_1772940834269_0.5861415441951143","host":"s3://npm-registry-packages-npm-production"}},"2.0.8":{"name":"@aspectly/transports","version":"2.0.8","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.8","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"40f47ee20c47682bc03e128a00d2415d6e49b181","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.8.tgz","fileCount":54,"integrity":"sha512-VKDJJUlPBrkVXrRAj4hrDewnbANxKxVgJrA4qU4oh/F+fslAO7zAvx3xetCPxmIH0DyRfWZUDwzmJ9uDNEZiQw==","signatures":[{"sig":"MEUCIEAEF1PfDKSj3+JthtIW3xJCduglCH8dUGWsMLtCkZ1eAiEAopYh2bcNsqGKvDf7jTj3mrvt0V7MHbgofTnQzZWUoho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208779},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"gitHead":"acb9d4fad26609a3ad63eed49770a35eaf9ef11e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.8_1773683058846_0.009166531886481533","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"@aspectly/transports","version":"2.0.9","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.9","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"bf20c83030bf374f074f7b111a90e56216fd8021","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.9.tgz","fileCount":55,"integrity":"sha512-VC4VEyV73zWerFUnjZ2ZjcvVB3WtJadeBD5OpHrBD4Cc6LQy9kyzA7H18SMjQnGa2fmgwdW/qCkxJHN59/qgtA==","signatures":[{"sig":"MEYCIQCLR74QTJ2BHzhH4M52TgsBpZzAZB0zgdz7BB4UczFrygIhAJ9Vdt4JF90cpim69HxtQKbTtrIc/k5o6SRcIG9dseQT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209750},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/b7bde06142874a856dcecfffb4d7970a/aspectly-transports-2.0.9.tgz","_integrity":"sha512-VC4VEyV73zWerFUnjZ2ZjcvVB3WtJadeBD5OpHrBD4Cc6LQy9kyzA7H18SMjQnGa2fmgwdW/qCkxJHN59/qgtA==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.9_1773684107115_0.16296364440562616","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"@aspectly/transports","version":"2.0.10","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.10","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"77c57bbd978885abe08eed891eade7a580642ab9","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.10.tgz","fileCount":55,"integrity":"sha512-nduajQ+HLoHIKsfTBgQfMc3RQ/n/mE1eVQVuLPcDi5GsOSrt4Bx7HFB+aet619gltDOA1dfA982Fl8ONZt9SxQ==","signatures":[{"sig":"MEQCICvc5KctKopjPCLuiN/L/CqNBDTV1TcQEuQgiELaOW8yAiBhRxrNievc3mT+4L3EhNZDmsLTFEEavPhdmMbfUnxZ+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209751},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/51f44b3f13de0fb015df061e7a23d794/aspectly-transports-2.0.10.tgz","_integrity":"sha512-nduajQ+HLoHIKsfTBgQfMc3RQ/n/mE1eVQVuLPcDi5GsOSrt4Bx7HFB+aet619gltDOA1dfA982Fl8ONZt9SxQ==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.10_1773686123119_0.73921105605815","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"@aspectly/transports","version":"2.0.11","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.11","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"8e7aa43e5361d2e502337cd11e3b4b3563b5ae8c","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.11.tgz","fileCount":55,"integrity":"sha512-QyNDg1/LiQqchcTsmAiPbvnN4fyYlhhSeA4LwDvm3ujUy31MUGDJWf5UrlcThJnXpcL1HgfqHL0dvrV5E0pc/g==","signatures":[{"sig":"MEUCIQCjoWkjltGx3AR+6wLwNMvTHFQ4MwYlHNKZJIKDJhYyAAIgFFTmjYakTcWC8cYy9ALGiExglNuG8Gcx8WC/xJ9LLNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209751},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.11.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/e5686b8220ce4e2e76b0ba23a4166af7/aspectly-transports-2.0.11.tgz","_integrity":"sha512-QyNDg1/LiQqchcTsmAiPbvnN4fyYlhhSeA4LwDvm3ujUy31MUGDJWf5UrlcThJnXpcL1HgfqHL0dvrV5E0pc/g==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.11_1773687570134_0.27903745166649063","host":"s3://npm-registry-packages-npm-production"}},"2.0.12":{"name":"@aspectly/transports","version":"2.0.12","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.12","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"43505a1b6c582d1a99a907661b66be176d161201","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.12.tgz","fileCount":55,"integrity":"sha512-IeIHexyp/fS5Q6qp70/MolJXoq7TFHY69NuGEz3Dfay3OUXi4GiX9BXfBGJeSkFfXTQftJ9wL54iyMbkPBVNPA==","signatures":[{"sig":"MEYCIQDcH2R+cLAu9EIJylQTammH+p9ZRNBqDNQlfsnkSKzFngIhANI2FUHc0Z83uNzzRMJDCUeA39/4nGXKxAw93vY9Tx8Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209751},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.12.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/7996fca08702ed01b12018e727436dfc/aspectly-transports-2.0.12.tgz","_integrity":"sha512-IeIHexyp/fS5Q6qp70/MolJXoq7TFHY69NuGEz3Dfay3OUXi4GiX9BXfBGJeSkFfXTQftJ9wL54iyMbkPBVNPA==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.12_1773689956932_0.3108973721537329","host":"s3://npm-registry-packages-npm-production"}},"2.0.13":{"name":"@aspectly/transports","version":"2.0.13","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.13","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"1db52fab90d970db3337d4606fdef07a5f8928f2","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.13.tgz","fileCount":55,"integrity":"sha512-YLPauV17lhPBhu+g0aCIA4G76/gsUAbBV9E+fD1Og1O/PYHGpmsvxx1VdTM3rrKBuqHA0Vq11A+fBDoBN0A3Ig==","signatures":[{"sig":"MEUCIQCcBhNlpO7I7dsvu3Fp/RagCJclFMDD1gRcRuYIvnpqTAIgedVBG1vcxskO338jys/0NuWzLyOk64AOw5QsjErrxgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209751},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.13.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/4c95cd3b7dbc767daf0e375438ac701d/aspectly-transports-2.0.13.tgz","_integrity":"sha512-YLPauV17lhPBhu+g0aCIA4G76/gsUAbBV9E+fD1Og1O/PYHGpmsvxx1VdTM3rrKBuqHA0Vq11A+fBDoBN0A3Ig==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.13_1773690613334_0.7958719248750104","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"@aspectly/transports","version":"2.0.14","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.14","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"25cac53624cd8abf47f9d3e7b2a572b1d8aaacf6","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.14.tgz","fileCount":55,"integrity":"sha512-NIlE/lxU0CbLvy9ohBr6L1XskLsS0LR1giqwD5OaQbBpTgO5+L4WCGCE4VArn2reG/k7bXGPN3wMtVnGkTrDGg==","signatures":[{"sig":"MEUCIQCRpKrBTmuYCFvdb1nqfiTGwiHp+t/SVDjtE+PuG9gFawIgd2Q+uaNSzOzkhlqjsm6Ommt/p0Nysmi7BFH+4p4G194=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209751},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.14.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/94de54a44690e1d513ea511c6f9fcdd9/aspectly-transports-2.0.14.tgz","_integrity":"sha512-NIlE/lxU0CbLvy9ohBr6L1XskLsS0LR1giqwD5OaQbBpTgO5+L4WCGCE4VArn2reG/k7bXGPN3wMtVnGkTrDGg==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.11.1","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.14_1773691341055_0.3526525913107348","host":"s3://npm-registry-packages-npm-production"}},"2.0.15":{"name":"@aspectly/transports","version":"2.0.15","keywords":["aspectly","bridge","transport","cefsharp","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.0.15","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"2f4c35fb99f03fc1184278a4bba1b0330acd4c12","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.0.15.tgz","fileCount":55,"integrity":"sha512-DFB7fUuMOh5t3yaxerz8v8peIiBusr9s7/BGsp+K4yu6ciZmZ3Zcl6lMFgkqpqCLiKl02uPMHvjqe3NZRZuCiw==","signatures":[{"sig":"MEUCIGL34cJ0YRBDfyaKSLS7Ku/qYh0lvZf6tMdzFXXAVWZhAiEA3/1vqjMkrgkjq0juwfU3NuexjDVj/wtUKBUWyCsrZHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210069},"main":"./dist/index.js","_from":"file:aspectly-transports-2.0.15.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/667a7a3ba56f7aa75595293be23f7545/aspectly-transports-2.0.15.tgz","_integrity":"sha512-DFB7fUuMOh5t3yaxerz8v8peIiBusr9s7/BGsp+K4yu6ciZmZ3Zcl6lMFgkqpqCLiKl02uPMHvjqe3NZRZuCiw==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.17.0","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.0.15_1782065106274_0.3284582330679455","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@aspectly/transports","version":"2.1.0","keywords":["aspectly","bridge","transport","cefsharp","webkit","wkwebview","ios","macos","android","flutter","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","_id":"@aspectly/transports@2.1.0","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"dist":{"shasum":"a9e0ae77c68dc58b7d5e5edb74128fb02d0ed111","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.1.0.tgz","fileCount":82,"integrity":"sha512-5CfPCvpQLSbuKEIXji3rZJKCSD9dDsRAxbbxBHSPApLqVBX7L0vp1z/rt4lJmkRS69wPs7Ka9JIxGX52r0o8vw==","signatures":[{"sig":"MEUCIQDsEqg6YuzAh+jV5zrZbhyMfTO8Ix7usTa3KrZrPYEt5gIgNlf+wNimsSfM9aMt4u+Ync+w1elPcJih0u/T0x5PsJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":323287},"main":"./dist/index.js","_from":"file:aspectly-transports-2.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./webkit":{"import":{"types":"./dist/webkit.d.mts","default":"./dist/webkit.mjs"},"require":{"types":"./dist/webkit.d.ts","default":"./dist/webkit.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}},"./android":{"import":{"types":"./dist/android.d.mts","default":"./dist/android.mjs"},"require":{"types":"./dist/android.d.ts","default":"./dist/android.js"}},"./flutter":{"import":{"types":"./dist/flutter.d.mts","default":"./dist/flutter.mjs"},"require":{"types":"./dist/flutter.d.ts","default":"./dist/flutter.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"_resolved":"/tmp/92bfe4a0f6ee87eb1ac19d0a3eedca4d/aspectly-transports-2.1.0.tgz","_integrity":"sha512-5CfPCvpQLSbuKEIXji3rZJKCSD9dDsRAxbbxBHSPApLqVBX7L0vp1z/rt4lJmkRS69wPs7Ka9JIxGX52r0o8vw==","repository":{"url":"git+https://github.com/JeanIsahakyan/aspectly.git","type":"git","directory":"packages/transports"},"_npmVersion":"11.17.0","description":"Transport layer for Aspectly bridge - platform detection and message passing","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","rimraf":"^5.0.5","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/transports_2.1.0_1782694366313_0.8464023170476223","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@aspectly/transports","version":"2.2.0","description":"Transport layer for Aspectly bridge - platform detection and message passing","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./cefsharp":{"import":{"types":"./dist/cefsharp.d.mts","default":"./dist/cefsharp.mjs"},"require":{"types":"./dist/cefsharp.d.ts","default":"./dist/cefsharp.js"}},"./webkit":{"import":{"types":"./dist/webkit.d.mts","default":"./dist/webkit.mjs"},"require":{"types":"./dist/webkit.d.ts","default":"./dist/webkit.js"}},"./android":{"import":{"types":"./dist/android.d.mts","default":"./dist/android.mjs"},"require":{"types":"./dist/android.d.ts","default":"./dist/android.js"}},"./flutter":{"import":{"types":"./dist/flutter.d.mts","default":"./dist/flutter.mjs"},"require":{"types":"./dist/flutter.d.ts","default":"./dist/flutter.js"}},"./react-native":{"import":{"types":"./dist/react-native.d.mts","default":"./dist/react-native.mjs"},"require":{"types":"./dist/react-native.d.ts","default":"./dist/react-native.js"}},"./iframe":{"import":{"types":"./dist/iframe.d.mts","default":"./dist/iframe.mjs"},"require":{"types":"./dist/iframe.d.ts","default":"./dist/iframe.js"}},"./window":{"import":{"types":"./dist/window.d.mts","default":"./dist/window.mjs"},"require":{"types":"./dist/window.d.ts","default":"./dist/window.js"}}},"sideEffects":false,"keywords":["aspectly","bridge","transport","cefsharp","webkit","wkwebview","ios","macos","android","flutter","webview","iframe","postmessage"],"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/JeanIsahakyan/aspectly.git","directory":"packages/transports"},"publishConfig":{"access":"public"},"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.2","rimraf":"^5.0.5"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist","test":"vitest run"},"_id":"@aspectly/transports@2.2.0","bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"homepage":"https://github.com/JeanIsahakyan/aspectly#readme","_integrity":"sha512-4vk7l8OioZSPR8EvIUhTUEs52GCZh3fXoL4ktQbvPB78/SGjNDtaMdmlloAHT4AYAXFqn3LKcqhvKYdb/dtZgQ==","_resolved":"/tmp/5aab30f920f0c919ac2cd22a73aa5f2e/aspectly-transports-2.2.0.tgz","_from":"file:aspectly-transports-2.2.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-4vk7l8OioZSPR8EvIUhTUEs52GCZh3fXoL4ktQbvPB78/SGjNDtaMdmlloAHT4AYAXFqn3LKcqhvKYdb/dtZgQ==","shasum":"ebda1fa564db92822bf501d4b55da27f63546488","tarball":"https://registry.npmjs.org/@aspectly/transports/-/transports-2.2.0.tgz","fileCount":82,"unpackedSize":323287,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aspectly%2ftransports@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDC0XuVkLoZGwC5DGTNnRj1lj8BUjduzlw0JvSWXMZCgQIgYeJsRch/jJt9etrdanikbTA97yhbwr1W0vFoODgN9a4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14f8cc90-b41f-4119-af1c-4ad44b52e662"}},"directories":{},"maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/transports_2.2.0_1788647494027_0.3335996387308062"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T03:07:52.295Z","modified":"2026-09-05T22:31:34.560Z","0.1.0":"2026-03-08T03:07:52.515Z","2.0.0":"2026-03-08T03:33:54.422Z","2.0.8":"2026-03-16T17:44:19.003Z","2.0.9":"2026-03-16T18:01:47.273Z","2.0.10":"2026-03-16T18:35:23.260Z","2.0.11":"2026-03-16T18:59:30.298Z","2.0.12":"2026-03-16T19:39:17.088Z","2.0.13":"2026-03-16T19:50:13.817Z","2.0.14":"2026-03-16T20:02:21.231Z","2.0.15":"2026-06-21T18:05:06.406Z","2.1.0":"2026-06-29T00:52:46.488Z","2.2.0":"2026-09-05T22:31:34.167Z"},"bugs":{"url":"https://github.com/JeanIsahakyan/aspectly/issues"},"author":{"name":"Zhan Isaakian","email":"jeanisahkyan@gmail.com"},"license":"MIT","homepage":"https://github.com/JeanIsahakyan/aspectly#readme","keywords":["aspectly","bridge","transport","cefsharp","webkit","wkwebview","ios","macos","android","flutter","webview","iframe","postmessage"],"repository":{"type":"git","url":"git+https://github.com/JeanIsahakyan/aspectly.git","directory":"packages/transports"},"description":"Transport layer for Aspectly bridge - platform detection and message passing","maintainers":[{"name":"jeanisahakyan","email":"jeanisahakyan@gmail.com"}],"readme":"# @aspectly/transports\r\n\r\n[![npm version](https://img.shields.io/npm/v/@aspectly/transports?style=flat-square&logo=npm&color=cb3837)](https://www.npmjs.com/package/@aspectly/transports)\r\n[![npm downloads](https://img.shields.io/npm/dm/@aspectly/transports?style=flat-square&color=22c55e)](https://www.npmjs.com/package/@aspectly/transports)\r\n\r\nTransport layer for cross-platform communication between WebViews, iframes, and web applications.\r\n\r\n## Installation\r\n\r\n```bash\r\n# npm\r\nnpm install @aspectly/transports\r\n\r\n# pnpm\r\npnpm add @aspectly/transports\r\n\r\n# yarn\r\nyarn add @aspectly/transports\r\n```\r\n\r\n## Overview\r\n\r\n`@aspectly/transports` provides a flexible abstraction layer for platform detection and message passing across different execution contexts. It automatically detects the current environment (CefSharp, WKWebView/WebKitGTK, React Native WebView, Android WebView, Flutter WebView, iframe, or browser window) and provides a unified API for bidirectional communication.\r\n\r\n### Built-in Transports\r\n\r\n| Transport | Detection | Priority | Use Case |\r\n|-----------|-----------|----------|----------|\r\n| **CefSharpTransport** | `window.CefSharp.PostMessage` | 100 | Desktop apps with CefSharp (Chromium Embedded Framework for .NET) |\r\n| **WebKitTransport** | `window.webkit.messageHandlers.aspectly` | 95 | iOS/macOS/visionOS WKWebView and Linux WebKitGTK |\r\n| **ReactNativeTransport** | `window.ReactNativeWebView.postMessage` | 90 | React Native WebView |\r\n| **AndroidTransport** | `window.AspectlyAndroid.postMessage` | 85 | Android WebView |\r\n| **FlutterTransport** | `window.AspectlyFlutter.postMessage` | 84 | Flutter `webview_flutter` |\r\n| **IframeTransport** | `window.parent !== window` | 80 | Web content inside iframes |\r\n| **WindowTransport** | `window.opener !== null` | 70 | Popup windows opened via `window.open` |\r\n| **PostMessageTransport** | Always available (generic) | 10 | Generic `window.postMessage` fallback |\r\n| **NullTransport** | Always available | fallback | Fallback for SSR/testing (no-op) |\r\n\r\n### Auto-Detection\r\n\r\nThe `TransportRegistry` automatically selects the appropriate transport based on priority order. Higher priority transports are checked first, ensuring the most specific transport is used:\r\n\r\n```\r\ncefsharp (100) > webkit (95) > react-native (90) > android (85) >\r\nflutter (84) > iframe (80) > window (70) > postmessage (10) > null (fallback)\r\n```\r\n\r\n## Quick Start\r\n\r\n### Auto-Detection (Recommended)\r\n\r\n```typescript\r\nimport { detectTransport } from '@aspectly/transports';\r\n\r\n// Automatically detect the current environment\r\nconst transport = detectTransport();\r\n// transport.name is one of: 'cefsharp', 'webkit', 'react-native', 'android',\r\n// 'flutter', 'iframe', 'window', 'postmessage', or 'null'\r\nconsole.log(`Using transport: ${transport.name}`);\r\n\r\n// Send a message\r\ntransport.send(JSON.stringify({ type: 'hello', data: 'world' }));\r\n\r\n// Subscribe to incoming messages\r\nconst unsubscribe = transport.subscribe((message) => {\r\n  const data = JSON.parse(message);\r\n  console.log('Received:', data);\r\n});\r\n\r\n// Cleanup when done\r\nunsubscribe();\r\n```\r\n\r\n### Direct Transport Usage\r\n\r\n```typescript\r\nimport { CefSharpTransport } from '@aspectly/transports';\r\n\r\nconst transport = new CefSharpTransport();\r\n\r\nif (transport.isAvailable()) {\r\n  transport.send(JSON.stringify({ method: 'getData' }));\r\n}\r\n```\r\n\r\n### Custom Transport Registration\r\n\r\n```typescript\r\nimport { registerTransport, detectTransport } from '@aspectly/transports';\r\n\r\n// Register a custom transport with high priority\r\nregisterTransport({\r\n  name: 'electron',\r\n  priority: 150, // Higher than CefSharp (100)\r\n  detect: () => {\r\n    return typeof window !== 'undefined' &&\r\n           window.electron?.send !== undefined;\r\n  },\r\n  createTransport: () => new ElectronTransport(),\r\n});\r\n\r\n// Now auto-detection will check your custom transport first\r\nconst transport = detectTransport();\r\n```\r\n\r\n## API Reference\r\n\r\n### Transport Interface\r\n\r\nThe core interface implemented by all transports:\r\n\r\n```typescript\r\ninterface Transport {\r\n  readonly name: string;\r\n  isAvailable(): boolean;\r\n  send(message: string): void;\r\n  subscribe(listener: TransportListener): TransportUnsubscribe;\r\n}\r\n```\r\n\r\n**Properties:**\r\n- `name` - Unique identifier for the transport (e.g., 'cefsharp', 'react-native')\r\n\r\n**Methods:**\r\n- `isAvailable()` - Check if the transport is available in the current environment\r\n- `send(message: string)` - Send a message to the parent/host context\r\n- `subscribe(listener)` - Subscribe to incoming messages, returns cleanup function\r\n\r\n### Types\r\n\r\n```typescript\r\n// Message listener callback\r\ntype TransportListener = (message: string) => void;\r\n\r\n// Cleanup function returned by subscribe\r\ntype TransportUnsubscribe = () => void;\r\n\r\n// Factory function for creating transports\r\ntype TransportFactory = () => Transport;\r\n```\r\n\r\n### TransportDetector Interface\r\n\r\nUsed for registering custom transports:\r\n\r\n```typescript\r\ninterface TransportDetector {\r\n  readonly name: string;\r\n  readonly priority: number;\r\n  detect(): boolean;\r\n  createTransport(): Transport;\r\n}\r\n```\r\n\r\n**Properties:**\r\n- `name` - Transport identifier\r\n- `priority` - Detection priority (higher values checked first)\r\n\r\n**Methods:**\r\n- `detect()` - Return `true` if this transport is available\r\n- `createTransport()` - Create and return a transport instance\r\n\r\n### BaseTransport Class\r\n\r\nAbstract base class providing common functionality:\r\n\r\n```typescript\r\nabstract class BaseTransport implements Transport {\r\n  abstract readonly name: string;\r\n  abstract isAvailable(): boolean;\r\n  abstract send(message: string): void;\r\n  abstract subscribe(listener: TransportListener): TransportUnsubscribe;\r\n\r\n  protected hasWindow(): boolean;\r\n  protected getWindow(): Window | null;\r\n}\r\n```\r\n\r\n**Protected Helpers:**\r\n- `hasWindow()` - Check if `window` is defined (SSR-safe)\r\n- `getWindow()` - Safely get the `window` object or `null`\r\n\r\n### TransportRegistry\r\n\r\nGlobal registry for managing transport detectors:\r\n\r\n```typescript\r\nclass TransportRegistry {\r\n  register(detector: TransportDetector): void;\r\n  unregister(name: string): void;\r\n  getDetectors(): readonly TransportDetector[];\r\n  detect(forceRedetect?: boolean): Transport;\r\n  clearCache(): void;\r\n  reset(): void;\r\n}\r\n```\r\n\r\n**Methods:**\r\n- `register(detector)` - Register a custom transport detector\r\n- `unregister(name)` - Remove a detector by name\r\n- `getDetectors()` - Get all registered detectors\r\n- `detect(forceRedetect?)` - Detect and return the appropriate transport (cached)\r\n- `clearCache()` - Clear the cached transport\r\n- `reset()` - Reset to default state (built-in detectors only)\r\n\r\n### Convenience Functions\r\n\r\n```typescript\r\n// Detect the current transport\r\nfunction detectTransport(forceRedetect?: boolean): Transport;\r\n\r\n// Register a custom detector\r\nfunction registerTransport(detector: TransportDetector): void;\r\n```\r\n\r\n## Built-in Transports\r\n\r\n### CefSharpTransport\r\n\r\nFor desktop applications using [CefSharp](https://cefsharp.github.io/) (Chromium Embedded Framework for .NET).\r\n\r\n**Detection:** Checks for `window.CefSharp.PostMessage`\r\n**Priority:** 100 (highest)\r\n\r\n```typescript\r\nimport { CefSharpTransport } from '@aspectly/transports';\r\n\r\nconst transport = new CefSharpTransport();\r\ntransport.send(JSON.stringify({ action: 'openFile' }));\r\n\r\nconst unsubscribe = transport.subscribe((message) => {\r\n  console.log('From C#:', message);\r\n});\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.CefSharp.PostMessage(message)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### WebKitTransport\r\n\r\nFor web content running inside an Apple WKWebView (iOS, macOS, visionOS) or a Linux WebKitGTK `WebKitWebView`. Both reuse the same `window.webkit.messageHandlers.aspectly` mechanism.\r\n\r\n**Detection:** Checks for `window.webkit.messageHandlers.aspectly`\r\n**Priority:** 95\r\n\r\n```typescript\r\nimport { WebKitTransport } from '@aspectly/transports';\r\n\r\nconst transport = new WebKitTransport();\r\ntransport.send(JSON.stringify({ action: 'openFile' }));\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.webkit.messageHandlers.aspectly.postMessage(message)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### ReactNativeTransport\r\n\r\nFor web content running inside [React Native WebView](https://github.com/react-native-webview/react-native-webview).\r\n\r\n**Detection:** Checks for `window.ReactNativeWebView.postMessage`\r\n**Priority:** 90\r\n\r\n```typescript\r\nimport { ReactNativeTransport } from '@aspectly/transports';\r\n\r\nconst transport = new ReactNativeTransport();\r\ntransport.send(JSON.stringify({ action: 'navigate' }));\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.ReactNativeWebView.postMessage(message)`\r\n- Messages are wrapped in quotes for iOS compatibility: `'${message}'`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### AndroidTransport\r\n\r\nFor web content running inside an Android `WebView`.\r\n\r\n**Detection:** Checks for `window.AspectlyAndroid.postMessage`\r\n**Priority:** 85\r\n\r\n```typescript\r\nimport { AndroidTransport } from '@aspectly/transports';\r\n\r\nconst transport = new AndroidTransport();\r\ntransport.send(JSON.stringify({ action: 'navigate' }));\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.AspectlyAndroid.postMessage(message)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### FlutterTransport\r\n\r\nFor web content running inside a Flutter `webview_flutter` `WebViewController`.\r\n\r\n**Detection:** Checks for `window.AspectlyFlutter.postMessage`\r\n**Priority:** 84\r\n\r\n```typescript\r\nimport { FlutterTransport } from '@aspectly/transports';\r\n\r\nconst transport = new FlutterTransport();\r\ntransport.send(JSON.stringify({ action: 'navigate' }));\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.AspectlyFlutter.postMessage(message)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### IframeTransport\r\n\r\nFor web content running inside an iframe.\r\n\r\n**Detection:** Checks if `window.parent !== window`\r\n**Priority:** 80\r\n\r\n```typescript\r\nimport { IframeTransport } from '@aspectly/transports';\r\n\r\n// Default: sends to any origin ('*')\r\nconst transport = new IframeTransport();\r\n\r\n// Specify target origin for security\r\nconst secureTransport = new IframeTransport('https://parent-domain.com');\r\n\r\ntransport.send(JSON.stringify({ type: 'ready' }));\r\n```\r\n\r\n**Constructor:**\r\n- `new IframeTransport(targetOrigin?: string)` - Default: `'*'`\r\n\r\n**Messaging:**\r\n- Sends messages via `window.parent.postMessage(message, targetOrigin)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### WindowTransport\r\n\r\nFor web content running inside a popup window opened via `window.open`.\r\n\r\n**Detection:** Checks if `window.opener !== null`\r\n**Priority:** 70\r\n\r\n```typescript\r\nimport { WindowTransport } from '@aspectly/transports';\r\n\r\n// Default: sends to any origin ('*')\r\nconst transport = new WindowTransport();\r\n\r\n// Specify target origin for security\r\nconst secureTransport = new WindowTransport('https://opener-domain.com');\r\n\r\ntransport.send(JSON.stringify({ type: 'ready' }));\r\n```\r\n\r\n**Constructor:**\r\n- `new WindowTransport(targetOrigin?: string)` - Default: `'*'`\r\n\r\n**Messaging:**\r\n- Sends messages via `window.opener.postMessage(message, targetOrigin)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### PostMessageTransport\r\n\r\nGeneric `window.postMessage` transport used as a last-resort fallback before `NullTransport`.\r\n\r\n**Detection:** Always available\r\n**Priority:** 10 (lowest non-fallback)\r\n\r\n```typescript\r\nimport { PostMessageTransport } from '@aspectly/transports';\r\n\r\nconst transport = new PostMessageTransport();\r\ntransport.send(JSON.stringify({ type: 'ready' }));\r\n```\r\n\r\n**Messaging:**\r\n- Sends messages via `window.postMessage(message, targetOrigin)`\r\n- Receives messages via `window.postMessage` events\r\n\r\n### NullTransport\r\n\r\nFallback transport that performs no operations. Used when no other transport is available (e.g., SSR, testing).\r\n\r\n**Priority:** Always available (fallback)\r\n\r\n```typescript\r\nimport { NullTransport } from '@aspectly/transports';\r\n\r\nconst transport = new NullTransport();\r\ntransport.isAvailable(); // true\r\ntransport.send('message'); // No-op (logs warning in development)\r\ntransport.subscribe(() => {}); // Returns no-op cleanup function\r\n```\r\n\r\n**Behavior:**\r\n- `isAvailable()` always returns `true`\r\n- `send()` is a no-op (logs warning in development mode)\r\n- `subscribe()` returns a no-op cleanup function\r\n\r\n## Subpath Entry Points\r\n\r\nEach platform-specific transport is also exposed as its own subpath export, so you can import only the transport you need without pulling in the others:\r\n\r\n| Entry point | Exports |\r\n|-------------|---------|\r\n| `@aspectly/transports/webkit` | `WebKitTransport` |\r\n| `@aspectly/transports/android` | `AndroidTransport` |\r\n| `@aspectly/transports/flutter` | `FlutterTransport` |\r\n| `@aspectly/transports/cefsharp` | `CefSharpTransport` |\r\n| `@aspectly/transports/react-native` | `ReactNativeTransport` |\r\n| `@aspectly/transports/iframe` | `IframeTransport` |\r\n| `@aspectly/transports/window` | `WindowTransport` |\r\n\r\n```typescript\r\nimport { WebKitTransport } from '@aspectly/transports/webkit';\r\n\r\nconst transport = new WebKitTransport();\r\n```\r\n\r\nThe package root (`@aspectly/transports`) continues to re-export every transport along with the registry and convenience functions.\r\n\r\n## Creating Custom Transports\r\n\r\n### Example: Electron Transport\r\n\r\n```typescript\r\nimport { BaseTransport, registerTransport } from '@aspectly/transports';\r\nimport type { TransportListener, TransportUnsubscribe } from '@aspectly/transports';\r\n\r\n// Extend BaseTransport for helper methods\r\nclass ElectronTransport extends BaseTransport {\r\n  readonly name = 'electron';\r\n\r\n  isAvailable(): boolean {\r\n    const win = this.getWindow();\r\n    return typeof win?.electron?.send === 'function';\r\n  }\r\n\r\n  send(message: string): void {\r\n    const win = this.getWindow();\r\n    if (!win?.electron?.send) {\r\n      console.warn('[ElectronTransport] electron.send not available');\r\n      return;\r\n    }\r\n    win.electron.send('message', message);\r\n  }\r\n\r\n  subscribe(listener: TransportListener): TransportUnsubscribe {\r\n    const win = this.getWindow();\r\n    if (!win?.electron?.on) {\r\n      return () => {};\r\n    }\r\n\r\n    const handler = (_event: any, message: string) => {\r\n      listener(message);\r\n    };\r\n\r\n    win.electron.on('message', handler);\r\n    return () => {\r\n      win.electron?.removeListener('message', handler);\r\n    };\r\n  }\r\n}\r\n\r\n// Register with high priority\r\nregisterTransport({\r\n  name: 'electron',\r\n  priority: 150,\r\n  detect: () => {\r\n    return typeof window !== 'undefined' &&\r\n           window.electron?.send !== undefined;\r\n  },\r\n  createTransport: () => new ElectronTransport(),\r\n});\r\n```\r\n\r\n### Implementation Checklist\r\n\r\nWhen creating a custom transport:\r\n\r\n1. ✓ Extend `BaseTransport` or implement `Transport` interface\r\n2. ✓ Provide unique `name` property\r\n3. ✓ Implement `isAvailable()` to check environment\r\n4. ✓ Implement `send()` to send messages\r\n5. ✓ Implement `subscribe()` to receive messages\r\n6. ✓ Return cleanup function from `subscribe()`\r\n7. ✓ Handle SSR/missing globals safely\r\n8. ✓ Create a `TransportDetector` for registration\r\n9. ✓ Set appropriate `priority` (higher = checked first)\r\n\r\n## Related Packages\r\n\r\n- [`@aspectly/core`](../core) - Core bridge protocol and message handling\r\n- [`@aspectly/web`](../web) - Web/iframe integration with React hooks\r\n- [`@aspectly/react-native`](../react-native) - React Native WebView integration\r\n- [`@aspectly/react-native-web`](../react-native-web) - Universal React Native Web support\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}