{"_id":"sturdy-websocket","_rev":"14-b82d0e0e70a827beffef03e725550959","name":"sturdy-websocket","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.2":{"name":"sturdy-websocket","version":"0.1.2","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^21.1.1","@types/lodash.defaults":"^4.2.3","@types/ws":"^3.0.2","husky":"^0.14.3","jest":"^21.2.1","lint-staged":"^4.2.3","markdown-toc":"^1.2.0","npm-run-all":"^4.1.1","prettier":"^1.7.3","ts-jest":"^21.0.1","tslint":"^5.7.0","typescript":"^2.5.3","websocket":"^1.0.24","ws":"^3.2.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"b98eaf6fc594f2dd833f48fbf7c803da75cda5e4","_id":"sturdy-websocket@0.1.2","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"dphilipson","email":"dphilipson@gmail.com"},"dist":{"integrity":"sha512-vNnocv0J0+gWAn+qGmadhPj/VUKkjBubXCFFLAHdATeqfJkYs5+PKNP/WtEiQy6MJFGhm5fq+Ti2Eyy72pOHhQ==","shasum":"5ea192872221200c8108f65ec03c242bcd895509","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDouCP2Md2qTxl+AEWB3XTxT5lxN3EY9ZpU3ayuJJkiswIgd6Q0EHKacJjaAoyGBzGonzZkKxzwswSv9uV2wIMra1s="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket-0.1.2.tgz_1507065382043_0.3323358641937375"},"directories":{}},"0.1.3":{"name":"sturdy-websocket","version":"0.1.3","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^21.1.1","@types/lodash.defaults":"^4.2.3","@types/ws":"^3.0.2","husky":"^0.14.3","jest":"^21.2.1","lint-staged":"^4.2.3","markdown-toc":"^1.2.0","npm-run-all":"^4.1.1","prettier":"^1.7.3","ts-jest":"^21.0.1","tslint":"^5.7.0","typescript":"^2.5.3","websocket":"^1.0.24","ws":"^3.2.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"903fbce87b37952a575f90be8e4fcc09a683d621","_id":"sturdy-websocket@0.1.3","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-ZoVbGx3Dy5pQJznOUGHvIIEchjSolODbq73vxyYMW4pdSzXjk2jh3It/PzLNBFJ9VHyflDNQqaxJm00zB/8fFA==","shasum":"bba6f90481f0b59fc0026f8656aae0a1d3bb94c5","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrFr/gXUI4ht9aTYtwpKAYkQ41oFNc/OdKPtZDh/wmCQIgaocX4fnn5dpFpJlzsTlo8PWnjVfWS1d835CjDGxrSag="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket-0.1.3.tgz_1507068723948_0.7229083580896258"},"directories":{}},"0.1.4":{"name":"sturdy-websocket","version":"0.1.4","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^21.1.1","@types/lodash.defaults":"^4.2.3","@types/ws":"^3.0.2","husky":"^0.14.3","jest":"^21.2.1","lint-staged":"^4.2.3","markdown-toc":"^1.2.0","npm-run-all":"^4.1.1","prettier":"^1.7.3","ts-jest":"^21.0.1","tslint":"^5.7.0","typescript":"^2.5.3","websocket":"^1.0.24","ws":"^3.2.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"9236fa76c54aaf2a7f5a19a715df4f28d568b563","_id":"sturdy-websocket@0.1.4","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-81QzA/rbLxhiJe3DSEjEH31mPqtldEYO2PhKFOAzULAzR6TwcGZ3vd6QdcbmPMi6lP9WeDKqYATdMzDukUrYmQ==","shasum":"bb092ceb726133fdd95d551d37edf296bef98117","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpBAAuY6k0vpLQ1ukkq9c/V8DEEAynkq7sU7kG/lkHRAiEAgWTl5FgY1wPbOGQ+Vkbg0UZ/36vmLwgGHZvv+qxhXts="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket-0.1.4.tgz_1507072322998_0.7585599590092897"},"directories":{}},"0.1.5":{"name":"sturdy-websocket","version":"0.1.5","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^21.1.1","@types/ws":"^3.0.2","husky":"^0.14.3","jest":"^21.2.1","lint-staged":"^4.2.3","markdown-toc":"^1.2.0","npm-run-all":"^4.1.1","prettier":"^1.7.3","ts-jest":"^21.0.1","tslint":"^5.7.0","typescript":"^2.5.3","websocket":"^1.0.24","ws":"^3.2.0"},"dependencies":{},"gitHead":"187b7d255ab700227ca02159e5dbb8f05c6b8175","_id":"sturdy-websocket@0.1.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-kUWDq/1H3MbOdLZIUNoJJcZIWo7xLsIzJTlu6e5oSLVptTFEz/hjBPRXQ1i6AOs2IOG2u4OZApRx6gDhLmJN7A==","shasum":"bd4a0ee5dd9614866e8bbb8cbefd9b916cb43e60","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC1Q3D6WWqd2lAVx0eO9N3WcSuRRUAC+LO7qsVbPQO4gIgQP1Xn8/cTPBnj2spmIH8JirXeHJSgdYzrLz0rDAfyaU="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket-0.1.5.tgz_1507585298504_0.5810797314625233"},"directories":{}},"0.1.6":{"name":"sturdy-websocket","version":"0.1.6","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^21.1.1","@types/lodash.defaults":"^4.2.3","@types/ws":"^3.0.2","husky":"^0.14.3","jest":"^21.2.1","lint-staged":"^4.2.3","markdown-toc":"^1.2.0","npm-run-all":"^4.1.1","prettier":"^1.7.3","ts-jest":"^21.0.1","tslint":"^5.7.0","typescript":"^2.5.3","websocket":"^1.0.24","ws":"^3.2.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"43314a0bf929d55973dd2d9705c36e1277f2502e","_id":"sturdy-websocket@0.1.6","_npmVersion":"5.4.2","_nodeVersion":"8.7.0","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-b/fSnN6/kYHwwpQMPcBe8PI8S1mFDYTRKirFb8C/yPsyAYOpa69tzbKSvhDLSRvjag9OiFb4GKNXhLiLVPmSmQ==","shasum":"0f42a8774081e72a7d187c0fbad110c19b955d72","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzU4589/Z/+uU9hr/u96ftss1iJkNzQW64FwOzSjaccQIgbf65T19JMm4/mrTRkAhCggD114CjbJ0rTI7Q4rpClDg="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket-0.1.6.tgz_1508883368041_0.32781631126999855"},"directories":{}},"0.1.7":{"name":"sturdy-websocket","version":"0.1.7","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^22.1.2","@types/lodash.defaults":"^4.2.3","@types/ws":"^4.0.1","husky":"^0.14.3","jest":"^22.3.0","lint-staged":"^6.1.0","markdown-toc":"^1.2.0","npm-run-all":"^4.1.2","prettier":"^1.10.2","ts-jest":"^22.0.4","tslint":"^5.9.1","tslint-config-prettier":"^1.7.0","typescript":"^2.7.1","websocket":"^1.0.25","ws":"^4.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"b0cbfff3880eebe2e97843a17928594de9001f8e","_id":"sturdy-websocket@0.1.7","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-hT6lxllzK/8oitunjIG3wfOFfEUq137RLzOrbRTMUGHjdENwOMKfi1+S9d9BOS5UZ9bwrHf7G/MXKTRPN7n9zw==","shasum":"35a59f1f415829824d5334bfd2e47f6b3924d9e1","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.7.tgz","fileCount":6,"unpackedSize":48141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEWkLEbcF+7b+NYGi7qbdvtbarcQibQ86xE3+HvFtkUAIhAIbIrFlyTfJKEXsN679aWzJGrHNUb/mcbv/wsfeoSSYd"}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.7_1518637173068_0.4109449430799632"},"_hasShrinkwrap":false},"0.1.8":{"name":"sturdy-websocket","version":"0.1.8","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^22.1.2","@types/lodash.defaults":"^4.2.3","@types/ws":"^4.0.1","husky":"^0.14.3","jest":"^22.3.0","lint-staged":"^6.1.0","markdown-toc":"^1.2.0","npm-run-all":"^4.1.2","prettier":"^1.10.2","ts-jest":"^22.0.4","tslint":"^5.9.1","tslint-config-prettier":"^1.7.0","typescript":"^2.8.1","websocket":"^1.0.25","ws":"^4.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"2c0c56ba3e532f8f2f3d23e035b4402f8dd90221","_id":"sturdy-websocket@0.1.8","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-B0kTrR73ojR2PhZWJBK75fNS6YIFsZpeYoPG6hnY/FAa224+Jgm/DGeEgKHrJaY8DhmjSC0dPWLFMV3Z82XRRA==","shasum":"a4169e109274d3876bd57365e6c2a03d732481ac","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.8.tgz","fileCount":6,"unpackedSize":47170,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVL71SL2uNW85QKh0XSZIF8A79NCOjU8zglk/aKZ965AIgbSCophd2JzsRZkilnx5QdxbBLO21S6FhDWyWEztHybA="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.8_1522264010154_0.23846473128411683"},"_hasShrinkwrap":false},"0.1.9":{"name":"sturdy-websocket","version":"0.1.9","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","files":["dist/"],"repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest -- --watch","lint":"tslint --project .","precommit":"lint-staged","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"jest":{"transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true},"lint-staged":{"*.{js,json}":["format","git add"],"*.{ts,tsx}":["yarn run lint -- --fix","format","git add"],"*.md":["generate-toc","git add"]},"devDependencies":{"@types/jest":"^22.1.2","@types/lodash.defaults":"^4.2.3","@types/ws":"^6.0.0","husky":"^0.14.3","jest":"^22.3.0","lint-staged":"^6.1.0","markdown-toc":"^1.2.0","npm-run-all":"^4.1.2","prettier":"^1.10.2","ts-jest":"^22.0.4","tslint":"^5.9.1","tslint-config-prettier":"^1.7.0","typescript":"^2.8.1","websocket":"^1.0.26","ws":"^6.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"gitHead":"75fa0bad4dfbd88743aef9359b4e0b65cecdfedd","_id":"sturdy-websocket@0.1.9","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"dist":{"integrity":"sha512-OVFDoEdXocwVhK/LAzDjAA4PnLUKO0edob+e0a1bS4W2Atv9jI9z7GlGhKfSPdX45AAMR/VBGCdghTuUZJkKwQ==","shasum":"b6b9b7144df597036cbf6c10f0ce4b4ccb50f543","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.9.tgz","fileCount":6,"unpackedSize":50821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfK8BCRA9TVsSAnZWagAAKe0P/RwO2UKcqLRbfJagCjal\nHu3cSUcMcjM6BwqRl5w/Zn0TXWCSLW96gC/qJGOraYHC7EVg6rYyZ3oXEA4v\n6WHpO4Vyl3xpP2znb6nK9FkTz1IvpyQef5ae0GYHXT9HuFuvqesn9VGy5Pwm\ngrGoLk/JS87nqArjJf4vQePoRi1qURnzT5XZcm3Qo0deogRhlPxSGraqxr3h\nu6qLrrcUvouRySTdo1NVjS61H142axywGb2rZy4q0xawwA7LsfEYUueZJ6kO\nUv4AH9gBXhMrV0sZjlYyJ1MBADMIGplO6gL/UurTpb7z6cRxNtGiu7laWcB3\nGp62uPZ27WnH527HHLrs2cxwCCaKqcOJIyomgXciAKvxKIwmhuNrC3UOcgzY\nv8scuSwbdd0qWuJdYBGkPHNmRwp3hnkdrbgtb/5iuFW4+Jlg8X6if6pscdqk\nHE6B7rc81cjwjPjiSNAeWAIsJtKUR2SRi23EVQbmogI6DNvi3msCrm4BB3Kx\nUmig4h5lzl32SplNXaAPx4j6giRRQ6MXD+RahbFmNyLyYlSQvXKnxFak2IgR\nznnsHrxZ0d39PIXXrl9wMA/J3SLKAvBtw3Kj1kEBLp8wf2o7dTi0/m+vp62u\nWK1XczDqP5Y14FskcO7JjT/oe3E+Q8+GkTa2U6zT6N2OFf/epfOLk8muOlro\n3Jhf\r\n=LJv5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC57lecHPgEy26mYOeKGzrgdYHg6bqgju/uRHGu4QDwfAIhAOk2l85z6f9QRUEddtLdpa3fU+RbsQw3GdRavsxYHWDf"}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.9_1534897921044_0.8138221983947158"},"_hasShrinkwrap":false},"0.1.10":{"name":"sturdy-websocket","version":"0.1.10","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest --watch","lint":"tslint --project .","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json}":["yarn run format","git add"],"*.{ts,tsx}":["yarn run lint --fix","yarn run format","git add"],"*.md":["yarn run generate-toc","git add"]},"devDependencies":{"@types/jest":"^24.0.14","@types/lodash.defaults":"^4.2.6","@types/ws":"^6.0.1","husky":"^2.4.1","jest":"^24.8.0","lint-staged":"^8.2.1","markdown-toc":"^1.2.0","npm-run-all":"^4.1.5","prettier":"^1.18.2","ts-jest":"^24.0.2","tslint":"^5.17.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.2","websocket":"^1.0.28","ws":"^7.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"licenseText":"MIT License\n\nCopyright (c) 2017 David Philipson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"sturdy-websocket@0.1.10","dist":{"shasum":"83168f495e5bda68c13c613d69f95728ff0893d6","integrity":"sha512-cJ3Q3jKrBK5X4PS6eEiQeY+2JjUCAIRhvZqCl3X6wjk4AmSXhpLLym8vPFsss0MW6o4VxXdcH5Vy0Cglu1MvfQ==","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.10.tgz","fileCount":8,"unpackedSize":50674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBB/+CRA9TVsSAnZWagAARsIP/AiTUz7u1Yrj+LyQXk2C\naOfO4ukLIKG+EZDKkKCXR+rPN7QTiZHH0IrIqLnliz/M4hAe7VbxAwPY0hbB\nJ15RzYohOfCEqXfwokej9gOPmUp/FHkDqj9eqYLDt0O/jhW//g4YHverwgWM\nZM12iZPWvw7wKYW4Ed7ku0d4GCg6CceTx9wfOnf0e/j+Pj5ABIpkZ/MBpQyp\ni02H9xKkrL5FPI31qGK/+7lYJd9xDz5e5wrcwyj+7AyT7hyGjIkCRCAX2nlC\nfjDIafei6sH774yhokLwRe6zcaELWHBCzITMJ1mWo7tW0MmvA3+9j0DuT1kJ\n9RRRqtNcKZsQzvXMb0681I4oDFrEA5HHQEOknG2PeWAR4YPm56uVAU+81fAM\n36Gk5ybV6VdaiOKPfHkalDWafaeaFVoN2+VJeuaI4kr/c3haEIJWsD9Al2sa\nR6xInS3V0AI0HMMJKTis4ickMKcrv0Wm5m0nI9DXYWTjnwja0NJIm7xegNV8\nJLsdUqFmwPUP5+NJsf4Rnb70ZLrS43LKt3h/mf7Z1r8OEKNgJMVEpXerZ33B\noiloWsbuAy3oAGbQh/e1U6k7CT0ma65TV63VWIykBhNQm30Y1UXUd6i+pP6O\nnsT1Qe4HqyLIXfWJEkOWowUF/JzbA8QhlW+Qg9B/3+ZloWqRowtg7cPT0Krm\nryQE\r\n=t3sQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFe2xRyyMeIglTdev3DfDr01EDYSnfZOXsZqnz+FtwbhAiEAyaP1Af/IH4IVS8+3lkTnZqiuk1eooTN/RVuZGOUyDsA="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.10_1560551422189_0.8816236936656927"},"_hasShrinkwrap":false},"0.1.11":{"name":"sturdy-websocket","version":"0.1.11","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest --watch","lint":"tslint --project .","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json}":["yarn run format","git add"],"*.{ts,tsx}":["yarn run lint --fix","yarn run format","git add"],"*.md":["yarn run generate-toc","git add"]},"devDependencies":{"@types/jest":"^24.0.14","@types/lodash.defaults":"^4.2.6","@types/ws":"^6.0.1","husky":"^2.4.1","jest":"^24.8.0","lint-staged":"^8.2.1","markdown-toc":"^1.2.0","npm-run-all":"^4.1.5","prettier":"^1.18.2","ts-jest":"^24.0.2","tslint":"^5.17.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.2","websocket":"^1.0.28","ws":"^7.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"licenseText":"MIT License\n\nCopyright (c) 2017 David Philipson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"sturdy-websocket@0.1.11","dist":{"shasum":"bab7d03fcd463be4cc397ef5047e8f565877585c","integrity":"sha512-/yc9CXZXTXEd5a3H0NUlUtiBQ5/Pe4e2W/O/oxO00Nojgr1pk+iKTk3j40epwTcgSbwbBZtU7yauM3wIYI1LJw==","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.11.tgz","fileCount":8,"unpackedSize":51618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBCnHCRA9TVsSAnZWagAAJVEQAJeVWNdsX+FlL8GbJAfj\n/4w89dmCa1QXWoDT5lSPHjXy91eUGC7XW5HNxXSS659R5nxN7XiODYpz8b3Q\nCZ/036YJUs5c+4dZA3hvGowYVS6WV33CmPwVgQb0/aomKTPy3HwNgu1g8EPe\nhJTzrjfgE4DSdMralcHKtCJn14Sm+67fpIWdOJnCBgNwObsSRfqw+Ipi25+K\nSdmzy7iYICyK/MC7y5iGCC24gpbLsRpxi7TKDwRsqtLYOM7Dg/pviOMcak9m\nK9PzBdOFXHGD4JnMo24JFlm0SLEo6C0tGwfYf0tLo7vxw3VaoaI/v2Y9tgKC\nrc7yx9XGyf0LxiL7+8t3xt+cwuv4r/xBxqectlXc1eBSSYXlAqXUQ771TNTA\nlNbqac0qgZJT2bGCK4x5+WAESGadjRzv6F7fsRpGYOXxpoDXb8Wn2jFpsjpp\niq9k7aPty6S8s8Mw9uhoz8rZV6gjpIXC5AkVP9KZybOgA6aM8mTLfVyMTFUq\niUocKH7LdkDQ5w7o7Z+l+ihJM0Qfv72VwHsxHk3RZbwg0dxBAntkMmmCsIxs\nWZnKkrPKLE3uF/yj170fW13hbxNOZ7ZUBMHonH7TQPbpUFmihp7NcFNQY0Sz\n3FHTIW3tI7Ehc0n99RgYEsbL4XorVGXkTjw7Tttbe48cJj4crd5J2dNK+Oon\nSTMO\r\n=TeWc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+d773+pj9PhFYmkboB3h8wVJenGvvmyaExJhs9BW7WAIhAN1Yso3GSvo6YBARAv3k5WTVsRN3iOHczW552w27dCIZ"}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.11_1560553927334_0.008273437484860091"},"_hasShrinkwrap":false},"0.1.12":{"name":"sturdy-websocket","version":"0.1.12","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest --watch","lint":"tslint --project .","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json}":["yarn run format","git add"],"*.{ts,tsx}":["yarn run lint --fix","yarn run format","git add"],"*.md":["yarn run generate-toc","git add"]},"devDependencies":{"@types/jest":"^24.0.14","@types/lodash.defaults":"^4.2.6","@types/ws":"^6.0.1","husky":"^2.4.1","jest":"^24.8.0","lint-staged":"^8.2.1","markdown-toc":"^1.2.0","npm-run-all":"^4.1.5","prettier":"^1.18.2","ts-jest":"^24.0.2","tslint":"^5.17.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.2","websocket":"^1.0.28","ws":"^7.0.0"},"dependencies":{"lodash.defaults":"^4.2.0"},"licenseText":"MIT License\n\nCopyright (c) 2017 David Philipson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"sturdy-websocket@0.1.12","dist":{"shasum":"84bb779f948b585a695f76961dc7d1c4a5e87629","integrity":"sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew==","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz","fileCount":8,"unpackedSize":52518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdB9ZDCRA9TVsSAnZWagAAwZEP/AsZz9Ahu08iUrQF3aJ6\n5BREwDVKciHjdMC3Ij0EfR4cdMh+0P1AeZ9ZhcW9oo22HsZNnoYCmRQUtfks\nbQOTZ/hTlLIaeXbVII9AbiEr4iWZp8aLGBykgXwc5iCZisunucF8u/iY5hz4\nJ9tE0bMEU58lN7oFfVheHPgiuz/Pfftg+MHEYA4Xv24p2/YGgCkwbXcoaMPt\n+3Eg2lyU6dL0TgOoVrspT1Ee1sZWhbJHrW4UsaCUt+Q2vcCjLiGd4LV2r1dI\nxvY77GQIIzjemapA+Eaf+Ww3teH0+XNopcfxRAFQwP3fbPThwNfEAo9z9kV+\nVeSN3iPIiXG1g/StMbLE7r+semBe+SLcBnWzIzno5WoDEGP2cX1zn61W4W4d\nSlVAxVDs8m2nLnv81Mye9dvWPaKS7msc/0ksgJCoxP6/h6VAiSskqPBPtdxR\nnDSuFgxPPCtQuweoOQn7XD+X0rnyH3v/BUZ5rzsfsiA/0Q93SeZXZswhy6LU\nIcSSRlomqRGnsKNRxs5PJGkOav849tN9voiuYJaqVHTLkybCVC+s+71+dsUQ\nTiMndpKG7AXcaOaX1Rk09haQWvoE3RX6ciedi3Z+/u/BEdJEZKpCdTxrmc5t\n5CR28Q+SZDcmT4VxhSpBPpAndjac5ybfSu3oIT2kSFWxiwEia+2FsDGxZWB0\nj67E\r\n=S4Sy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7Ob6uqSqXTrNkE2OsOU2dy+XZ7oos0kKxvee0UQhW4AiAkX864eirQyrAw8bxYfH5YjVtMQC6Udi6VdE5dHmRkBQ=="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.1.12_1560794690856_0.9077072853572574"},"_hasShrinkwrap":false},"0.2.0":{"name":"sturdy-websocket","version":"0.2.0","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest --watch","lint":"tslint --project .","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json}":["yarn run format","git add"],"*.{ts,tsx}":["yarn run lint --fix","yarn run format","git add"],"*.md":["yarn run generate-toc","git add"]},"devDependencies":{"@types/jest":"^24.0.18","@types/ws":"^6.0.3","husky":"^3.0.5","isomorphic-ws":"^4.0.1","jest":"^24.9.0","lint-staged":"^9.2.5","markdown-toc":"^1.2.0","npm-run-all":"^4.1.5","prettier":"^1.18.2","ts-jest":"^24.0.2","tslint":"^5.19.0","tslint-config-prettier":"^1.18.0","typescript":"^3.6.2","ws":"^7.1.2"},"dependencies":{},"licenseText":"MIT License\n\nCopyright (c) 2017 David Philipson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"sturdy-websocket@0.2.0","dist":{"shasum":"488f0e263214f4f3435b2cc35a71d99429ad14da","integrity":"sha512-xi59EQnjfcE3t9Fi3FuqyG45zatddu4ma11eaBb2bRUGWNfMffe+WG32yjLvtD40UvPMiJMLrL6Laq/ZbiJqzA==","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.0.tgz","fileCount":8,"unpackedSize":58050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddvKKCRA9TVsSAnZWagAAl74QAI+ZYKurMD8aaYBUshJq\nrRtdfrzGWfmzop9UZxqDxXjVCgqaFfyoyIfAfhBQBuyYg0yddCTOupCa1VR9\nS4lBsbCNsXcuwXIW5F/QVG6Jnl3e8vmtMBj0MXAS8h6xbzUGuLr9jaDvzDBe\nQtAJRPOojCSSjbXB5ALk9x0YrW9o6m00AMal2QxyP5SKl7+MO7lUOEUDrH90\n2g8jFnvvXEBfRupfE8raSfO83tOJa4ItsQbkCTQuQNyql0lT05Yn+aeyka+m\nssmQqK4XUZGbhXyblCTpoOvEd6kWyvN3iVV/Wfgbc2oetBsm/2d75z4uNZ9I\n/z+4UJwZxJaKU6ym0wyzI/YHAi+EaibKl8q3QTwNIL1BGHyH4op5FfPa88m/\nZCQmmjDllAMZ2p7z3erSkdz09Ap1uAW+fBEm5woWsAoHbu8lMvy2eBHe0TuE\nUd4KU4QG4LSvZnRtJnA8cKQZ5pt96xERcUuHM6ukQ//a+g1MfLEiJ2g8CmUI\naCMe0Hrn/8OS19ujElJWru88E3fSDCekIynhNoUmbUFPL7LIZDg8+tQsCeNd\nHynKJ2ZDg8RVkTEiVIEOrAIPldU7olVrTCaecpGimhIw0b+s8niK/JkSgO4P\nlK6mkd38d5TuZzWpixtdhRIxo14UGyjbow4J6MvQb3zyXAeqEaWhWpKlreiR\nuN/X\r\n=y5ab\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFxPL56BaDipVzbLmob7ePTE7/iJeUzER7PZWIgv4uUAIgYVESoTvGiW1JLw7QVzXJ/I4KAhtwXQL0caW0xC+GD3o="}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.2.0_1568076425382_0.8086756769650045"},"_hasShrinkwrap":false},"0.2.1":{"name":"sturdy-websocket","version":"0.2.1","description":"Tiny WebSocket wrapper that reconnects and resends failed messages.","main":"dist/index.js","types":"dist/index","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"homepage":"https://github.com/dphilipson/sturdy-websocket","bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"license":"MIT","scripts":{"build":"yarn run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist/*","format":"prettier --write","generate-toc":"markdown-toc -i","jest":"jest","jest-watch":"yarn run jest --watch","lint":"tslint --project .","prepare":"yarn run build","test":"npm-run-all lint typecheck jest","typecheck":"tsc"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json}":["yarn run format","git add"],"*.{ts,tsx}":["yarn run lint --fix","yarn run format","git add"],"*.md":["yarn run generate-toc","git add"]},"devDependencies":{"@types/jest":"^24.0.18","@types/ws":"^6.0.3","husky":"^3.0.5","isomorphic-ws":"^4.0.1","jest":"^24.9.0","lint-staged":"^9.2.5","markdown-toc":"^1.2.0","npm-run-all":"^4.1.5","prettier":"^1.18.2","ts-jest":"^24.0.2","tslint":"^5.19.0","tslint-config-prettier":"^1.18.0","typescript":"^3.6.2","ws":"^7.1.2"},"dependencies":{},"licenseText":"MIT License\n\nCopyright (c) 2017 David Philipson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"sturdy-websocket@0.2.1","dist":{"shasum":"20a58fd53372ef96eaa08f3c61c91a10b07c7c05","integrity":"sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg==","tarball":"https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz","fileCount":8,"unpackedSize":58463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeBBMCRA9TVsSAnZWagAASzQP/iFTDlk7fOJLMvNLa9Tt\njPWyR1l37h76wFfDQCuBwri2ELDdtkWG7PdngETRW2mp531WAfGJyUefazkq\nfIi3362oeUfTnnVaMwyr0wWS8n+WtuFWz/1ekgAK7fh76TdrVMLgnHcXLSOm\nf8aJLOq7zNbSvccU+MoAtWNmtnxbAMNZvCTn0VFdpsVx3d24UjTgLeX7zbOm\n+1M8LxvH/ZGrvgPihOfELiw94R9FtS4cIjf4zbuhBPUcBTsK9uBiQKxUdGH4\nyUus7FRFQvegtf46jLEYIqzDiCf8S2KE7czGzvCNgYc9RnumVYxUQcL751zp\nBnCBSJRPqH8fS3WvkQ694UlKPvUdps87agXVIuYcgqLRedggqxLrA2p7la0R\nPFiK+uxMFdRJzvLxqm+1rcprYBw4mhUF/I4uAr7KX/kqd0CVnsF29Sf5CIvg\nqp2PIJ0D+nEYqKtjHjt6sziB0li9VJloC+OyM9bE9zvMncw53aXaptE/SE3l\njemGpAqOZj0MXT1dDRMK9EWwFCyFqMwF/ozIutkMgh0IaonfTyYxvZ/dHg7Q\nXxlQjCkaHPwWc9LWhqO1Z7UoM9/KNUyMw1wuyEcd+bAtu2OkxzeLPNDqiSY1\ndtJQC2Q/m/MUOQxbFqfQfz5xoQpxaldcTPjpUF/T/yx0WxpLJHO03iCUYkLr\nz5x6\r\n=Yfly\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCe60RpkrdJ+4+xtW+e1J7rwyP9IRmSEIfDOC5RnDoPZgIhAK88+HXHfobRsUBLnni0ene5kZWGQU4WIaokD56yWRek"}]},"maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"_npmUser":{"name":"dphilipson","email":"david.philipson@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sturdy-websocket_0.2.1_1568149579417_0.383953621437503"},"_hasShrinkwrap":false}},"readme":"# Sturdy WebSocket\n\nTiny WebSocket wrapper that reconnects and resends failed messages.\n\n[![Build\nStatus](https://travis-ci.org/dphilipson/sturdy-websocket.svg?branch=master)](https://travis-ci.org/dphilipson/sturdy-websocket)\n\n## Introduction\n\nSturdy WebSocket is a small (< 4kb gzipped) wrapper around a WebSocket that\nreconnects when the WebSocket closes. If `send()` is called while the backing\nWebSocket is closed, then the messages are stored in a buffer and sent once the\nconnection is reestablished.\n\n`SturdyWebSocket` fully implements the WebSocket API as described [by\nMDN](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket), including the\nready state constants, the `EventTarget` interface, and properties that you\nprobably don't care about like `bufferedAmount`. This means that it can be used\nas a drop-in replacement for `WebSocket` with any existing code or other\nlibraries that consume WebSockets. **To the surrounding code, `SturdyWebSocket`\nlooks exactly like a regular `WebSocket` that never goes down, even in the\npresence of network failures.**\n\n## Table of Contents\n\n<!-- toc -->\n\n- [Usage](#usage)\n- [Caveats](#caveats)\n- [Installation](#installation)\n- [Full API](#full-api)\n  * [Options](#options)\n    + [`allClearResetTime`](#allclearresettime)\n    + [`connectTimeout`](#connecttimeout)\n    + [`debug`](#debug)\n    + [`minReconnectDelay`](#minreconnectdelay)\n    + [`maxReconnectDelay`](#maxreconnectdelay)\n    + [`maxReconnectAttempts`](#maxreconnectattempts)\n    + [`reconnectBackoffFactor`](#reconnectbackofffactor)\n    + [`shouldReconnect`](#shouldreconnect)\n    + [`wsConstructor`](#wsconstructor)\n  * [Additional Methods](#additional-methods)\n    + [`reconnect()`](#reconnect)\n  * [Additional Events](#additional-events)\n    + [`down`](#down)\n    + [`reopen`](#reopen)\n\n<!-- tocstop -->\n\n## Usage\n\n```js\nimport SturdyWebSocket from \"sturdy-websocket\";\n\nconst ws = new SturdyWebSocket(\"wss://example.com\");\nws.onopen = () => ws.send(\"Hello!\");\nws.onmessage = event => console.log(\"I got a message that says \" + event.data);\n// Or if you prefer event listeners:\nws.addEventListener(\"message\", event =>\n    console.log(\"I already said this, but the message says \" + event.data));\n\n// Like with normal WebSockets, the protocol can be given as a second argument.\nconst wsWithProtocol = new SturdyWebSocket(\"wss://foo.com\", \"some-protocol\");\n\n// Options can be provided as the final argument.\nconst wsWithOptions = new SturdyWebSocket(\"wss://bar.com\", {\n    connectTimeout: 5000,\n    maxReconnectAttempts: 5\n    reconnectBackoffFactor: 1.3\n});\n```\n\nBecause it is imitating a regular WebSocket, `onclose` will only be called once,\nafter the `SturdyWebSocket` is closed permanently either by using `close()` or\nbecause the `shouldReconnect` option returned false. If you are interested in\nbeing notified when the backing connection is temporarily down, you may listen\nfor the additional events `\"down\"` and `\"reopen\"`:\n\n```js\nconst ws = new SturdyWebSocket(\"wss://example.com\");\nws.ondown = closeEvent => console.log(\"Closed for reason \" + closeEvent.reason);\nws.onreopen = () => console.log(\"We're back up!\");\n// Or with event listeners\nws.addEventListener(\"down\", closeEvent => \"Yea, it's down.\");\n```\n\n## Caveats\n\nWhile Sturdy WebSockets are more reliable than standard WebSockets, there is\nstill an important failure case of which you should be aware. While rare, note\nthat it is possible for the connection to die without the client being aware,\nsuch as if the power cord is pulled on the server. When this happens the Sturdy\nWebSocket will not know to open a new connection as this cannot be detected\nthrough the WebSocket protocol alone (at least without ping messages, which\ncannot be sent from the browser client).\n\nTo avoid this, it is recommended that you manually watch for disconnected\nsockets by periodically sending messages over the socket and checking for a\nresponse (a \"ping/pong\" system). If you detect that the connection has died, you\nshould call the `[reconnect() method](#reconnect) to force a new connection to\nbe created.\n\nFurther, note that any messages sent to the server while the connection is in\nthis undetected dead state will be lost. To guarantee delivery of messages, you\nmust have the server send back a response to acknowledge the message has been\nreceived.\n\n## Installation\n\nWith Yarn:\n\n```\nyarn add sturdy-websocket\n```\n\nWith NPM:\n\n```\nnpm install --save sturdy-websocket\n```\n\n## Full API\n\nAs discussed above, `SturdyWebSocket` starts off by fully implementing the\n[WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket).\nOnly features beyond the standard API are discussed below.\n\n### Options\n\nOptions are passed as an optional final argument to the constructor, for\nexample:\n\n```js\nimport SturdyWebSocket from \"sturdy-websocket\";\n\nconst ws1 = new SturdyWebSocket(\"wss://foo.com\", { maxReconnectAttempts: 5 });\nconst ws2 = new SturdyWebSocket(\"wss://bar.com\", \"some-protocol\", {\n    connectTimeout: 4000,\n    reconnectBackoffFactor: 1.3,\n});\n```\n\nAll options which represent durations are in milliseconds.\n\n#### `allClearResetTime`\n\nDefault: 5000\n\nIf a newly opened WebSocket closes immediately, it is considered to be a failed\nconnection for the purposes of increasing time between attempts and counting\ntowards `maxReconnectAttempts`. This option controls how long a connection must\nremain open to be considered \"successful\" and reset these values.\n\n#### `connectTimeout`\n\nDefault: 5000\n\nWhen attempting to open a new connection, how long to wait before giving up and\nmaking a new connection. Note that it is possible for an attempt to open a\nWebSocket to stall forever, which is why this option is needed.\n\n#### `debug`\n\nDefault: false\n\nIf true, print various debug information to `console.log`, such as notifying\nabout reconnect attempts.\n\n#### `minReconnectDelay`\n\nDefault: 1000\n\nThe minimum positive time between failed reconnect attempts. Note that the first\nreconnect attempt happens immediately on the first failure, so this is actually\nthe delay between the first and second reconnect attempts.\n\n#### `maxReconnectDelay`\n\nDefault: 30000\n\nThe maximum time between failed reconnect attempts. Additional attempts will\nrepeatedly use this as their delay.\n\n#### `maxReconnectAttempts`\n\nDefault: Infinity\n\nIf reconnects fail this many times in a row, then the `SturdyWebSocket` closes\npermanently, providing the `CloseEvent` from the last failed reconnect attempt.\n\n#### `reconnectBackoffFactor`\n\nDefault: 1.5\n\nThe factor by which the time between reconnect attempts increases after each\nfailure.\n\n#### `shouldReconnect`\n\nDefault: `() => true`\n\nA function which returns either a boolean or a promise resolving to a boolean,\nwhich is called when the backing WebSocket closes to determine if a reconnect\nattempt should be made. It is provided the `CloseEvent` as an argument. For\nexample:\n\n```js\nconst ws = new SturdyWebSocket(\"wss://example.com\", {\n    shouldReconnect: closeEvent => closeEvent.reason === \"Harmless error\",\n});\n```\n\nIf this returns false, then the `SturdyWebSocket` is closed and `onclose` is\ncalled with the latest `CloseEvent`. If this returns a promise, then the socket\nwaits for that promise to resolve to a boolean before either attempting to\nreconnect or closing.\n\n#### `wsConstructor`\n\nDefault: `WebSocket`\n\nConstructor used for creating WebSockets internally. Can be used to specify an\nimplementation for the underlying WebSockets other than the default. This may be\nuseful in environments where `WebSocket` is not available as a global variable,\nsuch as Node.js.\n\nIf this option is not provided and there is no variable named `WebSocket` in the\nglobal scope, then the `SturdyWebSocket` constructor will throw.\n\n### Additional Methods\n\n#### `reconnect()`\n\nCloses the backing websocket and opens a new one. This will immediately call the\n[`down` handler](#down) with no event, followed by the [`reopen`\nhandler](#reopen) once the connection is reestablished.\n\nThis is a useful method because the WebSocket protocol alone is not always\nenough to detect a failed connection. If you detect that this has occurred, for\nexample by noticing that your messages sent do not receive a response, then you\nshould manually call `reconnect()` to force a new connection to be created. See\nthe [Caveats](#caveats) section for details.\n\n### Additional Events\n\nThese events, like all the standard WebSocket events, can be observed in two\nways:\n\n```js\nws.onreopen = () => console.log(\"We're back!\");\nws.addEventListener(\"reopen\", () => console.log(\"We're back!\"));\n```\n\n#### `down`\n\nCalled when the backing WebSocket is closed but `SturdyWebSocket` will try to\nreconnect. Recieves the `CloseEvent` of the backing WebSocket. If this was\ntriggered by a call to [`reconnect()`](#reconnect), then the event will be\n`undefined`.\n\n#### `reopen`\n\nCalled when the backing WebSocket is reopened after it closed.\n\nCopyright © 2017 David Philipson\n","maintainers":[{"name":"dphilipson","email":"dphilipson@gmail.com"}],"time":{"modified":"2022-05-18T22:01:58.834Z","created":"2017-10-03T21:16:22.178Z","0.1.2":"2017-10-03T21:16:22.178Z","0.1.3":"2017-10-03T22:12:04.103Z","0.1.4":"2017-10-03T23:12:03.106Z","0.1.5":"2017-10-09T21:41:38.610Z","0.1.6":"2017-10-24T22:16:08.168Z","0.1.7":"2018-02-14T19:39:33.193Z","0.1.8":"2018-03-28T19:06:50.293Z","0.1.9":"2018-08-22T00:32:01.099Z","0.1.10":"2019-06-14T22:30:22.323Z","0.1.11":"2019-06-14T23:12:07.501Z","0.1.12":"2019-06-17T18:04:50.988Z","0.2.0":"2019-09-10T00:47:05.587Z","0.2.1":"2019-09-10T21:06:19.567Z"},"homepage":"https://github.com/dphilipson/sturdy-websocket","repository":{"type":"git","url":"git://github.com/dphilipson/sturdy-websocket.git"},"author":{"name":"David Philipson","email":"david.philipson@gmail.com","url":"http://dphil.me"},"bugs":{"url":"https://github.com/dphilipson/sturdy-websocket/issues","email":"david.philipson@gmail.com"},"license":"MIT","readmeFilename":"README.md"}