{"_id":"vue-socket.io-extended","_rev":"30-746d02475bbdfb079d78890a564b90ff","name":"vue-socket.io-extended","dist-tags":{"latest":"4.2.0","alpha":"5.0.0-alpha.5"},"versions":{"1.0.0":{"name":"vue-socket.io-extended","version":"1.0.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/build.js","scripts":{"build":"webpack --progress --hide-modules"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"socket.io-client":"^2.0.0"},"devDependencies":{"babel-cli":"^6.11.4","babel-loader":"^6.2.5","babel-preset-es2015":"^6.3.13","webpack":"^2.2.0-rc.3"},"gitHead":"e1657d0402cd681e16fb0a41bc58d2a62fa90431","_id":"vue-socket.io-extended@1.0.0","_npmVersion":"5.8.0","_nodeVersion":"9.9.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-fCci81nX/wI3Gs0j0qc3FLnzgdyjiDeMvjkQY4Iqvwh37HOFulpwLYFbxpD4MSMnCc9Vwq5HA+QXRgkvUDtqQw==","shasum":"0a1eea1efdee1da9ad027d6e70de003fb5901fa7","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-1.0.0.tgz","fileCount":4,"unpackedSize":334008,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCjCIHPPmwgunCza0bzTgnY4XqpWfusIG60Vn1tRAtMAiEAxfUsUx//T0N+Px14593v5YPLqJFzh+AEq6S9WIU/vDo="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_1.0.0_1522355261013_0.24152291431407646"},"_hasShrinkwrap":false},"1.1.0":{"name":"vue-socket.io-extended","version":"1.1.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"socket.io-client":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-plugin-external-helpers":"^6.22.0","babel-preset-es2015":"^6.3.13","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^9.1.0","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-uglify":"^3.0.0"},"gitHead":"5781bf4e62dddd6e2b5c775cd009b9186a7d057b","_id":"vue-socket.io-extended@1.1.0","_npmVersion":"5.8.0","_nodeVersion":"9.9.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-tIWhwdB/XC/6vNtN0joX9CeasOdDEMHVflDFYydbPz/THBoIAxwaj0kqMR6Y0drwNOADNSBfyqGicQqLAVgpNQ==","shasum":"11f9fccfca6507028d59872b0e496d6190c13756","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-1.1.0.tgz","fileCount":4,"unpackedSize":148300,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICgLmHDR4OBpyrtGWs3ti52yFr+7u0xyS+IniD1t3RH7AiEAlE7NPCg643CjOD296wFMNu0VyZs04yY94buWy8gSwEA="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_1.1.0_1522369483766_0.8187154200053544"},"_hasShrinkwrap":false},"1.2.0":{"name":"vue-socket.io-extended","version":"1.2.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"socket.io-client":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.6.1","conventional-changelog":"^1.1.23","eslint":"^4.19.1","eslint-config-airbnb-base":"^12.1.0","eslint-plugin-import":"^2.10.0","eslint-plugin-jest":"^21.15.0","jest":"^22.4.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^9.1.0","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-uglify":"^3.0.0"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"43c65824cd51c3bb279413b3d4dfe9ff2aabfb83","_id":"vue-socket.io-extended@1.2.0","_npmVersion":"5.8.0","_nodeVersion":"9.10.1","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-3nwDIIF0d0tVZfia0odsLVeKheT58MNm2rVQfWkllFB4NGNS+QRTP7+jt1XwiKYyobhIr68xd+SfelFjiC2Mnw==","shasum":"94135da54954bee32f44c36b5f86f18e0580e9aa","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-1.2.0.tgz","fileCount":5,"unpackedSize":150255,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQQI5f/s5zi3welRgYDZyuqQynSsTiOZX3iyomGuEQJAiADlh4RCTrYKVTen9QIjGMeDsdlwxVn8BuUfUOw9qyYYQ=="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_1.2.0_1522527611471_0.11880329226521469"},"_hasShrinkwrap":false},"1.2.1":{"name":"vue-socket.io-extended","version":"1.2.1","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0","socket.io-client":"^2.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.13","babel-core":"6.26.0","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.6.1","conventional-changelog":"1.1.23","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.10.0","eslint-plugin-jest":"21.15.0","jest":"22.4.3","rollup":"0.57.1","rollup-plugin-babel":"3.0.3","rollup-plugin-commonjs":"9.1.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-uglify":"3.0.0","vue":"2.5.16","vue-template-compiler":"2.5.16"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"1ff593bf2d5276df7e2c580aaabe107ce8b75ee1","_id":"vue-socket.io-extended@1.2.1","_npmVersion":"5.8.0","_nodeVersion":"9.10.1","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-wcMm9lvDZQmn0IT3Lpgtlnh1mM2ushwhMTyTc0+KAUEmOtIM5XB+TBGvfj5gwqZuIKTA5nxE5q5/R50D38vEmg==","shasum":"2aaac2d145e988bb1432a9a25f80bccb5c3d6c7f","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-1.2.1.tgz","fileCount":5,"unpackedSize":153271,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1BvoLgcQOturtEP9TG32xa4q3N0oKFXdcBRipDHcwUAiBjCiM05cP+gPzGIZixFLdyKlOJIpe0kw/JNB0t6pqiKQ=="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_1.2.1_1522693171590_0.6006853918327446"},"_hasShrinkwrap":false},"2.0.0":{"name":"vue-socket.io-extended","version":"2.0.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.13","babel-core":"6.26.0","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.6.1","conventional-changelog":"1.1.23","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.10.0","eslint-plugin-jest":"21.15.0","jest":"22.4.3","rollup":"0.57.1","rollup-plugin-babel":"3.0.3","rollup-plugin-commonjs":"9.1.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-uglify":"3.0.0","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"9607207f502bcdaa7558a040bbf5121b9995be8c","_id":"vue-socket.io-extended@2.0.0","_npmVersion":"5.8.0","_nodeVersion":"9.11.1","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-QPKbv/TMBtISJwzaL/y8uMBPR0h/U51GweN0ukkPbygbRK7XzhpKQrHPep1oh710KlVMS6oE9yAtvA0CZdsy0Q==","shasum":"cccd52b40bf7934a1f55de9cf6750093412bb863","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-2.0.0.tgz","fileCount":5,"unpackedSize":15858,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHenfFXa8I/p0Efude+6L+6d69NXLw5o6SJxmiVhTkqgIgaA6VtPng4ukOgqzmyqNyF4ABxfQUO1/tEnEMBDHmSaI="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_2.0.0_1522964675892_0.02835334989581706"},"_hasShrinkwrap":false},"2.0.1":{"name":"vue-socket.io-extended","version":"2.0.1","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.14","babel-core":"6.26.0","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.6.1","conventional-changelog":"1.1.24","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.11.0","eslint-plugin-jest":"21.15.1","jest":"22.4.3","rollup":"0.58.2","rollup-plugin-babel":"3.0.4","rollup-plugin-commonjs":"9.1.0","rollup-plugin-filesize":"1.5.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-uglify":"3.0.0","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"ae6cae46e146eca8180335f74885566f9f5ce1b7","_id":"vue-socket.io-extended@2.0.1","_npmVersion":"6.0.0","_nodeVersion":"9.11.1","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-FTPMV5O7v5iScvM8Ba/Y9Ijj0EwFnqTn/all+av2z7SqDYA5Fshth/C053tn8FVmagA7D8So6Vhi+qH5EJwCVw==","shasum":"a60c7e7bc770e68f0a412efcb76b35c7ae0af17e","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-2.0.1.tgz","fileCount":5,"unpackedSize":18890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3wVWCRA9TVsSAnZWagAA5YYP/ieqcN+KvdQxYm1tF52K\nsdubhKLHPSAmhMnE8A/4bCUmbq6KvuBFrazMXiEKiwhSofVl7Xa9n5xh7L9I\nKixnDfsj7rr0jRFafv5oyi22uFiwsUM31+tJiJodULy86nzQ6YM+31+1H+hx\n0fTbdhXFzaMH702HWYHm4CYi5UQj/bHKBTr3aVmyrQp06EBFyvB4PjQPEwcJ\nTOQTK3I28oiKnnkEe/HuHihB8JmTLDDeHudmYMry3/Shrp1G+UhUyDSgI8Wc\n8wR62l9/xyp6ddNUPkOfrCGI+5sasOE6YywWtPiYVkKO2gHZt6mccVc8Ghz+\ngdzme2KTavHaSwwq0dLBZN+/5rU5GFFrpPng9I+iNduAu5aHaAU3gTNITLHS\nV6gaDZvJ0ehP/ff4BqLGNaiPtl35JJogb2o9l9ENc9JgqSUL/Nm9prPZjCTx\nWvT/AcX961NJy8eQDM035rjfKe2v1kMq+4F/f07jyCP1hg1hXlG9olS3lBE7\n/zDLq3BmHf02GGLymyagMUYLwbZQqSWu4x4QNaGrDX2mEzWiYoT0KJ/Lh9Wb\nJd9A1eXsja2TXklYXTTsi8Ryrx4+Q4SdLBEkN9yKRCI8s2RZOggsopx909kZ\nYH2O1UMhOyV/r2v9yaFDwJPrE2sKmUBNzVT84n4yR1Qxau+LLGzPLl1TAyKA\nmalv\r\n=BP1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+zvAB4JDbZxIiika+ZdmRm1aATWuSMqXonPn2+gM6jAIgexpH0ASkwm06gsI52NvwvsgKZC22kC03ss6JpMNssC4="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_2.0.1_1524565332739_0.34659603617149437"},"_hasShrinkwrap":false},"2.0.2":{"name":"vue-socket.io-extended","version":"2.0.2","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.15","babel-core":"6.26.3","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.6.1","conventional-changelog":"1.1.24","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.11.0","eslint-plugin-jest":"21.15.1","jest":"22.4.3","rollup":"0.58.2","rollup-plugin-babel":"3.0.4","rollup-plugin-commonjs":"9.1.3","rollup-plugin-filesize":"1.5.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-uglify":"3.0.0","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"afbc1d682d5fe6732bd57caffa5840d0f951f6ca","_id":"vue-socket.io-extended@2.0.2","_npmVersion":"6.0.0","_nodeVersion":"10.0.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-QJ3Z2ZmVBoj8DfurBFWKbnr6CPUEdMPMHPslzdUyBS/9usK03aTTeLK7mHMzxk2efiT0EDXhqtGFH5tCQOYnig==","shasum":"8b0bbe3369493a9a8ed78fade0d68b2353f59c3a","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-2.0.2.tgz","fileCount":5,"unpackedSize":19558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6ZbLCRA9TVsSAnZWagAAwewP/RoiXCzO3Y8ri5WAPqmR\nNR+qLx5T4G3DgQdUr5p7om2CaQRZnYdlNL6TXp67Zbv9b2Dj0/Dxy33tE8JQ\nyEp1AWIe69fRaosasG+6b/Fq5SDQ6Hb6Ltpp2HSQ/cJVBV82cB3cWfNfMEDi\nW2a9rN3igHEDr0U842mLY3Rls62WhqG/5DRETWoTFqV7ngoj56o7MQ5dtKsf\nNxX8AgEE/oyeT1YJCGK9Fh9G2n/0FVnouUqLLDIFx3zce7S/um5pK9pheKoq\nqJSV5KVLBmuy65AF5Mgm/u8VpSDo5YR9CrXh3v8m/6N8oyYthBk3nV3gcoVJ\nMsWo8ub99rdLteF+hXW6Nj1c4GRGkiO7fvyPPY3Xux3P90R6EXSqixdjH3q3\nSjC5hF5X2W3C4mnnILsKumvc3+OlIqT68UqpFV9LIpjoHKQMrthYFcoEGoC3\n37h3YDLInqKV45ppkT3I9K4lxSTd887dwusDUT/M+VH4pbSTtNYM5sxZSVFa\nAeM1yL4jzCVYm0DFqXSZ5ZGkNk7FLctz9HbEcCAPQWO4zy3zqH3CQZlKlZHd\nbgyQF0r8NBMyCc1tFddb+ca++1NUeCweRqvN+CVr1cLvIOOR7Ect47P6yMUA\nIJEPT+3IVr17aWzbvDgsFCtPFxBA55+ocESY8xENMkc1k60OxsktA4FcZC7h\n6ztn\r\n=m8vP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyTkZm8o5byzLSm50S9k6sJevHpr1s9zFZyi4Jd+JdKwIhAM+/pTfnPHrsBbmQR70gDHZFeQ4dXYyz73f2vlrRgWKm"}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_2.0.2_1525257930327_0.2946189033811848"},"_hasShrinkwrap":false},"2.0.3":{"name":"vue-socket.io-extended","version":"2.0.3","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.16","babel-core":"6.26.3","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.7.0","conventional-changelog":"1.1.24","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.11.0","eslint-plugin-jest":"21.15.1","jest":"22.4.3","rollup":"0.59.0","rollup-plugin-babel":"3.0.4","rollup-plugin-commonjs":"9.1.3","rollup-plugin-filesize":"1.5.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-uglify":"3.0.0","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"95c4d0fd90117096cdd7ba0274e90e07c5b23224","_id":"vue-socket.io-extended@2.0.3","_npmVersion":"6.0.1","_nodeVersion":"10.1.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-xIykVjAILlSOKA4QfsUBGT2D9JwA84Or5055sIiuZyxdQt7fW18dKvAGk5w4WcdqEGuNn4j9lmRsmtLfHu3HPA==","shasum":"29d89cd0a0005dca31548db3ea8e86d367f4f3ed","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-2.0.3.tgz","fileCount":5,"unpackedSize":20591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/FBlCRA9TVsSAnZWagAAfMAQAJmrzNxck/x8vUFPHMnF\n4McvJ5Q0pB1/1/FGlDfWH255LT9PvJgq4N9GAK+uKH6AKWjQdgFEJ9Z0Ei58\njt21k+7NwFLWevxVUlDL8ugal3UxU4OA8BfeTHKyuMG8OWhyhLDAdir4OjQQ\n1BGG0BhcINz2mHG2HQAoXm8SDZ1BELEL0foxkxh+aoaqyzgDgQAsNwDlNwnr\n3F5UQXjuzXNRbacoSodDmEj2nPabxMQhUIgZTns0XZHo7WOp+5nqSIiqi8X0\nhfBcKXna0sitndFWhjz8Rf4rfwe8mEPicpyyRwZ/gjMJUMXLVCCVy5XJMqT7\njTWgFTtKgpDLC3oFT92uXFZO6yg+wj/CMfTi9AQl8b/1CD1MTzR1ZzexmrpU\nBHuYI8wq1l3xP+4I3q+VGGY3sfx+yOF17ennnpM30MdXepmVfLp9IC8hv3xw\nQAORUn/DVxQzNUVWlnGip+caMBfxSe91Uv14WmIQqcblu7xsaXxvrYrcxVsF\n4u1aLKq6Nh2BxVF3cpp66rDkc93PRwI8E8beZ3FZpUotsssWimeMwa63j0Hj\nH04UcwN+NV5yK6Bf4fMZCZbn4nTAVPtNg9JY+SlZMFH/1m4EkX7rATe5xRMa\nivi2R1+BN2OR19i0YaRx6m4jEmUdND5xwCJ5Ht6HrOPUZHjx7CBMDzy/22xP\noDy2\r\n=yJGp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFDG5KJrqFysFCQJj+zbBmoc3SsHm12lboyPuAzglE5AIgatoA5bXcxquijoVUyJ80Z+4hMB6pIlOWzL0/O66xrmg="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_2.0.3_1526485090951_0.5406523579430895"},"_hasShrinkwrap":false},"3.0.0":{"name":"vue-socket.io-extended","version":"3.0.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.16","babel-core":"6.26.3","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.7.0","babel-preset-stage-2":"6.24.1","conventional-changelog":"1.1.24","eslint":"4.19.1","eslint-config-airbnb-base":"12.1.0","eslint-plugin-import":"2.12.0","eslint-plugin-jest":"21.15.2","jest":"23.0.0","rollup":"0.59.3","rollup-plugin-babel":"3.0.4","rollup-plugin-commonjs":"9.1.3","rollup-plugin-filesize":"1.5.0","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-terser":"1.0.1","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"a0c20be7cb822e8f5c2551e9058c22e2a1685d4a","_id":"vue-socket.io-extended@3.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.2.1","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-aNvKZjLnURpaYVajkffe1Atc+XlUZqiOymiIb0q3ANiRM9juYqvGTAmN97wCj1DErKtLE03uVDphjAp/Sf5RDw==","shasum":"a87edcc8c13943df07ae3893e047b5ae93085aab","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-3.0.0.tgz","fileCount":5,"unpackedSize":23648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCWyACRA9TVsSAnZWagAAKk4P+gJles2eoNz3/RJ7K9BE\n8El5/OuN+KtXDwuWbP4qaTU18KixlhHNtq69YSYf3j3wjfcLr4VvNSylbuUR\nuPbism9uwwV72ow8ILBXrHxYfQGTkkbDWu5e8BbshNQ5Y1QxY9mMEsCPWHO0\n+f6ORi3P0f4OjGA3LPODPkuyW6vl4lRFHlMRASouhqmdnVWoeNHmGsTySFCP\nyHXqAtSXltk+6BOaOrubCj1boK6rHb4qyOgeEiWxRMZJS8i/bCANjm8Bc+vb\nQ5jEArsNKRpMB1HY3yBEghPA+zecvqyEefBYgS20aXBMw1pQorOUn8fNgEI+\njJUaUg2TO7s14nuBFvR0q+1RexiHr8/iGK8AyEtf5QhVE9u+A9GqBxAl8Fcs\neTJwWjfSGLUw9JuPUj28+FJBY1S7QsVbbQ/ZT4/YQjggxmbZKkNp177s1k8i\nhZ0US3aLM32shvca5vEIx4PxKnekC5MDC4sftMYglE4S8L4gG3gu4pObXDpz\n2cDGcLC75ZgrrrF/xoiEg2jT4jb+auK8rXh09hyK5uDrz0iMU4NDs4I9FbJN\nZ8zvUad0DmrfkskVnIDiPrRTyEdsrVzb2h79GK5VQhxqhUz7ccDCNSsTEXw0\nwAbGYYP/wU5gRRtfTAbC/8a+Q1W6+4Hr4Ny76Bw6mB8jsU3HS2MJoR05RfUm\nj16a\r\n=2gaa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3RarDpVshrHsYLvkDoBBzcC9vgwzwj0PFiiDt60DmZAIhAPXMP26VQeXK4k2h/tt/TaG36rDxTt2ia4wNRb4jY2Gq"}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_3.0.0_1527344255201_0.5307648154979161"},"_hasShrinkwrap":false},"3.1.0":{"name":"vue-socket.io-extended","version":"3.1.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"files":["dist/"],"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"camelcase":"^5.0.0"},"devDependencies":{"@vue/test-utils":"1.0.0-beta.21","babel-core":"6.26.3","babel-plugin-external-helpers":"6.22.0","babel-preset-env":"1.7.0","babel-preset-stage-2":"6.24.1","conventional-changelog":"2.0.1","eslint":"5.2.0","eslint-config-airbnb-base":"13.0.0","eslint-plugin-import":"2.13.0","eslint-plugin-jest":"21.18.0","jest":"23.4.1","rollup":"0.63.4","rollup-plugin-babel":"3.0.7","rollup-plugin-commonjs":"9.1.3","rollup-plugin-filesize":"4.0.1","rollup-plugin-node-resolve":"3.3.0","rollup-plugin-terser":"1.0.1","vue":"2.5.16","vue-template-compiler":"2.5.16","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"ad70e4ee5fd11c4e43ed0ea0ce2b5c4d239aa384","_id":"vue-socket.io-extended@3.1.0","_npmVersion":"6.2.0","_nodeVersion":"10.7.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-wr/MeW/aAcczTEp/MWhMVI5skwJnpvfc0dBR65WJHDELiHmj3tZ16fwtqFbynm9g+lmJzcWfwxqI9ZHYcMz+fw==","shasum":"0c1833377f902381c861c43a403a476eee542bc9","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-3.1.0.tgz","fileCount":5,"unpackedSize":25330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbV7m9CRA9TVsSAnZWagAAalMP/2PgJ03uJPJS9O9IMgZg\nffBeh20JrGAvAp+HlsrteRZVCi75fAAVwhwAs2MoS+aQmHx2Lel79xqsRKTJ\nXzfaioNgsikk+4S0MSY4A+1kCNBeImxrvUGQamBLzKcpLQ5qpph6oTCtnI84\nSqtNbENQVdxIM4HE4npnG9TDYwWdluMrapOvJCd7JBXMHbUmQzSvfJXWhiy5\nVb+lqLFd67ZWbTUi8Fi48O/M+DpAT/RxsSA2C8O4xCb+cK/Ubf+JiDsc9Jq3\nSAN3c0eBC5qjuMOa9gQ4MiT4nsQb+mET0ZTKFB2TVWQeqhh1crSFKyYAmlJI\n1f/VIrbkYchmhFZ3Q+r/zL8GDbtcdtgnWTdVx+kyF/KsyeZKKYqAvC+lP0hF\n1AjarWoTji6zw5RL/+JvMpIIjVlvkgCfsL722w4W2pFkM7CAZkpsqRQyPQLM\nWhrCp/gLWG6rvuWr5B8O+XBNPl9pqienYHT89kejtFzNjCu0/QLhkG3zHAkC\nRlsP1dBTznFmVysQcI/b/t+gw3rUwvnRjGTiinxcLhXaPH+LUzyrKx/yE37M\n8zK4+2owZzfKHocA2sNvs/JUgZD+q8ptDWTCUYTowc8sXuovCt18YQVEOSL8\nJDQtzXRlyBunMjdRBZkq2zi84+pnHv4+zkEK894FkHVPBMaupA+Y9EwRFyQz\njJro\r\n=PdWz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbAEdcHYVUQ8zj2o5XNiLki2NI0ff3gq43ZOjMwl5hQgIgMiSEoOsfY4Xj+hBKAjRPmXbEh95DWgbUZUn+A35ffuY="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_3.1.0_1532475837553_0.6074566796013654"},"_hasShrinkwrap":false},"3.2.0":{"name":"vue-socket.io-extended","version":"3.2.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32","camelcase":"5.0.0"},"devDependencies":{"@babel/core":"7.1.6","@babel/plugin-external-helpers":"7.0.0","@babel/plugin-proposal-export-namespace-from":"7.0.0","@babel/preset-env":"7.1.6","@vue/test-utils":"1.0.0-beta.26","babel-core":"7.0.0-bridge.0","conventional-changelog":"3.0.5","eslint":"5.9.0","eslint-config-airbnb-base":"13.1.0","eslint-plugin-import":"2.14.0","eslint-plugin-jest":"22.1.0","jest":"23.6.0","rollup":"0.67.3","rollup-plugin-babel":"4.0.3","rollup-plugin-commonjs":"9.2.0","rollup-plugin-filesize":"5.0.1","rollup-plugin-node-resolve":"3.4.0","rollup-plugin-terser":"3.0.0","vue":"2.5.17","vue-template-compiler":"2.5.17","vuex":"3.0.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"fd51914ef4155a6bc2ab29d473cf70059a6f599f","_id":"vue-socket.io-extended@3.2.0","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-o/qaqqBkabxeC7Tki/0SCU4tysL5I1bq0zuWtZByRjZcOsITcJFRr09VJBYGwKHwRAl0Mf5z8SZ7YZlX2a2cZg==","shasum":"1bde80d9395b29494b07c3226af904af5b3c3414","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-3.2.0.tgz","fileCount":7,"unpackedSize":29718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcA8GxCRA9TVsSAnZWagAAfFkQAJ2DjZs8MIp5xTellzCJ\noxmbDIuLg0MZujEU0hoMACKxsIb0U5MNIUsjontqQHmuhyZTES+E0dCGMc6d\n2M0fxU8ONSol5/mdDh8VNiDKkn8qBZlqTvJGm9W7Qhgo3TbHFZmrTHk7na3n\n/NgFrv9MTk9fcXb12D11U6FdHM8OSOhxXaybOLWI2eKK/m5GnLOI82dyhhQD\ntTP1Emm2qfIhxQ38N2xyQSIydzgc8Jq2Iggo9OO1fdQxXQJs2CDuKuL7BHBH\n/9stG6YMfPjy4pkunsE86pzJmxcWUEyCPIaPLNVFgosZzBBl3Q3yCS/SNnMt\nmdwXOu7x7GkaPrnTucREPJxwKtFJ6dXnqPM46dWg6SBUgDdX06osjx6u1EnN\nf9Middr5vMBPM6jHdL8Ezcb1zsiOUSSGt740FWrtLRMyhHSp0Cu5aD6Ivkzi\nAhD5zOJi2WRLPLsB01guTxltQGfmT/qPP70+cYS5JzMY43jgm0lvX/qFSHLs\n9HSwAJGMop9sv4vju6MEPH6gQlqvUp+lclcacXOhJLC6uM6+o2vDnx20NZ9k\nnFNS2X6Q/ywdvfVHdBk1HwNGx67+/Y2Iw7b2xcpq9Qod9kFkYmVLHxlxbTAX\nt7Fgy2fSTm0PpbndvTQ21fnsZ/8V7lt5ly1QVqMVNYVZP3Sg4Btu9hSxtdYS\nvdzM\r\n=30Bs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqZZh2OeiWYn5NtE/I9vF5hX8jIBcnV/013DZRolqpcQIhANgaOxAM42sE+5EWCdAPQpA5NDoxuFfmTFl0nt5xSJUI"}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_3.2.0_1543750064157_0.4592900193870526"},"_hasShrinkwrap":false},"3.2.1":{"name":"vue-socket.io-extended","version":"3.2.1","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32","camelcase":"5.0.0"},"devDependencies":{"@babel/core":"7.2.2","@babel/plugin-external-helpers":"7.2.0","@babel/plugin-proposal-export-namespace-from":"7.2.0","@babel/preset-env":"7.3.1","@vue/test-utils":"1.0.0-beta.28","babel-core":"7.0.0-bridge.0","conventional-changelog":"3.0.5","eslint":"5.12.1","eslint-config-airbnb-base":"13.1.0","eslint-plugin-import":"2.15.0","eslint-plugin-jest":"22.1.3","jest":"23.6.0","rollup":"1.1.2","rollup-plugin-babel":"4.3.2","rollup-plugin-commonjs":"9.2.0","rollup-plugin-filesize":"6.0.0","rollup-plugin-node-resolve":"4.0.0","rollup-plugin-terser":"4.0.2","vue":"2.5.22","vue-template-compiler":"2.5.22","vuex":"3.1.0"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"f7be1ba8b7bc2947da65a6e12e8e2013a53bedd9","_id":"vue-socket.io-extended@3.2.1","_nodeVersion":"11.7.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-6lMLkG0N83zgfLWHRkabiJgwkJrk4Fit7+JyYuzfsR4at03kGDOmidIK6IWX+qml9iddrPThmYzQAOP8xGgq7g==","shasum":"a7a74c83fd7e6c0ab41b8a90b09c07c9524b62fc","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-3.2.1.tgz","fileCount":7,"unpackedSize":28770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR4J+CRA9TVsSAnZWagAAJfoP/A7Gs8EoHEkoJIZd9KMs\nX6zzg3aMVBzv8LV4GnBELb48Cjzs3u1SQ6QDtzdwzz414EKFnvPhJ+pQUrZV\nZ1xhDOeDLy8TQVBNbm0jTEJ7Ojc7JcIn/9T0uY13CVaKqmSDcDJgZMPJd31N\nezn2+knpZPYwKENqnNb4r7+8csYyHryKOZar3BCkJISnC4nsi8KzzJ775DRN\nobZUmo+qUymmwRwaHDhYwuTQJbzquXPH34VtE9Z47/G5IjA932bpYk9rmRIn\nMeWFug0UF9iHOBWXnOXnNMxpDMWNO6krCxJQ49NokVLT1wqTFQHv/C0C2NYp\nSmHgC2k6g763QQ9ZEUMUN0it/L4eUX1hlBIqSJ+w2LMaeKNUXjgvlvacl2fP\nZwJ2u8IKtgGvpOqkT0wjjVrN60iYRSN1x13qgG4cjMgHOWLRLTdYXcdMZ6xH\nxL3pqvcXU7ToIwoFMu2Krk4ANxu24+Is5dZUWE4/kxI+Ia38QJS+hM7xJU8d\neauTcyxkxPNy3f7/IAZhk0iLRz3jEZgkpHb2DlbYQHBkxzcAo8yL2HNE37uA\nlnmbSXja6TVvG3dyc8NN0+DXXyjHvr1fG/dr3fsQLEDWFZ/rCTC8hpWA1PFS\nxQ+jc/6Gb/s0QhH9TZUQi4+fJf77vSZs9kie2hw++Mg++XVLBWUVmtXfpnkl\nAd0E\r\n=uDM+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXScQ9i6iMFhHGysx9wzpoy9Buk0lnjyW3PUsemGC7BwIhAP113JGDye3CorVeiQZkmyUZxK3TLFaMCSALlG8Y6ELY"}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_3.2.1_1548190333254_0.18324348056263307"},"_hasShrinkwrap":false},"3.2.2":{"name":"vue-socket.io-extended","version":"3.2.2","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32","camelcase":"5.3.1"},"devDependencies":{"@babel/core":"7.5.4","@babel/plugin-external-helpers":"7.2.0","@babel/plugin-proposal-export-namespace-from":"7.5.2","@babel/preset-env":"7.5.4","@vue/test-utils":"1.0.0-beta.29","conventional-changelog":"3.1.8","eslint":"6.0.1","eslint-config-airbnb-base":"13.2.0","eslint-plugin-import":"2.18.0","eslint-plugin-jest":"22.7.2","jest":"24.8.0","rollup":"1.16.7","rollup-plugin-babel":"4.3.3","rollup-plugin-commonjs":"10.0.1","rollup-plugin-filesize":"6.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","vue":"2.6.10","vue-template-compiler":"2.6.10","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"1031e16780cc4f285a1fdc5517256b62d8547361","_id":"vue-socket.io-extended@3.2.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"dist":{"integrity":"sha512-SDl4Pp80Sv6pTNAPQ+1kUT7v6tbYGCJAvpLywt/fcpLAhl5dXBS+c4c9WYz+DZVlpNimYOPKepdmWsSC6Fbueg==","shasum":"03452faf164fc971c18be68c31c48c0c13e6f99d","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-3.2.2.tgz","fileCount":7,"unpackedSize":29631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ1TlCRA9TVsSAnZWagAA9d8P/3ytIvpR36oRBr2wLvX+\nLSGs9FdqJMfY/aKM37IL6foD6rhD5b1HG3XR0747/HiCP3WUiMuQeCwZyXWd\nxsEox3MUE20ZJja8Gfg5TARMN4KOgAXEf1yGsScQNmlPFOjTGEOpvdyaCNg5\nMu63oQobgin0YjFiLK5XgLTAb36i87MsLWzVgi1SWXR+wwI7hz4Rqf4RrKU8\nX9ECYNucjWM+XeuCSsj1AmcPZto+fc4nFKV+FymaRKXAq5uP/WAEq1ka0LFq\nsMccqEDV0dYd/hV0/yYoAHkXp9rjVUAy22itqiU7aJ+n6YrIhwWwJuEfB5G8\nXXVSoCJH/7gpHOI6d2PXllZfBslCQC1Jyntjm5H8M+0geEoDPC4FGSkk2LAC\naS6LLK/+FFa7dlfvrWT9nKQEQwQkzyvqqhNtOFotR3cS6CdYsytBPBn1vQaQ\nUtn72T5Hn6caAQEFBlZ3KDhEy54plXCZWaB/QCmZGptJCV3TcyGDSvYUYySa\nIdi/zkBtf+mfsoCIdaqcnZmSn5jPM6M0EbfxXWfi/6CX00rOsGSY962nAVr9\nSMmc0HTMiHcZ7DKeTnfsnA072cw7d98Wwy+Tz1ReCo1nH9hovKyR1jze5Tjp\nxIEJjg7sxzO/0g8ZXAAx0Qp4i9KKntOtuoLm0vlO69b8wWXVcP6UY51gY4fM\nmGJC\r\n=8Gol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvnx203wALFUAyORFeDHxy/f89Nn4TFwGM8S5w3Mc4gAiBU74DmRjsTBUc68JWP2Ozwhzovy7drFxf61y2bVRH5Ag=="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_3.2.2_1562858724118_0.6110534033854043"},"_hasShrinkwrap":false},"4.0.0":{"name":"vue-socket.io-extended","version":"4.0.0","description":"Socket.io bindings for Vuejs and Vuex (based on Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32"},"devDependencies":{"@babel/core":"7.5.5","@babel/plugin-external-helpers":"7.2.0","@babel/plugin-proposal-decorators":"7.4.4","@babel/plugin-proposal-export-namespace-from":"7.5.2","@babel/preset-env":"7.5.5","@vue/test-utils":"1.0.0-beta.29","babel-eslint":"10.0.2","camelcase":"5.3.1","conventional-changelog":"3.1.10","eslint":"6.1.0","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-jest":"22.15.1","jest":"24.9.0","rollup":"1.19.4","rollup-plugin-babel":"4.3.3","rollup-plugin-commonjs":"10.0.2","rollup-plugin-filesize":"6.2.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.1","vue":"2.6.10","vue-class-component":"7.1.0","vue-template-compiler":"2.6.10","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"c2e8f52844866343516425b06409c2ffedb4d7a4","_id":"vue-socket.io-extended@4.0.0","_nodeVersion":"11.15.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-NmPcujcAdKBBY6iV8/C5em5hdy/rwrxLC2ONNBfdPrctB84QT0Rq1X5bh5Ct3I2w8T6y/hCqR159dJwWf+mTow==","shasum":"cdca4a6baa84fc0116953fa7e0627151fa15e046","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.0.tgz","fileCount":7,"unpackedSize":33767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWUvECRA9TVsSAnZWagAAgboP/Agr+Xe66/a03oTJ0S21\nOsXI8vLBiCraC4BtVMop91waewCYvPU1YbN7gZG/uK0To6syJTvs1tLt2tGx\nZmMUfYCkbyLtoNZTfmf1yfXj987DLmfyV9AZelrTDsR2xg/uRO0w8bRDfqjy\nVEPg/2HsQPhaDL5tAtXJXtetcGXM976H+C+ATPBHtdmFEJh2ROeWOqK018o6\noAcEk2MJu0HBLFecgfadksYKaPngis7s8EFrBb0ni7px8UJIDn45dOPddA/b\nbT2W5zrHX65aLWzZ/M8xdB12/mSKKDpKpy0RyNfQnACvubbQKUXMBfA0rnDr\nS1UPnCBzpMCrmrxJQDNABHZXMNo9/R+rs7fAnSFqZRm5NLrLT8iDNf0Ypfp6\nK3FU7+1eer7rcdQUg/pC5xFj0W/oPvrYJMTMSLdQjvo3/se93vLPYtARhA6s\nYNvz99yeopW6bnsuXZaDrFTk5CmT1DClcJZumD1N3OhaB54fakuae/n7fkFg\ngdvCWR766AxgBkfMcI0MGJGGPTe8T34eJrAN0etJpimEwNXskRDW45kR2WTv\nLiyOoUlQv/3MtBo+taYoc8x9YWlOQ/uwmqPhio46cpWUsxi6MkjGN51hhFl7\nSXUqmIZNWkiMscujKECaNFJYg/7dqAR7UuvEIEQ8mwWDTYYkYfVWjFKpKNM4\nr5oH\r\n=3Cvw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCh5FYOJrnW+wd22gPTQk5cBUQ2hIqHe7BDl4+AOiCK8QIhAMhwZaOnmY/2Rf88CUUK3tSbmBEyiAMgmdyY4DhNxZZD"}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.0_1566133187560_0.13523565894030365"},"_hasShrinkwrap":false},"4.0.1":{"name":"vue-socket.io-extended","version":"4.0.1","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32"},"devDependencies":{"@babel/core":"7.6.4","@babel/plugin-external-helpers":"7.2.0","@babel/plugin-proposal-decorators":"7.6.0","@babel/plugin-proposal-export-namespace-from":"7.5.2","@babel/preset-env":"7.6.3","@vue/test-utils":"1.0.0-beta.29","babel-eslint":"10.0.3","camelcase":"5.3.1","conventional-changelog":"3.1.12","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-jest":"22.19.0","jest":"24.9.0","rollup":"1.25.0","rollup-plugin-babel":"4.3.3","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"6.2.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.1.2","vue":"2.6.10","vue-class-component":"7.1.0","vue-template-compiler":"2.6.10","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"5f0fd34d4e32864dadfd653f82ddcd1b997eee80","_id":"vue-socket.io-extended@4.0.1","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-uuMvxgTtsQM6M3ala2u8hdUpJJtgZzo9WsHyHQth4Tlnb5u/gmORN4Yn0oC2M6//aTXQ4UuBiJ6JYLf386dyAQ==","shasum":"1358e1870783d7f0c2c9c77d6fbadeeec6aa33da","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.1.tgz","fileCount":7,"unpackedSize":33861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrCn/CRA9TVsSAnZWagAA3oIP/AiCxaQbtq1UVfOqRJ+S\nAZ39Zx2xt1cI812Q4iltIdMxWuEfGTdRCoFCUSXqWL2bic2fR+ac9g6nm4QT\nuEp3aZhRW2LadpLQdCaUicqhymLVWolzwa/8ehxPUPbsyGXoffjUsejRFjQR\nu7RVqueQIrTywu+dRGT+wWprW1jrbG3BP4ImFmO4oj7yyZO0SCgv+jS+q0mB\nV78NI0JBetV8NZ8xKu9IGm5ztsymDvbdog+ZPj7xkNjYaZjvqaac6WHaZJ0i\nho06XPjqfm28B96dlppuDHbiptCeV1f/lBY/IvC0POszR2M76/uf0gqhpJP1\n6h84dzFoCUt585w4wF+dCVCQh7N6ikMn9qNP/4WTG69VduOw4MoTwAaRK0LJ\nOgERfGTnV+ADwu+k11vPzctdsM4yY5NQRmLewevhmI5qTRutVTOW93Q1SHSM\niEEh2ozgWzycQe4tvhnsr5qO5zAZn3s0P4BmU0S/YQkv6dFWeRmnL79zuVa5\nmtD6Ugi8SBFqGkrFc5vqRemi78HmKisTT/arO5MphPcFxj8vHN8oXw5ykdPk\nf44EhU4462SJPGYXcYj+CBeaxpUozSTFzpvSVtB96pGe8yvLFddQbqLuwvIv\nguYr83nTjB+hldUBcim8bL/ngRFv7R/JxaDkU4Qo+PEGanuymDqq5vUBvo/n\nYHB+\r\n=XOcu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6oCtlp0u6ghFnjUOdu3/mxQrzGecWZXruRpghSskU8QIgEhipA0VKXvIIjJgZgV+Q5vTfJSDkpYyMXVvOG4qf+W8="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.1_1571564030464_0.5744278485545675"},"_hasShrinkwrap":false},"4.0.2":{"name":"vue-socket.io-extended","version":"4.0.2","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.32"},"devDependencies":{"@babel/core":"7.9.6","@babel/plugin-external-helpers":"7.8.3","@babel/plugin-proposal-decorators":"7.8.3","@babel/plugin-proposal-export-namespace-from":"7.8.3","@babel/preset-env":"7.9.6","@vue/test-utils":"1.0.2","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.21","eslint":"7.0.0","eslint-config-airbnb-base":"14.1.0","eslint-plugin-import":"2.20.2","eslint-plugin-jest":"23.10.0","jest":"26.0.1","rollup":"2.9.1","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"8.0.2","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.3.0","vue":"2.6.11","vue-class-component":"7.2.3","vue-template-compiler":"2.6.11","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"21ca02677c88d4c8dde59d1c36f360d16008c570","_id":"vue-socket.io-extended@4.0.2","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jMvj5fmts3q2xDqyxcHq0ngP4yqdS1A2pdzPNqYTCqmUzTfwHHJSPM8wimMqTbxgMG2hA3VXdPJqvSOetgvauQ==","shasum":"143b1bfd17a83c2a6f2e039b00d633f26708c628","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.2.tgz","fileCount":7,"unpackedSize":35682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuVZICRA9TVsSAnZWagAApYsP/3DtL4t0AEB3Bgw6XDNH\ndBfrTUaDf807b00nnMeyEMT/pFWiQz/R4Y317es9O61zJDPZSnmbdrhPAxyi\nfgNo/HprS+5UaV4l4W3SJbvpUrzU5flMKvZvM/19Bsv/CRyHQbneCyEEbVUF\nurjDEKFBfKmFA0hXud8Sdjr4IuEsmAdg/zDY/FZGa7zinr39SZWkQYHVZkjN\niEKbRvr/h0AO2mQAsXPnES3oUFh9T3UqB+gcrUlsap0weDEzTh7f5AGTq/cg\nz1f1OgURdfxoDw/obLOPZPClPTYurUaS18JYNNME9+bMpduYVL6AKsU3K+x9\nGZyAfr0oK/MBKR7FrZr06Sjl6bs4UsznBHqv0+jMH2wVNKBo9ZU2YHPGZIVx\nibsJuKm9NwxGXVlLS99Z4+U/EL8llq4ov+Y1ypyiRsBaVVdRmtupBKev8nny\nB7kanhaB8sT0Spm6E/clIlRZ5eRR8ThRwZel9yXVc8UK8QLU0G1gf6Hsb/jO\nfI4rXy/bYttM960YSe0P2QyeweLL6uXHOzA6Nlh0f904i4dtJZxa+skVQW80\nVHBrXvRWAgVVAfUVE3+z0xI3M6aR0DgpGS5pESRHwQ+B7iKNn6GZHhmxqpF3\nA2czlfV7D+cToCdaGh9i9UJksMYMr3Kh2DpX2NWxyBZoGGi0hlOsW/K2XGJs\ncAjp\r\n=v1jd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwbZJriLR4HpoPALITL+rV48qBbZFPHc+IKMVVwnDDxAiEA/ALQcNuloIUprwFLI4YI3VwiupyWysbM2PUZVtgYTqw="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.2_1589204551727_0.2513389964935484"},"_hasShrinkwrap":false},"4.0.3":{"name":"vue-socket.io-extended","version":"4.0.3","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.33"},"devDependencies":{"@babel/core":"7.9.6","@babel/plugin-external-helpers":"7.8.3","@babel/plugin-proposal-decorators":"7.8.3","@babel/plugin-proposal-export-namespace-from":"7.8.3","@babel/preset-env":"7.9.6","@vue/test-utils":"1.0.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.21","eslint":"7.0.0","eslint-config-airbnb-base":"14.1.0","eslint-plugin-import":"2.20.2","eslint-plugin-jest":"23.13.1","jest":"26.0.1","rollup":"2.10.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.0.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"5.3.0","vue":"2.6.11","vue-class-component":"7.2.3","vue-template-compiler":"2.6.11","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"554d3b9b2cfd64ebb744328996d2ed722b6b2931","_id":"vue-socket.io-extended@4.0.3","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-V/hy95bNlO3Ew2pYtoz/wMXwu6/qrweudUu3RhLkJknSBhiUa9hQXDtnACNWAobrMloI6x+DOAjqVAHl7mZgyw==","shasum":"23effb90145e2521b4bafe84c27d07b28d2ca3ca","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.3.tgz","fileCount":7,"unpackedSize":35683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewtJhCRA9TVsSAnZWagAAMvIP/2IZ3DUeyTWSyMc3aZJV\nay8DoINYX3JuZozRUYisqXWKwdtqK7or0iWkZELlDWtwsyjJgq1yiYF3Tvzp\noayGqQDwbSGeLXJbiGHEYx0IN2LhM/2ndlobwCZpivOdFC1oCjECUGar00YD\n6EDWhkvoJeWzo/AjqGVPGv8UpF8tM64BD1KN0nxYrtv3a6Wk89GOuHz/kioI\nlLFAj5zgZS5FAhh4aL9R51RfL3rrv9BPaG/DygxVbgTF4qThR/j6wZ9N3a7d\np764t7LKNh2VcfEkQs5boFPZG9FViuX8sMiodR2uX4er+h2BKwfmfwAD1zsR\nxyu38rfkWgnOLg6LSI7uPiHQg9kd2e38hc82Cds2+8iyKDuCA1dOn4BkObmG\nnajFuE//yzjc10LrSIKaJasmjXNvq8zEZazxzEI+Ymcr73l17Ttylo4a24m/\njk+/s4+s0cs/Sy7P96xsmeVad1qQJp9xyC9xeuZ16SGfwQ2uwlueVMJyoV/Y\nKlb1y7IYj/553ZfJjf/CCjT3vH7Q29nKscyEAC72iZAvLpl9CK5ey6RQt5Zv\nLmMWrQeB4SS8w2Yz6zWXmtkPGvGTOu64oY2Q57Wp9lOX/zRkHgiBEhkOZPjg\nH57pM/AWtX7FoZSdNvwXcfN4expvx6orxfKiDL2BaObGsRjKc78Mlub/8uWs\np3LS\r\n=+9aM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTCcD97wm8nC9nrO3tyLE2O58Muww6iTN5bu6vu0/i3AiEAonKW83go1EahMWhVhjB0njolrhpReNoi7/xM2ubRmWM="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.3_1589826144456_0.36720430529977066"},"_hasShrinkwrap":false},"4.0.4":{"name":"vue-socket.io-extended","version":"4.0.4","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.33"},"devDependencies":{"@babel/core":"7.10.5","@babel/plugin-external-helpers":"7.10.4","@babel/plugin-proposal-decorators":"7.10.5","@babel/plugin-proposal-export-namespace-from":"7.10.4","@babel/preset-env":"7.10.4","@vue/test-utils":"1.0.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.21","eslint":"7.5.0","eslint-config-airbnb-base":"14.2.0","eslint-plugin-import":"2.22.0","eslint-plugin-jest":"23.18.0","jest":"26.1.0","rollup":"2.23.0","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.0.2","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"6.1.0","vue":"2.6.11","vue-class-component":"7.2.5","vue-template-compiler":"2.6.11","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"d5b450ff39e76eaa093fccfa2e4252da59d54ba6","_id":"vue-socket.io-extended@4.0.4","_nodeVersion":"14.5.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vSbhWmoHGhkm0143TTPXqbfMEO0uLfF0MX0tmhRaInzWCQliCei5BjmMBRDuqEOuSZuvnKHGjpUKCifFeo3BDg==","shasum":"af7295881dc38edf6d3139cef51f857d67c24fef","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.4.tgz","fileCount":7,"unpackedSize":35730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHEH5CRA9TVsSAnZWagAAVEAQAJgF04vykQKrPJXYdvGL\n0BYwWdLfTuaYFIiWsVIW72JuJu5tl3xbOCtuWmVN12JNxQnWhfdcusgHq9EY\nN130RwuLcUWBhNFQEEZX+Q4ahccoXUyWH9F11eIQ8M9F93ytQUnoahfI6w7L\nhCKXjaCpMxBPU3SNreZW0i4Gn5GgYJ8EwDfUhgTp4ebZ3vNHGsOC/CBg03Ad\nxNuJjO75oH9ZT4qn8XASrTR/57x9HBCloeA0X8q0jdsL2cNOV6bHr83IeQC6\naOEwHdEzD9HCAOcW1WNMG7vVOKAEmjXdevCp49GXwdnJl+DFWo8jGv/AvR34\nP5cNYYTtOpqWcY74pB0L/+W8xOXh3Sxjn/t4FawqBJKiSYxeaOmWDffDAjrl\n8/QV15ikW8tUwvqCYFE9cDa9Ctdtu2L8JqP/+uovQD1tEqxQ2AThLZxFhR36\n+Zxb5wHgYWYDCwkHrL98lLCWYs6qjQC01IYHLKOiTBcebXCK806ewXxMDuMd\nbtJJEt/htTk7P4wRcJ57al4CHMKA6JvsnsY7ZuZ9h4aSnW//3+y1e4euH8/6\nOw7nr/DMHWK08tCspw2t5mLrtE8J2U/HrrRYXqEKh5DrMe6pEomXxEc/V07R\nyQdjRNZKF2yjiGMmyg7WY3L+636b22L6PNet8GUE4KgNpVh+6LTozP9+ASzx\nco9i\r\n=tjDX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjHYXq534G8kpedqHycjxxq3xlP3FSx6UbGUEx62IY5AiEAmFOe1ZkNtI6feNfcovbCGUzt31odjaT3ynDXvnU3Vxg="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.4_1595687416884_0.9197327504790991"},"_hasShrinkwrap":false},"4.0.5":{"name":"vue-socket.io-extended","version":"4.0.5","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.34"},"devDependencies":{"@babel/core":"7.11.6","@babel/plugin-external-helpers":"7.10.4","@babel/plugin-proposal-decorators":"7.10.5","@babel/plugin-proposal-export-namespace-from":"7.10.4","@babel/preset-env":"7.11.5","@vue/test-utils":"1.0.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.23","eslint":"7.10.0","eslint-config-airbnb-base":"14.2.0","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.0.2","jest":"26.4.2","rollup":"2.28.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.0.2","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.11","vue-class-component":"7.2.5","vue-template-compiler":"2.6.11","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"6d4fe367419b90e806f86f8fa350a76de1aa6eb3","_id":"vue-socket.io-extended@4.0.5","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7OUA76lpqHqVWD6+Qpc9UnEGBL4HzswDnaJSSOtd0TGwOLj+E2L59ExwLhHUuXB7QlLheFU/RzGJQ708YysABA==","shasum":"ad3e7ede1d2d3f538f714af0ae1329574cc6668f","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.5.tgz","fileCount":7,"unpackedSize":36616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc64uCRA9TVsSAnZWagAA9qIP/0qE0TF/6cKllWwdd3+4\noUG0a4W2T9oPw2SrhC8vH+8iRtEjyrKlG8kaRZb20qp2v5CMIQcxwuZBVm0h\nTCcNEfSuGlwrv5axnpamf/L2fQjfhxIvQDlyWIzn6hcmbfSO4hKEvE5o2Yvy\nyRu7/aPB3jRuKs1aLIT4QYe4w8LoDe5TZ0j3eBN1Jwagu/Q9To6ZiokezxDk\nS1BA9tI8Ne5HCOq8bt5hxQ5QfTtwSPk6U0YkBub8jMlCemQrA02+UR6EIBlZ\nfyqyVwoTXFO5/sIdJtDVBB9xMaAohhAxD/Stx29B6yk4r3mLQG53zQMBmJ0U\nxq0ahR9xxgA/r7B1g/7ZqWW6qdiYZtU/kr+lKTpV8dvtyZkchedniphMgATD\nGR5nWNh2Vgi3CwGmUiX0f6mHuxKEOWrCaKfJeIl5qoBe2ONO836NRv06bfvf\n6I5cu56YN1OB1C55JRlXJIqZx+LNzjGBut5MYfg32/x2WiUE33PmfIskDIrF\nc9h11wUpyzwQ4dzv2sgvuCGkgcaRzGL34u81p3RP06qg1jDq75RzwgJe5e+I\nBYOJ4+Cklf2Qi1LJ+8HN4zsZS6MC6jymjZiSHnV/EjGNYxY0l/C4s7fYQzjc\n+P1o8pSydO2K90nlFwI4QyS7TfQr+UVnW2u05iilRIreo65BG/WvMNW07Rkh\nHoPF\r\n=l5bV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChEFiLgQ3YMkWIsdkA6enZ01JymY2XGzYqmiF3Fds+3QIgLh8SB9ze3FbIg9gsnide/6ZBgQKUTGlQz6b11SWRRiQ="}]},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.5_1601416750171_0.5120352597098317"},"_hasShrinkwrap":false},"4.0.6":{"name":"vue-socket.io-extended","version":"4.0.6","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.35"},"devDependencies":{"@babel/core":"7.12.10","@babel/plugin-external-helpers":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-export-namespace-from":"7.12.1","@babel/preset-env":"7.12.11","@vue/test-utils":"1.0.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.17.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.1.3","jest":"26.6.3","rollup":"2.36.1","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.11","vue-class-component":"7.2.5","vue-template-compiler":"2.6.11","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"4170d4e89fd42f00e990efe70130cd31f1df197c","_id":"vue-socket.io-extended@4.0.6","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fUt5ZxXntNTG0vkoHjUjpu8jKhao5MEfG4qj/zA2FOQMnbLVf/X/sLM2uypCtebowAyGPeoVXLq7U3GhguJhsg==","shasum":"7d3767856b3e8377cf95fe68044d172a4b4091a9","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.6.tgz","fileCount":7,"unpackedSize":36639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/OliCRA9TVsSAnZWagAAaesP/2QBfNMHoHUcy132b9Ac\nYIiCUI8Yxj1D+6ef7wAMx9dIdrPZPGVZdDAds0inHq7VGL59X8ZHda3i/Qfy\nGvn0dkp9SRd0LhEh4r+i6BXsA1AgEgYL6alFkL+7M66S3lorWejwWDxAX1Ic\n5np24uq9qV2RIQR72vVXHqHeS0OzbCnxlNITSQmDe6pwvvotMgMbopRg817b\nRONBSuFpj5RqIrqP7+HycI8/lvz/lsyt3ztTwTodnCPzSyHOs7jxxryXl4fB\nrip30kIM/7+NcZeVjHq7oRmc4IYM/nUmJ1neJaJskiruSNdPLwIQ7qPoXy4F\npMiOA1K37ulJGHrtVzy1BtcF/twPI7HX1YowUlx2CDizF4jVp8qMeFBIRihv\npS2N3xxlEiKC4FmH0wHEiAuwbxbcyASWgeNIt942ErpfObusZRaHheOZIZTk\nL8Gf7tFobZKZEsJhnJhqPk+mxF+85ilz2km3QAGbPTGcGZCz020NcKLRRJ/r\nWf++3mo/KV2GiZU8LhziCAYNVIdqy5ruDKrxZgbrRP4yP+QFkzY74olKvkFP\nEO9dyqFrRuyQbGiuoomsOo2toeX37Yd8GzIPoWS0bFA6tnDeyCrc6A6qbolc\nzfj3IoYV2PpgkHjiGCMpy4+ZarkTyYQ2r0EJJrJMeaXlcp68VPQEFBZinjxy\n3iLR\r\n=z/Vc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNUQW506k107jUSi0RqVgu73iStJfQC9EvLBG+cVfixgIhAMsQl07URgVgbds2RSooCBvpXS8XzON6ZD7nB+V3zBmP"}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.6_1610410337422_0.647086533274724"},"_hasShrinkwrap":false},"5.0.0-alpha.1":{"name":"vue-socket.io-extended","version":"5.0.0-alpha.1","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"typings":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.35"},"devDependencies":{"@babel/core":"7.12.10","@babel/plugin-external-helpers":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-export-namespace-from":"7.12.1","@babel/preset-env":"7.12.11","@vue/test-utils":"2.0.0-beta.13","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.18.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.1.3","jest":"26.6.3","rollup":"2.36.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"^3.0.4","vue-class-component":"^8.0.0-rc.1","vue-template-compiler":"^2.6.0-beta.3","vuex":"^4.0.0-rc.2"},"jest":{"roots":["<rootDir>/src"]},"readme":"<h1 align=\"center\" style=\"text-align:center\">Vue-Socket.io-Extended</h1>\n\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/probil/vue-socket.io-extended/tree/master\"><img src=\"https://badgen.net/circleci/github/probil/vue-socket.io-extended/master\" alt=\"Build Status\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/v/vue-socket.io-extended\" alt=\"Version\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/dt/vue-socket.io-extended\" alt=\"Downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/license/vue-socket.io-extended\" alt=\"License\"></a>\n  <a href=\"https://vuejs.org/\"><img src=\"https://badgen.net/badge/Vue/3.x/orange\" alt=\"Vue.js 3.x compatible\"></a>\n  <a href=\"https://raw.githubusercontent.com/probil/vue-socket.io-extended/master/dist/vue-socket.io-ext.min.js\"><img src=\"https://badgen.net/bundlephobia/min/vue-socket.io-extended\" alt=\"Minified library size\"></a>\n  <a href=\"https://codecov.io/gh/probil/vue-socket.io-extended\"><img src=\"https://badgen.net/codecov/c/github/probil/vue-socket.io-extended/master\" alt=\"Code coverage (codecov)\"></a>\n  <a href=\"https://gitter.im/vue-socket-io-extended/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link\"><img src=\"https://badgen.net/badge/chat/on%20gitter/cyan\" alt=\"Join us Gitter\"></a>\n  <a href=\"https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_shield\" alt=\"FOSSA Status\"><img src=\"https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=shield\"/></a>\n</p>\n\n<p align=\"center\">\n  Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://codesandbox.io/s/oxqpm54pnq?fontsize=14&module=%2Fsrc%2FApp.vue\"><img src=\"https://codesandbox.io/static/img/play-codesandbox.svg\" alt=\"Edit Vue Socket IO Extended Twitter feed demo\"/></a>\n</p>\n<p align=\"center\">\n  <a href='https://ko-fi.com/R5R1119O3' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n</p>\n\n## :cherries: Features\n\n- Lightweight and dependency free - only 2kb min gzip\n- Reactive properties `$socket.connected` and `$socket.disconnected`\n- Listening and emitting `socket.io` events inside components\n- Auto-dispatches actions and mutations in multiple namespaced Vuex modules on `socket.io` events\n- Good TypeScript support (decorator and typing)\n- Can be used with any version of `socket.io-client`\n- Custom options - tweak the library to better fit your project needs\n- etc...\n\n## :heavy_check_mark: Browser Support\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) |\n| --- | --- | --- | --- | --- | --- |\n| 38+ :heavy_check_mark: | 13+ :heavy_check_mark:  | 8+ :heavy_check_mark: | 25+ :heavy_check_mark: | 12+ :heavy_check_mark: | 11+ :heavy_check_mark: |\n \nWe support only browsers with global usage statistics greater then 1% and last 2 version of each browser (but not dead browsers). Library may work in older browser as well but we don't not guarantee that. You may need addition polyfills to make it work.\n\n## :seedling: Motivation\n\nI was using [`Vue-Socket.io`](https://github.com/MetinSeylan/Vue-Socket.io) for few months. I've liked the idea, but the more I used it the more I faced with bugs, outdated documentation, lack of support, absence of tests and a huge amount of issues :disappointed:. That slowed down development of the product I was working on. So I ended up with a decision to create my own fork with all the desirable stuff (features/fixes/tests/support/CI checks etc). That's how `vue-socket.io-extended` was born.\n\nIf you'd like to help - create an issue or PR. I will be glad to see any contribution.  Let's make the world a better place :heart:\n\n## :grey_exclamation: Prerequisites\n\nYou must have a running Socket.IO server before starting any Vue/Socket.IO project! Instructions on how to build a Node/Socket.IO server are found [here](https://socket.io).\n\n## :grey_exclamation: Software Requirements\n\n- [Vue.js](https://vuejs.org/) `>=2.X`\n- [Socket.io-client](https://socket.io) `>=2.X`\n- [Vuex](https://vuex.vuejs.org/) `>=2.X` (optional)\n\n## :cd: Installation\n\n```bash\nnpm install vue-socket.io-extended socket.io-client\n```\n\n## :checkered_flag: Initialization\n\n#### ES2015 (Webpack/Rollup/Browserify/Parcel/etc)\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport { createApp } from 'vue';\n\nconst socket = io('http://socketserver.com:1923');\n\nconst app = createApp({});\napp.use(VueSocketIOExt, socket);\n```\n*Note:* you have to pass instance of `socket.io-client` as second argument to prevent library duplication. Read more [here](https://github.com/probil/vue-socket.io-extended/issues/19).\n\n#### UMD (Browser)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/socket.io-client/dist/socket.io.slim.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue-socket.io-extended\"></script>\n<script>\n  var socket = io('http://socketserver.com:1923');\n  var app = createApp({});\n  app.use(VueSocketIOExt, socket);\n</script>\n```\n\n## :rocket: Usage\n\n#### On Vue.js component\n\nDefine your listeners under `sockets` section and they will listen corresponding `socket.io` events automatically.\n\n```js\ncreateApp({\n  sockets: {\n    connect() {\n      console.log('socket connected')\n    },\n    customEmit(val) {\n      console.log('this method was fired by the socket server. eg: io.emit(\"customEmit\", data)')\n    }\n  },\n  methods: {\n    clickButton(val) {\n      // this.$socket.client is `socket.io-client` instance\n      this.$socket.client.emit('emit_method', val);\n    }\n  }\n})\n```\n\n**Note**: Don't use arrow functions for methods or listeners if you are going to emit `socket.io` events inside. You will end up with using incorrect `this`. More info about this [here](https://github.com/probil/vue-socket.io-extended/issues/61)\n\n#### Dynamic socket event listeners (changed in v4)\n\nCreate a new listener\n``` js\nthis.$socket.$subscribe('event_name', payload => {\n  console.log(payload)\n});\n```\nRemove existing listener\n``` js\nthis.$socket.$unsubscribe('event_name');\n```\n\n#### Reactive properties (new in v4)\n`$socket.connected` and `$socket.diconnected` are reactive. That means you can use them in expressions\n```vue\n<template>\n  <div>\n    <span>{{ $socket.connected ? 'Connected' : 'Disconnected' }}</span>\n  </div>\n</template>\n```\nOr conditions\n```vue\n<template>\n  <span \n    class=\"notification\" \n    v-if=\"$socket.disconnected\"\n  >\n    You are disconnected\n  </span>\n</template>\n```\nOr computed properties, methods and hooks. Treat them as computed properties that are available in all components\n\n## :evergreen_tree: Vuex Store Integration\n\n#### Setup\n\nTo set up Vuex integration just pass the store as the third argument. In a Vue CLI project, you might do this in the `src/main.js` file. Example:\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport store from './store'\n\nconst socket = io('http://socketserver.com:1923');\nconst app = createApp({});\n\napp.use(VueSocketIOExt, socket, { store });\n```\n\n#### Receiving Events  \n\nMutations and actions will be dispatched or committed automatically in the Vuex store when a socket event arrives.  A mutation or action must follow the naming convention below to recognize and handle a socket event. \n\n* A **mutation** should start with `SOCKET_` prefix and continue with an uppercase version of the event\n* An **action** should start with `socket_` prefix and continue with camelcase version of the event\n\n| Server Event | Mutation | Action\n| --- | --- | --- |\n| `chat message` | `SOCKET_CHAT MESSAGE` | `socket_chatMessage` |\n| `chat_message` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n| `chatMessage`  | `SOCKET_CHATMESSAGE`  | `socket_chatMessage` |\n| `CHAT_MESSAGE` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n\nCheck the [Configuration](#gear-configuration) section if you'd like to use a custom transformation.\n\nCheck the [Migration from VueSocketIO](#information_source-migration-from-vuesocketio) section if you want to keep actions names in UPPER_CASE.\n\n```js\n// In this example we have a socket.io server that sends message ID when it arrives\n// so to get entire body of the message we need to make AJAX call the server\nimport { createStore } from 'vuex';\n\n// `MessagesAPI.downloadMessageById` is an async function (goes to backend through REST Api and fetches all message data)\nimport MessagesAPI from './api/message'\n\nexport default createStore({\n  state: {\n    // we store messages as a dictionary for easier access and interaction\n    // @see https://hackernoon.com/shape-your-redux-store-like-your-database-98faa4754fd5\n    messages: {},\n    messagesOrder: []\n  },\n  mutations: {\n    NEW_MESSAGE(state, message) {\n      state.messages[message.id] = message;\n      state.messagesOrder.push(message.id);\n    }\n  },\n  actions: {\n    socket_userMessage ({ dispatch, commit }, messageId) { // <-- this action is triggered when `user_message` is emmited on the server\n      return MessagesAPI.downloadMessageById(messageId).then((message) => {\n       commit('NEW_MESSAGE', message);\n      })\n    }\n  }\n})\n```\n\n#### Emitting Events  \n\nEvents can be sent to the Socket.IO server by calling `this._vm.$socket.client.emit` from a Vuex mutation or action. Mutation or action names are not subject to the same naming requirements as above. More then one argument can be included. [All serializable data structures are supported](https://socket.io/docs/client-api/#socket-emit-eventName-%E2%80%A6args-ack), including Buffer.\n\n```js\n  actions: {\n    emitSocketEvent(data) {\n      this._vm.$socket.client.emit('eventName', data);\n      this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });\n    }\n  }\n```\n\n#### Namespaced Vuex Modules\n\nNamespaced modules are supported out-of-the-box. Any appropriately-named mutation or action should work regardless of whether it's in a module or in the main Vuex store.\n\n```js\nimport { createStore } from 'vuex';\n\nconst messages = {\n  state: {\n    messages: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.messages.push(message);\n    }\n  },\n  actions: {\n    socket_chatMessage() {\n      console.log('this action will be called');\n    }\n  },\n};\n\nconst notifications = {\n  state: {\n    notifications: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.notifications.push({ type: 'message', payload: message });\n    }\n  },\n};\n\nexport default createStore({\n  modules: {\n    messages,\n    notifications,\n  }\n})\n```\nThe above code will:\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `messages` module\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `notification` module\n* Dispatch the `socket_chatMessage` action in the `messages` module\n\n## :bamboo: ECMAScript / TypeScript decorator (added in v4)\n\n**Required**: [ECMAScript stage 1 decorators](https://github.com/wycats/javascript-decorators/blob/master/README.md).\nIf you use Babel, [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) is needed.\nIf you use TypeScript, enable `--experimentalDecorators` flag.\n\n> It does not support the stage 2 decorators yet since mainstream transpilers still transpile to the old decorators.\n\nWe provide `@Socket()` decorator for users of [class-style Vue components](https://github.com/vuejs/vue-class-component). By default, `@Socket()` decorator listens the same event as decorated method name but you can use custom name by passing a string inside decorator e.g. `@Socket('custom_event')`.\n\nCheck the example below:\n\n```vue\n<!-- App.vue -->\n<script>\nimport { Options, Vue } from 'vue-class-component';\nimport { Socket } from 'vue-socket.io-extended'\n\n@Options({})\nexport default class App extends Vue {\n  @Socket() // --> listens to the event by method name, e.g. `connect` \n  connect () {\n    console.log('connection established');\n  }\n  \n  @Socket('tweet')  // --> listens to the event with given name, e.g. `tweet`\n  onTweet (tweetInfo) {\n    // do something with `tweetInfo`\n  }\n}\n</script>\n```\n\n## :mountain_bicyclist: Usage with Nuxt.js\n> The key point here is to disable SSR for the plugin as it will crash otherwise. It's a well-know issue and we are going to fix it. Thanks [@ll931217](https://github.com/ll931217) for investigation.\n\n**1. Create plugin**:\n```js\n// ~/plugins/socket.io.js\nimport Vue from 'vue';\nimport { io } from 'socket.io-client';\nimport VueSocketIOExt from 'vue-socket.io-extended';\n\nconst socket = io('http://localhost:3000');\n\nexport default ({ store }) => {\n  Vue.use(VueSocketIOExt, socket, { store });\n}\n```\n\n**2. Then register it**:\n\n```js\n// nuxt.config.js\nmodule.exports = {\n  //...,\n  plugins: [\n    //...,\n    { \n      src: '~/plugins/socket.io.js',\n      ssr: false,                    // <-- this line is required\n    },\n  ]\n}\n```\n\n## :mountain_bicyclist: Usage with Quasar Framework\n> Register vue-socket.io-extended with a boot file and disable server side rendering\n\n**1. Create bootfile**:\n```js\n// ~/boot/socket.io.js\nimport { io } from 'socket.io-client';\nimport VueSocketIOExt from 'vue-socket.io-extended';\n\nconst socket = io('http://localhost:3000');\n\nexport default async ({ store, Vue }) => {\n  Vue.use(VueSocketIOExt, socket, { store })\n}\n```\n\n**2. Then register it**:\n\n```js\n// quasar.conf.js\nmodule.exports = function (ctx) {\n  return {\n  //...,\n  boot: [\n    //...,\n    { \n      path: 'socket.io',\n      server: false,\n    },\n  ]\n}\n```\n\n## :gear: Configuration\n\nIn addition to store instance, `vue-socket.io-extended` accepts other options. \nHere they are:\n\n| Option | Type | Default | Description |\n| ---- | ---- | ------- | ------- |\n| `store` | `Object` | `undefined` | Vuex store instance, enables vuex integration |\n| `actionPrefix` | `String` | `'socket_'` | Prepend to event name while converting event to action. Empty string disables prefixing |\n| `mutationPrefix` | `String` | `'SOCKET_'` | Prepend to event name while converting event to mutation. Empty string disables prefixing |  \n| `eventToMutationTransformer` | `Function` `string => string` | uppercase function | Determines how event name converted to mutation |\n| `eventToActionTransformer` | `Function` `string => string` | camelcase function | Determines how event name converted to action |\n\n*FYI:* You can always access default plugin options if you need it (e.g. re-use default `eventToActionTransformer` function):\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nVueSocketIOExt.defaults // -> { actionPrefix: '...', mutationPrefix: '...', ... }\n```\n\n## :information_source: Migration from VueSocketIO\n\nFor everyone who has migrated from old package VueSocketIO to this new one on existing project.\nYou need to redefine 2 parameters so you will be able to use old store actions names like \"SOCKET_EVENT_NAME\".\n\n```js\nimport VueSocketIO from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\n\n\nconst ioInstance = io('https://hostname/path', {\n        reconnection: true,\n        reconnectionDelay: 500,\n        maxReconnectionAttempts: Infinity\n});\napp.use(VueSocketIO, ioInstance, {\n        store, // vuex store instance\n        actionPrefix: 'SOCKET_', // keep prefix in uppercase\n        eventToActionTransformer: (actionName) => actionName // cancel camel case\n    }\n});\n```\n\n\n## :question: FAQ\n\n- [How to prevent connection until authed?](https://github.com/probil/vue-socket.io-extended/issues/114#issuecomment-405411500)\n\n- [How to receive/emit event from server to the particular user?](https://github.com/probil/vue-socket.io-extended/issues/71#issuecomment-390820203) (check also [this](https://gitter.im/vue-socket-io-extended/Lobby?at=5bbc9973ef4afc4f2842d0bc))\n\n- [How access this.$socket from Vuex actions?](https://github.com/probil/vue-socket.io-extended/issues/91#issuecomment-397232621)\n\n- [My mutation is triggered two times?](https://github.com/probil/vue-socket.io-extended/issues/185)\n\n- [Mutations and actions are not fired while using Quasar](https://github.com/probil/vue-socket.io-extended/issues/384#issuecomment-517736400)\n\n## :anchor: Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nWe're using [GitHub Releases](https://github.com/probil/vue-socket.io-extended/releases).\n\n## :beers: Contribution\n\nWe're more than happy to see potential contributions, so don't hesitate. If you have any suggestions, ideas or problems feel free to add new [issue](https://github.com/probil/vue-socket.io-extended/issues/new), but first please make sure your question does not repeat previous ones.\n\n## :lock: License\n\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_large)\n","readmeFilename":"README.md","gitHead":"81babd266e155c5684ec0c2f40fdf64fc7eeea77","_id":"vue-socket.io-extended@5.0.0-alpha.1","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-p2c8W8YgCdq+W+ePgSbIreikbziqfXpZOlsIaTmo+8NTO98fQisKgHX/EUzxBkrw/04NKZiYdoKweLCAJy63dA==","shasum":"afe3c69418a785068637337c0850961cbbd48c64","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-5.0.0-alpha.1.tgz","fileCount":7,"unpackedSize":118170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBEo/CRA9TVsSAnZWagAA4/QP/RlX2D3JuEa2O6OusKno\nEUQxExCfFV9Z5uEBXJG++hbwxHeFmKGmM5U4S4VKDuET3MydT/EBxW32Svnm\nXOpJeRLX3+0M3PNkZMN5gJKn+9pIcXia8259KpoCZdZ95SEVef970USK5wJS\nDRmExnLlVBKfFME/oI1YPtgdB7WPnzqS95dZFdelHgJFD2GMEsOBYp5I9Eqb\nuTaBi0k2vz0ftP15goei0+pJrh8LXraeC9/ONzC7WW9sV5nlduknWOaFwkcR\nNFGcPyEUyPBW+/UvnuPuvHy/Dsi2iaevm6DKfazue/D9Z1vyzALmSjf17IND\nAVL/RwJc2bJT71Mtpl+VXlF4cc11x+yqZRQhR6FiNrqKIULBrM132tGwmLEs\n2eUJwxwqpTAt7usQTGvtP1fJB8atDH1ZL8FRXRBOjtT2vIjKt03iYeOA16UI\nRBZeVkWpbZwqtjkjp8qEdHcpl3XeJOYBVmNUB6pxTykzPz4rs/d+IIQ7jTBS\nVdNNxR1NumWHmXEMaOrZbtRPLq6Y4Zzqn9Lw5GySTEO7quVegcDyM5aAcELW\nTFo6nl176itHO/hHrmvzOazZglMLjGfeaxwZb1g7N4jW26cKruQlMG5m9bSP\nGuJMwjcFeOr0nHNg5rTNkxug0PxA0KQyeQ26JmOVnt8h9aCg9ZzUlXpKdwaF\nfj5M\r\n=vyzE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID78ZFd5afEy8vQnxVWcf48SXNKdfUN2Zdcr7jyYxDQUAiBq4n/apasqKjy9opeTYqcuN4vFW5eIAFKmnRp+MAAL0A=="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_5.0.0-alpha.1_1610893887415_0.07572654878699092"},"_hasShrinkwrap":false},"5.0.0-alpha.2":{"name":"vue-socket.io-extended","version":"5.0.0-alpha.2","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"typings":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.35"},"devDependencies":{"@babel/core":"7.12.10","@babel/plugin-external-helpers":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-export-namespace-from":"7.12.1","@babel/preset-env":"7.12.11","@vue/test-utils":"2.0.0-beta.13","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.18.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.1.3","jest":"26.6.3","rollup":"2.36.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"3.0.5","vue-class-component":"8.0.0-rc.1","vuex":"4.0.0-rc.2"},"jest":{"roots":["<rootDir>/src"]},"readme":"<h1 align=\"center\" style=\"text-align:center\">Vue-Socket.io-Extended</h1>\n\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/probil/vue-socket.io-extended/tree/alpha\"><img src=\"https://badgen.net/circleci/github/probil/vue-socket.io-extended/alpha\" alt=\"Build Status\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/v/vue-socket.io-extended\" alt=\"Version\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/dt/vue-socket.io-extended\" alt=\"Downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/license/vue-socket.io-extended\" alt=\"License\"></a>\n  <a href=\"https://vuejs.org/\"><img src=\"https://badgen.net/badge/Vue/3.x/orange\" alt=\"Vue.js 3.x compatible\"></a>\n  <a href=\"https://raw.githubusercontent.com/probil/vue-socket.io-extended/master/dist/vue-socket.io-ext.min.js\"><img src=\"https://badgen.net/bundlephobia/min/vue-socket.io-extended@alpha\" alt=\"Minified library size\"></a>\n  <a href=\"https://codecov.io/gh/probil/vue-socket.io-extended\"><img src=\"https://badgen.net/codecov/c/github/probil/vue-socket.io-extended/alpha\" alt=\"Code coverage (codecov)\"></a>\n  <a href=\"https://gitter.im/vue-socket-io-extended/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link\"><img src=\"https://badgen.net/badge/chat/on%20gitter/cyan\" alt=\"Join us Gitter\"></a>\n  <a href=\"https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_shield\" alt=\"FOSSA Status\"><img src=\"https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=shield\"/></a>\n</p>\n\n<p align=\"center\">\n  Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://codesandbox.io/s/oxqpm54pnq?fontsize=14&module=%2Fsrc%2FApp.vue\"><img src=\"https://codesandbox.io/static/img/play-codesandbox.svg\" alt=\"Edit Vue Socket IO Extended Twitter feed demo\"/></a>\n</p>\n<p align=\"center\">\n  <a href='https://ko-fi.com/R5R1119O3' target='_blank'><img height='36' style='border:0;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n</p>\n\n## :cherries: Features\n\n- Lightweight and dependency free - only 2kb min gzip\n- Reactive properties `$socket.connected` and `$socket.disconnected`\n- Listening and emitting `socket.io` events inside components\n- Auto-dispatches actions and mutations in multiple namespaced Vuex modules on `socket.io` events\n- Good TypeScript support (decorator and typing)\n- Can be used with any version of `socket.io-client`\n- Custom options - tweak the library to better fit your project needs\n- etc...\n\n## :heavy_check_mark: Browser Support\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) |\n| --- | --- | --- | --- | --- |\n| 49+ :heavy_check_mark: | 18+ :heavy_check_mark:  | 10+ :heavy_check_mark: | 36+ :heavy_check_mark: | 12+ :heavy_check_mark: |\n\nWe support only browsers with global usage statistics greater than 1% and due to current Vue 3 limitation - with native [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) support.\n\n## :seedling: Motivation\n\nI was using [`Vue-Socket.io`](https://github.com/MetinSeylan/Vue-Socket.io) for few months. I've liked the idea, but the more I used it the more I faced with bugs, outdated documentation, lack of support, absence of tests, and a huge amount of issues :disappointed:. That slowed down development of the product I was working on. So I ended up with a decision to create my own fork with all the desirable stuff (features/fixes/tests/support/CI checks etc). That's how `vue-socket.io-extended` was born.\n\nIf you'd like to help - create an issue or PR. I will be glad to see any contribution.  Let's make the world a better place :heart:\n\n## :grey_exclamation: Prerequisites\n\nYou must have a running Socket.IO server before starting any Vue/Socket.IO project! Instructions on how to build a Node/Socket.IO server can be found [here](https://socket.io).\n\n## :grey_exclamation: Software Requirements\n\n- [Vue.js](https://vuejs.org/) `3.X`\n- [Socket.io-client](https://socket.io) `>= 2.X`\n- [Vuex](https://vuex.vuejs.org/) `>= 4.X` (optional)\n\n## :cd: Installation\n\n```bash\nnpm install vue-socket.io-extended@alpha socket.io-client\n```\n\n## :checkered_flag: Initialization\n\n#### ES2015 (Webpack/Rollup/Browserify/Parcel/etc)\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport { createApp } from 'vue';\n\nconst socket = io('http://socketserver.com:1923');\n\nconst app = createApp({});\napp.use(VueSocketIOExt, socket);\n```\n*Note:* you have to pass instance of `socket.io-client` as second argument to prevent library duplication. Read more [here](https://github.com/probil/vue-socket.io-extended/issues/19).\n\n#### UMD (Browser)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vue@next/dist/vue.global.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/socket.io-client/dist/socket.io.slim.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue-socket.io-extended@alpha\"></script>\n<script>\n  var socket = io('http://socketserver.com:1923');\n  var app = Vue.createApp({});\n  app.use(VueSocketIOExt, socket);\n</script>\n```\n\n## :rocket: Usage\n\n#### On Vue.js component\n\nDefine your listeners under `sockets` section, and they will be executed on corresponding `socket.io` events automatically.\n\n```js\ncreateApp({\n  sockets: {\n    connect() {\n      console.log('socket connected')\n    },\n    customEmit(val) {\n      console.log('this method was fired by the socket server. eg: io.emit(\"customEmit\", data)')\n    }\n  },\n  methods: {\n    clickButton(val) {\n      // this.$socket.client is `socket.io-client` instance\n      this.$socket.client.emit('emit_method', val);\n    }\n  }\n})\n```\n\n**Note**: Don't use arrow functions for methods or listeners if you are going to emit `socket.io` events inside. You will end up with using incorrect `this`. More info about this [here](https://github.com/probil/vue-socket.io-extended/issues/61)\n\n#### Dynamic socket event listeners (changed in v4)\n\nCreate a new listener\n```js\nthis.$socket.$subscribe('event_name', payload => {\n  console.log(payload)\n});\n```\nRemove existing listener\n```js\nthis.$socket.$unsubscribe('event_name');\n```\n\n#### Reactive properties (new in v4)\nThe `$socket.connected` and `$socket.diconnected` are reactive. That means you can use them in expressions\n```vue\n<template>\n  <div>\n    <span>{{ $socket.connected ? 'Connected' : 'Disconnected' }}</span>\n  </div>\n</template>\n```\nOr conditions\n```vue\n<template>\n  <span\n    class=\"notification\"\n    v-if=\"$socket.disconnected\"\n  >\n    You are disconnected\n  </span>\n</template>\n```\nOr computed properties, methods and hooks. Treat them as computed properties that are available in all components\n\n## :evergreen_tree: Vuex Store Integration\n\n#### Setup\n\nTo set up Vuex integration just pass the store as the third argument. In a Vue CLI project, you might do this in the `src/main.js` file. Example:\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport store from './store'\n\nconst socket = io('http://socketserver.com:1923');\nconst app = createApp({});\n\napp.use(VueSocketIOExt, socket, { store });\n```\n\n#### Receiving Events\n\nMutations and actions will be dispatched or committed automatically in the Vuex store when a socket event arrives.  A mutation or action must follow the naming convention below to recognize and handle a socket event.\n\n* A **mutation** should start with `SOCKET_` prefix and continue with an uppercase version of the event\n* An **action** should start with `socket_` prefix and continue with camelcase version of the event\n\n| Server Event | Mutation | Action\n| --- | --- | --- |\n| `chat message` | `SOCKET_CHAT MESSAGE` | `socket_chatMessage` |\n| `chat_message` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n| `chatMessage`  | `SOCKET_CHATMESSAGE`  | `socket_chatMessage` |\n| `CHAT_MESSAGE` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n\nCheck the [Configuration](#gear-configuration) section if you'd like to use a custom transformation.\n\nCheck the [Migration from VueSocketIO](#information_source-migration-from-vuesocketio) section if you want to keep actions names in UPPER_CASE.\n\n```js\n// In this example we have a socket.io server that sends message ID when it arrives\n// so to get entire body of the message we need to make AJAX call the server\nimport { createStore } from 'vuex';\n\n// `MessagesAPI.downloadMessageById` is an async function (goes to backend through REST Api and fetches all message data)\nimport MessagesAPI from './api/message'\n\nexport default createStore({\n  state: {\n    // we store messages as a dictionary for easier access and interaction\n    // @see https://hackernoon.com/shape-your-redux-store-like-your-database-98faa4754fd5\n    messages: {},\n    messagesOrder: []\n  },\n  mutations: {\n    NEW_MESSAGE(state, message) {\n      state.messages[message.id] = message;\n      state.messagesOrder.push(message.id);\n    }\n  },\n  actions: {\n    socket_userMessage ({ dispatch, commit }, messageId) { // <-- this action is triggered when `user_message` is emmited on the server\n      return MessagesAPI.downloadMessageById(messageId).then((message) => {\n       commit('NEW_MESSAGE', message);\n      })\n    }\n  }\n})\n```\n\n#### Emitting Events\n\nEvents can be sent to the Socket.IO server by calling `this._vm.$socket.client.emit` from a Vuex mutation or action. Mutation or action names are not subject to the same naming requirements as above. More than one argument can be included. [All serializable data structures are supported](https://socket.io/docs/client-api/#socket-emit-eventName-%E2%80%A6args-ack), including Buffer.\n\n```js\n  actions: {\n    emitSocketEvent(data) {\n      this._vm.$socket.client.emit('eventName', data);\n      this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });\n    }\n  }\n```\n\n#### Namespaced Vuex Modules\n\nNamespaced modules are supported out-of-the-box. Any appropriately-named mutation or action should work regardless of whether it's in a module or in the main Vuex store.\n\n```js\nimport { createStore } from 'vuex';\n\nconst messages = {\n  state: {\n    messages: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.messages.push(message);\n    }\n  },\n  actions: {\n    socket_chatMessage() {\n      console.log('this action will be called');\n    }\n  },\n};\n\nconst notifications = {\n  state: {\n    notifications: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.notifications.push({ type: 'message', payload: message });\n    }\n  },\n};\n\nexport default createStore({\n  modules: {\n    messages,\n    notifications,\n  }\n})\n```\nThe above code will:\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `messages` module\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `notification` module\n* Dispatch the `socket_chatMessage` action in the `messages` module\n\n## :bamboo: ECMAScript / TypeScript decorator (added in v4)\n\n**Required**: [ECMAScript stage 1 decorators](https://github.com/wycats/javascript-decorators/blob/master/README.md).\nIf you use Babel, [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) is needed.\nIf you use TypeScript, enable `--experimentalDecorators` flag.\n\n> It does not support the stage 2 decorators yet since mainstream transpilers still transpile to the old decorators.\n\nWe provide `@Socket()` decorator for users of [class-style Vue components](https://github.com/vuejs/vue-class-component). By default, `@Socket()` decorator listens the same event as decorated method name, but you can use custom name by passing a string inside decorator e.g. `@Socket('custom_event')`.\n\nCheck the example below:\n\n```vue\n<!-- App.vue -->\n<script>\nimport { Options, Vue } from 'vue-class-component';\nimport { Socket } from 'vue-socket.io-extended'\n\n@Options({})\nexport default class App extends Vue {\n  @Socket() // --> listens to the event by method name, e.g. `connect`\n  connect () {\n    console.log('connection established');\n  }\n\n  @Socket('tweet')  // --> listens to the event with given name, e.g. `tweet`\n  onTweet (tweetInfo) {\n    // do something with `tweetInfo`\n  }\n}\n</script>\n```\n\n## :mountain_bicyclist: Usage with Nuxt.js\n\n:warning: [The current version of Nuxt.js (v2) doesn't support Vue 3 just yet](https://github.com/nuxt/nuxt.js/issues/8395). The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended/tree/v4.0.6#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Next 2\n\n## :mountain_bicyclist: Usage with Quasar Framework\n\n:warning: [The current version of Quasar (v1) doesn't support Vue 3 just yet](https://github.com/quasarframework/quasar/issues/7836). Beta version is planned for Jan 2021 though, while the final version is expected to be released in Q1. The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Quasar 1\n\n## :gear: Configuration\n\nIn addition to store instance, `vue-socket.io-extended` accepts other options.\nHere they are:\n\n| Option | Type | Default | Description |\n| ---- | ---- | ------- | ------- |\n| `store` | `Object` | `undefined` | Vuex store instance, enables vuex integration |\n| `actionPrefix` | `String` | `'socket_'` | Prepend to event name while converting event to action. Empty string disables prefixing |\n| `mutationPrefix` | `String` | `'SOCKET_'` | Prepend to event name while converting event to mutation. Empty string disables prefixing |\n| `eventToMutationTransformer` | `Function` `string => string` | uppercase function | Determines how event name converted to mutation |\n| `eventToActionTransformer` | `Function` `string => string` | camelcase function | Determines how event name converted to action |\n\n*FYI:* You can always access default plugin options if you need it (e.g. re-use default `eventToActionTransformer` function):\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nVueSocketIOExt.defaults // -> { actionPrefix: '...', mutationPrefix: '...', ... }\n```\n\n## :information_source: Migration from VueSocketIO\n\nFor those who has migrated from old VueSocketIO to this package on existing project there is an easy way to migrate without rewriting exiting store modules.\nYou need to redefine 2 parameters so `vue-socket.io-extended` would support the same format of actions as in `vue-socket.io`.\n\n```js\nimport VueSocketIO from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\n\nconst ioInstance = io('https://hostname/path');\napp.use(VueSocketIO, ioInstance, {\n  store, // vuex store instance\n  actionPrefix: 'SOCKET_', // keep prefix in uppercase\n  eventToActionTransformer: (actionName) => actionName // cancel camel case\n});\n```\n\n**Note**: Since `vue-socket.io` seems to be active again the instructions might not work as described above. If you are migrating and facing some issues just create an issue with a short description of the problem. I'll try to update instructions, so you can make use of them.\n\n## :question: FAQ\n\n- [How to prevent connection until authed?](https://github.com/probil/vue-socket.io-extended/issues/114#issuecomment-405411500)\n\n- [How to receive/emit event from server to the particular user?](https://github.com/probil/vue-socket.io-extended/issues/71#issuecomment-390820203) (check also [this](https://gitter.im/vue-socket-io-extended/Lobby?at=5bbc9973ef4afc4f2842d0bc))\n\n- [How access this.$socket from Vuex actions?](https://github.com/probil/vue-socket.io-extended/issues/91#issuecomment-397232621)\n\n- [My mutation is triggered two times?](https://github.com/probil/vue-socket.io-extended/issues/185)\n\n- [Mutations and actions are not fired while using Quasar](https://github.com/probil/vue-socket.io-extended/issues/384#issuecomment-517736400)\n\n## :anchor: Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nWe're using [GitHub Releases](https://github.com/probil/vue-socket.io-extended/releases).\n\n## :beers: Contribution\n\nWe're more than happy to see potential contributions, so don't hesitate. If you have any suggestions, ideas or problems feel free to add new [issue](https://github.com/probil/vue-socket.io-extended/issues/new), but first please make sure your question does not repeat previous ones.\n\n## :lock: License\n\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_large)\n","readmeFilename":"README.md","gitHead":"51f7aa3e43c0eb5ca64b088dafe765a99df39fd6","_id":"vue-socket.io-extended@5.0.0-alpha.2","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-qE3ID16TvtjLmeSRrXnM+MNpuKN/boc5LtIy8wwWXGzaclhWSU7OfEhmoGd1bUy6WZzjTEfTuU8TcNdqd/3TxQ==","shasum":"b86af3d4b8cd57f1437acbde603989959b363a5e","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-5.0.0-alpha.2.tgz","fileCount":7,"unpackedSize":46958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBG/QCRA9TVsSAnZWagAARh0P/3qLxp8sMXUBSEpHCx6N\nGy9dKzuUlVJf8yPyRTDbIf9YZ9ln5RIK3kPDT3F3iD/PSituQIRJL2hxSSoR\n1AMmdyKdK/Hl6as0Go1dGNeXrSZBY5E7OcrnOjPPlKO43pxXowSo3uC4vZZp\nlVrCMwV4l9jDluIv8erY7OlgBWqvPC9rulqh1I0mFQk/Gk8sINJnGZmaZ/sJ\nhrDC/ymXTH/q+I4p9A2IvEqdkZ4/cGNaew7V5KGDg2v30mKp+xlC/PJDLXBU\n11Gy/+9Aj8e/9ER864+SL1IfxiHhBvs6Ye5/nsLVUJdCGn2uU9zGFw5atA3J\nTOQ8C2UzhPBKloSpPX21Z1V8h/TuvpRGsr4UpGQOt4vDafNDXLDF7Tx3OPH2\n0I5KgK2f1X39184ho6zC7LN1nEMFlfcElPQtlYn5OyjHhIxDAzJcj92bIHYH\n0IZnOuh9vS9KK1kk1pZRqW3nYtaZz+JLIQNZOnenRcPQBrQmK9p29rPCZ1N0\nzpbXlckNrc8/QX03FycMWa4v/+ME9Ta3ycqpcMDW1vnXu+CVCltAEr3ee2N7\nzF02biWGy8EgJAsgiTFMMrbgIKcuWdXgbfNafWDwOTUqLvqNo1jqNPEOwGaA\nqmVJM0noZJre74s8XrJG1tfjBM9hLh5j2f1QzhliIIlmK+1hq4dMKl4cPK58\nIMB2\r\n=jO0y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeklEzneP5Qu5LZb0Ai2U/8ocY6YqkxlE78b05wwjGSAiAZCAYe41WM2q1vb+qy4Wx1k6uYMplaCFZvfx9bwgmrvw=="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_5.0.0-alpha.2_1610903504421_0.4370610456878947"},"_hasShrinkwrap":false},"5.0.0-alpha.3":{"name":"vue-socket.io-extended","version":"5.0.0-alpha.3","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","exports":{".":{"import":"./dist/vue-socket.io-ext.esm.js","default":"./dist/vue-socket.io-ext.min.js"},"./decorator/":"./dist/vue-socket.io-ext.decorator.esm.js"},"scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"typings":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.35"},"devDependencies":{"@babel/core":"7.12.10","@babel/plugin-external-helpers":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-export-namespace-from":"7.12.1","@babel/preset-env":"7.12.11","@vue/test-utils":"2.0.0-beta.13","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.18.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.1.3","jest":"26.6.3","rollup":"2.36.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.0","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"3.0.5","vue-class-component":"8.0.0-rc.1","vuex":"4.0.0-rc.2"},"jest":{"roots":["<rootDir>/src"]},"readme":"<h1 align=\"center\" style=\"text-align:center\">Vue-Socket.io-Extended</h1>\n\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/probil/vue-socket.io-extended/tree/alpha\"><img src=\"https://badgen.net/circleci/github/probil/vue-socket.io-extended/alpha\" alt=\"Build Status\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/v/vue-socket.io-extended\" alt=\"Version\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/dt/vue-socket.io-extended\" alt=\"Downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/license/vue-socket.io-extended\" alt=\"License\"></a>\n  <a href=\"https://vuejs.org/\"><img src=\"https://badgen.net/badge/Vue/3.x/orange\" alt=\"Vue.js 3.x compatible\"></a>\n  <a href=\"https://raw.githubusercontent.com/probil/vue-socket.io-extended/master/dist/vue-socket.io-ext.min.js\"><img src=\"https://badgen.net/bundlephobia/min/vue-socket.io-extended@alpha\" alt=\"Minified library size\"></a>\n  <a href=\"https://codecov.io/gh/probil/vue-socket.io-extended\"><img src=\"https://badgen.net/codecov/c/github/probil/vue-socket.io-extended/alpha\" alt=\"Code coverage (codecov)\"></a>\n  <a href=\"https://gitter.im/vue-socket-io-extended/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link\"><img src=\"https://badgen.net/badge/chat/on%20gitter/cyan\" alt=\"Join us Gitter\"></a>\n  <a href=\"https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_shield\" alt=\"FOSSA Status\"><img src=\"https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=shield\"/></a>\n</p>\n\n<p align=\"center\">\n  Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://codesandbox.io/s/oxqpm54pnq?fontsize=14&module=%2Fsrc%2FApp.vue\"><img src=\"https://codesandbox.io/static/img/play-codesandbox.svg\" alt=\"Edit Vue Socket IO Extended Twitter feed demo\"/></a>\n</p>\n<p align=\"center\">\n  <a href='https://ko-fi.com/R5R1119O3' target='_blank'><img height='36' style='border:0;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n</p>\n\n## :cherries: Features\n\n- Lightweight and dependency free - only 2kb min gzip\n- Reactive properties `$socket.connected` and `$socket.disconnected`\n- Listening and emitting `socket.io` events inside components\n- Auto-dispatches actions and mutations in multiple namespaced Vuex modules on `socket.io` events\n- Good TypeScript support (decorator and typing)\n- Can be used with any version of `socket.io-client`\n- Custom options - tweak the library to better fit your project needs\n- etc...\n\n## :heavy_check_mark: Browser Support\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) |\n| --- | --- | --- | --- | --- |\n| 49+ :heavy_check_mark: | 18+ :heavy_check_mark:  | 10+ :heavy_check_mark: | 36+ :heavy_check_mark: | 12+ :heavy_check_mark: |\n\nWe support only browsers with global usage statistics greater than 1% and due to current Vue 3 limitation - with native [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) support.\n\n## :seedling: Motivation\n\nI was using [`Vue-Socket.io`](https://github.com/MetinSeylan/Vue-Socket.io) for few months. I've liked the idea, but the more I used it the more I faced with bugs, outdated documentation, lack of support, absence of tests, and a huge amount of issues :disappointed:. That slowed down development of the product I was working on. So I ended up with a decision to create my own fork with all the desirable stuff (features/fixes/tests/support/CI checks etc). That's how `vue-socket.io-extended` was born.\n\nIf you'd like to help - create an issue or PR. I will be glad to see any contribution.  Let's make the world a better place :heart:\n\n## :grey_exclamation: Prerequisites\n\nYou must have a running Socket.IO server before starting any Vue/Socket.IO project! Instructions on how to build a Node/Socket.IO server can be found [here](https://socket.io).\n\n## :grey_exclamation: Software Requirements\n\n- [Vue.js](https://vuejs.org/) `3.X`\n- [Socket.io-client](https://socket.io) `>= 2.X`\n- [Vuex](https://vuex.vuejs.org/) `>= 4.X` (optional)\n\n## :cd: Installation\n\n```bash\nnpm install vue-socket.io-extended@alpha socket.io-client\n```\n\n## :checkered_flag: Initialization\n\n#### ES2015 (Webpack/Rollup/Browserify/Parcel/etc)\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport { createApp } from 'vue';\n\nconst socket = io('http://socketserver.com:1923');\n\nconst app = createApp({});\napp.use(VueSocketIOExt, socket);\n```\n*Note:* you have to pass instance of `socket.io-client` as second argument to prevent library duplication. Read more [here](https://github.com/probil/vue-socket.io-extended/issues/19).\n\n#### UMD (Browser)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vue@next/dist/vue.global.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/socket.io-client/dist/socket.io.slim.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue-socket.io-extended@alpha\"></script>\n<script>\n  var socket = io('http://socketserver.com:1923');\n  var app = Vue.createApp({});\n  app.use(VueSocketIOExt, socket);\n</script>\n```\n\n## :rocket: Usage\n\n#### On Vue.js component\n\nDefine your listeners under `sockets` section, and they will be executed on corresponding `socket.io` events automatically.\n\n```js\ncreateApp({\n  sockets: {\n    connect() {\n      console.log('socket connected')\n    },\n    customEmit(val) {\n      console.log('this method was fired by the socket server. eg: io.emit(\"customEmit\", data)')\n    }\n  },\n  methods: {\n    clickButton(val) {\n      // this.$socket.client is `socket.io-client` instance\n      this.$socket.client.emit('emit_method', val);\n    }\n  }\n})\n```\n\n**Note**: Don't use arrow functions for methods or listeners if you are going to emit `socket.io` events inside. You will end up with using incorrect `this`. More info about this [here](https://github.com/probil/vue-socket.io-extended/issues/61)\n\n#### Dynamic socket event listeners (changed in v4)\n\nCreate a new listener\n```js\nthis.$socket.$subscribe('event_name', payload => {\n  console.log(payload)\n});\n```\nRemove existing listener\n```js\nthis.$socket.$unsubscribe('event_name');\n```\n\n#### Reactive properties (new in v4)\nThe `$socket.connected` and `$socket.diconnected` are reactive. That means you can use them in expressions\n```vue\n<template>\n  <div>\n    <span>{{ $socket.connected ? 'Connected' : 'Disconnected' }}</span>\n  </div>\n</template>\n```\nOr conditions\n```vue\n<template>\n  <span\n    class=\"notification\"\n    v-if=\"$socket.disconnected\"\n  >\n    You are disconnected\n  </span>\n</template>\n```\nOr computed properties, methods and hooks. Treat them as computed properties that are available in all components\n\n## :evergreen_tree: Vuex Store Integration\n\n#### Setup\n\nTo set up Vuex integration just pass the store as the third argument. In a Vue CLI project, you might do this in the `src/main.js` file. Example:\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport store from './store'\n\nconst socket = io('http://socketserver.com:1923');\nconst app = createApp({});\n\napp.use(VueSocketIOExt, socket, { store });\n```\n\n#### Receiving Events\n\nMutations and actions will be dispatched or committed automatically in the Vuex store when a socket event arrives.  A mutation or action must follow the naming convention below to recognize and handle a socket event.\n\n* A **mutation** should start with `SOCKET_` prefix and continue with an uppercase version of the event\n* An **action** should start with `socket_` prefix and continue with camelcase version of the event\n\n| Server Event | Mutation | Action\n| --- | --- | --- |\n| `chat message` | `SOCKET_CHAT MESSAGE` | `socket_chatMessage` |\n| `chat_message` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n| `chatMessage`  | `SOCKET_CHATMESSAGE`  | `socket_chatMessage` |\n| `CHAT_MESSAGE` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n\nCheck the [Configuration](#gear-configuration) section if you'd like to use a custom transformation.\n\nCheck the [Migration from VueSocketIO](#information_source-migration-from-vuesocketio) section if you want to keep actions names in UPPER_CASE.\n\n```js\n// In this example we have a socket.io server that sends message ID when it arrives\n// so to get entire body of the message we need to make AJAX call the server\nimport { createStore } from 'vuex';\n\n// `MessagesAPI.downloadMessageById` is an async function (goes to backend through REST Api and fetches all message data)\nimport MessagesAPI from './api/message'\n\nexport default createStore({\n  state: {\n    // we store messages as a dictionary for easier access and interaction\n    // @see https://hackernoon.com/shape-your-redux-store-like-your-database-98faa4754fd5\n    messages: {},\n    messagesOrder: []\n  },\n  mutations: {\n    NEW_MESSAGE(state, message) {\n      state.messages[message.id] = message;\n      state.messagesOrder.push(message.id);\n    }\n  },\n  actions: {\n    socket_userMessage ({ dispatch, commit }, messageId) { // <-- this action is triggered when `user_message` is emmited on the server\n      return MessagesAPI.downloadMessageById(messageId).then((message) => {\n       commit('NEW_MESSAGE', message);\n      })\n    }\n  }\n})\n```\n\n#### Emitting Events\n\nEvents can be sent to the Socket.IO server by calling `this._vm.$socket.client.emit` from a Vuex mutation or action. Mutation or action names are not subject to the same naming requirements as above. More than one argument can be included. [All serializable data structures are supported](https://socket.io/docs/client-api/#socket-emit-eventName-%E2%80%A6args-ack), including Buffer.\n\n```js\n  actions: {\n    emitSocketEvent(data) {\n      this._vm.$socket.client.emit('eventName', data);\n      this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });\n    }\n  }\n```\n\n#### Namespaced Vuex Modules\n\nNamespaced modules are supported out-of-the-box. Any appropriately-named mutation or action should work regardless of whether it's in a module or in the main Vuex store.\n\n```js\nimport { createStore } from 'vuex';\n\nconst messages = {\n  state: {\n    messages: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.messages.push(message);\n    }\n  },\n  actions: {\n    socket_chatMessage() {\n      console.log('this action will be called');\n    }\n  },\n};\n\nconst notifications = {\n  state: {\n    notifications: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.notifications.push({ type: 'message', payload: message });\n    }\n  },\n};\n\nexport default createStore({\n  modules: {\n    messages,\n    notifications,\n  }\n})\n```\nThe above code will:\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `messages` module\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `notification` module\n* Dispatch the `socket_chatMessage` action in the `messages` module\n\n## :bamboo: ECMAScript / TypeScript decorator (added in v4)\n\n**Required**: [ECMAScript stage 1 decorators](https://github.com/wycats/javascript-decorators/blob/master/README.md).\nIf you use Babel, [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) is needed.\nIf you use TypeScript, enable `--experimentalDecorators` flag.\n\n> It does not support the stage 2 decorators yet since mainstream transpilers still transpile to the old decorators.\n\nWe provide `@Socket()` decorator for users of [class-style Vue components](https://github.com/vuejs/vue-class-component). By default, `@Socket()` decorator listens the same event as decorated method name, but you can use custom name by passing a string inside decorator e.g. `@Socket('custom_event')`.\n\nCheck the example below:\n\n```vue\n<!-- App.vue -->\n<script>\nimport { Options, Vue } from 'vue-class-component';\nimport { Socket } from 'vue-socket.io-extended'\n\n@Options({})\nexport default class App extends Vue {\n  @Socket() // --> listens to the event by method name, e.g. `connect`\n  connect () {\n    console.log('connection established');\n  }\n\n  @Socket('tweet')  // --> listens to the event with given name, e.g. `tweet`\n  onTweet (tweetInfo) {\n    // do something with `tweetInfo`\n  }\n}\n</script>\n```\n\n## :mountain_bicyclist: Usage with Nuxt.js\n\n:warning: [The current version of Nuxt.js (v2) doesn't support Vue 3 just yet](https://github.com/nuxt/nuxt.js/issues/8395). The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended/tree/v4.0.6#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Next 2\n\n## :mountain_bicyclist: Usage with Quasar Framework\n\n:warning: [The current version of Quasar (v1) doesn't support Vue 3 just yet](https://github.com/quasarframework/quasar/issues/7836). Beta version is planned for Jan 2021 though, while the final version is expected to be released in Q1. The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Quasar 1\n\n## :gear: Configuration\n\nIn addition to store instance, `vue-socket.io-extended` accepts other options.\nHere they are:\n\n| Option | Type | Default | Description |\n| ---- | ---- | ------- | ------- |\n| `store` | `Object` | `undefined` | Vuex store instance, enables vuex integration |\n| `actionPrefix` | `String` | `'socket_'` | Prepend to event name while converting event to action. Empty string disables prefixing |\n| `mutationPrefix` | `String` | `'SOCKET_'` | Prepend to event name while converting event to mutation. Empty string disables prefixing |\n| `eventToMutationTransformer` | `Function` `string => string` | uppercase function | Determines how event name converted to mutation |\n| `eventToActionTransformer` | `Function` `string => string` | camelcase function | Determines how event name converted to action |\n\n*FYI:* You can always access default plugin options if you need it (e.g. re-use default `eventToActionTransformer` function):\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nVueSocketIOExt.defaults // -> { actionPrefix: '...', mutationPrefix: '...', ... }\n```\n\n## :information_source: Migration from VueSocketIO\n\nFor those who has migrated from old VueSocketIO to this package on existing project there is an easy way to migrate without rewriting exiting store modules.\nYou need to redefine 2 parameters so `vue-socket.io-extended` would support the same format of actions as in `vue-socket.io`.\n\n```js\nimport VueSocketIO from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\n\nconst ioInstance = io('https://hostname/path');\napp.use(VueSocketIO, ioInstance, {\n  store, // vuex store instance\n  actionPrefix: 'SOCKET_', // keep prefix in uppercase\n  eventToActionTransformer: (actionName) => actionName // cancel camel case\n});\n```\n\n**Note**: Since `vue-socket.io` seems to be active again the instructions might not work as described above. If you are migrating and facing some issues just create an issue with a short description of the problem. I'll try to update instructions, so you can make use of them.\n\n## :question: FAQ\n\n- [How to prevent connection until authed?](https://github.com/probil/vue-socket.io-extended/issues/114#issuecomment-405411500)\n\n- [How to receive/emit event from server to the particular user?](https://github.com/probil/vue-socket.io-extended/issues/71#issuecomment-390820203) (check also [this](https://gitter.im/vue-socket-io-extended/Lobby?at=5bbc9973ef4afc4f2842d0bc))\n\n- [How access this.$socket from Vuex actions?](https://github.com/probil/vue-socket.io-extended/issues/91#issuecomment-397232621)\n\n- [My mutation is triggered two times?](https://github.com/probil/vue-socket.io-extended/issues/185)\n\n- [Mutations and actions are not fired while using Quasar](https://github.com/probil/vue-socket.io-extended/issues/384#issuecomment-517736400)\n\n## :anchor: Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nWe're using [GitHub Releases](https://github.com/probil/vue-socket.io-extended/releases).\n\n## :beers: Contribution\n\nWe're more than happy to see potential contributions, so don't hesitate. If you have any suggestions, ideas or problems feel free to add new [issue](https://github.com/probil/vue-socket.io-extended/issues/new), but first please make sure your question does not repeat previous ones.\n\n## :lock: License\n\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_large)\n","readmeFilename":"README.md","gitHead":"df83685c8eab00b1cf3f8b29449f1a1a38fe2377","_id":"vue-socket.io-extended@5.0.0-alpha.3","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-auiBrBBtjclxg6v5/gnGUgrtC9MNHFUJKApepwvKr6W0MklR1PG4QEQY/ro2tP9u2Sd9BL79JeMF3ffMjgSjFg==","shasum":"ebe383cb05bacaf18ddb2c80dfdda9704cf94497","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-5.0.0-alpha.3.tgz","fileCount":9,"unpackedSize":36175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBgkXCRA9TVsSAnZWagAAozYP/2nv4iYL7n5X1+uq0rnD\nQ/qlgjyANd6zmf6oZjtz0SsFF+V2n5bfMNma9r3PZ750IIgWigNvh4Q61uYD\njEKJ8bXMSVzS72O8fVY3vRnVOF0IfRbu1vi3CoA9u9mKBQqz2RNMGzhrEvcg\nDpNpbGE82Nozq61H6P6xpbrEdpRXwFHES93Sql7j+0QS/QaDYf7aDawlO3Ys\nkso5HYcDLcjnehlE0VDorjHdfhZyrlVXHdBB/iQgnMq+rx9WK5ZwXcD+pGLE\ng85p0MjNKWxLwvT3zXbMCO7TESq9Sf/GU+pxbEpOsqUHe7//+6pUDCW7jpEE\nvmyHh7vk4TsRru9B6Pe/1Aqwd0L2+L7ff8H/awaPMdi2uvAO7iTVdZ4CeW0S\ncB5Ezv94uH+uJzRKYvwkU8iUq+ReAoc4vMAGCSNraXQUJR1vCzWeJ8xYCKie\nNkXXRVs2ZkCb3gHmH7LTPw5K3H08EDUS48jKkrvWtV5h/4uEw3gqXgrnl0Fw\nmNjDK3Ye0Uy7+9qHTtUesH32opiqQODGAwCT/OpuxPqpZv1DPUf1ZH6ZdOD0\nqbEdnNUtibKrxuPfuKShq/2Ezirlf1EBbp4nLXXKH/t69Ay77kFrwH5w+1lz\n8hptyISBkBd0ruFfkJ2Xxgnlg6mTJXeDxuE05ki4isyJ+1gHr2m1c2obX8qg\nqapu\r\n=cQFb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVv46XpSl6vdt0d0Q7SID1vZ9APcasH+WoWKMlKSboNAIhAOkthXbqOEMtn04b3UFA3xiPO58H5IGG6Y9GFNidpT5l"}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_5.0.0-alpha.3_1611008279516_0.7873230557242432"},"_hasShrinkwrap":false},"4.0.7":{"name":"vue-socket.io-extended","version":"4.0.7","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.10","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.10","@vue/test-utils":"1.1.2","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.21.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.2.1","jest":"26.6.3","rollup":"2.41.2","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.12","vue-class-component":"7.2.6","vue-template-compiler":"2.6.12","vuex":"3.1.1"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"c691df9240ba89fde6c72b692ec7a9728d81d07e","_id":"vue-socket.io-extended@4.0.7","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-rLPgQwqsHezC2CWGTyF3EntfdaMhlX9wI+7l8Qw8Hq7Zhf0HKR3JAEChC8ISPyYOeSFjh638CAGBv8mbVLa76w==","shasum":"814812679229258d1e5829f563a99ac0c313d717","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.7.tgz","fileCount":7,"unpackedSize":36888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS+ssCRA9TVsSAnZWagAAis8P/2CqB839uiTexJijIJ8g\n8f/dM7ouYaI8Su0cvnjfUyOGaC3O5YPkXTMFtui9aLM5sOBQZ4nfG3mJWb3b\n920eHkakyb+BkG3/b8jlFjxonVCEEGxkdsRkGsEolxJgBnbPVzSiWKycTozu\nGKQfhMVxMYysDbAKIy95VIVH/f+6B/hY/LmbaaX0URAzetE0gITHQZDNQIep\n/JBVlRp3SbTEiYoJGWH2NhGl2X4yKKwtLQN+xzmVOmjAc/wVQWZf93hvfgpl\nebkHTrQ2NKoyVSCqF94/Uz2uMhEWr2j9/MP79ZfF7FxNQNF+H/zgdxGLi+Fq\nx+YR5wWc3TiO7xBxz7rEXgpYAsaLhjL2FwFob7DAiIO12+koIcHtTAUceyUB\nbPZWd2I37UEFNBM1sPTOM2FwPY8qkiVQmb4iW655R96dnMOs/ZDmPjbGvauS\nRYd+H1eYcDrchI3dk16DHlDuI+oJ6oN5ovLbgXy/zvsl/2VY4G8BKvRqZ1a+\n+Cv04uu0eO6/yA4APNhrVE3Lpw0NStpUP8sZKgcwMwi5gNcRM5+jVSuoNtTe\nCDuc6DsPkXzFeVsyh+IOgvYp99za5jgwG05VVAi7afHNeL7TvFgxuRKswm8M\ne6OqhXyS/RWY1vIV04UR5NDdRd42hinRzlIwUlzhYf2EokYqqyzPAcpafakG\nw/te\r\n=AFPw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDySwS+xNa/zx1SNVEyq4TV7wlhQY0CaLZuOVjgQpMs9AiAzyZvOV5C3kId1QMYboCEs7USGM+BK6j7DcJ1UNTzkvA=="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.7_1615588139706_0.009924735859958567"},"_hasShrinkwrap":false},"4.0.8":{"name":"vue-socket.io-extended","version":"4.0.8","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.10","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.10","@vue/test-utils":"1.1.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.22.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.3.2","jest":"26.6.3","rollup":"2.42.1","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.12","vue-class-component":"7.2.6","vue-template-compiler":"2.6.12","vuex":"3.6.2"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"6e03f746c0c80d1bce42b85dfc28a52221840592","_id":"vue-socket.io-extended@4.0.8","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-RcsAcJbbmm/IbwGuz++Ln13FI+Bau/bJs6Re7ok4ceY4fSV6yoO1gMK9XocZXSkxZadg+OOQlOFtvnaBD/pBNw==","shasum":"2d90799be6e5114e50e6639f12a3b9e8ed9d6ee2","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.0.8.tgz","fileCount":7,"unpackedSize":36888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWEtCCRA9TVsSAnZWagAARJwP/14sVpBDdh2zpBlfcxtb\nC4lMRHuS2IlsTONrqKNNPa05MymhPnc6AL8VF4553zVjfTyUOgR4VM6JB0bw\nBo8FXZ7qLjjeYIr1zXr8b0tWsyrb75PnNIiYddOK0fXvd5JjOlQQRfNmY3wf\nKPGT7wZ0z/x4vLXudIZAT/p6cZoPpvuC+iDr67h1EnKfAKdxImqXdJGk/Jh7\ny1J32B+eYQ+p0aZfp6/ybOgFUkbKLDYMkS8P44d8UVCMlGcx08Zcxcg9daIf\nyQDwKnS0W3tDLEpRkE4ajxMXAna91FQ1j86XsyA2GgFi9+lmjCiiTaKNv72w\nuHDNBPmNW+7DFnyvSe3tAG001SqWJpDe1ig54/eRLnHO3K4Ab38FJt7wNlqt\nOGUvgy48XoE6PJ1heF1QYzje1ZbeV6IvEN/9e022WKRaB0hck2d39b9YZ39P\n47XYvEIebzsryGGbs3gBiZm73Xf/4RUX9Ky45giO2wQ91ZmOMAXItbl/Ze4/\ng+V9fGQZhnzCBzGpcZfSLxhBpPT7hkCSgYnlW1C2S53Ff5cv/358IKy/CqVv\nRsBzt3TxVkK9qwcQky9hlvugn0fhHEgvtBCUVIcbLA7Q0IRuunnMLYkIiqrd\nFGjIYYJcMPViM4iPeMYv18PliGPS4GpntI4Y5lwCZpUMWXCqUXhDVm1nGvgK\nlFdr\r\n=3TSv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzkgHnRuJtSnDP+z0JXjh1kdDxZfdulJankSxYuSE7mAiEAomlOewSV1DIK/2l2ZOqSAau4BUDB9M43P3k0JaJgh5A="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.0.8_1616399169471_0.8778239127486178"},"_hasShrinkwrap":false},"4.1.0":{"name":"vue-socket.io-extended","version":"4.1.0","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.10","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.12","@vue/test-utils":"1.1.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.22.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.3.2","jest":"26.6.3","rollup":"2.42.3","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.12","vue-class-component":"7.2.6","vue-template-compiler":"2.6.12","vuex":"3.6.2"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"b903b08e60c7eced6ddd767b3cb3c55f15fce0ae","_id":"vue-socket.io-extended@4.1.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8a7eeHkUB6fnMtgHw0QrENHhgRF+VcZlz24dYvGZCZkxY8S0xO7e88GTz7fxj7HJ/uSu701Gv8FDi80bIzdqMQ==","shasum":"c87ded5202b68580f8ffbd96f47c1f1d6e0c5b6d","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.1.0.tgz","fileCount":7,"unpackedSize":37141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWz/JCRA9TVsSAnZWagAAOwwP/AjXF4qABReq29Q4CxOn\nhtkB2ehcCGnKiu9CfrLErHXKWnneq7LwXxdqKMOew5XWomo/G5Yr2GATaQq3\nlJntHhH2doOXT5R2nMPqttd0J8CUfGUpzK5gR0eO4ZY66cSztBlrCWZ8Ekks\nxld+mlsvX7Y+5oYkNLEAWXT8Pa+mozy725zM4ZUHZwLDQOnu5XZBu8GWniAb\niQrdAbqFBR6AXKBL/B27u9UgqOqZaxbKiG26J+w9TgK6nAPDxEw7O2A6WGdz\n9/Huz+jDtqenHMiQDKKJqqsfRKr57N538N3s2pPCndpWcMLPyz0PP4rRjbXp\nIYMAeFVLsKSm+YaYjvj7WZHdEGcc0S36m3pXS6POKji+sXkitF7EVENW6WjL\nx/epnobl4h/s5AqTrjFJ6YUtShZwO/RIW7P8SOPNyK3ZOrOOm3oMG+wJyw4U\nl0pdvc48cjTFRZMvHCXW8VnO6ftICWsBzdLioxufFHwzc7PHpvOdOMiuWRFP\nayolt8s3tAGmyvdideqJrTBkVU54pfmZu+JBmNbxuKeW3Cs+uzpn+c+WBSoo\nV9vznTK9QWJqugk8c20YKEvgcPs+HIpN352K0yLS6GP/AafObh1rADrdz+67\n9veKnNkq5yZQ8d3CE+gevD7VQ8kLgEzKzmM/mD8bgXXdi5863682NGpN075W\na98w\r\n=yXdj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVk+MGKbwFGiEXz7gl+zB+l39SImmO3aFRsp2vlwAPmAIgQTSE/StLuEKJKQLj4Lkb8Uj+5XibgGzti+Xq23+3zmk="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.1.0_1616592840615_0.4770290886319881"},"_hasShrinkwrap":false},"5.0.0-alpha.4":{"name":"vue-socket.io-extended","version":"5.0.0-alpha.4","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","exports":{".":{"import":"./dist/vue-socket.io-ext.esm.js","default":"./dist/vue-socket.io-ext.min.js"},"./decorator/":"./dist/vue-socket.io-ext.decorator.esm.js"},"scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"typings":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.14","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.12","@vue/test-utils":"2.0.0-rc.4","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.23.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.3.2","jest":"26.6.3","rollup":"2.44.0","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"3.0.11","vue-class-component":"8.0.0-rc.1","vuex":"4.0.0"},"jest":{"roots":["<rootDir>/src"]},"readme":"<h1 align=\"center\" style=\"text-align:center\">Vue-Socket.io-Extended</h1>\n\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/probil/vue-socket.io-extended/tree/alpha\"><img src=\"https://badgen.net/circleci/github/probil/vue-socket.io-extended/alpha\" alt=\"Build Status\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/v/vue-socket.io-extended\" alt=\"Version\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/dt/vue-socket.io-extended\" alt=\"Downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/license/vue-socket.io-extended\" alt=\"License\"></a>\n  <a href=\"https://vuejs.org/\"><img src=\"https://badgen.net/badge/Vue/3.x/orange\" alt=\"Vue.js 3.x compatible\"></a>\n  <a href=\"https://raw.githubusercontent.com/probil/vue-socket.io-extended/master/dist/vue-socket.io-ext.min.js\"><img src=\"https://badgen.net/bundlephobia/min/vue-socket.io-extended@alpha\" alt=\"Minified library size\"></a>\n  <a href=\"https://codecov.io/gh/probil/vue-socket.io-extended\"><img src=\"https://badgen.net/codecov/c/github/probil/vue-socket.io-extended/alpha\" alt=\"Code coverage (codecov)\"></a>\n  <a href=\"https://gitter.im/vue-socket-io-extended/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link\"><img src=\"https://badgen.net/badge/chat/on%20gitter/cyan\" alt=\"Join us Gitter\"></a>\n  <a href=\"https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_shield\" alt=\"FOSSA Status\"><img src=\"https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=shield\"/></a>\n</p>\n\n<p align=\"center\">\n  Socket.io bindings for Vue.js 2 and Vuex (inspired by Vue-Socket.io)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://codesandbox.io/s/oxqpm54pnq?fontsize=14&module=%2Fsrc%2FApp.vue\"><img src=\"https://codesandbox.io/static/img/play-codesandbox.svg\" alt=\"Edit Vue Socket IO Extended Twitter feed demo\"/></a>\n</p>\n<p align=\"center\">\n  <a href='https://ko-fi.com/R5R1119O3' target='_blank'><img height='36' style='border:0;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n</p>\n\n\n> :warning: [The alpha version of v5](https://github.com/probil/vue-socket.io-extended/tree/alpha) (with Vue 3 support) has been released. Your feedback would be appreciated [here](https://github.com/probil/vue-socket.io-extended/issues/489) \n\n\n## :cherries: Features\n\n- Lightweight and dependency free - only 2kb min gzip\n- Reactive properties `$socket.connected` and `$socket.disconnected`\n- Listening and emitting `socket.io` events inside components\n- Auto-dispatches actions and mutations in multiple namespaced Vuex modules on `socket.io` events\n- Good TypeScript support (decorator and typing)\n- Can be used with any version of `socket.io-client`\n- Custom options - tweak the library to better fit your project needs\n- etc...\n\n## :heavy_check_mark: Browser Support\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) |\n| --- | --- | --- | --- | --- |\n| 49+ :heavy_check_mark: | 18+ :heavy_check_mark:  | 10+ :heavy_check_mark: | 36+ :heavy_check_mark: | 12+ :heavy_check_mark: |\n\nWe support only browsers with global usage statistics greater than 1% and due to current Vue 3 limitation - with native [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) support.\n\n## :seedling: Motivation\n\nI was using [`Vue-Socket.io`](https://github.com/MetinSeylan/Vue-Socket.io) for few months. I've liked the idea, but the more I used it the more I faced with bugs, outdated documentation, lack of support, absence of tests, and a huge amount of issues :disappointed:. That slowed down development of the product I was working on. So I ended up with a decision to create my own fork with all the desirable stuff (features/fixes/tests/support/CI checks etc). That's how `vue-socket.io-extended` was born.\n\nIf you'd like to help - create an issue or PR. I will be glad to see any contribution.  Let's make the world a better place :heart:\n\n## :grey_exclamation: Prerequisites\n\nYou must have a running Socket.IO server before starting any Vue/Socket.IO project! Instructions on how to build a Node/Socket.IO server can be found [here](https://socket.io).\n\n## :grey_exclamation: Software Requirements\n\n- [Vue.js](https://vuejs.org/) `3.X`\n- [Socket.io-client](https://socket.io) `>= 2.X`\n- [Vuex](https://vuex.vuejs.org/) `>= 4.X` (optional)\n\n## :cd: Installation\n\n```bash\nnpm install vue-socket.io-extended@alpha socket.io-client\n```\n\n## :checkered_flag: Initialization\n\n#### ES2015 (Webpack/Rollup/Browserify/Parcel/etc)\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport { createApp } from 'vue';\n\nconst socket = io('http://socketserver.com:1923');\n\nconst app = createApp({});\napp.use(VueSocketIOExt, socket);\n```\n*Note:* you have to pass instance of `socket.io-client` as second argument to prevent library duplication. Read more [here](https://github.com/probil/vue-socket.io-extended/issues/19).\n\n#### UMD (Browser)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vue@next/dist/vue.global.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/socket.io-client/dist/socket.io.slim.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue-socket.io-extended@alpha\"></script>\n<script>\n  var socket = io('http://socketserver.com:1923');\n  var app = Vue.createApp({});\n  app.use(VueSocketIOExt, socket);\n</script>\n```\n\n## :rocket: Usage\n\n#### On Vue.js component\n\nDefine your listeners under `sockets` section, and they will be executed on corresponding `socket.io` events automatically.\n\n```js\ncreateApp({\n  sockets: {\n    connect() {\n      console.log('socket connected')\n    },\n    customEmit(val) {\n      console.log('this method was fired by the socket server. eg: io.emit(\"customEmit\", data)')\n    }\n  },\n  methods: {\n    clickButton(val) {\n      // this.$socket.client is `socket.io-client` instance\n      this.$socket.client.emit('emit_method', val);\n    }\n  }\n})\n```\n\n**Note**: Don't use arrow functions for methods or listeners if you are going to emit `socket.io` events inside. You will end up with using incorrect `this`. More info about this [here](https://github.com/probil/vue-socket.io-extended/issues/61)\n\n#### Dynamic socket event listeners (changed in v4)\n\nCreate a new listener\n```js\nthis.$socket.$subscribe('event_name', payload => {\n  console.log(payload)\n});\n```\nRemove existing listener\n```js\nthis.$socket.$unsubscribe('event_name');\n```\n\n#### Reactive properties (new in v4)\nThe `$socket.connected` and `$socket.diconnected` are reactive. That means you can use them in expressions\n```vue\n<template>\n  <div>\n    <span>{{ $socket.connected ? 'Connected' : 'Disconnected' }}</span>\n  </div>\n</template>\n```\nOr conditions\n```vue\n<template>\n  <span\n    class=\"notification\"\n    v-if=\"$socket.disconnected\"\n  >\n    You are disconnected\n  </span>\n</template>\n```\nOr computed properties, methods and hooks. Treat them as computed properties that are available in all components\n\n## :evergreen_tree: Vuex Store Integration\n\n#### Setup\n\nTo set up Vuex integration just pass the store as the third argument. In a Vue CLI project, you might do this in the `src/main.js` file. Example:\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport store from './store'\n\nconst socket = io('http://socketserver.com:1923');\nconst app = createApp({});\n\napp.use(VueSocketIOExt, socket, { store });\n```\n\n#### Receiving Events\n\nMutations and actions will be dispatched or committed automatically in the Vuex store when a socket event arrives.  A mutation or action must follow the naming convention below to recognize and handle a socket event.\n\n* A **mutation** should start with `SOCKET_` prefix and continue with an uppercase version of the event\n* An **action** should start with `socket_` prefix and continue with camelcase version of the event\n\n| Server Event | Mutation | Action\n| --- | --- | --- |\n| `chat message` | `SOCKET_CHAT MESSAGE` | `socket_chatMessage` |\n| `chat_message` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n| `chatMessage`  | `SOCKET_CHATMESSAGE`  | `socket_chatMessage` |\n| `CHAT_MESSAGE` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n\nCheck the [Configuration](#gear-configuration) section if you'd like to use a custom transformation.\n\nCheck the [Migration from VueSocketIO](#information_source-migration-from-vuesocketio) section if you want to keep actions names in UPPER_CASE.\n\n```js\n// In this example we have a socket.io server that sends message ID when it arrives\n// so to get entire body of the message we need to make AJAX call the server\nimport { createStore } from 'vuex';\n\n// `MessagesAPI.downloadMessageById` is an async function (goes to backend through REST Api and fetches all message data)\nimport MessagesAPI from './api/message'\n\nexport default createStore({\n  state: {\n    // we store messages as a dictionary for easier access and interaction\n    // @see https://hackernoon.com/shape-your-redux-store-like-your-database-98faa4754fd5\n    messages: {},\n    messagesOrder: []\n  },\n  mutations: {\n    NEW_MESSAGE(state, message) {\n      state.messages[message.id] = message;\n      state.messagesOrder.push(message.id);\n    }\n  },\n  actions: {\n    socket_userMessage ({ dispatch, commit }, messageId) { // <-- this action is triggered when `user_message` is emmited on the server\n      return MessagesAPI.downloadMessageById(messageId).then((message) => {\n       commit('NEW_MESSAGE', message);\n      })\n    }\n  }\n})\n```\n\n#### Emitting Events\n\nEvents can be sent to the Socket.IO server by calling `this._vm.$socket.client.emit` from a Vuex mutation or action. Mutation or action names are not subject to the same naming requirements as above. More than one argument can be included. [All serializable data structures are supported](https://socket.io/docs/client-api/#socket-emit-eventName-%E2%80%A6args-ack), including Buffer.\n\n```js\n  actions: {\n    emitSocketEvent(data) {\n      this._vm.$socket.client.emit('eventName', data);\n      this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });\n    }\n  }\n```\n\n#### Namespaced Vuex Modules\n\nNamespaced modules are supported out-of-the-box. Any appropriately-named mutation or action should work regardless of whether it's in a module or in the main Vuex store.\n\n```js\nimport { createStore } from 'vuex';\n\nconst messages = {\n  state: {\n    messages: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.messages.push(message);\n    }\n  },\n  actions: {\n    socket_chatMessage() {\n      console.log('this action will be called');\n    }\n  },\n};\n\nconst notifications = {\n  state: {\n    notifications: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.notifications.push({ type: 'message', payload: message });\n    }\n  },\n};\n\nexport default createStore({\n  modules: {\n    messages,\n    notifications,\n  }\n})\n```\nThe above code will:\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `messages` module\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `notification` module\n* Dispatch the `socket_chatMessage` action in the `messages` module\n\n## :bamboo: ECMAScript / TypeScript decorator (added in v4)\n\n**Required**: [ECMAScript stage 1 decorators](https://github.com/wycats/javascript-decorators/blob/master/README.md).\nIf you use Babel, [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) is needed.\nIf you use TypeScript, enable `--experimentalDecorators` flag.\n\n> It does not support the stage 2 decorators yet since mainstream transpilers still transpile to the old decorators.\n\nWe provide `@Socket()` decorator for users of [class-style Vue components](https://github.com/vuejs/vue-class-component). By default, `@Socket()` decorator listens the same event as decorated method name, but you can use custom name by passing a string inside decorator e.g. `@Socket('custom_event')`.\n\nCheck the example below:\n\n```vue\n<!-- App.vue -->\n<script>\nimport { Options, Vue } from 'vue-class-component';\nimport { Socket } from 'vue-socket.io-extended'\n\n@Options({})\nexport default class App extends Vue {\n  @Socket() // --> listens to the event by method name, e.g. `connect`\n  connect () {\n    console.log('connection established');\n  }\n\n  @Socket('tweet')  // --> listens to the event with given name, e.g. `tweet`\n  onTweet (tweetInfo) {\n    // do something with `tweetInfo`\n  }\n}\n</script>\n```\n\n## :mountain_bicyclist: Usage with Nuxt.js\n\n:warning: [The current version of Nuxt.js (v2) doesn't support Vue 3 just yet](https://github.com/nuxt/nuxt.js/issues/8395). The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended/tree/v4.0.6#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Next 2\n\n## :mountain_bicyclist: Usage with Quasar Framework\n\n:warning: [The current version of Quasar (v1) doesn't support Vue 3 just yet](https://github.com/quasarframework/quasar/issues/7836). Beta version is planned for Jan 2021 though, while the final version is expected to be released in Q1. The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Quasar 1\n\n## :gear: Configuration\n\nIn addition to store instance, `vue-socket.io-extended` accepts other options.\nHere they are:\n\n| Option | Type | Default | Description |\n| ---- | ---- | ------- | ------- |\n| `store` | `Object` | `undefined` | Vuex store instance, enables vuex integration |\n| `actionPrefix` | `String` | `'socket_'` | Prepend to event name while converting event to action. Empty string disables prefixing |\n| `mutationPrefix` | `String` | `'SOCKET_'` | Prepend to event name while converting event to mutation. Empty string disables prefixing |\n| `eventToMutationTransformer` | `Function` `string => string` | uppercase function | Determines how event name converted to mutation |\n| `eventToActionTransformer` | `Function` `string => string` | camelcase function | Determines how event name converted to action |\n| eventMapping | `Function` `socket => string` | | Map your event from socket event data \n\n*FYI:* You can always access default plugin options if you need it (e.g. re-use default `eventToActionTransformer` function):\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nVueSocketIOExt.defaults // -> { actionPrefix: '...', mutationPrefix: '...', ... }\n```\n\n## :information_source: Migration from VueSocketIO\n\nFor those who has migrated from old VueSocketIO to this package on existing project there is an easy way to migrate without rewriting exiting store modules.\nYou need to redefine 2 parameters so `vue-socket.io-extended` would support the same format of actions as in `vue-socket.io`.\n\n```js\nimport VueSocketIO from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\n\nconst ioInstance = io('https://hostname/path');\napp.use(VueSocketIO, ioInstance, {\n  store, // vuex store instance\n  actionPrefix: 'SOCKET_', // keep prefix in uppercase\n  eventToActionTransformer: (actionName) => actionName // cancel camel case\n});\n```\n\n**Note**: Since `vue-socket.io` seems to be active again the instructions might not work as described above. If you are migrating and facing some issues just create an issue with a short description of the problem. I'll try to update instructions, so you can make use of them.\n\n## :question: FAQ\n\n- [How to prevent connection until authed?](https://github.com/probil/vue-socket.io-extended/issues/114#issuecomment-405411500)\n\n- [How to receive/emit event from server to the particular user?](https://github.com/probil/vue-socket.io-extended/issues/71#issuecomment-390820203) (check also [this](https://gitter.im/vue-socket-io-extended/Lobby?at=5bbc9973ef4afc4f2842d0bc))\n\n- [How access this.$socket from Vuex actions?](https://github.com/probil/vue-socket.io-extended/issues/91#issuecomment-397232621)\n\n- [My mutation is triggered two times?](https://github.com/probil/vue-socket.io-extended/issues/185)\n\n- [Mutations and actions are not fired while using Quasar](https://github.com/probil/vue-socket.io-extended/issues/384#issuecomment-517736400)\n\n## :anchor: Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nWe're using [GitHub Releases](https://github.com/probil/vue-socket.io-extended/releases).\n\n## :beers: Contribution\n\nWe're more than happy to see potential contributions, so don't hesitate. If you have any suggestions, ideas or problems feel free to add new [issue](https://github.com/probil/vue-socket.io-extended/issues/new), but first please make sure your question does not repeat previous ones.\n\n## :lock: License\n\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_large)\n","readmeFilename":"README.md","gitHead":"05620af80579f0f31089726c110f9a3a82e85f38","_id":"vue-socket.io-extended@5.0.0-alpha.4","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-GwMRZ9Gm8jNEcz2H+uS3qSBQ/Hobd7kHXoiQ243EFtBW5xGowVBz5am2ObhOk2hlrz9tBvpRu6xQ+qGdFUGmkg==","shasum":"a520059e8e9863935364433eeb1df29c6e566dc0","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-5.0.0-alpha.4.tgz","fileCount":9,"unpackedSize":36659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZsezCRA9TVsSAnZWagAA2vsQAKK9MLEi9o2CWRxUPn1Z\nKdqm3AqOmBxSLgnelK0BfHCZQpo9fUW+PKph0XpPnRNh5PwdkOjDdYd1H3A2\nClvAfWx4zZjF1GQcdQiRdkHSXMlKdfr8OWEMESDljOpr+8Y+B+4AP+SX+vza\n3WuAZSZEca5UF/rn1PHupmln7h1ghU9WoHF9d+r+2SYNQZXC2CkNZMuPa4Xy\n1iTdK0CM7F+d+jpL7tKSaWGIbF/mA0zua6TzTN4qSjnYrnER0hot0Dy9TGSG\n1c9KNwsIjYw5hmdSpNYN6x6wylvddIPCGjI7LIFu3ECjJMteaHFvP6zbwkwi\n6nYLBsKqjREyD6kd9c1Xt7Uqui0kFoEcU1LksStkU95VWIqFoRk/Yx5zGc3l\ny8XK99wAxW+lNS6zBfGU5C4AGa3KD6eUdybb4Z/06s+WAkw8PR/ZEUogxmc0\nfZ2nDMQkwcyhCdRZbx9QljDmWG7miRWb47uEdtu28T9a7qVWfnjFr8ryakB/\n9Xln0sYsRrOWEhZnps3go2yXMRwOa/XV9gidhY10O8r2yuudAariBuDUBLzj\n5LZnWJ8kX4g4AkA0B7c3/+EsGup9+LxNP3Cpkv4ubq64TWpGVG2NveI1wXio\nRYC340nPtg40vYfv4nTSlhDQKbCjX+HVt22lPgj6dyakx76Aw9FuW2Uu4XDS\nDamh\r\n=r5Ry\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFT6XEwqrooxLE+b9bfZMDs/3/JZ7MgjCzHuem5UNFOgAiEAsTjqAZ2ZX1BVGNrdLbSa4C9QTBiAKLbCYNiTosmJ/nw="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_5.0.0-alpha.4_1617348530401_0.006683943387002289"},"_hasShrinkwrap":false},"4.2.0":{"name":"vue-socket.io-extended","version":"4.2.0","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","sideEffects":false,"scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"types":"types/index.d.ts","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.16","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.15","@vue/test-utils":"1.1.3","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.23.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.3.2","jest":"26.6.3","rollup":"2.44.0","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"2.6.12","vue-class-component":"7.2.6","vue-template-compiler":"2.6.12","vuex":"3.6.2"},"jest":{"roots":["<rootDir>/src"]},"gitHead":"75eae178fdbcd8dd20c31d6a04675fb85a43537b","_id":"vue-socket.io-extended@4.2.0","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-3ZHy53W4CpzRdTZjWL7krq80FQlnK6IyOG0ur158pij1PXKyVBYDpjE0/3SluK7NeNTqefa/Y8RFCFy6BISG/g==","shasum":"e663553669fd3dcd9786b1add40b18580d36816f","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-4.2.0.tgz","fileCount":7,"unpackedSize":37204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghRsyCRA9TVsSAnZWagAA8GsP/3KZ5k4X77CP4Z1HQMBr\nWsJNpk+cVk9TWQPAIakb+EZxbiOPDw2Z9P1dv/sJlWVGGkOVO/OUYQ4xy9Oz\nrCUve29F856/3QT9woIHRpA3jDnQHsQqtcj8/zQe6zLHkoL81uusuAVwXiXJ\nxPkkZT3QB3tjW5suct56hnLSEqtek7nbVzhXjvTuHfnnEb7ztGyIhxWt0Sh+\n/tjyUKn1Q+i/3JJ15e+3UQkGX6e+SlB8MtMl5b3vsouvaHyUj2JI4BM69WO2\nM20Hg3IInxkZyHN6YkCdMtj5RenG0BHbcENml5G9FGTze3SS/uqiilSP8lUW\n6FN6BSjeegNz2q3DcW1mdVfJUWhiVUgJIPrsIyv77ed3ZdsDbYjwovf24vVn\nlobVbjlQaU+WzToXP1Po9JP9SrZHQ0XoqVhxAL+uznOnzrZ7MBDfAGpT3qvN\nEnHFhJMO4eqmThmSjUN3I0OHP7edI0U8tPAxlLnBOm/HCbNP5l7OkTu6bHCF\nUlzrIaOMV9Ch4WRRO5V5Jvvtt7TFTNEaslUZUVQgK0RXbGvtl1qpkVRlhRBR\nP7Vsg9WCemHRUOsm9qMn1ilOKXwjVTP7C2VXeLYDR8q869v2qt1KIWJ4HtQ7\nGkf8QPvvz6tOhuryL9HqrtGxGHBTf1MgYI4F8SoZfaGdvSd3tn4ZorNDBFHD\nWqUL\r\n=9fFR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAG/SSOhBJeUZu21HIfvwAKMKS8lXo0YBkPSJpXSXmOgIgOfu1V0WWY1KbXNQ6uW3NrPhrk8YbhPYsu2lEZKs5LVY="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_4.2.0_1619335985814_0.18512584672150179"},"_hasShrinkwrap":false},"5.0.0-alpha.5":{"name":"vue-socket.io-extended","version":"5.0.0-alpha.5","description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","main":"dist/vue-socket.io-ext.min.js","module":"dist/vue-socket.io-ext.esm.js","exports":{".":{"import":"./dist/vue-socket.io-ext.esm.js","default":"./dist/vue-socket.io-ext.min.js"},"./decorator":"./dist/vue-socket.io-ext.decorator.esm.js"},"scripts":{"test":"jest","lint":"eslint scripts src","release":"bash scripts/release.sh","release:note":"node scripts/gen-release-note.js","build":"rollup -c scripts/rollup-build.js"},"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"typings":"types/index.d.ts","typesVersions":{"*":{"decorator":["types/decorator.d.ts"]}},"keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"license":"MIT","bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"homepage":"https://github.com/probil/vue-socket.io-extended#readme","dependencies":{"@types/socket.io-client":"1.4.36"},"devDependencies":{"@babel/core":"7.13.14","@babel/plugin-external-helpers":"7.12.13","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-export-namespace-from":"7.12.13","@babel/preset-env":"7.13.12","@vue/test-utils":"2.0.0-rc.4","babel-eslint":"10.1.0","camelcase":"5.3.1","conventional-changelog":"3.1.24","eslint":"7.23.0","eslint-config-airbnb-base":"14.2.1","eslint-plugin-import":"2.22.1","eslint-plugin-jest":"24.3.2","jest":"26.6.3","rollup":"2.44.0","rollup-plugin-babel":"4.4.0","rollup-plugin-commonjs":"10.1.0","rollup-plugin-filesize":"9.1.1","rollup-plugin-node-resolve":"5.2.0","rollup-plugin-terser":"7.0.2","vue":"3.0.11","vue-class-component":"8.0.0-rc.1","vuex":"4.0.0"},"jest":{"roots":["<rootDir>/src"]},"readme":"<h1 align=\"center\" style=\"text-align:center\">Vue-Socket.io-Extended</h1>\n\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/probil/vue-socket.io-extended/tree/alpha\"><img src=\"https://badgen.net/circleci/github/probil/vue-socket.io-extended/alpha\" alt=\"Build Status\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/v/vue-socket.io-extended\" alt=\"Version\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/dt/vue-socket.io-extended\" alt=\"Downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/vue-socket.io-extended\"><img src=\"https://badgen.net/npm/license/vue-socket.io-extended\" alt=\"License\"></a>\n  <a href=\"https://vuejs.org/\"><img src=\"https://badgen.net/badge/Vue/3.x/orange\" alt=\"Vue.js 3.x compatible\"></a>\n  <a href=\"https://raw.githubusercontent.com/probil/vue-socket.io-extended/master/dist/vue-socket.io-ext.min.js\"><img src=\"https://badgen.net/bundlephobia/min/vue-socket.io-extended@alpha\" alt=\"Minified library size\"></a>\n  <a href=\"https://codecov.io/gh/probil/vue-socket.io-extended\"><img src=\"https://badgen.net/codecov/c/github/probil/vue-socket.io-extended/alpha\" alt=\"Code coverage (codecov)\"></a>\n  <a href=\"https://gitter.im/vue-socket-io-extended/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link\"><img src=\"https://badgen.net/badge/chat/on%20gitter/cyan\" alt=\"Join us Gitter\"></a>\n  <a href=\"https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_shield\" alt=\"FOSSA Status\"><img src=\"https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=shield\"/></a>\n</p>\n\n<p align=\"center\">\n  Socket.io bindings for Vue.js 2 and Vuex (inspired by Vue-Socket.io)\n</p>\n\n<p align=\"center\">\n  <a href=\"https://codesandbox.io/s/oxqpm54pnq?fontsize=14&module=%2Fsrc%2FApp.vue\"><img src=\"https://codesandbox.io/static/img/play-codesandbox.svg\" alt=\"Edit Vue Socket IO Extended Twitter feed demo\"/></a>\n</p>\n<p align=\"center\">\n  <a href='https://ko-fi.com/R5R1119O3' target='_blank'><img height='36' style='border:0;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>\n</p>\n\n\n> :warning: [The alpha version of v5](https://github.com/probil/vue-socket.io-extended/tree/alpha) (with Vue 3 support) has been released. Your feedback would be appreciated [here](https://github.com/probil/vue-socket.io-extended/issues/489) \n\n\n## :cherries: Features\n\n- Lightweight and dependency free - only 2kb min gzip\n- Reactive properties `$socket.connected` and `$socket.disconnected`\n- Listening and emitting `socket.io` events inside components\n- Auto-dispatches actions and mutations in multiple namespaced Vuex modules on `socket.io` events\n- Good TypeScript support (decorator and typing)\n- Can be used with any version of `socket.io-client`\n- Custom options - tweak the library to better fit your project needs\n- etc...\n\n## :heavy_check_mark: Browser Support\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) |\n| --- | --- | --- | --- | --- |\n| 49+ :heavy_check_mark: | 18+ :heavy_check_mark:  | 10+ :heavy_check_mark: | 36+ :heavy_check_mark: | 12+ :heavy_check_mark: |\n\nWe support only browsers with global usage statistics greater than 1% and due to current Vue 3 limitation - with native [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) support.\n\n## :seedling: Motivation\n\nI was using [`Vue-Socket.io`](https://github.com/MetinSeylan/Vue-Socket.io) for few months. I've liked the idea, but the more I used it the more I faced with bugs, outdated documentation, lack of support, absence of tests, and a huge amount of issues :disappointed:. That slowed down development of the product I was working on. So I ended up with a decision to create my own fork with all the desirable stuff (features/fixes/tests/support/CI checks etc). That's how `vue-socket.io-extended` was born.\n\nIf you'd like to help - create an issue or PR. I will be glad to see any contribution.  Let's make the world a better place :heart:\n\n## :grey_exclamation: Prerequisites\n\nYou must have a running Socket.IO server before starting any Vue/Socket.IO project! Instructions on how to build a Node/Socket.IO server can be found [here](https://socket.io).\n\n## :grey_exclamation: Software Requirements\n\n- [Vue.js](https://vuejs.org/) `3.X`\n- [Socket.io-client](https://socket.io) `>= 2.X`\n- [Vuex](https://vuex.vuejs.org/) `>= 4.X` (optional)\n\n## :cd: Installation\n\n```bash\nnpm install vue-socket.io-extended@alpha socket.io-client\n```\n\n## :checkered_flag: Initialization\n\n#### ES2015 (Webpack/Rollup/Browserify/Parcel/etc)\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport { createApp } from 'vue';\n\nconst socket = io('http://socketserver.com:1923');\n\nconst app = createApp({});\napp.use(VueSocketIOExt, socket);\n```\n*Note:* you have to pass instance of `socket.io-client` as second argument to prevent library duplication. Read more [here](https://github.com/probil/vue-socket.io-extended/issues/19).\n\n#### UMD (Browser)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vue@next/dist/vue.global.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/socket.io-client/dist/socket.io.slim.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue-socket.io-extended@alpha\"></script>\n<script>\n  var socket = io('http://socketserver.com:1923');\n  var app = Vue.createApp({});\n  app.use(VueSocketIOExt, socket);\n</script>\n```\n\n## :rocket: Usage\n\n#### On Vue.js component\n\nDefine your listeners under `sockets` section, and they will be executed on corresponding `socket.io` events automatically.\n\n```js\ncreateApp({\n  sockets: {\n    connect() {\n      console.log('socket connected')\n    },\n    customEmit(val) {\n      console.log('this method was fired by the socket server. eg: io.emit(\"customEmit\", data)')\n    }\n  },\n  methods: {\n    clickButton(val) {\n      // this.$socket.client is `socket.io-client` instance\n      this.$socket.client.emit('emit_method', val);\n    }\n  }\n})\n```\n\n**Note**: Don't use arrow functions for methods or listeners if you are going to emit `socket.io` events inside. You will end up with using incorrect `this`. More info about this [here](https://github.com/probil/vue-socket.io-extended/issues/61)\n\n#### Dynamic socket event listeners (changed in v4)\n\nCreate a new listener\n```js\nthis.$socket.$subscribe('event_name', payload => {\n  console.log(payload)\n});\n```\nRemove existing listener\n```js\nthis.$socket.$unsubscribe('event_name');\n```\n\n#### Reactive properties (new in v4)\nThe `$socket.connected` and `$socket.diconnected` are reactive. That means you can use them in expressions\n```vue\n<template>\n  <div>\n    <span>{{ $socket.connected ? 'Connected' : 'Disconnected' }}</span>\n  </div>\n</template>\n```\nOr conditions\n```vue\n<template>\n  <span\n    class=\"notification\"\n    v-if=\"$socket.disconnected\"\n  >\n    You are disconnected\n  </span>\n</template>\n```\nOr computed properties, methods and hooks. Treat them as computed properties that are available in all components\n\n## :evergreen_tree: Vuex Store Integration\n\n#### Setup\n\nTo set up Vuex integration just pass the store as the third argument. In a Vue CLI project, you might do this in the `src/main.js` file. Example:\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\nimport store from './store'\n\nconst socket = io('http://socketserver.com:1923');\nconst app = createApp({});\n\napp.use(VueSocketIOExt, socket, { store });\n```\n\n#### Receiving Events\n\nMutations and actions will be dispatched or committed automatically in the Vuex store when a socket event arrives.  A mutation or action must follow the naming convention below to recognize and handle a socket event.\n\n* A **mutation** should start with `SOCKET_` prefix and continue with an uppercase version of the event\n* An **action** should start with `socket_` prefix and continue with camelcase version of the event\n\n| Server Event | Mutation | Action\n| --- | --- | --- |\n| `chat message` | `SOCKET_CHAT MESSAGE` | `socket_chatMessage` |\n| `chat_message` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n| `chatMessage`  | `SOCKET_CHATMESSAGE`  | `socket_chatMessage` |\n| `CHAT_MESSAGE` | `SOCKET_CHAT_MESSAGE` | `socket_chatMessage` |\n\nCheck the [Configuration](#gear-configuration) section if you'd like to use a custom transformation.\n\nCheck the [Migration from VueSocketIO](#information_source-migration-from-vuesocketio) section if you want to keep actions names in UPPER_CASE.\n\n```js\n// In this example we have a socket.io server that sends message ID when it arrives\n// so to get entire body of the message we need to make AJAX call the server\nimport { createStore } from 'vuex';\n\n// `MessagesAPI.downloadMessageById` is an async function (goes to backend through REST Api and fetches all message data)\nimport MessagesAPI from './api/message'\n\nexport default createStore({\n  state: {\n    // we store messages as a dictionary for easier access and interaction\n    // @see https://hackernoon.com/shape-your-redux-store-like-your-database-98faa4754fd5\n    messages: {},\n    messagesOrder: []\n  },\n  mutations: {\n    NEW_MESSAGE(state, message) {\n      state.messages[message.id] = message;\n      state.messagesOrder.push(message.id);\n    }\n  },\n  actions: {\n    socket_userMessage ({ dispatch, commit }, messageId) { // <-- this action is triggered when `user_message` is emmited on the server\n      return MessagesAPI.downloadMessageById(messageId).then((message) => {\n       commit('NEW_MESSAGE', message);\n      })\n    }\n  }\n})\n```\n\n#### Emitting Events\n\nEvents can be sent to the Socket.IO server by calling `this._vm.$socket.client.emit` from a Vuex mutation or action. Mutation or action names are not subject to the same naming requirements as above. More than one argument can be included. [All serializable data structures are supported](https://socket.io/docs/client-api/#socket-emit-eventName-%E2%80%A6args-ack), including Buffer.\n\n```js\n  actions: {\n    emitSocketEvent(data) {\n      this._vm.$socket.client.emit('eventName', data);\n      this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });\n    }\n  }\n```\n\n#### Namespaced Vuex Modules\n\nNamespaced modules are supported out-of-the-box. Any appropriately-named mutation or action should work regardless of whether it's in a module or in the main Vuex store.\n\n```js\nimport { createStore } from 'vuex';\n\nconst messages = {\n  state: {\n    messages: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.messages.push(message);\n    }\n  },\n  actions: {\n    socket_chatMessage() {\n      console.log('this action will be called');\n    }\n  },\n};\n\nconst notifications = {\n  state: {\n    notifications: []\n  },\n  mutations: {\n    SOCKET_CHAT_MESSAGE(state, message) {\n      state.notifications.push({ type: 'message', payload: message });\n    }\n  },\n};\n\nexport default createStore({\n  modules: {\n    messages,\n    notifications,\n  }\n})\n```\nThe above code will:\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `messages` module\n* Commit the `SOCKET_CHAT_MESSAGE` mutation in the `notification` module\n* Dispatch the `socket_chatMessage` action in the `messages` module\n\n## :bamboo: ECMAScript / TypeScript decorator (added in v4)\n\n**Required**: [ECMAScript stage 1 decorators](https://github.com/wycats/javascript-decorators/blob/master/README.md).\nIf you use Babel, [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) is needed.\nIf you use TypeScript, enable `--experimentalDecorators` flag.\n\n> It does not support the stage 2 decorators yet since mainstream transpilers still transpile to the old decorators.\n\nWe provide `@Socket()` decorator for users of [class-style Vue components](https://github.com/vuejs/vue-class-component). By default, `@Socket()` decorator listens the same event as decorated method name, but you can use custom name by passing a string inside decorator e.g. `@Socket('custom_event')`.\n\nCheck the example below:\n\n```vue\n<!-- App.vue -->\n<script>\nimport { Options, Vue } from 'vue-class-component';\nimport Socket from 'vue-socket.io-extended/decorator';\n\n@Options({})\nexport default class App extends Vue {\n  @Socket() // --> listens to the event by method name, e.g. `connect`\n  connect () {\n    console.log('connection established');\n  }\n\n  @Socket('tweet')  // --> listens to the event with given name, e.g. `tweet`\n  onTweet (tweetInfo) {\n    // do something with `tweetInfo`\n  }\n}\n</script>\n```\n\n## :mountain_bicyclist: Usage with Nuxt.js\n\n:warning: [The current version of Nuxt.js (v2) doesn't support Vue 3 just yet](https://github.com/nuxt/nuxt.js/issues/8395). The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended/tree/v4.0.6#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Next 2\n\n## :mountain_bicyclist: Usage with Quasar Framework\n\n:warning: [The current version of Quasar (v1) doesn't support Vue 3 just yet](https://github.com/quasarframework/quasar/issues/7836). Beta version is planned for Jan 2021 though, while the final version is expected to be released in Q1. The section is going to be updated after the initial release. Check [v4](https://github.com/probil/vue-socket.io-extended#mountain_bicyclist-usage-with-quasar-framework) for integration with Vue 2 & Quasar 1\n\n## :gear: Configuration\n\nIn addition to store instance, `vue-socket.io-extended` accepts other options.\nHere they are:\n\n| Option | Type | Default | Description |\n| ---- | ---- | ------- | ------- |\n| `store` | `Object` | `undefined` | Vuex store instance, enables vuex integration |\n| `actionPrefix` | `String` | `'socket_'` | Prepend to event name while converting event to action. Empty string disables prefixing |\n| `mutationPrefix` | `String` | `'SOCKET_'` | Prepend to event name while converting event to mutation. Empty string disables prefixing |\n| `eventToMutationTransformer` | `Function` `string => string` | uppercase function | Determines how event name converted to mutation |\n| `eventToActionTransformer` | `Function` `string => string` | camelcase function | Determines how event name converted to action |\n| eventMapping | `Function` `socket => string` | | Map your event from socket event data \n\n*FYI:* You can always access default plugin options if you need it (e.g. re-use default `eventToActionTransformer` function):\n\n```js\nimport VueSocketIOExt from 'vue-socket.io-extended';\nVueSocketIOExt.defaults // -> { actionPrefix: '...', mutationPrefix: '...', ... }\n```\n\n## :information_source: Migration from VueSocketIO\n\nFor those who has migrated from old VueSocketIO to this package on existing project there is an easy way to migrate without rewriting exiting store modules.\nYou need to redefine 2 parameters so `vue-socket.io-extended` would support the same format of actions as in `vue-socket.io`.\n\n```js\nimport VueSocketIO from 'vue-socket.io-extended';\nimport { io } from 'socket.io-client';\n\nconst ioInstance = io('https://hostname/path');\napp.use(VueSocketIO, ioInstance, {\n  store, // vuex store instance\n  actionPrefix: 'SOCKET_', // keep prefix in uppercase\n  eventToActionTransformer: (actionName) => actionName // cancel camel case\n});\n```\n\n**Note**: Since `vue-socket.io` seems to be active again the instructions might not work as described above. If you are migrating and facing some issues just create an issue with a short description of the problem. I'll try to update instructions, so you can make use of them.\n\n## :question: FAQ\n\n- [How to prevent connection until authed?](https://github.com/probil/vue-socket.io-extended/issues/114#issuecomment-405411500)\n\n- [How to receive/emit event from server to the particular user?](https://github.com/probil/vue-socket.io-extended/issues/71#issuecomment-390820203) (check also [this](https://gitter.im/vue-socket-io-extended/Lobby?at=5bbc9973ef4afc4f2842d0bc))\n\n- [How access this.$socket from Vuex actions?](https://github.com/probil/vue-socket.io-extended/issues/91#issuecomment-397232621)\n\n- [My mutation is triggered two times?](https://github.com/probil/vue-socket.io-extended/issues/185)\n\n- [Mutations and actions are not fired while using Quasar](https://github.com/probil/vue-socket.io-extended/issues/384#issuecomment-517736400)\n\n## :anchor: Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nWe're using [GitHub Releases](https://github.com/probil/vue-socket.io-extended/releases).\n\n## :beers: Contribution\n\nWe're more than happy to see potential contributions, so don't hesitate. If you have any suggestions, ideas or problems feel free to add new [issue](https://github.com/probil/vue-socket.io-extended/issues/new), but first please make sure your question does not repeat previous ones.\n\n## :lock: License\n\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fprobil%2Fvue-socket.io-extended?ref=badge_large)\n","readmeFilename":"README.md","gitHead":"bff1318f9cd1afcf8a2d46e37446ad6fd6c9ecf1","_id":"vue-socket.io-extended@5.0.0-alpha.5","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-G3rZ26vWzLCzlHMklUjwKB+xSQ4Oy1i2tCL5KmFdNn6vwZPVreQ4RyO5f+2MSqjBiq/W1QSv7RsQVpnlk99PBg==","shasum":"ca208a2aa20e56e6699d023b75bbb7b71504cd1f","tarball":"https://registry.npmjs.org/vue-socket.io-extended/-/vue-socket.io-extended-5.0.0-alpha.5.tgz","fileCount":10,"unpackedSize":36794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnnQiCRA9TVsSAnZWagAA2IwP/1FftFiID3Y2wwo/RuAo\nzlE5zlq8njxycCW+PSVxE5FvFxJ+s08CFZgqwXKu5+Q9I6ZbNQwsMNnURvvr\naC7oKrZ5aK3DEEThL+/bvfEgbxqPuemr34BeIVX1E34N4fXGodmljNZ7SS4f\n58a0ihnoSDQaK6RBOWJWBIdi3RflaC4d7PtJ5RJ8ecK713lp7u/821GDgAp6\nP/H/M8kwFMsI/O6F2xkU695VKfICsgQn6EsVt2jibjpMlUFJgcMwYbPuKqKp\nWGNtwfn90dnre8qFam+k2dC73HbEKkmRVpHBm4lTORfA4tXB/bu/xImYu4fs\nveR12XAcqizpKSR+uczexxfCCgPr81zd4yfEdowtbjQt5FWyuqIAE3fYq7jL\nq6jLtnuFr/FGnxdEhhuLH6fEQjPGt8Tt1bCVsLGK7Y0I5kfPYqe5mqgn/LJ7\nLRUpdFgdOAkMFMPKbaeJnQv/ZVkfusXn5LcINUQNuFERq7WG3oEHv5mFhnQO\nxHdCeQnPcY4+y2Mf4h/jrnkRDMEz9aZlFdwKw8ykv6lzjo9quSGyP4AXOdpG\nAl7TcjIHnwniGkO/J87gqsQHQ2nlZuz6s2f5bnzrqeoZzFPq8PNqdOalSEZ+\n/N3YOF7Ox/PYcBDa1AKo8TWLIsNo4ZiaGvxbycz3Rf0usPzCObP/9zrW8rsS\nVE7X\r\n=wazW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFczgUGKest4EMhF6xagM2HVNXJb+Q19IKfg79/TD/ZBAiEAiCo44tzntAVPrXpSEXxPkJcBczkMzDdFX1pIv8PQyYU="}]},"_npmUser":{"name":"probil","email":"m_lyashuk@ukr.net"},"directories":{},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-socket.io-extended_5.0.0-alpha.5_1620997153879_0.5743235684444452"},"_hasShrinkwrap":false}},"time":{"created":"2018-03-29T20:27:41.012Z","1.0.0":"2018-03-29T20:27:41.110Z","modified":"2022-05-23T18:57:54.339Z","1.1.0":"2018-03-30T00:24:43.851Z","1.2.0":"2018-03-31T20:20:11.533Z","1.2.1":"2018-04-02T18:19:31.737Z","2.0.0":"2018-04-05T21:44:35.965Z","2.0.1":"2018-04-24T10:22:12.849Z","2.0.2":"2018-05-02T10:45:30.435Z","2.0.3":"2018-05-16T15:38:11.837Z","3.0.0":"2018-05-26T14:17:35.352Z","3.1.0":"2018-07-24T23:43:57.608Z","3.2.0":"2018-12-02T11:27:44.315Z","3.2.1":"2019-01-22T20:52:13.473Z","3.2.2":"2019-07-11T15:25:24.309Z","4.0.0":"2019-08-18T12:59:47.670Z","4.0.1":"2019-10-20T09:33:50.598Z","4.0.2":"2020-05-11T13:42:31.855Z","4.0.3":"2020-05-18T18:22:24.667Z","4.0.4":"2020-07-25T14:30:17.028Z","4.0.5":"2020-09-29T21:59:10.346Z","4.0.6":"2021-01-12T00:12:17.648Z","5.0.0-alpha.1":"2021-01-17T14:31:27.588Z","5.0.0-alpha.2":"2021-01-17T17:11:44.562Z","5.0.0-alpha.3":"2021-01-18T22:17:59.624Z","4.0.7":"2021-03-12T22:28:59.827Z","4.0.8":"2021-03-22T07:46:09.710Z","4.1.0":"2021-03-24T13:34:00.802Z","5.0.0-alpha.4":"2021-04-02T07:28:50.647Z","4.2.0":"2021-04-25T07:33:05.968Z","5.0.0-alpha.5":"2021-05-14T12:59:14.041Z"},"maintainers":[{"name":"probil","email":"m_lyashuk@ukr.net"}],"description":"Socket.io bindings for Vue.js and Vuex (inspired by Vue-Socket.io)","homepage":"https://github.com/probil/vue-socket.io-extended#readme","keywords":["vuejs","socket","vue","socket.io","websocket","socket.io-client","realtime","flux","vuex","redux","vue-socket.io"],"repository":{"type":"git","url":"git+https://github.com/probil/vue-socket.io-extended.git"},"author":{"name":"Max Lyashuk","email":"m_lyashuk@ukr.net"},"bugs":{"url":"https://github.com/probil/vue-socket.io-extended/issues"},"license":"MIT","readme":"","readmeFilename":""}