{"_id":"@awaw00/rxstore","_rev":"18-21b538d1c36bee0fbd51df81be5da516","name":"@awaw00/rxstore","dist-tags":{"latest":"1.1.8"},"versions":{"1.0.0":{"name":"@awaw00/rxstore","version":"1.0.0","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"583aee279403f35e8c84ab79a7e78d1e0d81cae9","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-J47+5qj/pqavW3V+z3/w62fwetPSEUOQRAtcpWKe6D351U9cmnyZwXUX3AkGHhEgNh4h1qyNrMEYgERuOEJHYg==","shasum":"1fd249d60984f9f4b37cf7a747afd410181723e6","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.0.tgz","fileCount":11,"unpackedSize":28150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblyxSCRA9TVsSAnZWagAAiXIP/iY3R7dJqe9QKCKjgo5u\n9ThdsrEh1Kgua/cTbYK1MGFmbSZ7txE4/KFr6VNxROxDcDT3At7l7YYlmZRq\nPGN23dSkhX2fnIb2oRo/PEFKqRRbb8QJlcwhea1DKf/J9Z3VJ7fqrh++Oc+D\n0GDNOTC4OG13iSBIFtHlDDP+nhiB/y0UiEG3Fvok0gw4XybU4zZd50BAhakF\nVxKW+1v78bFAe7Tt3yL1Cu4X+34pSbYh7g3zlAjOgHQZOYGc7CA86ywrPCqz\nBjfb8YSP+geSbavyzKaijb9mIUO+IvCwnpNCfSO7F8B7HXU5c+FgnH2zMIw6\nJw6fzOCySAuOhf76BIkXlQabLxFqlDTRg6gb8woEdzZnBAO9t/o/5osmPX+4\nw8PbOyJ8XXzgFjZECMhDqXRtmeUJ2Cx3ojolJ+0eK/NKORG3t8xs74kv785t\niTBJVFl/Czf8bsgWiltjMa9N7JWE+qlWW7px/VV1yL0MOMkbdgl3XZAoVxD3\nDWv3XMcdzw04AFRTIfgkOAteck4U5bT3bt2KFJ8NgguUZ6FKTUQkgkUJLuJ9\n5VVp/J1uE09y1yScMn7AtYqqQX7eZ70zYdfJwET1qLRDxiQEOweWVGQviVs+\nf9qjPkW0YpR8v9h3Yx4rSRfCjeva0Nh8msNpRmI4fPuEwQanbJvJ1Tsxtdrt\nJEsj\r\n=DTYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx3/+LIU3CMn12mk+qz8ePKF6xuDVma4KORmXNT9BQnQIge2DxTXUEq/xqJ4SC6Ho4fDnO1J4jNfFseUKTq1/ZO5I="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.0_1536633937427_0.785441218834541"},"_hasShrinkwrap":false},"1.0.1":{"name":"@awaw00/rxstore","version":"1.0.1","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"013b5304740e2cf791720deaa4e5467a8f08fb20","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-fzgvbg1ebxxAetui+/4Cj3pKUfkKCla/TFly9VPq4fUb1f8+bXcjTsrGCDl9iXcfquTY1gg31uKkA9B6ChmnaA==","shasum":"4f7d0cd386b66a0ecd89d2e97c512e3d90246035","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.1.tgz","fileCount":11,"unpackedSize":28678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmOoeCRA9TVsSAnZWagAAVcYP/3WHXI+3HJ2JFCF/hKmt\nCO0WXnIMhWrqRBy6Vi3pQxZwhz1dkT0ZbdR24q3vdPPTFdbJT0nwywYKqFWd\nJZGnSWRRqmSdoW6N8CprgTzzUk1g4H97+MQwwVehScIhk8QEJUpczHeHX3Kp\nWKDa4UC4V+NcHAkNIAf7RcghAe3/mGpYXuYRkmsdb+lWbdum9T9TS7Z8DBJr\nU9Y3l3PS4jBVekD/QivTgxpc/3Y8yxiSUiVn6iMqNHL5pKzHIAFKW9SWHikC\nqH77ziVwxOJOFo82XrVf8PsENtIZO9zQ99tzoHx2aoV4P8q8cVB3nAnIB4ZW\nzdBuiw63TVskIJH85fXgqOgxAYgSqdtLN1pCfbeyLo7QnluwYONiM9suV+aq\nnDhi/hRYR5r3KoeRQzO3h7CzlxNkc/Cgljx/7R7chzlWsgQU9KsgKpYL9ZX7\ndAWjV5VT94a+3gh8BU99hzmTDvWEmEu7YH2jIUh/8NW8R+0SPABEgrCpBv82\nMz6eRsyMdI5ERqYg8wdo0eouII5KVniD8JGePZshUfWPdhqiQobpItRDQsbY\nMwCfNvzKYuwtwmrsk08EL6UaCEc3DHQthaPjK8+UZqs/F8D7vp/1dRueygp4\nH2CTG+XVwZ4o3SwiWUhGTL4Kd1y3z+kgaOyCf8XvDsFipSNowcIg8LU0OeBj\nVuWb\r\n=iMXO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1QbvEiGraGR3w6umrf/gkrH18eUn9cevrqnHaytvExwIgXXCN5voWG8vAWJv2xSllcSRQMVXXfiIvo0tW2ot1IJE="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.1_1536748061953_0.20259975136623276"},"_hasShrinkwrap":false},"1.0.2":{"name":"@awaw00/rxstore","version":"1.0.2","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"eacae8bf7f606a9729913ad76366c2d133f227ff","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-rwJFwfCtdIVbz23gqtgrmHsIzJjz1+wqdE/tWZmP0oo7TQTAz3B0DLZhqCN08SMEH0RVrIIlN47/nANcQgMz1Q==","shasum":"a2fcc5cd0476c3224af1aaaa7dfd6500737d6f6e","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.2.tgz","fileCount":11,"unpackedSize":30169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmOyfCRA9TVsSAnZWagAAF3oQAIRg5lnwZbjvuC/R5COj\nGEoOetegtC3n1sGw2dI9xDpl4dExOwwdvr2AcRoIg+Tw9ebyUqd+QnssPXLz\ngc9HYSHkmBSUDv5up9rrO5GK6tKY3WsYNb9dSvZTlYK5K8reDI9hIBcetES8\n+yZZ/diD17oD79HDCBoGYgWlt0c3T6lb9k+CEjOwJ19KKpPTa5/47rbEG6D+\n1bOysDoIFJb1idoD0EuccA8XhNOlsngkqN4EOLu00LSU4b6xG6sdfza3dfx2\nB6Bkdzc7zTSj0WZl2xgeUgvrW+G162mhTqzeZc8JXNY1ymJC0BWOJfZNqVo+\nQx23Wec8p7uj1Aie9tONHlDYetUllSJ46VA8rWW430hrFqAmeXze0KUadKuh\nTxyKYG7Ib/arYraQZ70HkzMphyk4Jspp3DCxAHwMYaC6oXdJWRuaNt3OpB7S\nz2A50PZbPz4czRhUmo4JmRuGNQMTxhL3epZ+PIM2GeuZ0+/LoLIC0gF8hiBA\n3hqD9VqwENGEyeU50Tz/8SpjT8dbfkdA3+Nw+emOMqNBLvawG2kpUs5ZuKsc\nyIsmDUjykSNdnJ5n6b5+dBbXb6gz3Z0aYUwx6ZkMnDwkgcCAd28VlbdkSOTL\ndqhk4jYqQQvkWqQ9Hzc+K0LVIyXNP7GnncYFwwr6eVJKWqyRyMH/dRI7e3y1\nKD2h\r\n=YI9B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9JSYi+fWVoIX1qjuVle/aUzvO0Kxy0nLfpsQhN2/HgQIhAMMq62XfsuoJN6klQAyrffmKV0ee2qr7W/9J1jPuFqnw"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.2_1536748701858_0.7884986741483146"},"_hasShrinkwrap":false},"1.0.3":{"name":"@awaw00/rxstore","version":"1.0.3","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"412f27c4a396b55dfb61b994e2a89dbd6111f2e1","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-3gdSQd692yioFBSilfgeYXCQ7Q6rng0FoGz6LMJssGdxKnaMBB6jL6pEkWUPRBT8vfHHLvv+R1YZbTYcnvzU/w==","shasum":"f5f0c4b1c550156988871b25912f7acfc34c5090","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.3.tgz","fileCount":11,"unpackedSize":30102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmg9PCRA9TVsSAnZWagAA15kQAJcBmHniIRoGt6Y9yZge\nodY6DvBOQqmLmWv11BxDiTczLuUzkrWWyIJdcEvJqqd1Qz1/fbXPM58GjCMH\n9/cl31ei77DVvtYtB7sTxyhG7H/StzGo8syGIhSYfEhyPgK8MrcJLXlTUsQl\nBJgNMnsT9v9sFe+1Xo53kNi4u28E8ANrSCw4B/Eo4hvUSgJIDO+xF7ckxJko\n3TQOnekdERlFkl65Kq8pVdGg4WsE66SrxWbortjHwfpWm0plM9z630C44F7I\nXXyQC0mrOd5XUftZGg3J+sfOumnTHL56DNF6A4kwO49+wRdee/MRQbjAxf0J\nA/+WM7x5bF0yrrGuByy+raIDaLMuv9mGuc7GhvK5rOLF84O4leq0qD2tWqfv\nxH/jjvD2soD+vqIDhUBMwuz/Y1Tju/1Y5PgExkcTdcN4hxVPbwaphzM4ggvk\nS0KEcf0tQMEM8z8VgZmW9yHF5R4Ug4XuoguMDtQ8bPLk/9qaXBm+v7xXg0Ef\n1+AD5XAHiOyvqvOdy3QF5eBYlMzj02jhfC1l7lShqSggR1tKgCAM7Lo9aSjj\nx63wCCm00sb/tKWqJBPWGZPSj+jBjqrpWVOjACayFmDQxf2Q2lvjvj9Q97+c\nz8wMG2LikDJzZBC/fEN0vi3CzFrVA5IXdSm8n9ySfmsglzzeyQT1jr4VC50m\nY0WQ\r\n=ahrl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO5kGrsAJaMplH/6A/6fhYsMOYNxlF7CmD2CgGR+7NGwIgR+GIpNlNI4bi1arrnSeodzNlEFKxYA1nU3YXltZAN8g="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.3_1536823118890_0.4474195651330386"},"_hasShrinkwrap":false},"1.0.4":{"name":"@awaw00/rxstore","version":"1.0.4","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"c37651125c8e9320736f65132508e716bb8bb6fe","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-plHSAuetCGnPEGxtg3qzwYUXpzn+XZ1bNIhoEz0L0KmKiKBz9DBO7I82uvJ7DiRL28z5LB+ysObxi+2yic0cYw==","shasum":"ca0b81195f8e9b59bf73c56d0f9c0cba392f2013","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.4.tgz","fileCount":11,"unpackedSize":32096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmhLNCRA9TVsSAnZWagAAbtoP/1qv/TCuSCocBxchTZfA\nATIpRTlo0EKutBUyb9k+nEkRXHkKTEZV1ePGrxO6swfF9X0NY1/yXtOmKKE1\nDyB8KxbLTPKe/CrknaePUnxe9AtHfz2KslOGHye2O1eoZ3cJi+P378v2HVwi\n+WQFlTSabrS41HhQSmKf8bCuNGh9iCpWgCOwk+N12ukWpXFHM9XnfHxkV8b1\nAPG4wWNhj8DRlgJ2TJCzAdYO3t3BHgDnsMvrjxcsh4Mnes9AcxB5ygLJCWKv\n/dz965E9qs4x1iY2YxIiDltPfG72YVWC9B2jkdCvIDpguvbcYIVLiUctvnPk\nZ0Y+K3OoWX9RIMR9Dxcd0VETO0rfMgbKQN/N4naEjCmiog1gnWZWzwX2ltdI\nFWd9UHCxhg4K7foBD2oTiJjenTZsd9SJdnimZ8bDRwGKIWI6ADAS6TkAgGy9\nVtZrut38L3qCOWFT8cAA9VwFn3QTW7lzuI10TvKqXpc8HzWHrDASRkQ/hh6D\nAXR8EyCI2VWu0Pegt3gEMRzhu8+THyTKAm8TSXMkYgaGLaWZFFNAD8E2L/mL\nFE29AFaAlvkZzj1uQ1KVuo3qt0YV8pFVz0duPDsQ1pqdsLS4h81EJMtQNFPx\nyw32ipaKpNAPsSPOCkbEccckfKzfZk4c/L4byoqKoAo4J56uyQRRFZeb22yS\ngm72\r\n=Iq91\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDLOQLKbddz1XinDtEvzLKc/NuPhppH/vN3mUohHArngIgegTv/lLPG0PbwkG5J3969q+3aKTE2gDvBmez5mlqmaw="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.4_1536824013101_0.9917531701522593"},"_hasShrinkwrap":false},"1.0.5":{"name":"@awaw00/rxstore","version":"1.0.5","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"32635fdedcfa586720fcab5d0a470b6783037283","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-YW1IgeH9YFn04fRtTUWgEA4RE6UKr/PfAUVwIPARCtZkchzL71Xe7KWl3CLGwWKnTKxPXvIRWN95fxsNBR+Gwg==","shasum":"9acb923bf19335cda08206c652417a5a9a8d8522","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.5.tgz","fileCount":11,"unpackedSize":35851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmha1CRA9TVsSAnZWagAATVgP/2M3zj2V0FDRPuCTyVWc\nN9gKj955hY0pOch5fQPS7G/O5m++T6MnieyvE6wSWDWB1hT+DJ1Htn4Evi7q\nFhW6MbfOxhtthluesDsyGSaZjnlyJWpExo4xMq0MFFKkpjoU9pGxAnHd/15y\nx+OlJW4ni5YEF6kF6rjdt8eU4GRBC6j7gA7ozgVjRuHIvt96iAsxaIethyYD\n5B6XRzKSWSnPvDVEQNLzeMdzf8Zj5NYB6lU5nkULmi7wjQta0lAiasChkImb\n+jPYjfJ6X8Ao1JYMaCYzQ9Qn6PrOTR5Ll0+KauTYVPAIaxvf3nB9rNS4xzN7\nPgbsZnxmFP7mTW1xDrBbOrenFq+cLndI8uVocjSe4OXGeLanJyziGZZxjPLl\nb5GWnVtUDwPTIMeqlmeJOWBD+ztKpp7KpWKq3uuXC6VzZpkkCRJWUIPohcUb\nJv1p7lorPgMgN61/GaXfd24JyB+S4CQ9SeCVYXlaHyTVSaJfv+VQ6EFa8O+F\n7dFbX0zvomri+ms5Jdu/kYZQKkGZwrULZGu1ed7Mu+lZOnE7PH+qeG06axE1\n5Vi4IpwKgTsLrhquZbghW4X33YbDtul30drzIgXttRRbQnGi0Ps8pBfwSzYc\nJ2d/Y8Ns74vShIXb/nBRf4yf6lLmubUgknoa7cXxLjG/0AR2seN9af5VJiRJ\nFOmR\r\n=HwFa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs9yzuRC3WpyQmfQseU8y6iJJYqeHoie8kPpUfZJ2fMwIhANxOjKpKwCAMOES8gAsP3J0q/a002TiLXbAmUQY0ib36"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.5_1536825012386_0.28465662895654864"},"_hasShrinkwrap":false},"1.0.6":{"name":"@awaw00/rxstore","version":"1.0.6","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"482a52391c6a0443df366435d081e12876ebb840","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-4NUIlLt21k/Mnu1PICiyQgLJHBMI826hPtFVmzW2WpuojbsM++ctq2pd+P7zHVH+fC/nOmG9uTPAI0qQs2R8FQ==","shasum":"461b7a9c1e5d359a53a6e3ca3b0e6f3f80f40c62","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.6.tgz","fileCount":30,"unpackedSize":53470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm2ABCRA9TVsSAnZWagAApdoP/2bmBUOCW5epDSd8+WX6\n7wPUMVSSoJFa9QyDSOleH3OCOc7TdiiX2xiPM6oKpRm3/DmPmSwle3HfS0bp\nw7GscXJJznD0HjOBKUKp5Uq5FCPhV8MaH+9aqh5TUp2MaAxuWkJTHcScpWk0\n/cwE4/ExSkN5JQsBNWe0xlF3SqjRc87FiA0Vw8+//SCbNusY/Si2ICp56Leu\nVtvI8SlK/qzWrIAQWbB+P/n5p129mKiGtsUICBah2dHntpsyzBYKetYE2iQH\nSqNz3hAWb5aJKuwpwmq5nIdltBUADRV4eY/I9xk++Bj+DeU1wYykUuweIAOH\nzgGwpcKSUBC8xIivZVsBnnoRiGx6vNrYP/XBuh7TtMUWT8CB6b/iqw+OXmLP\nMG6OTRCBo51F+T71tEDZtAIVg0S1IsR2RUZK7n+HoHdB3oZzs/kCUzcGOEvZ\njbumFn4U3/X79k9nVsCWxl6Mh6yzs7hAN1rOLKR/ekXy3d8NiUyFkjGEH+fb\nI075LxD5OR5CxwEStmvoRf6mM6ob0Y2IR6QcY5NdBlAtSK2LG2d2AVjRg3dE\niDRPtRmZCTgmo7VQwZHPI1jZ5/zBOU3aNwFCKv2AEkh9KjxmLIlkwH0WPUzL\n9Ji9rAigCB7zPgmgL84jBwHSZdCHxL8tdZn+vnsduCusaa2siYR5dLft+F3Q\nLfuQ\r\n=Uc1B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwrrah2EXVwL3jByqBoq4hV2RnHpetiSRI6PCL10o0AQIhAL3GFM8qaatVISYoaqTSaXTFpy76ctBqH1izx7TNs1tS"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.6_1536909312822_0.4913025039336678"},"_hasShrinkwrap":false},"1.0.7":{"name":"@awaw00/rxstore","version":"1.0.7","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"4336c1f89dbacf798adecc6b341b39865719c69e","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-jYQ/3ByUgumJcaUQ49dsuEKqdBBfhbQWtNuI248X0s3T/sJJLf+MzCcBEMOQlDSTbaQD6xFKLKKrzwqkaC7SHg==","shasum":"0066d10036e36e8c0e2c8fbef5e4d93aa265e9cd","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.7.tgz","fileCount":33,"unpackedSize":57807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm2teCRA9TVsSAnZWagAA00EP/1CeJ7xlKkC9f2KLskIp\nInKg+bC9bzXpoQa9lGMcH1jWSoDSDjbxHWSwL3Gl7uurhudSC1+yWegRpIQR\nVGW5jH4JbttrhV5NfBZstU7Batb8Xkn+/jYENEfWLgjPF+vInoQJ6zEdv8wE\nS0yVqzyDXTU3Hstb6VcsB+WUDmLKGWlUPAynmaPLH68yLnasR2odYJ125ULs\n6BweC9i4lvLejbFYVyf0OwrYgIrg7ghyUtQfUmR2fApHfjaPWTTIQ/RrKyjC\n6wXNIxH+scnjKMgH2o7icAyJJsHC+3a8uN/b7thzlCrt93vYeZ/aOLOBNfZN\nwVmk7XF0GC7Ge1l3juQU9ztELm46tMoAr4DFw6MKzOhvADGvzcwVafXmgy4l\nfkMBiMezW3HL65qhxhtZ5nRYn9MqnQO+54lWL9XXH9gU4Nk7SadzWIO8mP78\n1sgYRvj6Xn0VK7/Npd2LzikIq/einX5CQw5Tgj1Emqs3e62Cb5t3ggPCQFxT\n1IJoPPL6i2eK8Hb+EVx/4o3f9QDuL7uZdIW3hC5614drG5aW8IM0BPHe9k2x\n+qu/jOWtzmcvIN60KH20nz99qiySX+9/mm4fJMSjvvIbY3jyfvFJEm2lUex+\nqwKAIaj3Gw+Ih5DJkQEwUVxlTCpgIWGC8pha6JvSfIV7wNcXTm9/JBSmT1jB\nLf1H\r\n=L7Mj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGO9AKhWaz6j6aMQ/Ds3oV4jZpq8RGJ2HRpx1pXEU1gaAiByCiqewRQxjbzIbVljTDypIrb4Tb81x27aMpTveg5XFg=="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.7_1536912221306_0.8778086942622965"},"_hasShrinkwrap":false},"1.0.8":{"name":"@awaw00/rxstore","version":"1.0.8","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"8d082ad228e435f93d60fb8be65994f951a77bd6","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.0.8","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-/u/wsKy0LyMvEcsYVwJ3b50flMrqGO3H7BNl6z6hW5ejovZDQPdI3XvPVnz8sNNgXCl+LmhQYnH7KxaGI8OH4Q==","shasum":"7c1f470cdc9798ac46a546121ec435840bef994f","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.0.8.tgz","fileCount":33,"unpackedSize":58245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm3BUCRA9TVsSAnZWagAAGs8P/0jrNZmL3quVHr0t8yD8\n01SJBNwlik/Qd5jrvZziF3vzheno5gjQOEG+cDjmhYDIFniPA4WiJkWpzDoS\n2FNXtRzeMqraHLz53luuqm8MJ45Bsw6E53HGQqFUjyGekoAuDDcjd7zsPC7P\n3sjWbcFKcUo1+S/uEMuunwhbSOwndUPEPROg7MLY5iBaTmvaTDrnfkhJXbPq\n8A80zBUnHDu69+CCwzmZ9IpfAnQLDzk4Dnn6kSr5LYWgYv/FdrqrHbhXRVi7\nA/7nUWzGpGfn8Ubf/ewXMT9FjWWpOko9ZEbP+C2nVoaDa+ki7Ol8eTK/HQCz\nKt9UGam1OtsnGNh+I28fliVL0t4wecbKLl5xPXvGHah64EbKVA8wfqBDQuqT\n2f85qEQ/MIrxbbSltLK+8v4rmrbBAQzAzTtcaGm6+Ut4H7GM95uF6Ge1IXhf\nZaFGoNq/U/uuv84CrrBcBiz2tmz1s+EhT5xrPmW5A3gocT5NAgO8eWcEAACt\nC9WBtzke7EEmVNIafjoNqIN1rkpMqR25n00st9h5lS/C7tjwU09ke51pQRh2\nqeadJdqNnISjpC/AWyuF4I6Qpqq30e3p0tIRraA8ycMoxtAOIYbwciI9KZ1H\nmWJ1DDnirCcf5zmUMypFRcS7zKA1NVQ2cQTb9C3Q0UFL0oobp7qlYL2vTHa+\noR08\r\n=OF8D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjT9ayjcRSqDRePocXJV9/AxIAu1VSWSwvhliR8W9YKAIhAP+k7uqGIhIPuW6N8SUJGsh2+0ItbAuZZvR1hkXb5gcN"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.0.8_1536913491977_0.579862490261569"},"_hasShrinkwrap":false},"1.1.0":{"name":"@awaw00/rxstore","version":"1.1.0","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"4cd0ae6137b288a1006a577f3433d1d89baf5c3a","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-KDV7eHPM/dw5S/xmIZveHYziqoFWh//0UVk8fdCHjXHmhsDJ0itzt+gBPiOFVNl7wBQBoGS3oD2JLJd+EaK6xw==","shasum":"017844dfbe9a3979da6345fb76e02010e1cfad2c","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.0.tgz","fileCount":32,"unpackedSize":43978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnMSdCRA9TVsSAnZWagAAg+AP/RmguQ9J9LOTyXuacZlV\nGWo9SCdX8WQ7nTPeG+HG1P2JlDQ2sUP3eHYuoI92SScUAa3lfm4rfVPU/CRm\n/RvBOYrQV+WZeEfTapdCJ+PkWDHw6u2+ncKJHwX6/rPFE8kWvkdLmjDPfnL/\nU1LkubTsIgyjRuw/fMqVHgI0nO6kfinv5kqLEdUeL0ztkEoMfqM1HDiWGqfn\nhfCukNQ2oFUvlMWCxEi1IMmeDMKHFoA92eNKz2nXkNY+igG3ZsqYOgHc1lLh\nCI2toBlx+gizLK5/paCjew/TqLS7c/bPkrDMUzBIMOJlmVRGISu6FtcPidXB\nT9nqHz+M8rBQEQjbQyjHNMUdGQg5OqqA0eKU49CUKCVmcbuzSAjQlyQuwMNQ\nwez5t/blDX/Ue/pqgayMs5mE2AVF6R/8pCmM9CHH3BDTY2ESwgFxqQnyJSix\nkY3G9OARmtRKh1AXLbmb/FOgNB/+HnrrLNT5O4if7wCGXIW7llj2hiaxsRZR\nI2OR/+DijH/vcdnJeJJ26LnJGIPFR66Emzzy6bQqN1IyIiK8RGi8d2suqUqE\nIoRXOHQIrIJPPsvc+3vnr8WVeviA5h/kqX/vnfP/4Ddvwz53NXesSM533KvY\nVVmzF1IL3iMwkOGfNcflhhs6RZH8JiuJpOf7q4ZJ1fvJhfx4gtBc0GsUCqfL\ntDIs\r\n=Ki74\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGNbV1tMfyMMgUtu3khadR3pFeJCHV3Y3S6V/ssaHi+AiEA+MAd07o2qp3YIN5BiAP8O8ENo73wsEgFckXth6/hIjk="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.0_1537000604886_0.14357478487134379"},"_hasShrinkwrap":false},"1.1.1":{"name":"@awaw00/rxstore","version":"1.1.1","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"d70a79baac65176e4454ef33b47eb860fea9bde5","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-gu3AtekQQlKgIwdpOt607SHYJSJIVWcOGqV9K2ZX6GgNh4XCJ/duwGMDQrpungNwzj2qh79CQn6GBtThORijgw==","shasum":"99552e1ff60ee1976dea2a9692badc55ec233b55","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.1.tgz","fileCount":50,"unpackedSize":1558938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbozUqCRA9TVsSAnZWagAAqREP/1qy0TC6r6FWhyc0rm43\nlc7F8sl/zk34pnoWjUonWz51KI4pTBXXGkb6+Dn6Zp7nOf/S0LyefrtdmnEC\nlp3PfGOrfR3o1k8Wf1D+eFy65HDp+nfUYMyJ8EnttV7FRruIENDYJdV7yxPe\nF0jjaMHc1SFPcf6evoDc8n6jH/hKZwIvrUqImv+/Lh7G+vVAxoXnn12eXcxQ\nHc7wQ6YaTaGFrlZNwqdWkUGzXj+ly47Xn7kP4hfj1WrZiAZW5wy6hiX3R9ro\n8duMhOH4ACol8ATjknDKmt3YDJOGd47xHuBvLzMqaxDfAPArvvkVT/MUbrR6\nm1ntW8JO4d3vSNh49Wqqi17dWAUKwFrJ+6zQ00BvFOx22+ESTbfstEtQVhgC\nbS02SAi83w3eJWUIbXeKymuUp0nWVVfUf3bzXexsgBBlHp2KZdDxofUW2oMt\n4J1drj3SCO1xqCQm1oZHWZvIsQc4z5NPAJ9AYjOrOOtR4cUDvt64C8/WkAWO\nm3D18PqplID880iLwE7d0tObAe5no2nL8IWuNseoKZ/6cbgSS7fYxNacSW4S\nMIuEY1QPc6txFV0DJKFicPUAKqRGaiSa6MY9b5xJOQuWWatKqeXBJS+k0748\nPRLh8o7xBB/0Wl7E/MDV3yKyHK6RzuqYXxAbMbKJKwwhTfYCOSZ8aB0TxBBi\nJ9//\r\n=mGsK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBW1K5JU9WojMBGZPT0P/lFghzDuh1FODhlhzqU1DTXuAiAHUHesb4lIsq9b1F++ZL5vWfJzR8sWyOjyOGNm6jSlkg=="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.1_1537422633685_0.6364701037663112"},"_hasShrinkwrap":false},"1.1.2":{"name":"@awaw00/rxstore","version":"1.1.2","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"b27b1b45e3b83e1992ed3865c15a0b1e07adfc2b","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-xWptYSDhrhV7hTdYFxtRNRBwh0yTE4Knr1wxMPiHjsgBSfcttm0kQNTLT9rde7ncRCzlvzDsmVEoc1Mzq1632g==","shasum":"6f2f11184a7c054c5adb9557f2382d2e2b6b3a1e","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.2.tgz","fileCount":50,"unpackedSize":1562315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo1KkCRA9TVsSAnZWagAAxmEQAI+PEF4MWAXMrFYaPfVq\n23uVPfpSj6je1DsREjmnEwr3u3THs2LxmYe141/qGjYY8acVvZq/1f57loJq\nVyP0Kjlx2q2KEWXSMqMv8JKBAc4BUJWf0nW/RxwXhAsMu9/SyWGq70jSeRo0\nkYSQVnOSREnzSeUg8i4B0N8LhIdzg7t6tcbV881Yz2IWrpOrXu27H1cpmlMu\nSIc31BV8MMXeb3h3GBazu1Yf/Uhr0x0pbTRAbBYDbPTDD/jpUD3Xwfu2YZqr\nrASCLei0fh7I+dYlkUHgXt50lRBtIilA92VuUIq/QQX8su6uuOhejf2UiDFc\nySDRzsnUcXKnNbD+wVfoi6K85x8X1En9QMb3lt2o/vM3VAiYjehTfJhE1/Zv\n9FbQEd2bP8BKl83jBP4ChrlNVqRRQ3MlQkxpS+UR38g2cSthLv7FJqZlbw7D\ncr3/sujs6jiZs9ez+aqYGcELY50MaHFHPIxLJl0wJDV5u7DnHDAnhQgiBiRp\n9Dn8IZkv7ZO18aK1V9flBxZsfPsBxm7zwlRAOCROSZQ24SPRv7pjU2s+Yckp\nLJerXxWK2z7njeihVlvkD3emngfwCLzoKJ4U2xypik2vAIwdDChfzas5uvhx\nddMDY2QDVwmhJtI6qkEDmP6ZWud/NCcACB3SJ18yfdjEOS+GGnAnYr4htGDw\nfw9+\r\n=OSZz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFivtX8tSK49sODVprhKqKY9/vHTnGxE5tyuKB3vyRn0AiAkHqCsJjWUPQA114fnm50fMkl/vo1S3tDrf0JMBNJO5w=="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.2_1537430179794_0.6760059390357904"},"_hasShrinkwrap":false},"1.1.3":{"name":"@awaw00/rxstore","version":"1.1.3","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"0ea3646c8c593e8178352c3da7e05f9513a3c62e","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-3hpfbsVEEcb79Ah22FR9hMgQIiD4FDVdR8pRJ54zc3+R1h7e5dDKIIChsplKL75USOUh9BARGqni6g9q8KA53Q==","shasum":"4066f9cd275364b2420a5214ae5479ef45ff2bac","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.3.tgz","fileCount":50,"unpackedSize":1562561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpFZNCRA9TVsSAnZWagAADXkP/0VJ5vXcw7ZEcf/QZFRt\npeei2slq4pBciHX0ALe+SfMtZXoKUwHljqwSDOpY0GClkEBG2bbJgItik5Y9\nvBpGn64HECxHGwE+HM4utD4OoYyDWMSCg/0pYuW+Z/2zoiKEohWP15MyfR01\nJDHIwNA9HPIJjj9isXah/hz+XrcqwzC3DnPyFjFlVATobZwp5pRAAj+tR1vQ\nSXPVeASnq/j+qwjO+2Qmt/eR/k/z2VewV/VPbu5MrAPtwedM/gb02snuIQnb\nlCPrKXSq5dlbLTgGi+vpVP5Yh+pFVYz2JPKoUYRWjRvqxsHh29Wzx3DJZaS4\n7bitMVBCHB4IiKelgYmuPBI3JuhojK9tieV/05ntHLto+0DQ384HfLKUgCvJ\nBRDSu1ULHC1OB+VSe84yTyXAiQX24wBYAerRy+nbXFFyRBBDnlGFxBJGJiip\njL2InT5zqaEpKu453XC1/tUJNU3s1tTNEt7Peob+80nsnjSi2uc+ooK59Fz3\n911vt7849vrWnePjudL8DtKZWWvBdpAnwQRvuLmtec0KDvSxppz1kRezS6P/\nIYI0xuhdQYB/NxsmNNlHvXOwuLHmqvFsIvw4rj4rDlq6hiEsnP2N6UzB+774\nzMsNLCVVywvGlq4119fghGBRFdr/18hnyqzJU9kDoZPcTLajXrDEm4ABtMoB\nAtyV\r\n=w8m1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPnYZ8/UbqGtBHjPGCFSwNIWoq29QuP0BMStejjy3NJwIhAOyVnSrr8Wj4Mr49pgox9XdWgCihR79Fx1lHKBUK0xWv"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.3_1537496652889_0.9363079591015104"},"_hasShrinkwrap":false},"1.1.4":{"name":"@awaw00/rxstore","version":"1.1.4","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"8a1e74e0873b3355613904b51ca00b084e4390da","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-VPYo2eO2Vlz6kBn9patQS+SI1FFfQBZ+r37WrqXrCGD4ZxEs5w+uQd7AFwSkU4GdAEx5C4w2wHJvhKQ1y2FQEQ==","shasum":"47917f515da039bd73ce30edc9242859dd40273d","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.4.tgz","fileCount":50,"unpackedSize":1560576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrf6lCRA9TVsSAnZWagAA694P/02M0hw1Uf6bYjcFolz/\np/YWM5n1qjIWMU8jZBvSq9YtcSjP0LbuJRiSFQNglkpmBM+fNwNUNcXpOY8T\n5NVzuuDh7f4TQf4iZNp3ZVVyx2H8k+42DklGs/Qux3bx6KxbwoVfVG+g1rfH\nzma9isWyJOl8jXitd/KUg1BFjTZCD5IohpBNb7jiISrG1x33w/+SUxnOSZsP\nVdq0rOnC1zkFaf1drDDuIYk4FF2YoID6WJMxrF4jhQHY4AIG6K7VaLu9QTAt\n8HA4xdNgmfzqBuyhC3db8Xn2af5FXdcLgNZwCoM6/2bvTXvmilcNGjRvLI7/\n+khr10wn6lQoJ44HqAQK6dUVPCSyutaDw2xQkinIGvRf1gPSL+ZcUY6LTJ4L\nP5rUKxuYyCWg8d3iK4Av0gaxpLCyOIdfE4ZzHiUK7LFoZ2igTXMQIPNGZogB\nsTpG3rdwkOxERxzO3aoDrh+Flm315v0HP/zbx8Ra5CVBrCofK/utFm+s6gmi\nexaob4ZlmBhnRYIvdHlTuE9BiMUyqcX4qX+Yb9U9fyz4SZh0Br0Cwnus0Dtd\ny5nG8IZWpcrYM1wqOXhM4UZrLh34ka91dPjjvTLXWnpiAAojhBMSCSbr5SRI\nSZay4tgkIrhPqCkCDWhDcZnH8xg7SY4dv1v0npvNuysTkQVCEPWJwZLcyyuQ\nTaae\r\n=V9vg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOPtT0+phEIeVP+pv5YB3g/W2UyvZ5vREt8SGni1vLTgIhAL93SzBq8j1+LdgWZ7kBFxr/CsyLweT2DIJDARD+fi9g"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.4_1538129572763_0.43517370581822745"},"_hasShrinkwrap":false},"1.1.5":{"name":"@awaw00/rxstore","version":"1.1.5","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"66edc2ca72f8d532783f0147715619c846dad137","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-GzfLCkLwrWW7w3XfvA9nbTKD0iDH4wgTueBLbnzUru03/rjXHhckLQC76s541ELTz8Yjo1XTJ2MOo2WtYhqddw==","shasum":"1bb0560ac89edd2b988d64243201a2fe974609da","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.5.tgz","fileCount":50,"unpackedSize":1562282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrxyYCRA9TVsSAnZWagAA2+8QAJDsqA3Rirrploi3sHgj\n7rSX/pXQ4Ojg7qk1YNePDAQNkaIKTWvblSaD2uNu7SEjLPV3aBqPS9WHTCug\n8TSJx7DoYoNQRRxLe87FDoa/y4pwBkT0CzHvPJ975ONX4TTV/a6JMA70u4Ic\nIdbr2BRan0G6YjzcycvW2k+NWQ5m7trWVVq3GLI44cZ0Ws8bUQsooDbQHKgg\nU8hpqWxFo6fDUCMhDaxV5fm1aV7oL+kCcO+tGD/ZjjarEcLMrOB8gDii/pYc\neRk8/fyHZMU8b5eFS1bOkkx4GHj5g/7wt1ss4gWOPtXaGVbHG5sDv94DYddo\nriIE4qgjxIdax3PkVOYqUYYKSb5Kv6uo4Soy9NyqGjy6xFehnAjqas9kb4VG\nOZSXZYvv8I1NkHqAda3aTcI5XKnz+9wwFmEyH0GPfI+tK+FPqhtItyHrGH9r\nfAAw4K2a7c9edkHgYigvHeOvRtwICK+e2VBwhWXSuzIuzEjGASZuuVlziXRN\nfN1p9n1nCh5PJEM1Z99boETWKGHvroNYI0I3bxu8YOU/c1ufHYNtrz1jFaNk\nR4/JX5Hx8YesX1Qftleb6t83QFpV01Ed0vZpuM/BO8nvQJ8RASJWrsTiwxTB\ny9aW2C3pOb8EExKuKwkSQk6qTv6oTghquy56jD0V9MoCblig6jQY+tR+uWHz\nzMjy\r\n=yqNG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRpXqvLH7YTgVBoHy/pOUAhaXG//YVJwUWNpUrFgq7uwIhAMN7+5OqehYAR3UiGvs50PAMiG/qhGymr2nsXRNpcpH9"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.5_1538202775872_0.938336696069942"},"_hasShrinkwrap":false},"1.1.6":{"name":"@awaw00/rxstore","version":"1.1.6","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"f517c39f7a0565b86f919aa6b91c9e9e0d902972","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-zCaQtd8G8xqbKkMiT296GC7WaAHmmiNzQcSIsKU1AlvxRrrQ69EWQGCJufvg/2wIM9HtrauE98Jnxdn3TVWztg==","shasum":"3cbcff67babe3cb56071d549f637b3019202f023","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.6.tgz","fileCount":50,"unpackedSize":1562586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrx+NCRA9TVsSAnZWagAAOJ8P/3nTZZ9oDpweLu4FscrB\ngvDqiQQKvQxnGamyqL9vHfpYAaYJryrdx75kiSNVNypN+9W/8shK21CkwpPv\nwQHl4S/qGAe4XpvyI2tp97bQg67CZYTsA1Td3CB3re5MfC0Wg6YAodg6EYD6\nfYbs6z2SFw8L36eMAZ4wnYzB5btjVY/pL5zw9Z5Ry7dSGee9l2gggogGFfUi\nNtJhdcsP5msVRJ/bbbVQutcoLcLiHyFsNBS2s1sU2llO27gqUZBLBqHF2g4O\n8eWeNb62UYTB12kJObKDKcUgpS5iMQZHmsUnHW9lRwwtgpJt8gFbLOIFo4hl\nwxYhCvGFCvn37QQnvewzyNG+S/Q5Y9v+T8v87RD+3ssrVuw02U4tFqBxJ7Ne\nCCITZfG81qE3hz3kDPzwEh60cr90RAirxsO/BPQR/GB/Cd7v2cpQ5MuDwvMI\nsBG9JPvSGk3Tmtn1ifpcDNZdsL316hVQDaru/U1OH4p9ckLRu7ChnjzV2BFC\naWZZaSJErIY2iNmwNbBDSCR4bDqvM8HnYCgIeBmvphZUZSh+RmXPkK35iwPw\nQe84US76BTG22BJP++MNN2vUv+B2dEh4LEW+b2KU6JDSJN78nyyUCve3zHtm\nI3rYw+kDw9r5CoDBnb9MxAyY6hnU67cLrwi1OeVpMyTP94O5HibgdpiNZy3L\n7tvl\r\n=vFcI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWD/RCvXfK73At0tei/ysCKLSR9ShVIXboQgJGq5lYCAiBZzlFLVkLhBHP4bTZiEBm0SOyTadXgttgUFq1fB41Vsw=="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.6_1538203532377_0.4540044281706801"},"_hasShrinkwrap":false},"1.1.7":{"name":"@awaw00/rxstore","version":"1.1.7","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"351264b4e38433c5c4ab1d24cd22979261893c48","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-54aBtMDKNaBjnvNcxGvEoGTSeoBuOTrupCPMArZQw6rTuN8INg5/ESUQCgf7n6PIqBf15HRsVmJBHlcTICRoiw==","shasum":"2ad04b3a84dc4b41a8c86b476b025b35bd4f7b6b","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.7.tgz","fileCount":50,"unpackedSize":1563375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrzqRCRA9TVsSAnZWagAAU+kP+wUngv5NXwY5iyuNr/wE\nSIf+dftMugkaPVABJPRDcS2VMtR3nDU1OiogCbTMlqcKcQ3++jkTWFoF278j\n9QeL9HLFkg/2Lu5ngoPyiX1d6beN/8cx1mQG98lBlW147TuWNHQQWQ0DvrC9\nR+pfkMmhsq8xMCpEuOIqS6pzVUNqp8PuP5uyisxoRkiwHSV+fq2Y8olZcpED\nskFLTLY4jeRNLaxAZf2e+/bzwZmw6vNMKFu89vkRWnA5uOhABZtvgcj7bkDq\nw2zKoFttBNg/qg3GGwLHmtzLk+Kzvaj0VcbnVtVsU6AF8Yjr7FDRTTmec5hi\n8MHChfspBPUSWkyWpOh2I9Z4zAfKpqHDBebegtBBv2iPh5ROyhMXPsj7nfWe\nTwnJwYcJ8H5S+AA/bFuLU7ESaXdrNtPkgQOvUykwNnz+uOy3yVD07qZsePT7\n9nK12jAcCSE+pLG/RxrQ3qF9aA4wXhS4pRgReiWqaGVIzMz9VnQZyvqeZqop\nnnXCa16YtsalrSFhMjI+lGkKzs5o6Q9qllMh6ep+O+V6HtcgDWmzm8SvgXu0\nxa7d5I0mRNmJ3Ww72L1kdwGv/oLQ5HWfKcQdcKFlKP6CjzfIOWKNXQ+tg/je\ncl8JtDYuO+2g1IWCqaPtIx6jxw5nIPceLJMRl41B9xGRIiNzdFEnA9k6FXUX\nbXuv\r\n=dFLg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClGaBSmrirplG0QlSrrntCPo/IxqZCFmyMj2AKqgDBaQIhAILriMDlydOHtRvOunnl4WkmZjAi8QkH61rs0rojy7Xw"}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.7_1538210448933_0.3467633511777135"},"_hasShrinkwrap":false},"1.1.8":{"name":"@awaw00/rxstore","version":"1.1.8","main":"lib/index.js","typings":"lib/index.d.ts","license":"MIT","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"],"scripts":{"clean":"rimraf lib && rimraf es","ts:lib":"tsc --module commonjs --outDir lib","ts:es":"tsc --module esnext --outDir es","build":"npm run clean && npm run ts:lib","test":"cross-env NODE_ENV=test mocha --opts mocha.opts","test:watch":"cross-env NODE_ENV=test mocha --opts mocha.opts --watch","deploy:example":"gh-pages -d examples/_dist"},"peerDependencies":{"inversify":"^4.13.0","reflect-metadata":"^0.1.12","rxjs":"^6.3.2"},"devDependencies":{"@types/chai":"^4.1.4","@types/mocha":"^5.2.5","@types/sinon":"^5.0.2","chai":"^4.1.2","cross-env":"^5.2.0","gh-pages":"^2.0.0","inversify":"^4.13.0","jsdom":"^12.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","mocha-clean":"^1.0.0","object-assign":"^4.1.1","promise":"^8.0.1","raf":"^3.4.0","reflect-metadata":"^0.1.12","rimraf":"^2.6.2","rxjs":"^6.3.2","sinon":"^6.2.0","ts-node":"^7.0.1","tslint-config-prettier":"^1.15.0","typescript":"^3.0.3","whatwg-fetch":"^2.0.4"},"gitHead":"c381864f436998617fe6c081913ea22b85a4a8f7","description":"rxstore\r ----","_id":"@awaw00/rxstore@1.1.8","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"awaw00","email":"wang2124596@foxmail.com"},"dist":{"integrity":"sha512-k8qwSxw3VJpOCl0cl71Lby7J+Zcu/7meZR0ro2SOXLgI3NNqbkk+CiN97ypXxaWBhCDkFypDHHzdZZpfeW6N9g==","shasum":"bb76a56f30013deaf35e5efd19ae1e2ff7890378","tarball":"https://registry.npmjs.org/@awaw00/rxstore/-/rxstore-1.1.8.tgz","fileCount":50,"unpackedSize":1565037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6PWSCRA9TVsSAnZWagAA4F8P/1wROSSINLI1CG4k09ju\n1fIW+v/JsU8sfFp8N+SNzxbskFK9LK3TcbDJCqcQMpEWvpJGjeUlF7eZ4KdW\nSho8vs4qefhyiLppPdxCSPhwVgPgEbWkPWGXMK6RHf/NrsXxylyPA+4al6W7\nksYopAJtb18pCdHyXvDxp8H/w/z4Lbfbvtx6Yzm4AYD8oIjWoiuexWxJve7V\nW17fnLS2GOAYL/UwhW6kcRrrARMZYyysPem0GGaB+FLte8hANErMmJ7Gl5Rd\nr6wkXbFkFbYEVBM5YrE/qZcmAEYRTl1WjD1u/TUAdFrkczOOutAP2IEYblWP\nrzP3Ve+ZHR/cXStyXO8NTMvKrd8Rpp4bPBJM4BUvrdtxPF1HCedv2V2LboKm\n1zHcLBVa6twIj+oRS126DyQQrNEnMatP7P72eSmNoJepHnqmTg86wd6tNwsz\nmjML9HQNDMRREXLkzB7oCI77ZOMf/99nur+si9/H3h393xrqzi056xq0xhZe\nD7RbpHk3KOnY/JNIARBPGG2BBpU1vF89r1xQqxxDmcJnwxA2cfN2NXwXfD09\n4UPYiu2NYuaJpqAGIL22bp1EVwxYSpGSdVeRcVsOB9/nhpr6AW2+QWlh6CeJ\n0n4wHfGnh7U4u8jkv8hq11r800HDJWdyPBODAPi9vYJF0nneTwfBlqueK2qk\n0K8y\r\n=iLTe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXA7hr/O+pYq2oFO/hioWCu0VPpJ+yZNFF+bX1kEXvFwIgI5k/hJOrANQxFUs/Nks0x8TPFXrxaQHAxePUZoDZDJo="}]},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rxstore_1.1.8_1541993873141_0.3972454290751808"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-11T02:45:37.255Z","1.0.0":"2018-09-11T02:45:37.579Z","modified":"2022-04-04T16:49:30.307Z","1.0.1":"2018-09-12T10:27:42.070Z","1.0.2":"2018-09-12T10:38:23.075Z","1.0.3":"2018-09-13T07:18:39.036Z","1.0.4":"2018-09-13T07:33:33.222Z","1.0.5":"2018-09-13T07:50:12.522Z","1.0.6":"2018-09-14T07:15:12.985Z","1.0.7":"2018-09-14T08:03:41.558Z","1.0.8":"2018-09-14T08:24:52.205Z","1.1.0":"2018-09-15T08:36:45.036Z","1.1.1":"2018-09-20T05:50:33.951Z","1.1.2":"2018-09-20T07:56:20.063Z","1.1.3":"2018-09-21T02:24:13.051Z","1.1.4":"2018-09-28T10:12:53.034Z","1.1.5":"2018-09-29T06:32:56.059Z","1.1.6":"2018-09-29T06:45:32.574Z","1.1.7":"2018-09-29T08:40:49.083Z","1.1.8":"2018-11-12T03:37:53.342Z"},"maintainers":[{"name":"awaw00","email":"wang2124596@foxmail.com"}],"description":"rxstore\r ----","author":{"name":"awaw00","email":"awaw0618@outlook.com"},"license":"MIT","readme":"rxstore\r\n----\r\n\r\n[![Build Status](https://travis-ci.org/awaw00/react-inject-props.svg?branch=master)](https://travis-ci.org/awaw00/rxstore)\r\n[![npm version](https://badge.fury.io/js/%40awaw00%2Frxstore.svg)](https://badge.fury.io/js/%40awaw00%2Frxstore)\r\n[![Dependency Status](https://david-dm.org/awaw00/rxstore.svg)](https://david-dm.org/awaw00/rxstore)\r\n\r\nRedux like but reactive and modularized state manage solution.\r\n\r\nRedux风格的响应式模块化状态管理方案。\r\n\r\n## 💾 Installation\r\n\r\n`npm i @awaw00/rxstore rxjs inversify --save`\r\n\r\nor\r\n\r\n`yarn add @awaw00/rxstore rxjs inversify`\r\n\r\nyou should install the \"reflect-metadata\" package as well:\r\n\r\n`npm i reflect-metadata --save` or `yarn add reflect-metadata`\r\n\r\n## 🚀 Features\r\n\r\n- ✅ 模块化store\r\n- ✅ 可控的store作用域，Singleton or Transient\r\n- ✅ 依赖注入\r\n- ✅ 使用rx编写响应式代码\r\n\r\n🎈 其它高级特性请查看下文中的[高级用法](#-advanced-usage)章节以及[最佳实践](#-best-practice)章节。\r\n\r\n## 📋 Table of contents\r\n\r\n- [Quick start](#-quick-start)\r\n  - [准备工作](#准备工作)\r\n  - [定义State接口](#定义state接口)\r\n  - [编写Store类](#编写store类)\r\n  - [绑定Store](#绑定store)\r\n  - [使用Store](#使用store)\r\n  - [Counter demo](#counter-demo)\r\n- [Advanced usage](#-advanced-usage)\r\n  - [Link service](#link-service)\r\n  - [注入RxStore配置](#注入rxstore配置)\r\n  - [Store合并](#store合并)\r\n- [Best practice](#-best-practice)\r\n  - [数据仓库模式](#数据仓库模式)\r\n  - [配合react-inject-props使用](#配合react-inject-props使用)\r\n  \r\n\r\n## 🚩 Quick start\r\n\r\n### 准备工作\r\n\r\n下面将以[TypeScript-React-Starter](https://github.com/Microsoft/TypeScript-React-Starter)为起点，简单说明如何使用rxstore。\r\n\r\nrxstore的store与store之间是相互独立的，但是**各store发出的action会在同一个“管道”（action流）中进行传输**，在定义store之前，我们需要先配置一个action管道。\r\n\r\n在rxstore的底层，各store会通过依赖注入系统注入这个action管道。熟悉inversify的同学应该也了解，我们的项目会包含一个统一处理依赖关系的文件，我们将这个文件定为`src/ioc/index.ts`，然后编写如下代码：\r\n\r\n```typescript\r\nimport { Container } from 'inversify';\r\nimport { Subject } from 'rxjs';\r\nimport { Action, tokens } from '@awaw00/rxstore';\r\n\r\nconst container = new Container();\r\n\r\ncontainer.bind(tokens.ActionStream).toConstantValue(new Subject<Action>());\r\n\r\nexport {\r\n  container\r\n};\r\n```\r\n\r\n上面的代码中，初始化了一个Subject作为action的管道，并使用rxstore暴露出来的tokens将其绑定到了container中。\r\n\r\n### 定义State接口\r\n\r\n新建文件`src/stores/CounterStore.ts`，我们开始进行Store的编写。\r\n\r\n编写store的第一步，就是思考store中需要保存什么结构的状态了，然后将其定义为一个state接口：\r\n\r\n```typescript\r\nexport interface CounterState {\r\n  count: number;\r\n}\r\n```\r\n\r\n### 编写Store类\r\n\r\n有了状态接口之后，就可以着手编写store的实现了。\r\n\r\n首先，定义一个继承于RxStore的类，并将`CounterState`作为泛型参数传入：\r\n\r\n```typescript\r\nimport { RxStore } from '@awaw00/rxstore';\r\n\r\nexport interface CounterState {\r\n  count: number;\r\n}\r\n\r\nexport class CounterStore extends RxStore<CounterState> {\r\n  \r\n}\r\n```\r\n\r\n接着，可以为store定义actionType了。\r\n\r\n使用rxstore提供的`typeDef`和`asyncTypeDef`装饰器，可以方便又优雅地定义actionType：\r\n\r\n```typescript\r\nimport { RxStore, typeDef, asyncTypeDef, ActionType, AsyncActionType } from '@awaw00/rxstore';\r\n\r\n\r\nexport class CounterStore extends RxStore<CounterState> {\r\n  @typeDef() public INCREASE!: ActionType;\r\n  @typeDef() public DOUBLE_INCREASE!: ActionType;\r\n  \r\n  @asyncTypeDef() public DOUBLE_ASYNC!: AsyncActionType;\r\n}\r\n```\r\n\r\n上面定义了3个type：两个ActionType以及一个AsyncActionType。\r\n\r\n在基类RxStore的构造方法中，会对使用了`typeDef`以及`asyncTypeDef`装饰器的字段进行自动赋值，比如`this.INCREASE`会被赋值为`Symbol('INCREASE')`，而`this.DOUBLE_ASYNC`会被赋值为：\r\n\r\n```typescript\r\nINCREASE_ASYNC = {\r\n  START: Symbol('DOUBLE_ASYNC/START'),\r\n  END: Symbol('DOUBLE_ASYNC/END'),\r\n  ERR: Symbol('DOUBLE_ASYNC/ERR'),\r\n}\r\n```\r\n\r\n然后我们需要使用`this.init`方法，设置store的initialState以及reducer：\r\n\r\n```typescript\r\nimport { postConstruct } from 'inversify';\r\n...\r\nexport class CounterStore extends RxStore<CounterState> {\r\n  @postConstruct()\r\n  private storeInit () {\r\n    this.init({\r\n      initialState: {\r\n        count: 0\r\n      },\r\n      reducer: (state, {type, payload}) => {\r\n        switch (type) {\r\n          case this.INCREASE:\r\n            return {...state, count: state.count + payload};\r\n          default:\r\n            return state;\r\n        }\r\n      },\r\n    });\r\n  }\r\n}\r\n```\r\n\r\n> 为什么要使用postConstructor装饰器？  \r\n>\r\n> rxstore使用inversify管理依赖关系，并且在基类RxStore中使用了property inject的方式来注入一些外部依赖（比如action$），在构造方法执行时，inversify并不能为我们准备好这些依赖对象。  \r\n>\r\n> 使用postConstructor可以确保所有依赖都已就绪后再执行store的初始化操作。\r\n\r\n最后，还需要为store定义处理副作用的effects，以及action creators：\r\n\r\n```typescript\r\nimport { effect, ofType } from '@awaw00/rxstore';\r\nimport { withLatestFrom, mapTo, of, switchMap } from 'rxjs/operators';\r\n\r\nexport class CounterStore extends RxStore<CounterState> {\r\n  ...\r\n  public increase = (count: number) => ({\r\n    type: this.INCREASE,\r\n    payload: count,\r\n  });\r\n\r\n  public doubleIncrease = () => ({\r\n    type: this.DOUBLE_INCREASE,\r\n  });\r\n\r\n  public asyncDouble = (after: number) => ({\r\n    type: this.DOUBLE_ASYNC.START,\r\n    payload: {\r\n      after,\r\n    },\r\n  });\r\n\r\n\r\n  @effect()\r\n  private onDoubleIncrease () {\r\n    return this.action$.pipe(\r\n      ofType(this.DOUBLE_INCREASE),\r\n      withLatestFrom(this.state$, (action, state) => state.count),\r\n      map((count: number) => this.increase(count)),\r\n    );\r\n  }\r\n\r\n  @effect()\r\n  private onAsyncDouble () {\r\n    return this.action$.pipe(\r\n      ofType(this.DOUBLE_ASYNC.START),\r\n      switchMap((action) => of(action).pipe(\r\n        delay(action.payload.after),\r\n        mapTo(this.doubleIncrease()),\r\n      )),\r\n    );\r\n  }\r\n}\r\n```\r\n\r\n### 绑定store\r\n\r\n完成store的实现之后，不要忘记在container绑定store：\r\n\r\n`src/ioc/index.ts`\r\n\r\n```typescript\r\nimport { CounterStore } from '../stores/CounterStore';\r\n...\r\ncontainer.bind(CounterStore).toSelf().inSingletonScope();\r\n...\r\n```\r\n\r\n### 使用store\r\n\r\n完成了counter store的编写后，就可以开始获取并使用store了。\r\n\r\n新增Counter组件`src/components/Counter.tsx`，并编写如下代码：\r\n\r\n```typescript\r\niimport React from 'react';\r\n import { CounterState, CounterStore } from '../stores/CounterStore';\r\n \r\n interface Props {\r\n   store: CounterStore;\r\n }\r\n \r\n export class Counter extends React.Component<Props, CounterState> {\r\n   private readonly subscription: { unsubscribe: () => any };\r\n \r\n   constructor (props: Props) {\r\n     super(props);\r\n \r\n     this.subscription = props.store.state$.subscribe(state => {\r\n       if (this.state) {\r\n         this.setState(state);\r\n       } else {\r\n         this.state = state;\r\n       }\r\n     });\r\n   }\r\n \r\n   public componentWillUnmount () {\r\n     // 不要忘记移除监听\r\n     this.subscription.unsubscribe();\r\n   }\r\n \r\n   public increase = () => {\r\n     const {store} = this.props;\r\n     store.dispatch(store.increase(1));\r\n   };\r\n \r\n   public doubleIncrease = () => {\r\n     const {store} = this.props;\r\n     store.dispatch(store.doubleIncrease());\r\n   };\r\n \r\n   public asyncDouble = () => {\r\n     const {store} = this.props;\r\n     store.dispatch(store.asyncDouble(2000));\r\n   };\r\n \r\n   public render () {\r\n     const {count} = this.state;\r\n     return (\r\n       <div>\r\n         <p>Counter: {count}</p>\r\n         <p>\r\n           <button onClick={this.increase}>INCREASE</button>\r\n           <button onClick={this.doubleIncrease}>DOUBLE</button>\r\n           <button onClick={this.asyncDouble}>DOUBLE ASYNC</button>\r\n         </p>\r\n       </div>\r\n     );\r\n   }\r\n }\r\n```\r\n\r\n在`src/App.tsx`中，获取store并传入Counter组件：\r\n\r\n```typescript\r\nimport * as React from 'react';\r\nimport { container } from './ioc';\r\nimport { CounterStore } from './stores/CounterStore';\r\nimport { Counter } from './components/Counter';\r\n\r\nconst store = container.get(CounterStore);\r\n\r\nclass App extends React.Component {\r\n  public render() {\r\n    return (\r\n      <div className=\"App\">\r\n        <Counter store={store}/>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default App;\r\n```\r\n\r\n启动项目，大功告成！\r\n\r\n### Counter demo\r\n\r\n查看[在线DEMO](https://awaw00.github.io/rxstore/counter/)，查看[完整代码](https://github.com/awaw00/rxstore/tree/master/examples/counter)。\r\n\r\n## 💎 Advanced usage\r\n\r\n### Link Service\r\n\r\n开发一个web项目，一定少不了与后端数据接口做交互。\r\n\r\n通常情况下，我们可以编写一个这样的effect来处理接口请求和响应：\r\n\r\n```typescript\r\ninterface State {\r\n  dataState: {\r\n    loading: boolean;\r\n    data: any | null;\r\n    err: any | null;\r\n  };\r\n}\r\n\r\n@injectable()\r\nclass Store extends RxStore<State> {\r\n  @asyncTypeDef() public GET_DATA!: AsyncActionType;\r\n  \r\n  @inject(Service)\r\n  private service: Service;\r\n  \r\n  @postConstruct()\r\n  private storeInit () {\r\n    this.init({\r\n      initialState: {\r\n        dataState: {\r\n          loading: false,\r\n          data: null,\r\n          err: null\r\n        },\r\n      },\r\n      reducer: (state, action) => {\r\n        switch (action.type) {\r\n          case this.GET_DATA.START: {\r\n            return {...state, dataState: {...state.dataState, loading: true}};\r\n          }\r\n          case this.GET_DATA.END: {\r\n            return {...state, dataState: {...state.dataState, loading: false, data: action.payload}};\r\n          }\r\n          case this.GET_DATA.ERR: {\r\n            return {...state, dataState: {...state.dataState, loading: false, err: action.payload}};\r\n          }\r\n          default:\r\n            return state;\r\n        }\r\n      }\r\n    });\r\n  }\r\n  \r\n  @effect()\r\n  private onGetData () {\r\n    return this.action$.pipe(\r\n      ofType(this.GET_DATA.START),\r\n      switchMap((action) => this.service.getData(action.payload).pipe(\r\n        map(res => ({type: this.GET_DATA.END, payload: res})),\r\n        catchError(err => of({type: this.GET_DATA.ERR, payload: err})),\r\n      )),\r\n    );\r\n  }\r\n}\r\n```\r\n\r\n上面的代码看起来还ok，通过`this.GET_DATA.START`的action及其带上的payload作为参数发起请求，并且对接口的loading以及error状态都做了处理。\r\n\r\n但是如果按这样的写法来构建一个中大型的应用，你一定会抓狂的：数十个接口，每个接口都需要这样几乎没有区别的十几行代码来处理。\r\n\r\n为了简化store与接口的对接，基类RxStore提供了一个`linkService`方法，这个方法接受一个`LinkServiceConfig<State>`对象作为参数，其定义为：\r\n\r\n```typescript\r\nexport interface LinkServiceConfig<S> {\r\n  type: AsyncActionType;\r\n  service: (...args: any[]) => Observable<any>;\r\n  state: keyof S;\r\n  dataSelector?: (payload: any) => any;\r\n  errorSelector?: (payload: any) => any;\r\n}\r\n```\r\n\r\n我们试试用它来改写上面的代码：\r\n\r\n```typescript\r\nimport { AsyncState, getInitialAsyncState } from '@awaw00/rxstore';\r\n\r\ninterface State {\r\n  dataState: AsyncState;\r\n}\r\n\r\n@injectable()\r\nclass Store extends RxStore<State> {\r\n  @asyncTypeDef() public GET_DATA!: AsyncActionType;\r\n  \r\n  @inject(Service)\r\n  private service: Service;\r\n  \r\n  @postConstruct()\r\n  private storeInit () {\r\n    this.linkService({\r\n      type: this.GET_DATA,\r\n      service: this.service.getData.bind(this.service),\r\n      state: 'dataState'\r\n    });\r\n    \r\n    this.init({\r\n      initialState: {\r\n        dataState: getInitialAsyncState()\r\n      },\r\n      reducer: (state, action) => {\r\n        return state;\r\n      }\r\n    });\r\n  }\r\n}\r\n```\r\n\r\n新代码实现了与旧代码相同的功能，看起来是否清爽了很多呢？_`getInitialAsyncState`方法用于快速构建一个初始的异步状态对象。_\r\n\r\n**注意`linkService`方法需要在`init`方法之前调用。**\r\n\r\n`LinkStoreConfig`接口中还有两个可选字段：`dataSelector`以及`errorSelector`。\r\n\r\n我们可以使用这两个字段来控制如何从异步方法的返回值或者抛出的错误转换成store中AsyncState.data或AsyncState.err。\r\n\r\n比如有如下的一个FakeService：\r\n\r\n```typescript\r\n@injectable()\r\nexport class FakeService {\r\n  public getData () {\r\n    return of({data: {name: 'awaw00', email: 'awaw0618#outlook.com'}}).pipe(delay(1000));\r\n  }\r\n}\r\n```\r\n\r\n使用不带dataSelector的linkState后，会在store中保存整个结构为{data: {name: string; email: string}}的返回值。\r\n\r\n如果我们只想要保存data字段中的值{name: 'xxx', email: 'xxx'}，就需要指定一个dataSelector：\r\n\r\n```typescript\r\nthis.linkState({\r\n  type: this.GET_DATA,\r\n  service: this.fakeService.getData.bind(this.fakeService),\r\n  state: 'data',\r\n  dataSelector: payload => payload.data\r\n});\r\n```\r\n\r\nerrorSelector的用法与dataSelector类似。\r\n\r\n此外，我们还可以通过[注入RxStore配置](#注入rxstore配置)来修改默认的dataSelector与errorSelector。\r\n\r\n### 注入RxStore配置\r\n\r\nRxStore支持在外部注入一些配置来修改某些默认行为。\r\n\r\n注入配置的方法：\r\n\r\n1. 编写配置\r\n\r\n```typescript\r\nimport { RxStoreConfig } from '@awaw00/rxstore';\r\n\r\nexport class CustomRxStoreConfig implements RxStoreConfig {\r\n  \r\n}\r\n```\r\n\r\n2. 注入自定义配置\r\n\r\n```typescript\r\n...\r\nimport { tokens } from '@awaw00/rxstore';\r\nimport { CustomRxStoreConfig } from '../configs/CustomRxStoreConfig';\r\n\r\n...\r\ncontainer.bind(tokens.RxStoreConfig).to(CustomRxStoreConfig).inSingletonScope();\r\n...\r\n```\r\n\r\n可配置项可见`RxStoreConfig`的接口定义：\r\n```typescript\r\nexport interface BaseConfigLinkService {\r\n  dataSelector?: (payload: any) => any; // 配置linkService时默认的dataSelector\r\n  errorSelector?: (payload: any) => any; // 配置linkService时默认的errorSelector\r\n}\r\n\r\nexport interface RxStoreConfig {\r\n  linkService?: BaseConfigLinkService;\r\n}\r\n```\r\n\r\n### Store合并\r\n\r\n假设现在有两个Store：UserInfoStore、UserPageStore。\r\n\r\n其中，UserInfoStore用于维护当前登录用户的相关信息数据，而UserPageStore用于维护渲染用户中心页面所需的状态。\r\n\r\n通常情况下，UserPageStore中的状态与UserInfoStore中的状态应该会有一个包含关系（比如两者的state都包含一个代表用户昵称的nickName字段），这里可以有两种选择：\r\n\r\n1. 将UserInfoStore中的某些状态“合并”到UserPageStore中，类似vue、mobx中的computed\r\n2. 两个store通过调用service方法获取并维护各自的数据\r\n\r\n显而易见的，**选项1更为优秀**，产出的代码一定会让我们觉得更加赏心悦目。依托rxjs基于流的优秀设计，我们可以很轻易地实现方案1中的状态合并：\r\n\r\n```typescript\r\n// src/stores/UserInfoStore.ts\r\n\r\nexport interface UserInfoState {\r\n  id: string;\r\n  nickName: string;\r\n}\r\n\r\nexport class userStore extends RxStore<UserInfoState> {\r\n  ...\r\n}\r\n```\r\n\r\n```typescript\r\n// src/stores/UserPageStore.ts\r\n\r\nimport { UserInfoStore, UserInfoState } from './UserInfoStore';\r\n\r\nexport interface UserPageState {\r\n  userInfo: UserInfoState;\r\n  // ... other state\r\n}\r\n\r\nexport class UserPageStore extends RxStore<UserPageState> {\r\n  @inject(UserInfoStore)\r\n  private userInfoStore: UserInfoStore;\r\n  \r\n  @postConstruct()\r\n  private storeInit () {\r\n    this.init({\r\n      initialState: {\r\n        userInfo: this.userInfoStore.options.initialState,\r\n        // ...other state\r\n      },\r\n      reducer: (state, action) => {\r\n        // update own state\r\n        return state;\r\n      }\r\n    });\r\n    \r\n    // combine state from UserInfoStore\r\n    this.state$ = combineLatest(\r\n      this.state$,\r\n      this.userInfoStore.state$,\r\n    ).pipe(\r\n      map(([selfState, userInfoState]) => ({\r\n        ...selfState,\r\n        userInfo: userInfoState\r\n      })),\r\n    );\r\n  }\r\n}\r\n```\r\n\r\n合并之后，当UserInfoStore中的状态发生了变更，UserPageStore的状态也会自动更新了。\r\n\r\nstore合并可以让我们实现[数据仓库模式](#数据仓库模式)，使我们的代码更易于维护、数据流更加清晰。\r\n\r\n## ✨ Best practice\r\n\r\n### 数据仓库模式\r\n\r\n这里的“数据”指的是通过rest api、webSocket等方式从服务端获取到的数据。\r\n\r\n我们应用中大部分代码都在于这些数据或衍生数据进行交互，这些代码的质量会在很大程度上影响整个项目的质量。\r\n\r\n这里提出一种数据仓库模式：**所有此类数据，根据功能或类型划分整理为数据store，其他依赖这些数据的store以store合并的方式注入这些数据。**\r\n\r\n比如，要实现一个电商系统，我们先把“商品”相关的接口封装在一个ProductService中：\r\n\r\n```typescript\r\n// src/services/ProductService.ts\r\n\r\nimport { Http } from './Http'\r\n\r\n@injectable()\r\nexport class ProductService {\r\n  @inject(Http)\r\n  private http: Http;\r\n  \r\n  public getProductList (params: GetProductParams) {\r\n    return this.http.get<Pagable<ProductListItem>>('/product/list', {params});\r\n  }\r\n  \r\n  public getProductDetail (params: GetProductDetailParams) {\r\n    return this.http.get<ProductDetail>('/product/detail', {params});\r\n  }\r\n  \r\n  // other api definitions...\r\n}\r\n```\r\n\r\n然后编写一个ProductDataStore，使用linkService来接入商品接口：\r\n\r\n```typescript\r\n// src/stores/ProductDataStore.ts\r\nimport { injectable, inject, postConstructor } from 'inversify';\r\nimport { RxStore, getInitialAsyncState, AsyncState, AsyncActionType, asyncTypeDef } from '@awaw00/rxstore';\r\nimport { ProductService } from '../services/ProductService';\r\n\r\nexport interface ProductDataState {\r\n  productList: AsyncState<Pageable<ProductListItem>>;\r\n  productDetail: AsyncState<ProductDetail>;\r\n  // ...\r\n}\r\n\r\n@injectable()\r\nexport class ProductDataStore extends RxStore<ProductDataState> {\r\n  @asyncTypeDef() public GET_PRODUCT_LIST!: AsyncActionType;\r\n  @asyncTypeDef() public GET_PRODUCT_DETAIL!: AsyncActionType;\r\n  \r\n  @inject(ProductService)\r\n  private productService: ProductService;\r\n  \r\n  @postConstructor()\r\n  private storeInit () {\r\n    this.linkService({\r\n      type: this.GET_PRODUCT_LIST.START,\r\n      service: this.productService.getProductList.bind(this),\r\n      state: 'productList'\r\n    });\r\n    \r\n    this.linkService({\r\n      type: this.GET_PRODUCT_DETAIL.START,\r\n      service: this.productService.getProductDetail.bind(this),\r\n      state: 'productDetail'\r\n    });\r\n    \r\n    // ...\r\n    this.init({\r\n      initialState: {\r\n        productList: getInitialAsyncState(),\r\n        productDetail: getInitialAsyncState(),\r\n      },\r\n      reducer: state => state\r\n    });\r\n  }\r\n}\r\n```\r\n\r\n最后，在其他需要使用商品数据的store中，使用[store合并](#store合并)的方式来注入所需的数据。\r\n\r\n若数据store中的数据是全局唯一的，可以将数据store注册为单例，比如UserDataStore：\r\n\r\n```typescript\r\n// src/ioc/index.ts\r\n...\r\nimport { UserDataStore } from '../stores/UserDataStore';\r\n\r\ncontainer.bind(UserDataStore).toSelf().inSingletonScope();\r\n```\r\n\r\n像商品这样的数据，也许会存在一个页面包含两个或更多个商品列表的场景，每个列表的数据应该是独立的，应该注册为临时性的“瞬态”（Transient）：\r\n\r\n```typescript\r\n...\r\nimport { ProductDataStore } from '../stores/ProductDataStore';\r\n\r\ncontainer.bind(ProductDataStore).toSelf().inTransientScope();\r\n```\r\n\r\n搭配[react-inject-props](https://github.com/awaw00/react-inject-props)，可以更容易地管理依赖注册的作用域，详见[配合react-inject-props](#配合react-inject-props)章节。\r\n\r\n### 配合react-inject-props使用\r\n\r\n想要在react应用中使用rxstore，react-inject-props是最好的搭档。\r\n\r\n使用react-inject-props，可以这样将store注入到组件中：\r\n\r\n```typescript\r\nimport React from 'react';\r\nimport { UserPageStore, UserPageState } from '../stores/UserPageStore';\r\nimport { InjectProps } from '../ioc';\r\n\r\ninterface PageProps {\r\n  store?: UserPageStore;\r\n}\r\n\r\ntype PageState = UserPageState;\r\n\r\n@InjectProps({\r\n  store: UserPageStore\r\n})\r\nexport class UserPage extends React.Component<PageProps, PageState> {\r\n private readonly subscription: { unsubscribe: () => any };\r\n  constructor (props: PageProps) {\r\n    super(props);\r\n    \r\n    this.subscription = props.store!.state$.subscribe(state => {\r\n      if (this.state) {\r\n        this.setState(state);\r\n      } else {\r\n        this.state = state;\r\n      }\r\n    });\r\n  }\r\n  \r\n  public componentWillUnmount () {\r\n    this.subscription.unsubscribe();\r\n  }\r\n  \r\n  public render () {\r\n    const {userInfo, ...} = this.state;\r\n    ...\r\n  }\r\n}\r\n```\r\n\r\n除了提供必要的依赖注入支持之外，它还可以用来实现多级注入系统（使用过Angular的同学应该很熟悉）。\r\n\r\n下面的例子展示了如何使用多级注入系统替换默认的store实现。\r\n\r\n如果我们的App结构如下：\r\n\r\n```jsx harmony\r\n<App>\r\n  <Router>\r\n    <Route path=\"/user/common\" component={UserPage}/>\r\n    <Route\r\n      path=\"/user/special\"\r\n      render={(\r\n        <SpecialUserInfoProvider>\r\n          <UserPage/>\r\n        </SpecialUserInfoProvider>\r\n      )} \r\n    />\r\n  </Router>\r\n</App>\r\n```\r\n\r\nUserPage组件需要注入UserPageStore，而UserPageStore中需要合并UserInfoStore的状态，我们在根container已经注入了默认的UserInfoStore单例。\r\n\r\n现在的需求是，当进入路由为`/user/special`的页面时，其他实现保持原样，但是所展现的用户信息需要从另外的接口中获取，这时候就可以这样实现`SpeciapUserInfoProvider`组件：\r\n\r\n```typescript\r\nimport { ProvideProps } from '../ioc';\r\nimport { UserInfoStore } from '../stores/UserInfoStore';\r\nimport { SpecialUserInfoStore } from '../stores/SpecialUserInfoStore';\r\n\r\n@ProvideProps([\r\n  {provide: UserInfoStore, useClass: SpecialUserInfoStore}\r\n])\r\nexport class SpecialUserInfoProvider extends React.Component {\r\n  public render () {\r\n    return this.props.children;\r\n  }\r\n}\r\n```\r\n\r\n只要确保SpecialUserInfoStore的状态结构以及提供的方法应与UserInfoStore保持一致，那么`/user/special`路由下的UserPage组件就能够正确渲染出来，而不需要在UserPage组件的实现上做任何修改。\r\n\r\n## License\r\n\r\nMIT\r\n\r\n\r\n","readmeFilename":"README.md","keywords":["rxjs","reactive","di","state management","store","redux","rx","dependency inject","react","typescript"]}