{"_id":"@spider-mesh/ws","_rev":"31-09c70503fe61d771781413c57f590a37","name":"@spider-mesh/ws","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.130":{"name":"@spider-mesh/ws","version":"1.0.130","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.130","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/core#readme","bugs":{"url":"https://github.com/spider-mesh/core/issues"},"dist":{"shasum":"c2cca45cb6eb8f358e63107a3a2458de62361384","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.130.tgz","fileCount":8,"integrity":"sha512-b9pnf6P628wHOXp6VFpWeQ/KHqKrxBO97+wiO1pYGnmpLLU2l0eRejLPEXCHVvegK3v35ExSgRYh9Ph63p0SMQ==","signatures":[{"sig":"MEYCIQDdESVAK2xcWasIoOKW3744WFTR4lyO2dYshIbbd9OD2AIhANrydL23rxgrW0WlPahBR/DU3a4Uhxj8pyeSYChaHoVt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15503},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"445f0bd8f803990528044c267fe58cbe8e06459f","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/core.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","@types/ws":"^8.5.12","@types/uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.129"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","typescript":"^5.0.4","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.130_1724598523662_0.7774781003612652","host":"s3://npm-registry-packages"}},"1.0.131":{"name":"@spider-mesh/ws","version":"1.0.131","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.131","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/core#readme","bugs":{"url":"https://github.com/spider-mesh/core/issues"},"dist":{"shasum":"5c1d89e8851c06c1c9fc00327b4675d8f0eda6fa","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.131.tgz","fileCount":17,"integrity":"sha512-+/7iH5J/mIScdJuBOidNb7mjyOc8arCCjts58QArufvZtK1jc49NAb+0jfwv5dhzC8VnDMzaW7xOFgbI8tr87A==","signatures":[{"sig":"MEUCIQDGgS2BHD+LgHqauslxMMA1uRECUyaJdrdaGhfE/aTNbAIgJN6mQYyFQ62W1bnHwC85GTEUcJuHFGLgI9melW7Q5ys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18830},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"445f0bd8f803990528044c267fe58cbe8e06459f","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/core.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","@types/ws":"^8.5.12","@types/uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.129"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","typescript":"^5.0.4","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.131_1724600152475_0.3941672142622126","host":"s3://npm-registry-packages"}},"1.0.132":{"name":"@spider-mesh/ws","version":"1.0.132","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.132","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"7252df94ba7b10618f8c097aa57b6ad259d78c03","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.132.tgz","fileCount":8,"integrity":"sha512-mE8dBsWSFVX+eDY2aS/WGpm7QKaNAibY88JTkFOwcCA7TCtWanKnUGclOQ9AcGeRR5mNl3lLDKZi7bp4bGH19A==","signatures":[{"sig":"MEYCIQDlhu/kXFDHOiCv9aSY0OCurmHpUYy/ziuQ+8pYmH+iUQIhAOKilheX23wxPEKr8dzbksHG383nh2Bct3IVUBxR77yI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16275},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"f611a25886af4f8ab7a87d06d6c4df77bf32f535","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.129"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.132_1724600718669_0.7201847404200594","host":"s3://npm-registry-packages"}},"1.0.133":{"name":"@spider-mesh/ws","version":"1.0.133","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.133","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"6ea97fa8c7c58bd57fc0096cab60786298978a5f","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.133.tgz","fileCount":8,"integrity":"sha512-nCHDD27U89aMCXlAtZMehoWw4UkZVVT9kCuxHFls6BJ/i1qw43iYaNikWNWKu8xBxQuxBrnpaK6RL7553ZSo3g==","signatures":[{"sig":"MEUCIG7krK6fFmkrx+RKyLZOzzYU+zjKQoF5w4JluQRH200IAiEA0CHV0UHFJXjlZ8IXcmVvIqElqOCHb7FPaA6T9KSCSis=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15453},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"f611a25886af4f8ab7a87d06d6c4df77bf32f535","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.132"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.133_1724601597916_0.5007402106398429","host":"s3://npm-registry-packages"}},"1.0.135":{"name":"@spider-mesh/ws","version":"1.0.135","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.135","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"e128fe62756229460323db3a13c60c19af840bf3","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.135.tgz","fileCount":8,"integrity":"sha512-i0E4MeloWqp2LeO5xPE2pRPD9F4RhjDzTROj5AyuFz+1R81o/MlkxkyuRT391DPBe+IceEXBxM1xTOJjzMQOVA==","signatures":[{"sig":"MEUCIBai3DOkP3q4nDCe09mnbxV9m88hixNeCrePknn1TfesAiEA/WjjzSG25Pk8yDg8P+sd3dGTrUm4Zsd68X75qYuEIUs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15482},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"f611a25886af4f8ab7a87d06d6c4df77bf32f535","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.135"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.135_1724603684772_0.5133814036304896","host":"s3://npm-registry-packages"}},"1.0.136":{"name":"@spider-mesh/ws","version":"1.0.136","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.136","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"47ee126555ed5f4e9a16e23f97a62bb5e94cb522","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.136.tgz","fileCount":8,"integrity":"sha512-pEK7QnVxnXDvXWzFjZ/j25c0PnuYrupYUPk0j0Ombg/wVHlnG7CYArNoF+m8DV3r69CIL8RgFoTnyx5IUkYYEw==","signatures":[{"sig":"MEUCIHCc9bPja7J2AUgzO1ngi/R1g141beJnn4oGJ4LLGstRAiEArs5fgiFEY3+EQIHcZrMn3RyGZhjM5iJPntAa5gdqNW8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15341},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"43f98df35423ab31fa1328faa91c662a69ff4aaa","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0","@spider-mesh/core":"^1.0.136"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.136_1724605104360_0.6819270996852884","host":"s3://npm-registry-packages"}},"1.0.137":{"name":"@spider-mesh/ws","version":"1.0.137","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.137","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"1307bdec5baefe5946bd9dada781b105d407e783","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.137.tgz","fileCount":8,"integrity":"sha512-aDrala3ThOr2NpEyjTfBlJiXfbMLIbBonN4MOb3AfVTdd6BPV2YCU2RJum8206s9jmPkHdvgs4PsYj54ycu/9w==","signatures":[{"sig":"MEUCIDHqRZJMbGwwyZU1wcByXAS/IYSTevyfTZyNpn3aXTwbAiEAngiX8HyWRA38NyFMT6tOAbBTd/D52v7H5q7xJVwCQwU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15341},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"5e8b3ae0e47321dc039c8c4cba5ae1acf3261b18","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.137"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.137_1724606044840_0.894350650834459","host":"s3://npm-registry-packages"}},"1.0.138":{"name":"@spider-mesh/ws","version":"1.0.138","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.138","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"7ba9e9054b9ba011c68c141b992bf6b1ef42ce50","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.138.tgz","fileCount":8,"integrity":"sha512-x64a6CaEMo/YS3zed9Ec3WigS8KFcxN86/Kpx5yWh+KN1cewk0vUQ7k4kLeC+bjQ42ywffzJ4N/qVilgoywgoQ==","signatures":[{"sig":"MEQCIDJjkVa3WwcrXmfwjHlDMRu2mWpzW14cUL7de+r4GyKDAiA09iioZ1EHWsCCLBrXU9Zdu5aevyBydUQni4bOOg8LGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15734},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"d948d7a83c869121ebde51d23ae05e2c45a8255e","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.137"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.138_1724646851697_0.03678369121085656","host":"s3://npm-registry-packages"}},"1.0.139":{"name":"@spider-mesh/ws","version":"1.0.139","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.139","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"fb119ad5d215fae92e59580a53bc09467c6c1f0b","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.139.tgz","fileCount":8,"integrity":"sha512-4vvmUKqYUAxCNmFb4mCwigv3JovxgVBCUEvJbMzE0mvMnDVpil8+SFLCGZ8i5GOTUW74W00AxjYKw4DmSaahHQ==","signatures":[{"sig":"MEUCIQCO05MDnji+DPaTeFivQG033cJVOGUfT5Up/I5pwFm2DwIgV7q/Vs788aRDE+fGaNnHpbXZYEpqi4flYI2COhhHk0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16059},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"6f09f6e8ce85dd1080b6c0410d5187d2332ab8a7","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.137"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.139_1724647489392_0.5467980625452598","host":"s3://npm-registry-packages"}},"1.0.140":{"name":"@spider-mesh/ws","version":"1.0.140","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.140","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"5bc1b496e260f7d0582cd67f52c8a67ca17cd045","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.140.tgz","fileCount":8,"integrity":"sha512-YD6VDmFB+HQLpWiHjN6TFnx6krAWPCfoqswqQPJLzuWaEuiitk0jN7Qtd7fSYenMISJjvc0f6tdAEK3hcOZQzw==","signatures":[{"sig":"MEQCIFuQZYHs4HbmMrSz3vvp2JxreojegUe0Y3vOImkc4j8GAiAkqGFKgooARGWBAN3JvULG9t+t25oJzQ37PyiGob3q2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15775},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"6f09f6e8ce85dd1080b6c0410d5187d2332ab8a7","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.138"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.140_1724653197485_0.8943689169752607","host":"s3://npm-registry-packages"}},"1.0.141":{"name":"@spider-mesh/ws","version":"1.0.141","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.141","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"00958d7accfb14de46a6f2a190f40c0423d9968b","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.141.tgz","fileCount":8,"integrity":"sha512-FVWPYkHiraVGrrJP/9vB+5jEQ9lq3ehuft7I82CBq0BQ4XYii8O2El+OOdrHfC6VoMvG+EVDV34uaLo0kbfg8Q==","signatures":[{"sig":"MEUCIQCLcgEpykCGeenCcjMGPEem62xB+KUma/nRWN10oyhN/QIgQpASGCYdMTc+UpXeN6fGGxOOHCzIaK6X88okP2ZvlgU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15945},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"da1430a147615898826bb37b808120dd79b3533e","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.138"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.141_1724658901490_0.2045864265452455","host":"s3://npm-registry-packages"}},"1.0.142":{"name":"@spider-mesh/ws","version":"1.0.142","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.142","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"341817879065412bbd55fa923a90c8a151b675b9","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.142.tgz","fileCount":8,"integrity":"sha512-pnu6a2w6HX5ViU1G8Sa3V6DgmM1i89Twcy1XS0nHv8Tck1cffpCat02tPkainIJlXDmnxglVYCvXZX0hFrGUXg==","signatures":[{"sig":"MEYCIQC31ub4Xlnoqm9ehHd13MPb3H9HO4KrURhlWek1cUf5cgIhAPrSvyLzNWOz236amiTf4ABYa/5kuUT8H7PwxoAsymSA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15945},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"d5d9d15c1e01940f4d6c820093d6365f3233ee56","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.142"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.142_1724670629139_0.34396333280986324","host":"s3://npm-registry-packages"}},"1.0.143":{"name":"@spider-mesh/ws","version":"1.0.143","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.143","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"55c2a3e34321ee37ecfdeac11e171dbc80c28580","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.143.tgz","fileCount":8,"integrity":"sha512-9vPNe3LtXMy2fbOI6bhz2eY1Z7HwVC7HoyAyBl7iG/HdcPpHlgGri7Y6R5pfz78yOyo5bGIYuq2ba5zVo3oBlw==","signatures":[{"sig":"MEQCIAKTMbBqwwVxvkqAok3jdcUcneg7GcapA4dw9kIQ/zemAiA7TjxpBaJdXfAsRYWuXc7eoEThaxlwABQxmh+yxK9r+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16450},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"d5d9d15c1e01940f4d6c820093d6365f3233ee56","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.142"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.143_1724896216479_0.05970793671342123","host":"s3://npm-registry-packages"}},"1.0.144":{"name":"@spider-mesh/ws","version":"1.0.144","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.144","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"e228379730c20656fb1b69ad3044473c5c8471b4","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.144.tgz","fileCount":8,"integrity":"sha512-tVZwedu7QYuYY8aepHBVSjdhJpeK+saEQ1GmwMy9GTqY/qSFRRVwbjjdf+ijDzemFA/sd+hziuS0Jr1rcZLaqA==","signatures":[{"sig":"MEUCIA15QLiy5gAIRLtr9pA8RnkaqBXMXRTnHCFDrk+ABsffAiEAitEUZOaHGnKUX9S+UKJhESY5IEgCGYt72TC4TyWVmko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17482},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"e38a8762f75214f008770d849479672ee8188a9b","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.142"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.144_1724896948630_0.38964665942232957","host":"s3://npm-registry-packages"}},"1.0.145":{"name":"@spider-mesh/ws","version":"1.0.145","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.145","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"4d78ee4a76270841af9378c1d317bbfa7994b1f0","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.145.tgz","fileCount":8,"integrity":"sha512-ba+OduzAv0bzIdA5KYkCMef2iJyd+4fCQA+35FdWXJX7I8lrKWOlH0IwxOGIuMbPP5iDT9CFGg6OYAJLNEA9xg==","signatures":[{"sig":"MEUCIQCufPVpMjaTE9dKjW4m3zO9uBKtl4IpOPqTSQH3XemXvQIgEzysuvg7zw9dys3VRAIVKF03y9GDKE3EwVNSU5/WZsM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17397},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"42585f540a87fc9d056b31bf13f8c3760f2d7ce4","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.142"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.145_1724897244515_0.14719213589950741","host":"s3://npm-registry-packages"}},"1.0.146":{"name":"@spider-mesh/ws","version":"1.0.146","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@1.0.146","maintainers":[{"name":"duongvanba","email":"duongvanba197@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"a8097e6bc3b4decbf8c6f9107939eba5564408ba","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-1.0.146.tgz","fileCount":8,"integrity":"sha512-72/bm6HI6tVCKpiloYHboqg4E54oKNU31XNptYftFX+rj/pHH6I6K92vDks9bF0ib+sJRlrSKse8tycusYCnVQ==","signatures":[{"sig":"MEUCIQDfASUGqY9MQcpCOaneyqsYxbR0ILK0057xOpKLPpRJeQIgR26vV1vPFF2TeoEEHqcowIAJZ/Aqqsa8Zj73VzhjPlk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17476},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}}},"gitHead":"b4cd033e3dfb10fa6f65df60e02e14cab9e6aa3c","scripts":{"dev":"clear; node --no-warnings --es-module-specifier-resolution=node --experimental-specifier-resolution=node --loader ts-node/esm ","build":"tsc -v; rm -rf build && tsc -b tsconfig.json"},"_npmUser":{"name":"duongvanba","email":"duongvanba197@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"10.5.0","description":"Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters","directories":{},"_nodeVersion":"20.12.2","dependencies":{"ws":"^8.18.0","rxjs":"^7.8.1","uuid":"^10.0.0","frame-stream":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/ws":"^8.5.12","typescript":"^5.0.4","@types/node":"^18.16.0","@types/uuid":"^10.0.0","@spider-mesh/core":"^1.0.142"},"_npmOperationalInternal":{"tmp":"tmp/ws_1.0.146_1725203054892_0.06387407238876275","host":"s3://npm-registry-packages"}},"2.0.37":{"name":"@spider-mesh/ws","version":"2.0.37","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.37","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"5a5962ab741996b701b9f1d0a8cf70a563b4c165","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.37.tgz","fileCount":82,"integrity":"sha512-9954IYwShZ+d5a1/j525XSpy94TI7+p5K4np93vkZoIrNE0KoTOfr4hzU5HJLOfDgUs9d2O75mE26ytUvDJ2Sg==","signatures":[{"sig":"MEYCIQCnW3alOwugP/iIFFCiloJzAr+G8vcw9GX8u1WtUhH/ngIhAJGjd7pCwahy86jE0RTZVWYwePWaFDFAYlSXAcYJTRsH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130367},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","shasum":"5a5962ab741996b701b9f1d0a8cf70a563b4c165","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-9954IYwShZ+d5a1/j525XSpy94TI7+p5K4np93vkZoIrNE0KoTOfr4hzU5HJLOfDgUs9d2O75mE26ytUvDJ2Sg==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"file:../core"},"peerDependencies":{"@spider-mesh/core":"^2.0.37"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.37_1777880949675_0.038315055896479544","host":"s3://npm-registry-packages-npm-production"}},"2.0.38":{"name":"@spider-mesh/ws","version":"2.0.38","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@2.0.38","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"9c28ff1f2053f4a10b8a78331a36261381d172ab","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.38.tgz","fileCount":82,"integrity":"sha512-fdw7AM1CGZ4YZb+BSX72BwNZqimfzQy99QGoHiS7kdkEYKO1dCs1zxnZWM2r0AWk4ftdfCyplys6aRwQjxSIZg==","signatures":[{"sig":"MEYCIQDELhKNExxQEzO/cNGLnb9t1sE0SCV/InZyarAnIpxzfwIhALJQRt/tX7dD8wQ3s0HjMba7ajWJ6tdgVPKMwJB3nVuz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132445},"main":"./build/src/index.js","type":"module","types":"./build/src/index.d.ts","browser":{"crypto":false},"exports":{".":{"import":{"types":"./build/src/index.d.ts","default":"./build/src/index.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"gitHead":"6ea41461fb3d2605621d73977ac38efccd946023","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"11.6.2","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"file:../core"},"peerDependencies":{"@spider-mesh/core":"^2.0.38"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.38_1777885932845_0.9954853599980433","host":"s3://npm-registry-packages-npm-production"}},"2.0.40":{"name":"@spider-mesh/ws","version":"2.0.40","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@2.0.40","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"289eaa31abb64d60e4a8e01c254a1f7214826376","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.40.tgz","fileCount":97,"integrity":"sha512-sItzK9VO11RTEo1EEpG3/yv8RknKVleYDcWwQQdt3j2FL2i9kV3FDxppsG45LDUbYW4/aw0tOz43BX/0JGE8Kw==","signatures":[{"sig":"MEUCIQCBahD7xuJZ7Xv3vdRteJ2eXQqPKct9XTyexpFYAAxBMQIgMvCCCk4764UzpxiYPR24tav69aztNb6EVcxltI4di5w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138490},"type":"module","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"gitHead":"9da17f6a1b2764c5a613ec2ade6b74c793837bbb","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"11.6.2","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.40"},"peerDependencies":{"@spider-mesh/core":"^2.0.40"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.40_1777895623330_0.03751095108599167","host":"s3://npm-registry-packages-npm-production"}},"2.0.41":{"name":"@spider-mesh/ws","version":"2.0.41","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@2.0.41","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"5c6169b080725959d58a8fbca3167628941c333f","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.41.tgz","fileCount":97,"integrity":"sha512-/eutEGABtqL5Rhb3y59r8aUko4qYvgoESmtvAqkaqw+wd1v6FigCTWG4SFv9ELK2nvELhOwO14uv4XM0uaTKKQ==","signatures":[{"sig":"MEQCIA0/n44y44xctDXSCacm1mt38PFIA3QXw3eeh9CR9Q/4AiAsKd9zmBOeD/b9PL6rssWgvcGj4yzi1AiqcR75VwFEtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137896},"type":"module","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"gitHead":"c30c5254af352e7a5c2e372b7fb33f772f76dfa1","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"11.6.2","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.41"},"peerDependencies":{"@spider-mesh/core":"^2.0.41"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.41_1777904040904_0.7859526178597829","host":"s3://npm-registry-packages-npm-production"}},"2.0.42":{"name":"@spider-mesh/ws","version":"2.0.42","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.42","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"f550129d45b4a4a4e7af965968f757eadb798167","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.42.tgz","fileCount":100,"integrity":"sha512-yHwwMW4S/Fs6vAnqKhSOKFkQIf70grwwty8xh6mWhaV/TWIRDzIKseBIFt81fUSbca61iIxWlyhPCzfE6FxKmg==","signatures":[{"sig":"MEUCIQChJ5PiOQ0b/f/3SawCER7XQVD4+f6FGycRIB1sEvu8IQIgUHa2vWri3+FY1KUdGS+jSFBjpErkwAep91Upl5WE1GI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133529},"type":"module","shasum":"f550129d45b4a4a4e7af965968f757eadb798167","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-yHwwMW4S/Fs6vAnqKhSOKFkQIf70grwwty8xh6mWhaV/TWIRDzIKseBIFt81fUSbca61iIxWlyhPCzfE6FxKmg==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.42"},"peerDependencies":{"@spider-mesh/core":"^2.0.42"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.42_1778081912424_0.5667609910190654","host":"s3://npm-registry-packages-npm-production"}},"2.0.44":{"name":"@spider-mesh/ws","version":"2.0.44","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@2.0.44","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"59660751626cc96f44306b41bda636fcf9cb39ce","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.44.tgz","fileCount":34,"integrity":"sha512-BRAyxwnLrjThXafavibOri+uHabJmgV6e3qOfZj3Acs1CAh33w7nfLJGMn6OauD0rZ38+te3PE3GWWX0o84NJQ==","signatures":[{"sig":"MEYCIQCo+mc3HuVeEQlUEdnL+tli8yXXuAdqfQPfaCsNeD4NGgIhANPnnEl3Bfa8/sFF4swzWLQuU0rhPc27G0QgnZKrJhZd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58809},"type":"module","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"gitHead":"63c252c72597ea49b773f912ce0805493fc44a0e","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"11.6.2","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.44"},"peerDependencies":{"@spider-mesh/core":"^2.0.44"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.44_1778166227427_0.186914133609569","host":"s3://npm-registry-packages-npm-production"}},"2.0.45":{"name":"@spider-mesh/ws","version":"2.0.45","author":{"name":"Duong Van Ba"},"license":"ISC","_id":"@spider-mesh/ws@2.0.45","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"homepage":"https://github.com/spider-mesh/ws#readme","bugs":{"url":"https://github.com/spider-mesh/ws/issues"},"dist":{"shasum":"01e7403e9e4c7d0437500eca6f7430e20e63f801","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.45.tgz","fileCount":34,"integrity":"sha512-3uJj5GGTnmvckfoAINhX1+mtLgbkBpG1vOXqO1dhn9JFy3m0KdXFBGs8NeHL0V80+CD+hZEmoIPAwNhYsM8bHA==","signatures":[{"sig":"MEQCIHIUhXmiBNK5pXBOMQplqDPxLd1jzzuG67UCZkvRmqs+AiBU3lANR9MhGQUvqZfcixJGYQRcfr5Q04slWm0IrkJf7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63020},"type":"module","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"gitHead":"63c252c72597ea49b773f912ce0805493fc44a0e","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"repository":{"url":"git+https://github.com/spider-mesh/ws.git"},"_npmVersion":"11.12.1","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.45"},"peerDependencies":{"@spider-mesh/core":"^2.0.45"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.45_1778228231658_0.8675466416775273","host":"s3://npm-registry-packages-npm-production"}},"2.0.145":{"name":"@spider-mesh/ws","version":"2.0.145","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.145","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"7fa1f86bdaea489f76f7e1d6b837300d0627123d","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.145.tgz","fileCount":34,"integrity":"sha512-LlpiaQJAKjNY/b/mBHcmQwzA0a29bsqqvFM2ZJf7Q/PlnJuMEanMpLX9peFn2EO5ip8zSS4w3bZm4nRK9XrLvA==","signatures":[{"sig":"MEUCIBhLq6Z6PRzGbZlxHrp+IEyixhw9TMqsFUzIxtHUZ7erAiEAngavyXhAzWjy/avEOhngq7GDkewBQ1ZFQCv1wNRt1Es=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69396},"type":"module","shasum":"7fa1f86bdaea489f76f7e1d6b837300d0627123d","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-LlpiaQJAKjNY/b/mBHcmQwzA0a29bsqqvFM2ZJf7Q/PlnJuMEanMpLX9peFn2EO5ip8zSS4w3bZm4nRK9XrLvA==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.145"},"peerDependencies":{"@spider-mesh/core":"^2.0.145"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.145_1780934906678_0.954278415245829","host":"s3://npm-registry-packages-npm-production"}},"2.0.146":{"name":"@spider-mesh/ws","version":"2.0.146","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.146","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"0e25a34b6153093a77cbfce38764778832b24a83","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.146.tgz","fileCount":34,"integrity":"sha512-2FQKPrOJXLpzZG74MIe4J+ZsGyCo9GwTolhPeW6nmRGEyDz3UftRC3vJ4i6sxyS5F56LLNnIJiB92EK9l+fTMQ==","signatures":[{"sig":"MEYCIQDrk/YTm0YaszP51Mnvzs7WlwfSqlnm8cInegSy7bD2MwIhAJW9hSyKpZLlm6QlpT+8H2M0TlLJzDrUELFxwVQmT+9g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69396},"type":"module","shasum":"0e25a34b6153093a77cbfce38764778832b24a83","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-2FQKPrOJXLpzZG74MIe4J+ZsGyCo9GwTolhPeW6nmRGEyDz3UftRC3vJ4i6sxyS5F56LLNnIJiB92EK9l+fTMQ==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.146"},"peerDependencies":{"@spider-mesh/core":"^2.0.146"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.146_1780995121369_0.6580141564308268","host":"s3://npm-registry-packages-npm-production"}},"2.0.152":{"name":"@spider-mesh/ws","version":"2.0.152","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.152","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"e9b78e5fd51e22e0215f662899ad46530eb2e771","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.152.tgz","fileCount":34,"integrity":"sha512-Gs1FW5QI8t5xmTeeZcGosSuTwgVl/pUE/C2h20rYmRH96GvPgNZL2Is+x4NIGVC9j4iJPsvUTixZJz/+VkIYZQ==","signatures":[{"sig":"MEQCIFw7AJAoIM/ACKZj1i/ciDd4Fz70XgoJa74+QO2uWsniAiAs6x/hsrQRRX56i1m9J6nYJTYziFKgvg9T7MhPQyBU6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70248},"type":"module","shasum":"e9b78e5fd51e22e0215f662899ad46530eb2e771","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-Gs1FW5QI8t5xmTeeZcGosSuTwgVl/pUE/C2h20rYmRH96GvPgNZL2Is+x4NIGVC9j4iJPsvUTixZJz/+VkIYZQ==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.152"},"peerDependencies":{"@spider-mesh/core":"^2.0.152"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.152_1781322138018_0.4785547876712819","host":"s3://npm-registry-packages-npm-production"}},"2.0.153":{"name":"@spider-mesh/ws","version":"2.0.153","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.153","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"b2d58195614ec8fc639db676ecaa8815a3839556","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.153.tgz","fileCount":46,"integrity":"sha512-Rrkfz/Ls2rKvqVX1lUDdqxssaa69UZgYrE6DmuzQW3HbvC/1lIyHivo3AhcptGFQkzYXcAFoi+RkEDMZC56blA==","signatures":[{"sig":"MEYCIQCeveT+Q2X+nZCW1Ik0l2Z/4V6FNfdIJ+0k1Y50SAFr4QIhAKSh9a2zAKLvtDRqMLzQkpv+Omf9x7P+g49ugwoQJEPx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90832},"type":"module","shasum":"b2d58195614ec8fc639db676ecaa8815a3839556","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-Rrkfz/Ls2rKvqVX1lUDdqxssaa69UZgYrE6DmuzQW3HbvC/1lIyHivo3AhcptGFQkzYXcAFoi+RkEDMZC56blA==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.153"},"peerDependencies":{"@spider-mesh/core":"^2.0.153"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.153_1781886940887_0.5668693691774633","host":"s3://npm-registry-packages-npm-production"}},"2.0.154":{"name":"@spider-mesh/ws","version":"2.0.154","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.154","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"449fea8d5b3e719864ab736da684c1ebb4d4f8d9","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.154.tgz","fileCount":46,"integrity":"sha512-wsr523vumYf8JfVx7ezjQHcm1s+TWF12kWbxqTZicfQMgST+Yn1KT8MNU/DM7LD+S2h4CCi47Q2OxULwee35/w==","signatures":[{"sig":"MEQCICY3rJxnBOtND2ZI2uqeziNhi555JM1rf6BzvXp/WWUiAiApEiN00QuD1jW5LWbOJijsPOminNM0TEKxlPhEZUgLPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90832},"type":"module","shasum":"449fea8d5b3e719864ab736da684c1ebb4d4f8d9","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-wsr523vumYf8JfVx7ezjQHcm1s+TWF12kWbxqTZicfQMgST+Yn1KT8MNU/DM7LD+S2h4CCi47Q2OxULwee35/w==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.153"},"peerDependencies":{"@spider-mesh/core":"^2.0.153"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.154_1781886942375_0.9358061510141871","host":"s3://npm-registry-packages-npm-production"}},"2.0.156":{"name":"@spider-mesh/ws","version":"2.0.156","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.156","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"f3f232546f64c9db1a11757f228030020d0a0fa2","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.156.tgz","fileCount":46,"integrity":"sha512-1TivO7r9rYyau91mM5SlKfsvQ0A+JxBiP9SxyFVZrKm5rZrxrO7OFJq2frTR3UPtE/lsCGMmNs5+wJdstfVOJQ==","signatures":[{"sig":"MEUCIQCWGvZ4Id7m/wwtH1kS6utVjfMuupGyHjqZT0xMiLGXXAIgUdZDlrd9ZOKK7LpeGrK87Sdgapbnt2FSbvv3nhTbJqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90832},"type":"module","shasum":"f3f232546f64c9db1a11757f228030020d0a0fa2","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-1TivO7r9rYyau91mM5SlKfsvQ0A+JxBiP9SxyFVZrKm5rZrxrO7OFJq2frTR3UPtE/lsCGMmNs5+wJdstfVOJQ==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.156"},"peerDependencies":{"@spider-mesh/core":"^2.0.156"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.156_1782472463607_0.7106267347679163","host":"s3://npm-registry-packages-npm-production"}},"2.0.157":{"name":"@spider-mesh/ws","version":"2.0.157","author":"Duong Van Ba","license":"ISC","_id":"@spider-mesh/ws@2.0.157","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"dist":{"shasum":"20ff6f1278b2555bc861aaff89a46eb729b90806","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-2.0.157.tgz","fileCount":46,"integrity":"sha512-/yyofvKrmQH27V/aKiSE4nSLOUrFUxwJ71ls5fDKndT0Qt36TnRIvx9JoWDgSQa2BjhC3n0umPTV2IrfjigbQA==","signatures":[{"sig":"MEUCIAzmpZD+lKr/M42Wxr/tnwuxfv5lfEbX7Q247is15Q1KAiEAp7RBTRdzjV63S7TafuHFZX3NU5VPPnaL+b3bW02YeRU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90832},"type":"module","shasum":"20ff6f1278b2555bc861aaff89a46eb729b90806","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"_integrity":"sha512-/yyofvKrmQH27V/aKiSE4nSLOUrFUxwJ71ls5fDKndT0Qt36TnRIvx9JoWDgSQa2BjhC3n0umPTV2IrfjigbQA==","repository":{"url":"https://github.com/spider-mesh/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"_nodeVersion":"22.6.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","@msgpack/msgpack":"^3.1.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"^2.0.157"},"peerDependencies":{"@spider-mesh/core":"^2.0.157"},"_npmOperationalInternal":{"tmp":"tmp/ws_2.0.157_1783153900179_0.6191429285236059","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@spider-mesh/ws@3.0.0","dist":{"shasum":"400a1b4930c6f8bdcd9397865315b2a5d78aff05","tarball":"https://registry.npmjs.org/@spider-mesh/ws/-/ws-3.0.0.tgz","fileCount":46,"integrity":"sha512-9A7tDlz9WSMj+2AogtNpzRm0b1tmGivHslGxflqL7LI0IZ3ZK7X6p1VUXZn9wNY2NgqfBSJO8IVbcek+Z2WYZw==","signatures":[{"sig":"MEQCIH14hc8QJjBZdqqrS7JZIgsHImotVtn/wQC6zk1NfZxtAiBSTDMSycb6TIE/AfY9qMcgb1Payfc+RCCmAP+v9KBntQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDyDtJTBXUURqCXyaeq3TtcIsCeDV3LZJcCn7XKK/qabQIgQ3GD5l/haHwF2lmI9UV6cvhLMjF2FjF4zqvlqTkCisY="}],"unpackedSize":112782},"name":"@spider-mesh/ws","type":"module","author":"Duong Van Ba","shasum":"400a1b4930c6f8bdcd9397865315b2a5d78aff05","browser":{"crypto":false},"exports":{"./node":{"import":{"types":"./build/src/node.d.ts","default":"./build/src/node.js"}},"./browser":{"import":{"types":"./build/src/browser.d.ts","default":"./build/src/browser.js"}},"./react-native":{"import":{"types":"./build/src/react-native.d.ts","default":"./build/src/react-native.js"}},"./relay-server":{"import":{"types":"./build/src/relay-server.d.ts","default":"./build/src/relay-server.js"}}},"license":"ISC","scripts":{"build":"tsc -v && tsc -b tsconfig.json","test:e2e":"bun test tests/websocket-transporter.e2e.test.ts && bun test tests/websocket-spidermesh.e2e.test.ts && bun test tests/websocket-spidermesh-reverse.e2e.test.ts && bun test tests/websocket-spidermesh-matrix.e2e.test.ts && bun test tests/websocket-spidermesh-round-robin.e2e.test.ts && bun test tests/websocket-getting-started.e2e.test.ts && bun test tests/websocket-registry-free-wait.e2e.test.ts && bun test tests/websocket-missing.e2e.test.ts && bun test tests/node-online-spam.e2e.test.ts && bun test tests/websocket-registry-free-watch.e2e.test.ts && bun test tests/websocket-stream-lifecycle.e2e.test.ts && bun test tests/websocket-rpc-contract.e2e.test.ts","test:websocket":"bun run examples/websocket-smoke-test.ts","test:websocket:e2e":"bun run examples/websocket-e2e-test.ts","example:websocket:client":"bun run examples/websocket-client.ts","example:websocket:server":"bun run examples/websocket-server.ts","test:websocket:e2e:matrix":"bun run examples/websocket-e2e-matrix-test.ts","example:websocket:provider":"bun run examples/websocket-provider.ts","test:websocket:e2e:reverse":"bun run examples/websocket-e2e-reverse-test.ts"},"version":"3.0.0","_npmUser":{"name":"duongvanba","email":"duongvanba.agency@gmail.com"},"homepage":"https://github.com/flygo-opensource/spider-mesh/tree/main/packages/ws#readme","_integrity":"sha512-9A7tDlz9WSMj+2AogtNpzRm0b1tmGivHslGxflqL7LI0IZ3ZK7X6p1VUXZn9wNY2NgqfBSJO8IVbcek+Z2WYZw==","repository":{"url":"git+https://github.com/flygo-opensource/spider-mesh.git","type":"git","directory":"packages/ws"},"_npmVersion":"10.8.3","description":"Built-in WebSocket transporter and relay server for Spider Mesh","directories":{},"maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.20.0","rxjs":"^7.8.2","msgpackr":"^1.12.1","@types/ws":"^8.18.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.13","typescript":"^6.0.3","@types/node":"^25.6.0","@spider-mesh/core":"file:../core","@spider-mesh/events":"file:../events"},"peerDependencies":{"@spider-mesh/core":"^3.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ws_3.0.0_1789974115211_0.5834911598288097"}}},"time":{"created":"2024-08-25T15:08:43.537Z","modified":"2026-09-21T07:01:55.500Z","1.0.130":"2024-08-25T15:08:43.861Z","1.0.131":"2024-08-25T15:35:52.616Z","1.0.132":"2024-08-25T15:45:18.841Z","1.0.133":"2024-08-25T15:59:58.069Z","1.0.135":"2024-08-25T16:34:44.933Z","1.0.136":"2024-08-25T16:58:24.555Z","1.0.137":"2024-08-25T17:14:04.979Z","1.0.138":"2024-08-26T04:34:11.841Z","1.0.139":"2024-08-26T04:44:49.516Z","1.0.140":"2024-08-26T06:19:57.652Z","1.0.141":"2024-08-26T07:55:01.604Z","1.0.142":"2024-08-26T11:10:29.311Z","1.0.143":"2024-08-29T01:50:16.613Z","1.0.144":"2024-08-29T02:02:28.816Z","1.0.145":"2024-08-29T02:07:24.659Z","1.0.146":"2024-09-01T15:04:15.141Z","2.0.37":"2026-05-04T07:49:09.813Z","2.0.38":"2026-05-04T09:12:12.986Z","2.0.40":"2026-05-04T11:53:43.512Z","2.0.41":"2026-05-04T14:14:01.082Z","2.0.42":"2026-05-06T15:38:32.581Z","2.0.44":"2026-05-07T15:03:47.599Z","2.0.45":"2026-05-08T08:17:11.800Z","2.0.145":"2026-06-08T16:08:26.804Z","2.0.146":"2026-06-09T08:52:01.503Z","2.0.152":"2026-06-13T03:42:18.160Z","2.0.153":"2026-06-19T16:35:41.038Z","2.0.154":"2026-06-19T16:35:42.517Z","2.0.156":"2026-06-26T11:14:23.794Z","2.0.157":"2026-07-04T08:31:40.337Z","3.0.0":"2026-09-21T07:01:55.301Z"},"author":"Duong Van Ba","license":"ISC","repository":{"url":"git+https://github.com/flygo-opensource/spider-mesh.git","type":"git","directory":"packages/ws"},"description":"Built-in WebSocket transporter and relay server for Spider Mesh","maintainers":[{"name":"duongvanba","email":"duongvanba.agency@gmail.com"}],"readme":"# @spider-mesh/ws\n\nTransporter WebSocket cho Spider Mesh, kèm relay server. Mọi node kết nối tới một relay; relay biết\nnode nào phục vụ service nào và tự chuyển request tới đó, nên node không cần biết địa chỉ của nhau.\nChạy được trên Node/Bun, trình duyệt và React Native.\n\n## Cài đặt\n\n```bash\nbun add @spider-mesh/core @spider-mesh/ws rxjs\n```\n\nCách khai báo và gọi service được mô tả trong `@spider-mesh/core`.\n\nRelay và mọi node phải cùng dùng `@spider-mesh/ws` 3.x: bản 3.0 đổi cách mã hoá frame (sang\n`msgpackr`, giống `@spider-mesh/tcp`), nên không kết nối được với relay hoặc client 2.x.\n\n| Import | Class | Dùng ở |\n| --- | --- | --- |\n| `@spider-mesh/ws/relay-server` | `WebsocketRelayServer` | Node/Bun (process relay) |\n| `@spider-mesh/ws/node` | `WebsocketTransporter` | Node/Bun |\n| `@spider-mesh/ws/browser` | `WebsocketTransporter` | Trình duyệt |\n| `@spider-mesh/ws/react-native` | `WebsocketTransporter` | React Native |\n\nGói không có import gốc (`@spider-mesh/ws`); luôn import theo đường dẫn con ở trên.\n\n## 1. Chạy relay\n\n```ts\nimport { WebsocketRelayServer } from '@spider-mesh/ws/relay-server'\n\nconst relay = new WebsocketRelayServer({ port: 8787 })\nconsole.log('relay listening on', relay.port)\n```\n\n| Tuỳ chọn | Mặc định | Ý nghĩa |\n| --- | --- | --- |\n| `port` | `8787` | Cổng lắng nghe. `0` để hệ điều hành chọn cổng trống. |\n| `host` | mọi interface | Địa chỉ lắng nghe. |\n| `path` | mọi path | Chỉ nhận kết nối tới path này. |\n| `isServerConnection` | mọi kết nối là server | Phân loại kết nối, xem [Kết nối không tin cậy](#kết-nối-không-tin-cậy). |\n\n`relay.close()` dừng relay.\n\n## 2. Provider\n\n```ts\nimport { Microservice, SpiderMesh } from '@spider-mesh/core'\nimport { WebsocketTransporter } from '@spider-mesh/ws/node'\n\n@Microservice()\nclass GreetingService {\n  hello(name: string) {\n    return `Hello ${name}`\n  }\n}\n\nconst transporter = new WebsocketTransporter()\ntransporter.connect('ws://127.0.0.1:8787')\n\nnew SpiderMesh({ transporters: [transporter] })\nnew GreetingService()\n```\n\n## 3. Client\n\n```ts\nimport { RemoteServiceLinker, SpiderMesh } from '@spider-mesh/core'\nimport { WebsocketTransporter } from '@spider-mesh/ws/node'\n\ntype GreetingService = {\n  hello(name: string): string\n}\n\nconst transporter = new WebsocketTransporter()\ntransporter.connect('ws://127.0.0.1:8787')\nconst mesh = new SpiderMesh({ transporters: [transporter] })\n\nconst greeting = RemoteServiceLinker.link<GreetingService>(mesh, {\n  service: 'GreetingService',\n  timeout: 3_000,\n})\n\nawait greeting.wait()\nconsole.log(await greeting.hello('Spider Mesh'))\n```\n\nCó nhiều provider cùng service thì relay chia request lần lượt cho từng provider (round-robin).\n\n## Trình duyệt và React Native\n\nAPI giống hệt bản Node; chỉ đổi import. Transporter dùng `WebSocket` có sẵn của môi trường, không cần\nmodule nào của Node.\n\n```ts\nimport { SpiderMesh } from '@spider-mesh/core'\nimport { WebsocketTransporter } from '@spider-mesh/ws/browser' // React Native: '@spider-mesh/ws/react-native'\n\nconst transporter = new WebsocketTransporter()\ntransporter.connect('wss://relay.example.com')\n\nconst mesh = new SpiderMesh({ transporters: [transporter] })\n```\n\n- **Dùng `wss://` ở production.** Trang tải qua `https://` không được mở `ws://` (mixed content). App\n  Android bản release chặn kết nối không mã hoá (`usesCleartextTraffic=false` mặc định), nên `ws://`\n  thất bại mà không báo lỗi rõ ràng.\n- **Relay không tự làm TLS.** Đặt nó sau một reverse proxy (nginx, Caddy, load balancer) nhận `wss://`\n  và chuyển tiếp WebSocket tới cổng của relay.\n- Khi phát triển trên Android, có thể tạm cho phép `ws://` bằng `android:usesCleartextTraffic=\"true\"`\n  trong `AndroidManifest.xml`; không dùng cho bản phát hành.\n- **App mobile chạy nền hoặc máy khoá màn hình**: hệ điều hành có thể cắt mạng của app mà không đóng\n  kết nối ngay, và `WebSocket` của trình duyệt/React Native không có ping để phát hiện sớm. **Hãy đặt\n  `timeout`** cho lời gọi trên mobile để chúng không chờ vô hạn. Transporter tự thử kết nối lại theo\n  `reconnectIntervalMs`, nên sẽ nối lại khi mạng có trở lại.\n\nBộ kiểm thử hợp đồng RPC đầy đủ đã chạy qua trong trình duyệt và trên React Native 0.86 (bản release,\nHermes, Android 16).\n\n## Tuỳ chọn transporter\n\n```ts\nimport { WebsocketTransporter } from '@spider-mesh/ws/node'\n\nconst transporter = new WebsocketTransporter({\n  heartbeatIntervalMs: 30_000, // gửi ping giữ kết nối (chỉ bản Node/Bun; WebSocket của trình duyệt không có ping)\n  reconnectIntervalMs: 1_000,  // chờ bao lâu trước khi kết nối lại\n  unsubscribeDelayMs: 10_000,  // giữ subscription event thêm một lúc sau khi không còn ai nghe\n})\n\n// Kết nối nhiều relay để dự phòng.\ntransporter.connect('ws://relay-a.internal:8787')\ntransporter.connect('ws://relay-b.internal:8787')\n\n// Trạng thái từng relay: 'connecting' | 'connected' | 'error' | 'not_connected'\ntransporter.status$.subscribe(status => console.log(Object.fromEntries(status)))\n\n// Ngắt một relay, hoặc tất cả.\ntransporter.close('ws://relay-b.internal:8787')\ntransporter.close()\n```\n\nKết nối tự động nối lại sau khi rớt. Tên transporter trên wire là `'websocket'`, dùng cho tuỳ chọn\n`transporter` khi gọi service.\n\n## Khi mất kết nối\n\nMọi lời gọi đều kết thúc bằng kết quả hoặc lỗi, kể cả khi không đặt `timeout`:\n\n| Tình huống | Bên gọi nhận |\n| --- | --- |\n| Không có provider nào cho service | `MICROSERVICE_OFFLINE` ngay |\n| Provider rớt khi đang xử lý (kể cả stream đang chạy) | `MICROSERVICE_OFFLINE` ngay |\n| Kết nối từ bên gọi tới relay rớt khi request đang chờ | `MICROSERVICE_OFFLINE` ngay |\n| Relay đã mất từ trước khi gọi | `MICROSERVICE_OFFLINE` ngay |\n\nChiều ngược lại: bên gọi rớt thì relay huỷ stream đang chạy ở provider.\n\nRequest **không** tự gửi lại, vì có thể provider đã xử lý xong. Muốn thử lại khi gặp\n`MICROSERVICE_OFFLINE` thì dùng tuỳ chọn `retry` khi gọi. Mất kết nối tới relay cũng không có nghĩa\nlà các node khác đã chết: danh sách node chỉ thay đổi khi relay báo node rời đi.\n\n## Liệt kê và chọn node (Topology)\n\nMặc định relay tự chọn provider. Khi cần biết danh sách node, gọi hàng loạt, hoặc chọn node theo\nchiến lược cho từng lời gọi, dùng chính transporter làm discovery của `Topology`:\n\n```ts\nimport { RemoteServiceLinker, SpiderMesh, Topology } from '@spider-mesh/core'\nimport { WebsocketTransporter } from '@spider-mesh/ws/node'\n\ntype GreetingService = {\n  hello(name: string): string\n}\n\nconst transporter = new WebsocketTransporter()\ntransporter.connect('ws://127.0.0.1:8787')\n\nconst topology = new Topology({ discovery: transporter })\nconst mesh = new SpiderMesh({ topology, transporters: [transporter] })\n\nconst greeting = RemoteServiceLinker.link<GreetingService>(mesh, { service: 'GreetingService' })\nawait greeting.wait(nodes => nodes.length >= 2)\n\nconsole.log(greeting.nodes.map(node => node.node_id))\nawait greeting.set({ routing: { strategy: 'least-active' } }).hello('Spider Mesh')\n```\n\n## Event\n\nCùng một transporter dùng được cho pub/sub của `@spider-mesh/events`:\n\n```ts\nimport { SpiderMesh } from '@spider-mesh/core'\nimport { EventBus } from '@spider-mesh/events'\nimport { WebsocketTransporter } from '@spider-mesh/ws/node'\n\nclass OrderPaid {\n  constructor(public orderId = '', public amount = 0) {}\n}\n\nconst transporter = new WebsocketTransporter()\ntransporter.connect('ws://127.0.0.1:8787')\n\nconst mesh = new SpiderMesh({ transporters: [transporter] })\nconst events = new EventBus({ mesh })\nevents.registerTransporter(transporter)\n\nconst orderPaid = events.link(OrderPaid)\norderPaid.listen().subscribe(event => console.log('paid', event.orderId))\nawait orderPaid.publish(new OrderPaid('o-1', 100))\n```\n\nRelay chỉ chuyển event tới các node đang lắng nghe topic đó.\n\n## Kết nối không tin cậy\n\nKhi relay mở cho cả client bên ngoài (ví dụ trình duyệt), dùng `isServerConnection` để phân biệt\nnode nội bộ với client. Kết nối **không phải server**:\n\n- không gửi được RPC request, nên không gọi được service;\n- không nhận danh sách node và thông báo node rời đi;\n- vẫn trả lời RPC (làm provider) và dùng event được.\n\n```ts\nimport { WebsocketRelayServer } from '@spider-mesh/ws/relay-server'\n\nconst relay = new WebsocketRelayServer({\n  port: 8787,\n  // Node nội bộ kết nối qua path /internal; mọi kết nối khác là client.\n  isServerConnection: (_socket, request) => request.url?.startsWith('/internal') ?? false,\n})\n```\n","readmeFilename":"README.md","homepage":"https://github.com/flygo-opensource/spider-mesh/tree/main/packages/ws#readme"}