{"_id":"redux-symbiote","_rev":"28-e4704104136b4610921593b9f8299269","name":"redux-symbiote","dist-tags":{"latest":"3.4.0"},"versions":{"0.0.0-reserved":{"name":"redux-symbiote","version":"0.0.0-reserved","license":"UNLICENSED","description":"Package reserved","author":{"name":"Reserver","email":"reserver@lestad.net","url":"https://npmjs.com/~lestad"},"_id":"redux-symbiote@0.0.0-reserved","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-JpBXIuibM5SqdvGMqiUcahvHwdEWn1ao7DAIUXuudS3kK74z06YoDLArnXEdjYUOIu2F7eUV5xydGXbgOzsPiw==","shasum":"ee9a395c0e1127ec90d095e57c68a047171e494b","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-0.0.0-reserved.tgz","fileCount":2,"unpackedSize":492,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQr1xLwokym3sRInFxyzH4DOemQM4mYu/O38VrHtuN+AiAo+bgN0Ouw+Uu1Zaq4UbmCfYRJAicRpqGuN0VKcMubRw=="}]},"maintainers":[{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_0.0.0-reserved_1518903897490_0.16198801973523969"},"_hasShrinkwrap":false},"1.0.0":{"name":"redux-symbiote","version":"1.0.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls"},"repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","coveralls":"^3.0.0","eslint":"^4.18.0","nyc":"^11.4.1"},"gitHead":"e9ae38ddb698aa1e6e4c3d28d9cd5abfbe44d41f","_id":"redux-symbiote@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-mA5rXPlHMaphM2g170kbP5mTWp41py7Ec3gXq4LevocQRGMzSuLqbG1RAHuXYDEOleCSUsym34TVNmDo4DUr8g==","shasum":"2131dbd76a2b13e0cd6fc594c264805d31e14958","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-1.0.0.tgz","fileCount":7,"unpackedSize":12770,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDCNDSv7WYP99ED8DgqDGddddW/ETd6/DJ/n4Tz51DPQIhAN2fLPmNfqJ8gP2kvdC4b+1ZVw0PkmFEW7judq+pgY1e"}]},"maintainers":[{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_1.0.0_1518910932832_0.26537831138327617"},"_hasShrinkwrap":false},"1.1.0":{"name":"redux-symbiote","version":"1.1.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls"},"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","coveralls":"^3.0.0","eslint":"^4.18.0","nyc":"^11.4.1"},"gitHead":"6aed038b7615bd6cd39eaa1ad775454cdf7fb34e","_id":"redux-symbiote@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-0AoHNyJZpc+uTnkJx+aQ41BnoZQY3QL5ImwnnFW/p3oKja0cyFhtdn8FeuHeIRPA6htb1JOFq55xchtmANhLnw==","shasum":"0685cbac39dedafd7289e3c424ab69d4d7e788ea","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-1.1.0.tgz","fileCount":7,"unpackedSize":14017,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaaVEAHS5nDBTp0rKg4qA13EeSQuRFwP6h0znsuNYL4AIhAN5TxhVVVfNchxX+ED5YvYB7RFSpKW5YSWvqFqnD4E6g"}]},"maintainers":[{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_1.1.0_1519240631285_0.4142764485547201"},"_hasShrinkwrap":false},"2.0.0":{"name":"redux-symbiote","version":"2.0.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls"},"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","coveralls":"^3.0.0","eslint":"^4.18.1","nyc":"^11.4.1"},"gitHead":"98ec7733d9d93023cf95487df1b9e362e0f47023","_id":"redux-symbiote@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-6egLCS+APE80gXqa2CmrfbX7gMm1vnfQLy2S6taKK5Bmr2jW2yaFKZFNTx1WKFYxfOAn2FnyY4Z3wdog3n2lfA==","shasum":"c8d107b23ad14a149af4fa64eb1831081d605f76","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.0.0.tgz","fileCount":8,"unpackedSize":18484,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFja8l41t49r315TqBW3HzUSpv/CX/AsKZ2Y4nKUhU0gAiAPTZb+ov07G7G8RLZsHmlF+0+hnG70CKD3Tp6Ub0/taQ=="}]},"maintainers":[{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.0.0_1519298612567_0.4058046178138648"},"_hasShrinkwrap":false},"2.0.1":{"name":"redux-symbiote","version":"2.0.1","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls"},"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","coveralls":"^3.0.0","eslint":"^4.18.1","nyc":"^11.4.1"},"gitHead":"c3ebd2e0c88cdf16708f078e1f2ec50c0b21ea81","_id":"redux-symbiote@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-lW5DZ0y8g+FXR3CoGnzeMxs8JFED0AzHmbMS0fkICJ5QUTsg/SLY9+b0yKAIAqLuG97fL49o1SI4PClCM3Dmow==","shasum":"7bc494bb473a25198754bf18d9552716fbd63179","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.0.1.tgz","fileCount":8,"unpackedSize":18445,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRW6j3gtWMwju9Gd0cqGsVjrw9NT+ZmKA8+ypCZdcDKAIhAL/O+p1gtoK9nC/DBPTMFJlEydSExZXBN/sL3KxGDVGj"}]},"maintainers":[{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.0.1_1519299155516_0.20665707899657804"},"_hasShrinkwrap":false},"2.0.2":{"name":"redux-symbiote","version":"2.0.2","description":"Write your actions and reducers without pain","main":"lib/index.js","module":"src/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","eslint":"^4.18.1","nyc":"^11.4.1"},"gitHead":"2c369573ba9327533c646c440610864c32a7da50","_id":"redux-symbiote@2.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-dOpzNFVKdNifbsNonCHgN0bpifcO6ENwUUW94tNcn6uUazx2NvtxZOMcgkcCF2Me5rd5p0DLkpFIQ7HQYzhakQ==","shasum":"4acbb6230a85ea6e19cd13859647e5c2867b9fa2","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.0.2.tgz","fileCount":5,"unpackedSize":11469,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLVIWlK0m8FTV7E3yriDuab2cf7fJ9lXke9UFSULq9YAiBvdkKD+Wnqeq8QH/ZeV8Rxog/IUkBlACc7IC7nHO2BFQ=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.0.2_1522873429247_0.7951264505974205"},"_hasShrinkwrap":false},"2.0.3":{"name":"redux-symbiote","version":"2.0.3","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","eslint":"^4.18.1","nyc":"^11.4.1"},"gitHead":"91d993de5c9a86bf0cbc5fa63c2e6668ed5e7226","_id":"redux-symbiote@2.0.3","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-ril1ZloiiJZvun2sl0+MP9dIUrHcw+i6iqNxoBWr5y6nShtZVbp1BvlfNgnRIlO/+X9HslMozTOWuOaakg0CrQ==","shasum":"52289f98368d33e7290713989115d8d4a2bc1ffc","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.0.3.tgz","fileCount":5,"unpackedSize":11441,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXwCAQZrBL9t76gZ2ELNNAbtnfCddk8TyfUO2pYPYoDQIgBHZ+p3250XKXzQ0UhLTQTSx2XxUVltRxy4ffpcV/mLI="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.0.3_1522873658224_0.10051537078826289"},"_hasShrinkwrap":false},"2.1.0":{"name":"redux-symbiote","version":"2.1.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^0.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.1.1","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","eslint":"^4.18.1","nyc":"^11.4.1"},"gitHead":"221f25c07f2f8afd2965e3ea070006a270a0c662","_id":"redux-symbiote@2.1.0","_npmVersion":"6.1.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-isE/oOXaK7L+OkigzQPGu00r23KTA5pAPO7xuxnHLFzlBZbauUgINW0BHc02QGdPllHZ3sAvHQyk3w3wzi/Caw==","shasum":"09339581a3a2075f921e50d54a572ccec7b07c6e","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.1.0.tgz","fileCount":5,"unpackedSize":12738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKusTCRA9TVsSAnZWagAAhvIP/R95Vb4cbt+2f86WwIgI\n2gMG3EEt8Wk8Kx1ehd4I5Y6mYsqGJ1IVnmZBDLzszLcoieWLhUeswz4iDHwN\nNiZjBarF4Fj30glrJft0PVeHUnpKTuxAHJ7LTz2JY+HSUF4LXdf/4PzlrU2O\nNaWQW0GvRUD0tComo3hMYNQtjc2RuZARA5cdCbvW0UvagipIC1NDLpobpmtU\n5WnHv2LB0i2UHVbxrqjSSeNFKR82z1+wO4B517vYDPmNrf6EKRhcYNyi9Jn8\n3fOcfdnPUsi9GUiJdHqAiyoiDWFRX857OjhNeCTy71oXuxYLS1ALU69UyCqy\nJOlQBKzd+UkApTBulFfAvzQdMFXqqCS6ilXbwFrBAW/WwsioLfj/ZLYP221/\nZJygVWEoJdVjljHNF4J40pflHQkm2iH1WhDCc+G39/DZCpI1dMcLUDd90r4R\nCmH51DHAiX4RCC1bhS7HJ8/Umsdt2UF7jGoclhS57RBQ8gb37PLOrZHZFyV2\nXI6ZbZldYh0KYJglyAm2JcE2MDlbLHYE2JC6LqHkG5R6xTvu9y/2PoelG8Xb\nhlt4npeaJRo5cAVkQBOs+55V18Dlj2O6/DKxyTRXIpiSYHTA5HuSaQxNgNK2\nZsnagwWEJhq4jymO3co6fqhhAauVhMMz2Qt/xLRi2sKjo+n42MzDWOEPTvst\nb/MB\r\n=Wz5t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB6gY+n2sxaBk8fIbK3d62AWYWJ+y9ThiD6pPODT2K1LAiBzqVFeZ66+blBYnMMHanof8X9yuDJdncuGEffrTaUDEA=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.1.0_1529539346244_0.014829031244988133"},"_hasShrinkwrap":false},"2.2.0":{"name":"redux-symbiote","version":"2.2.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^0.2.0"},"devDependencies":{"@atomix/eslint-config":"^6.3.0","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-preset-env":"^1.7.0","coveralls":"^3.0.1","eslint":"^4.19.1","nyc":"^12.0.2"},"gitHead":"519ad3159713358e4b8fbe94203eb69a06e0a30a","_id":"redux-symbiote@2.2.0","_npmVersion":"6.1.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-CC0Yxmf3wx13LALmQGWvbvxjEsBd+lhNPG4DtoCN1kh22a7yMRbAE0HHUIWgnFhBmpUSMlk9yx9TvL/XNXFAuw==","shasum":"d99aea5d56e9a4f7f12eb39fbe916bc3827b3dbb","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.2.0.tgz","fileCount":5,"unpackedSize":12738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKutOCRA9TVsSAnZWagAAhcgP/3nEmSIOTrwwWj+XGp/4\n4BYJcRtMPlzn7n1D721Q3LV/4viHJWeIClj1DvGJv39RelGjZZtyhhYpoivg\nIcQTe0obtnpLl3voFP2zVLBUbCi+vjrKZnNo7pZTAIKduZ76cOdzjTN9Ia6T\nJXwiq4pVAc8r6kUsaZfW8FLocn5pWE1y8aCv+su0g8A0C6MYqlutB+1HETkb\nN27Oat6USpC6shlVLWIupUuUFQP2QFiWXPQuTms9Lyt4ClDzFzQtvvq+JQU+\nAC5FQrlNj8taJhVO6Dlb9YIvAnVEalSH1eJ1N6XmMUGWfJG/nq03vTN1LnMU\na85cNBT5tB6HZy17KvMfp+m0ZzAIWHByOSNu74jf7GPL82PYAYWA6ni4o+vi\nKkwoOVcCej6nOtXXk1WljRDTq0DpKdhP8CdDWvoRNblE1qp8pcWQBtqpMzsp\n8Ynek0owugG0QPE6MMycsBORP5fUpKmalyvIyPpP/4LVnVte4n5/WMDJC/on\n/sb+OcnYMGYyjgMhBqRMmUeLAQOtfj2Cgow5ys5AUDpRIqMuAERHKRk7AVAU\nrsqk5hT7fjfG9nHMWQdGeowPej60EtP4zLgNOrYMUoX5br6dmCLSnmQj570d\nSDC5hVyGiYQlGm7yyRi0Apq2uNqHrlXS2HGlwXuyquFxX6mBSEe2gWICCo1Y\n62L+\r\n=OPzt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC//0emRkPazyexvLdziYSsVBuLDZyctA5q5XQ1EXEM7gIhAJzb36yT274iTM+XwhPdvUlyzHhqsqF36WxCB9OREQAt"}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.2.0_1529539406174_0.41145408527690974"},"_hasShrinkwrap":false},"2.2.1":{"name":"redux-symbiote","version":"2.2.1","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.3.0","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-preset-env":"^1.7.0","coveralls":"^3.0.1","eslint":"^4.19.1","nyc":"^12.0.2"},"gitHead":"c6d9080fa6d3af7ae22f1d818f72d9eeb4ebb7c4","_id":"redux-symbiote@2.2.1","_npmVersion":"6.1.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-Jp+ynjgYD2XtK8reZlpT5uJn05pYw13ObHFV3ksvTrf+APp+dNNpkNVS7/W02YJuYERkpmRWrzMKTTDBZ4KcwA==","shasum":"bc9b50756e8bfd522aca5ccfa7ab74824f6ad794","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.2.1.tgz","fileCount":5,"unpackedSize":12747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKvhmCRA9TVsSAnZWagAARAAP/1MbO1Lhj9ifT8Z8WloY\nb2KXnbTKjhi2VZ7fM91EWeni01l02RPtbTrFv5MTHJuuFLLgTOhFowIropb/\n22nzfRXcEzJVUM1gq0UQsngcEBja1n54BmdCQCd12LTdKPH/HZvWZa5IYbmU\n5bGXf/FuESRi4lDJgj96CuI1P2Jn8a63ynf8sZYaA5aQvmV7WIqQEMhdL4SR\nd63iewQ5KcKTZwF98kPnFJRgEaikS6nTSmHceLTENXxenfAR746hWFHcPvWG\nFApqeha6KyvfHaB33iu2Td9jpMtr86AG5FXm4nl5Xbd9Lz2F8W0Z+tWxDFsy\nbc6D0hfv5QDfVDoOPM6t7sy+0xuZMP5a8qzAtgfyjk/Vx282QdHlNtjRjfI1\nE7y/escUnWOfo99ZsCRQIt2aK9pKOUMQsb52/6p14PwfYDWYw9x+lp1MO+WY\nN5YLeU2zoiT7HX6EYjr1EYl8TB3TkkeUOq/AoMY6djXKajrIen206EanBxbU\nLxiJaG7E6FU223C4YEOzHWEjLRxXCAsirFGtsVhDYHK/md2Lu9K0hAhGAhWM\nN3sZXJu5o4Sh9Sk50aEqFicmjy4br4w9sENpLpoxwNvW2xRlP93nPsOLRM4q\ntH0UxBEYlTNoh0FdBUDPl5JcdfyMUQqckfoN2y+QvpKmHg1jodtvbWBmm6dd\nP+H9\r\n=AUtv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMk8mzJ5OkHvXg+PRx5nUBHXnO4fGSXdXEbfaTrWUX7AIgGtQja/gpSvMXhKL1V8gWlq7SASAbEgNHhYXxNCsaIcE="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.2.1_1529542757652_0.7002495123949408"},"_hasShrinkwrap":false},"2.3.0":{"name":"redux-symbiote","version":"2.3.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"files":["lib","src"],"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.3.0","ava":"^0.25.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-preset-env":"^1.7.0","coveralls":"^3.0.1","eslint":"^4.19.1","nyc":"^12.0.2"},"gitHead":"393b09decf5e3bcfb4f7d94d2833bad9647e029a","_id":"redux-symbiote@2.3.0","_npmVersion":"6.1.0","_nodeVersion":"9.11.1","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-hFtB1JEoeou33x19RelCh60gEuyr/YV+B1CUX0AADatUGUz+oxT+TY86Jw08xAjb4EXOS3VZiUSis0rBuFgXDg==","shasum":"5f93546a21052ec4185c3c01c664cc0656f97135","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.3.0.tgz","fileCount":5,"unpackedSize":14289,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKxHPCRA9TVsSAnZWagAAE6EP/2bk7BIcvc6apkH1bCYE\nB5SVtsVQtL7pbc2BBS0WGMmPu6Znp8VmlFU14aasSN1RHyoVv8txz9K/6vXz\npIoi5H2RkzaNSjGhk2nxbUw1SkpgBL2ZwmjtW4j0x6B696RoUl4pZDXfaaZf\nO1zW267+T9+03sjvvr3s9EiO8Q2ojcfVp+0i0q886kV3Zbx6HBfpkPfImlWz\n8mPSd7+BSru4SsO36wYHDjb3JJo9oi7k+Mcp5WLFXMtOxwospAdLh77eTrni\n9AScXGrYA+zlvX3BH4U46PP0VegjPMtnDQIxazvgbXE+Txv2+cUBd9zWuFAW\n2AFMCZJ7oudwBs1qX0x8zf74qaWYo59OGflX5rFLC46binDJ3b4eMq5rX3gp\nSDKNIHnaNzpOanASzBpaFC/b9aKX0SvnMuLLvkCnQ8Kx/JETof8dsZFEGS8B\nliAo0onGnuR1OT5ijlIRh+NYdwiQwn+ya3t07/kPQZUPo2RaDXwJqDtNJQUV\nfECWE/RUJjt0h722IQgnE1OCxm+5tLOGOhKqZz3Bh5arMQBIqgXoM5d7BdEH\nl4Dp0gmVBNeIuYHPMD9s/HXa2XfZroZvoPLGgvt5vGNDIP3kcR/TxnJ1704H\nGzfUVVRQQgOQXuqeup6Fv9gZsr0CMpjzE0HGqalvKLNwEl5O+ImmpFKHynNO\nf15h\r\n=fBlr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6t0sB0ii9b47Et/MT0LEwAudOweZk43xvNU/llaw15AIgazTnvZXBNcyA4ncWPeJUNuIkAzuninjxMv4zgQNqLbY="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.3.0_1529549262860_0.06830356997032982"},"_hasShrinkwrap":false},"2.4.0":{"name":"redux-symbiote","version":"2.4.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.3.0","@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/preset-env":"^7.0.0","ava":"^0.25.0","coveralls":"^3.0.1","eslint":"^4.19.1","nyc":"^12.0.2"},"gitHead":"062b6d46227f5ba1029f9de6e7ef65c7a03e566c","_id":"redux-symbiote@2.4.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-eZHaRZzR6QOByJ25Qra6yADOSt0URd9paPck7OVGeEVwSp6GydkXjPSsJ1Kg/3/XU6Qt8WO7Vmavvnnq8MuPvw==","shasum":"a39c22dfc68c717192b62f38363fe027017d27b9","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.4.0.tgz","fileCount":6,"unpackedSize":15399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkPfLCRA9TVsSAnZWagAAviQP/2xsKtNRClJGKV/spHmG\nCEa8tCpaKXrTHve7ao/jzM03soXgJpFYwpMEqpDhZf/qPQyekXOB5Y39JVNf\nZkmub/Fho0VvZ5Wcsvmr8Vx8nOwynczMzbWIJQzzPskmcDAeljUx+j/iWXDS\n3HQJK1byPzUYyaOrvV5hc/ay1yQOLTeLJrRNYdKOIXdG6YNReaB8W1DdzflM\nuFxN/7FqSa1A1G/+hlesriEtjaY6miZwRx+dNO0Ki9jLqL8iFLT9u3Z3eNlI\n3EafPwLjzNMb900xXphFsoJHCQCxSf/1dS2wYIcVKfM0tYQJr0Y4W0vpWchz\nGEhM80hi5HEGftxZ+A1nfKKS6sig8AZrKFb78/IQ+EQXUCXUM06+mZcrOi1S\nkMRfNKZICEuWd2leXbxp+n8dASz8tOBoq7dvCEQxzMxcoOAbjlSlC9VQ+qVq\noAstVaQShfWk22o3QH9l/CML5Tmgf93YHhxdIH3yKIXCNMThdAsPWsGd3Ooq\n1Jf+IkgujbNQMqV932Fu2xQr2WTYkAFsL80tse6JvTgPvfSM+fmtTS1W/VCG\nlxuWdZnbabrBMUbC/EMaLmkVZUkhYTaaj7lkVBJBgJSlUy7C4tFZot/T1pSv\nzGBBUgCfPbi4QWoI58HKs02fmvz1LgESeGOLkEwP0Afu6UGvoy+YLfm/iqB5\nwwUx\r\n=jdF7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIED+0GMsxH69brhRxZ0A7OCwMrg86KflL2Fu+/3PXb90AiAFvwvsOae4cjpgemX/RPaAmllm1cAjkQc6AvzP1/Qvng=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.4.0_1536227275176_0.24736597303415886"},"_hasShrinkwrap":false},"2.5.0":{"name":"redux-symbiote","version":"2.5.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava && npm run types","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"gitHead":"860142b23c5f2b6bd4eadd8c475d96a81080995c","_id":"redux-symbiote@2.5.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-qhzcJUoL8uW5zHkNSdcGKAHabXo6L4Nq/cH/qEWEk1VW30oRHg22XFWT9xU/T7U6DsVznR0TLn4JmIJvXGduMA==","shasum":"ebaf86c33bc351803dfb022e0f03e6fc4db099b3","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.5.0.tgz","fileCount":5,"unpackedSize":14941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboA5+CRA9TVsSAnZWagAASUoP+QBCyBzVBw36Bn9p6ALl\nNcJAqDn7DMcbflaFQwV9GJF7l8b+k0X1BQyEOxqE9elad7cqaNhyeZ+3QOob\ndhyribvPQFA/6h9oUOqw6sQBzVYDDl7JlSfh+dyXzSkgxU/AXXbgKUqVVCxr\nGV9vyTRRtrs9p9HedqhACQ4rfn/xXimjurWpYvR4w7T7te3iZs9T5WNgrk+S\nGKhc+zPXYAWzL/VsnYoKgDqHRcRhZ/fLXk+NTysq7SSTLewSQFfV1JPT9FOH\nthBjqMaAbqDsAlIG4Jht9/hHEKHc0e3iGHxqYAwFlJaPXPFYIQwncgcKtLMj\n4HEPqqn3Lm00GdSHg+XyjttWtbV903AU3BoKKavVWXyfweJYMptp4DvkW2Go\nyijLHgf4aii9cnaFSjmx8h90Bidnol7MSIahugSBOnXmohgSVbcjb/bHREO9\nQnsoqLBsWWLUvfxh9ZFansW5BP2D2KtY0UbWJY3COLnbu3SByhwEfFWYsvQk\nFb/I0LIfz+0waB6r6rDYWGjpnMoIjXZuP9yK8YyqmCqGXnqQfD6t6zoK3wDC\n0n0B0jljih4yuBx/fdYgvcgbBiHXAfpYzelEN4UsIvfr3gZp2IexcTNwiOms\nxn6DSUM/FZ7paklr/bt4Wy9bzt7rgi/4LOyPfSVyqOrxlx1jRn+57tEqU8U7\nb+ao\r\n=OtZZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs7YbBVB7nLrO+61Z3TpF0hzTKEIRTZFNUp61EqSQEQwIhALHTiI7Ikc2OTgvlH4cYOgjVQPH+t/i/Fa+FVeROJgfE"}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.5.0_1537216125214_0.33627408983269347"},"_hasShrinkwrap":false},"2.6.0":{"name":"redux-symbiote","version":"2.6.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"gitHead":"86f08fce0bdbbe3ecac59e5ea7f17f68cdbe1c50","_id":"redux-symbiote@2.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-1YSEC70IBt5ZNp1Ij2YlMVUeR/d2v6vjoAAuEBxgwL0BA+QYq9/lhIgveu4JhF/MP7shhQw1Aa+WV9cqhZ+ygw==","shasum":"a43f7261186623ce084e03cf522613fcb281e8bb","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-2.6.0.tgz","fileCount":9,"unpackedSize":19726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtjrRCRA9TVsSAnZWagAAuusP/AzIpiv3Nlz+yNVmf2EK\nexeTmkIutxcVo42k8U2Koj7mvokcMln0aEBAEihfCN6z/A372cj48bMENEh9\nE7S+blGA+Wx2U68RCoL3otM01kYfAAfV4SVOIqfKeB3reAN1TWor6yxppr3N\nZd0qdjRn2/NdXiFDMffsnL+TKhSzjSWwrUWctzIeFyWjFZr+8JnRq0YXDQx4\nm+Dkn6csRdNAM9EqW0P7Fs8zUGNNvYaGCTfcvaAs3Mm+ffQeMuaIqG/f37Nh\nCrust3z8u6ZL0QxV7S7Bc3yhCZVav8ZOl73+SmAwMTB2hvZ2HONp2KyKBLbM\ndnpncShbFHdv1xkLIGQ+hze0hO+RJ5LCOaYeJ1b/2Wkd1A73oIS6L6mpcINF\n/tpPDzUKLrTd0AWgejD+p0osGAeo48JkprIdYNAkCW2B9gyrT8VP048ecbvo\nrgw2f4FTxV74TBipeiNLOhVkjEymzmu3sq5b1N9BT2qfY+OMVg+IYPD/RpSt\nu4vCKjQ6DlHgAwTcvuLFguFvR8PJUtP34fwV2meNR/6LMmPyaPedgJbHB8VV\nU3MqdrgPNrfBBB43SLtj2pk2izgTUNGqsARYym9B62Iij6HrWZcwUiIWjMik\n3rIdbOmbNjNivkfMSfCNe1nPE6oHyAfVmxzI+gf0z3+5NFP47uUPtnBKe/K9\nJQSH\r\n=z+UJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID/tk/JhNWIerhGg2e/oYggWQQypo+VCBgrTeNiWZXRWAiB2nsE1w/xNjDfgx1Mkv1zE+QVnYXrNGoh2N3+Lc4dUmQ=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_2.6.0_1538669264953_0.13498931037885176"},"_hasShrinkwrap":false},"3.0.0-0":{"name":"redux-symbiote","version":"3.0.0-0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"readme":"# redux-symbiote [![Build Status](https://travis-ci.org/atomixinteractions/redux-symbiote.svg?branch=master)](https://travis-ci.org/atomixinteractions/redux-symbiote) [![Coverage Status](https://coveralls.io/repos/github/atomixinteractions/redux-symbiote/badge.svg?branch=master)](https://coveralls.io/github/atomixinteractions/redux-symbiote?branch=master)\n\nWrite your actions and reducers without pain\n\n## Usage\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  accounts: {\n    loading: {\n      start: (state) => ({ ...state, loading: true }),\n      failed: (state, error) => ({ ...state, loading: false, error }),\n      finish: (state, accounts) => ({ ...state, loading: false, accounts }),\n    },\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n```\n\nAlso you can use CommonJS:\n\n```js\nconst { createSymbiote } = require('redux-symbiote')\n\n// ...\n```\n\n## Demo\n\n[![Edit Redux Symbiote Todos](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/3x7n34n336?module=%2Fsrc%2Fstore%2Fsymbiotes%2Ftodos.js)\n\n## API\n\n### Create symbiote\n\n```js\nfunction createSymbiote(\n  initialState,\n  symbiotes,\n  ?namespace = ''\n)\n```\n\n### Create action handlers + reducer\n\n```js\ncreateSymbiote(initialState, {\n  actionType: actionReducer,\n  nestedType: {\n    actionType: nestedActionReducer,\n  }\n})\n```\n\nExample:\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  increment: (state) => ({ ...state, value: state.value + 1 }),\n  decrement: (state) => ({ ...state, value: state.value - 1 }),\n  setValue: (state, value) => ({ ...state, value }),\n  setData: (state, data) => ({ ...state, data }),\n  concatData: (state, data) => ({ ...state, data: data + state.data }),\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.increment()) // { type: 'increment' }\ndispatch(actions.setValue(4)) // { type: 'setValue', payload: [4] }\ndispatch(actions.decrement()) // { type: 'decrement' }\ndispatch(actions.setData('bar')) // { type: 'setData', payload: ['bar'] }\ndispatch(actions.concatData('foo ')) // { type: 'concatData', payload: ['foo '] }\n\n// State here { value: 3, data: 'foo bar' }\n```\n\nWhen you call `actions.setValue` symbiote calls your action handler with previousState and all arguments spreaded after state.\n\n#### Nested example\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  value: {\n    increment: (state) => ({ ...state, value: state.value + 1 }),\n    decrement: (state) => ({ ...state, value: state.value - 1 }),\n  },\n  data: {\n    set: (state, data) => ({ ...state, data }),\n    concat: (state, data) => ({ ...state, data: data + state.data }),\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.value.increment()) // { type: 'value/increment' }\ndispatch(actions.value.decrement()) // { type: 'value/decrement' }\ndispatch(actions.data.set('bar')) // { type: 'data/set', payload: ['bar'] }\ndispatch(actions.data.concat('foo ')) // { type: 'data/concat', payload: ['foo '] }\n```\n\n#### Options\n\nThird parameter in `createSymbiote` is optional `string` or `object`.\n\nIf `string` passed, symbiote converts it to `{ namespace: 'string' }`.\n\nObject has optional properties:\n\n- `namespace` is `string` — set prefix for each action type\n- `defaultReducer` is `(previousState, action) -> newState` — called instead of return previous state\n- `separator` is `string` — change separator of nested action types (default `/`)\n\n#### ActionHandler##toString\n\nYou can use action as action type in classic reducer or in [`handleAction(s)`](https://redux-actions.js.org/docs/api/handleAction.html) in [`redux-actions`](https://npmjs.com/redux-actions)\n\n```js\nimport { handleActions } from 'redux-actions'\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = { /* ... */ }\n\nconst symbiotes = {\n  foo: {\n    bar: {\n      baz: (state, arg1, arg2) => ({ ...state, data: arg1, atad: arg2 }),\n    },\n  },\n}\n\nconst { actions } = createSymbiote(initialState, symbiotes)\n\nconst reducer = handleActions({\n  [actions.foo.bar.baz]: (state, { payload: [arg1, arg2] }) => ({\n    ...state,\n    data: arg1,\n    atad: arg2,\n  }),\n}, initialState)\n```\n\n### How to use reducer\n\n`createSymbiote` returns object with `actions` and `reducer`.\n\nCreated reducer already handles created actions. You don't need to handle actions from symbiote.\n\n```js\n// accounts.js\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes, options)\n\n// reducer.js\nimport { reducer as accounts } from '../accounts/symbiote'\n// another imports\n\nexport const reducer = combineReducers({\n  accounts,\n  // another reducers\n})\n```\n\n## Why?\n\nRedux recommends creating constants, action creators and reducers separately.\n\nhttps://redux.js.org/basics/\n\n```js\nconst ACCOUNTS_LOADING_START = 'ACCOUNTS_LOADING_START'\nconst ACCOUNTS_LOADING_FAILED = 'ACCOUNTS_LOADING_FAILED'\nconst ACCOUNTS_LOADING_FINISH = 'ACCOUNTS_LOADING_FINISH'\n\n\nexport function loadingStart() {\n  return {\n    type: ACCOUNTS_LOADING_START,\n  }\n}\n\nexport function loadingFailed(error) {\n  return {\n    type: ACCOUNTS_LOADING_FAILED,\n    payload: {\n      error,\n    },\n  }\n}\n\nexport function loadingFinish(accounts) {\n  return {\n    type: ACCOUNTS_LOADING_FINISH,\n    payload: {\n      accounts,\n    },\n  }\n}\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport function accountsReducer(state = initialState, action) {\n  switch (action.type) {\n    case ACCOUNTS_LOADING_START:\n      return Object.assign({}, state, {\n        loading: true,\n      })\n\n    case ACCOUNTS_LOADING_FAILED:\n      return Object.assign({}, state, {\n        loading: false,\n        error: action.payload.error,\n      })\n\n    case ACCOUNTS_LOADING_FINISH:\n      return Object.assign({}, state, {\n        loading: false,\n        accounts: action.payload.accounts,\n      })\n  }\n\n  return state\n}\n```\n\nSo much boilerplate.\n\nLet's look at [redux-actions](https://npmjs.com/redux-actions).\n\n```js\nimport { createActions, handleActions, combineActions } from 'redux-actions'\n\n\nexport const actions = createActions({\n  accounts: {\n    loading: {\n      start: () => ({ loading: true }),\n      failed: (error) => ({ loading: false, error }),\n      finish: (accounts) => ({ loading: false, accounts }),\n    },\n  },\n}).accounts\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport const accountsReducer = handleActions({\n  [combineActions(actions.loading.start, actions.loading.failed, actions.loading.finish)]:\n    (state, { payload: { loading } }) => ({ ...state, loading }),\n\n  [actions.loading.failed]: (state, { payload: { error } }) => ({ ...state, error }),\n\n  [actions.loading.finish]: (state, { payload: { accounts } }) => ({ ...state, accounts }),\n}, initialState)\n```\n\nBut we have some duplicate in action creators properties and reducer.\n\nLet's rewrite it to redux-symbiote:\n\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  start: (state) => ({ ...state, loading: true }),\n  finish: (state, { accounts }) => ({ ...state, loading: false, accounts }),\n  failed: (state, { error }) => ({ ...state, loading: false, error }),\n}\n\nexport const { actions, reducer: accountsReducer } =\n  createSymbiote(initialState, symbiotes, 'accounts/loading')\n```\n\nThat's all. `accounts/loading` is an optional namespace for actions types.\n\nTo reduce noise around loading actions try [`symbiote-fetching`](https://npmjs.com/symbiote-fetching).\n","readmeFilename":"README.md","gitHead":"3fb94a08698abea2c175fc0f1860f82f41a1eeb9","_id":"redux-symbiote@3.0.0-0","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-7LKbgFzn1FppLDzGE/4MJvPbTbbUskejUSXd4eg4s8G6P8yffU0IVLj9OOrzFRXo9hh7w6hjOmUhBOLjRK5BKg==","shasum":"d03ff5f3831a9969395b69bba94c70c49d21751d","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.0.0-0.tgz","fileCount":9,"unpackedSize":25683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4FYECRA9TVsSAnZWagAA4agP+wUNM/AW74fkHui2qkkH\nw92M+xc/xA5hvYblhEIiUW6VTSVia2xs2Fe8obxOIFlI1AW8yak/8t4NIN/V\nC+PxYodgRIKMxxsPOkf43uAGPPF9CPL1SqKdV7D+wZQfPbT5rGudYZUYmSVe\np4egKR5oYmoWvHbtgnflO8GGjtiWvAuqLeBZoeb81USb+MT1cLRq7cRJRRQb\nhsMhmaL+clEVLAChjOmYiIlYFKDg8dC/NmoaDPD5xS9b78egduaKTyHfq7jM\n7wIWxWJ4ejUANKPehKIaVRRlKa/78yjk9Mvyt/oYBVHZ6x9uD6c3KO/5ml+3\nqW1m6ldGCc8bG7KvWc7l343SEGPC/ZFd6Cy3ClODIsyxD6qbNz/aV/Y0aYlQ\nz+ktexTf3Yp7MR+FvfcwGe8Zq5gmj03bT/WoHzKpPVp85NAlLmOuYd0QPEs1\n1yRJedIZ9FhIQk5arPHB3wEkUk+xBCcMeNQCxSI+8jC6S0p3DtcfHLo+9nD9\nbxzaqqw2wKYfA2E4jXr/hxlpMJtfiMA6Avc4iUAedrH6Oy6BGRzQj8u7dROq\n8oDVVD1eECTWw7+s8/MB6kf+vQzh+TfVKI5WddagBWfbGjo7njhIJTz4sCFd\nePtadURE8uLq6hou0EkZV3iMAhkeII2F7fbfj4vvZgZnRSvUO6pvit0TfYz8\nX3Aq\r\n=rRGA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjy6av5pb4u96ToerHp/USFb+2iv5aqIHffhRJ+e6hgQIgeixUZoUGf8ngNPDmz/aziVL4UF8pdLjDc2BIhCnAwaA="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.0.0-0_1541428739880_0.7444917512249056"},"_hasShrinkwrap":false},"3.0.0":{"name":"redux-symbiote","version":"3.0.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/atomixinteractions/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/atomixinteractions/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/atomixinteractions/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"gitHead":"747ca85803d5e89cad4b4c26c14f9e9400beb61e","_id":"redux-symbiote@3.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-RLEqmv3djNpCq0ppsVtlDbSbs/C/XVLWGgagWfPEph5bClTH6/xwhmH5dv8YrkoGDTNZ4DXvh5qQfyEJ1uBxDA==","shasum":"be968b216b93358a4f73afef5e17a0661e413dfa","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.0.0.tgz","fileCount":9,"unpackedSize":25681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8/D/CRA9TVsSAnZWagAAN7wQAIUejT4MMD9G/8W7pGLw\nQKKCj3sCIiOrw/9YoqsWQWH/5TtbfFUsU4lXF9qaH/mYHCCX6rTR/azS4AN+\nTegeTuEocBL/EbKtmZ2ShOUx9KCHjmC8OYl7DFUSLO5TefM7icvUVspf40hS\n3DHEkPB2hKYLPvu0hFdYd0nwXfYd2nsIN+77b6iZsVGWzsaDE0/qIADphBam\nwAEiwi/eDg+TOxjUO2XYE9cYXGHIHwjNTuCuKlVjKdj46snDZaMHUYGL87ow\n4i3VJL6zatn7IcpZFIhsSD60fPBO9VUWksd7jhDWi93GXNRxZO+AFFinsvb7\n0tgFlOI5+KSMNwtdCoR+NEk2+NR1UC1CTXTKHRKKV9s/CyXL0AiBshXVnULK\npvybC5or6zrZEwcp49ON1YGInFNjOyWse49FEUY2uMpB4+LqZGNg0K+wsRZI\nM9l9fM+lINxXHDKji/5ReQnC6TYBBOrNKeI2M36lkcP2el3PiOg3Vkqed6mO\n5YvF+tCJjlKwKuFVTcMba3iMwBWzAxImMvKQnooc3WfDh+xwUaKMcHcRFacM\nyR/MsPEiqGqdQNAWEMvwGkphzmr23s+j6ScSyZN/JEMe4Dm4LjsjoourTxNN\n57wyYT3qVNvZvmq2LFW/SvBWRQfvo3VrnFzKLpeKraBoRAGnZqZw4VN9rbrE\nAq76\r\n=VdbU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6CUvxxSWaqV+nVivHtdMhcHHH6sonCoPjTmogoSehOwIhANMAzFazocbcGdYIZHeHy4uzOE5eB+SHmZiyxgdP25nH"}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.0.0_1542713598749_0.13612781010502717"},"_hasShrinkwrap":false},"3.0.1":{"name":"redux-symbiote","version":"3.0.1","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"gitHead":"f52852b44f2508e4729adbcb8f648031d87b1eaf","_id":"redux-symbiote@3.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-/jkU4QZxJJKVKlpWbdFydq+o6oRYHsSsDFgMjyvVMsyAyZ6TFOMOd3H1MYWS5Pa4xCXTluzRT/w3JQ3krCmFgw==","shasum":"c4fc1abb2f052187e7cb70411b7cd8784c7695ba","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.0.1.tgz","fileCount":9,"unpackedSize":25649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBnVyCRA9TVsSAnZWagAAL2oP/A2YEr/b3GYy4OWcb+77\nVAzQFSTNxRvka64+n7rrnTOKIbgnuPZ+z03GuP2ZToIhZE/7wikqNgqL71HL\nMGQByga86QQIUalSTwhUPBG4RD2JQHQ+spFSJdR9ou5kjagSHQtEaCcvlmd9\nQD+zuHkKz2Ur+Xxb565NblRQtepQl9AaPWJvGwvrP+UDaa/BxpWtChxd8qrv\nXoC8XFWdXoEcmLbdL9XXaHQZoftGZA/MLtlIiz23MtmArntjb1+PoX+APSEe\nzzzxtXM7g+07Ojezrjc3XK1Cx4knpJ8AqbKN/qfjjTRo/4GocUp7/RGWIYw+\n7PV1h7tQ/zI1FfsFU9WnCNBvyY0rIXmqlyQuBhnpEPAq+IDSF8DuzoGBWo+3\nU8KxY3hmXYLfwazFpbVVftReqvlaCRM5yRqSB/naOCWOVuPG/W1/ZQSzzgxO\najCSH0HzytT+nN0HDfqfe5amHqK1HDHZdnNBJgbPfNprqq4vtDFk1QVwmOrT\nQGQqDtt/aCAqDkipjI3ShmxDfrOvGEuQN5HIrgoc7U2RRE3kuYrJuHz8m8lc\nXfMhWQEk/K5osh+/4MaEwft/KKZIp7PnLwrDRL4NjwMgk7Va3l4D3Td+4HpX\nAw9JvLuwLlrbGZpj+PNrbp+B0wkOd5uRMSNR0oz+6pJZtWQ3HhnoVBNGltFu\nGCml\r\n=iJ3G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiicItjJ9bruntirksKizd3usrQavzgHISMjrWjW0mZAiBPJ0qXBKHC3Huu/QoPE4q4l78EV5AUhKgb8uXAuNvlsQ=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.0.1_1543927153899_0.3368919276226212"},"_hasShrinkwrap":false},"3.0.2":{"name":"redux-symbiote","version":"3.0.2","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"eslint . && nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"symbiote-symbol":"^1.1.0"},"devDependencies":{"@atomix/eslint-config":"^6.4.0","@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/preset-env":"^7.1.0","ava":"^0.25.0","coveralls":"^3.0.2","dtslint":"^0.3.0","eslint":"^4.19.1","nyc":"^13.0.1"},"gitHead":"ce0f7191d1b1b9d49044502d94878390831ec841","readme":"# redux-symbiote [![Build Status](https://travis-ci.org/sergeysova/redux-symbiote.svg?branch=master)](https://travis-ci.org/atomixinteractions/redux-symbiote) [![Coverage Status](https://coveralls.io/repos/github/atomixinteractions/redux-symbiote/badge.svg?branch=master)](https://coveralls.io/github/atomixinteractions/redux-symbiote?branch=master)\n[![All Contributors](https://img.shields.io/badge/all_contributors-7-orange.svg?style=flat-square)](#contributors)\n\nWrite your actions and reducers without pain\n\n## Usage\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  accounts: {\n    loading: {\n      start: (state) => ({ ...state, loading: true }),\n      failed: (state, error) => ({ ...state, loading: false, error }),\n      finish: (state, accounts) => ({ ...state, loading: false, accounts }),\n    },\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n```\n\nAlso you can use CommonJS:\n\n```js\nconst { createSymbiote } = require('redux-symbiote')\n\n// ...\n```\n\n## Demo\n\n[![Edit Redux Symbiote Todos](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/3x7n34n336?module=%2Fsrc%2Fstore%2Fsymbiotes%2Ftodos.js)\n\n## API\n\n### Create symbiote\n\n```js\nfunction createSymbiote(\n  initialState,\n  symbiotes,\n  ?namespace = ''\n)\n```\n\n### Create action handlers + reducer\n\n```js\ncreateSymbiote(initialState, {\n  actionType: actionReducer,\n  nestedType: {\n    actionType: nestedActionReducer,\n  }\n})\n```\n\nExample:\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  increment: (state) => ({ ...state, value: state.value + 1 }),\n  decrement: (state) => ({ ...state, value: state.value - 1 }),\n  setValue: (state, value) => ({ ...state, value }),\n  setData: (state, data) => ({ ...state, data }),\n  concatData: (state, data) => ({ ...state, data: data + state.data }),\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.increment()) // { type: 'increment' }\ndispatch(actions.setValue(4)) // { type: 'setValue', payload: [4] }\ndispatch(actions.decrement()) // { type: 'decrement' }\ndispatch(actions.setData('bar')) // { type: 'setData', payload: ['bar'] }\ndispatch(actions.concatData('foo ')) // { type: 'concatData', payload: ['foo '] }\n\n// State here { value: 3, data: 'foo bar' }\n```\n\nWhen you call `actions.setValue` symbiote calls your action handler with previousState and all arguments spreaded after state.\n\n#### Nested example\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  value: {\n    increment: (state) => ({ ...state, value: state.value + 1 }),\n    decrement: (state) => ({ ...state, value: state.value - 1 }),\n  },\n  data: {\n    set: (state, data) => ({ ...state, data }),\n    concat: (state, data) => ({ ...state, data: data + state.data }),\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.value.increment()) // { type: 'value/increment' }\ndispatch(actions.value.decrement()) // { type: 'value/decrement' }\ndispatch(actions.data.set('bar')) // { type: 'data/set', payload: ['bar'] }\ndispatch(actions.data.concat('foo ')) // { type: 'data/concat', payload: ['foo '] }\n```\n\n#### Options\n\nThird parameter in `createSymbiote` is optional `string` or `object`.\n\nIf `string` passed, symbiote converts it to `{ namespace: 'string' }`.\n\nObject has optional properties:\n\n- `namespace` is `string` — set prefix for each action type\n- `defaultReducer` is `(previousState, action) -> newState` — called instead of return previous state\n- `separator` is `string` — change separator of nested action types (default `/`)\n\n#### ActionHandler##toString\n\nYou can use action as action type in classic reducer or in [`handleAction(s)`](https://redux-actions.js.org/docs/api/handleAction.html) in [`redux-actions`](https://npmjs.com/redux-actions)\n\n```js\nimport { handleActions } from 'redux-actions'\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = { /* ... */ }\n\nconst symbiotes = {\n  foo: {\n    bar: {\n      baz: (state, arg1, arg2) => ({ ...state, data: arg1, atad: arg2 }),\n    },\n  },\n}\n\nconst { actions } = createSymbiote(initialState, symbiotes)\n\nconst reducer = handleActions({\n  [actions.foo.bar.baz]: (state, { payload: [arg1, arg2] }) => ({\n    ...state,\n    data: arg1,\n    atad: arg2,\n  }),\n}, initialState)\n```\n\n### How to use reducer\n\n`createSymbiote` returns object with `actions` and `reducer`.\n\nCreated reducer already handles created actions. You don't need to handle actions from symbiote.\n\n```js\n// accounts.js\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes, options)\n\n// reducer.js\nimport { reducer as accounts } from '../accounts/symbiote'\n// another imports\n\nexport const reducer = combineReducers({\n  accounts,\n  // another reducers\n})\n```\n\n## Why?\n\nRedux recommends creating constants, action creators and reducers separately.\n\nhttps://redux.js.org/basics/\n\n```js\nconst ACCOUNTS_LOADING_START = 'ACCOUNTS_LOADING_START'\nconst ACCOUNTS_LOADING_FAILED = 'ACCOUNTS_LOADING_FAILED'\nconst ACCOUNTS_LOADING_FINISH = 'ACCOUNTS_LOADING_FINISH'\n\n\nexport function loadingStart() {\n  return {\n    type: ACCOUNTS_LOADING_START,\n  }\n}\n\nexport function loadingFailed(error) {\n  return {\n    type: ACCOUNTS_LOADING_FAILED,\n    payload: {\n      error,\n    },\n  }\n}\n\nexport function loadingFinish(accounts) {\n  return {\n    type: ACCOUNTS_LOADING_FINISH,\n    payload: {\n      accounts,\n    },\n  }\n}\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport function accountsReducer(state = initialState, action) {\n  switch (action.type) {\n    case ACCOUNTS_LOADING_START:\n      return Object.assign({}, state, {\n        loading: true,\n      })\n\n    case ACCOUNTS_LOADING_FAILED:\n      return Object.assign({}, state, {\n        loading: false,\n        error: action.payload.error,\n      })\n\n    case ACCOUNTS_LOADING_FINISH:\n      return Object.assign({}, state, {\n        loading: false,\n        accounts: action.payload.accounts,\n      })\n  }\n\n  return state\n}\n```\n\nSo much boilerplate.\n\nLet's look at [redux-actions](https://npmjs.com/redux-actions).\n\n```js\nimport { createActions, handleActions, combineActions } from 'redux-actions'\n\n\nexport const actions = createActions({\n  accounts: {\n    loading: {\n      start: () => ({ loading: true }),\n      failed: (error) => ({ loading: false, error }),\n      finish: (accounts) => ({ loading: false, accounts }),\n    },\n  },\n}).accounts\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport const accountsReducer = handleActions({\n  [combineActions(actions.loading.start, actions.loading.failed, actions.loading.finish)]:\n    (state, { payload: { loading } }) => ({ ...state, loading }),\n\n  [actions.loading.failed]: (state, { payload: { error } }) => ({ ...state, error }),\n\n  [actions.loading.finish]: (state, { payload: { accounts } }) => ({ ...state, accounts }),\n}, initialState)\n```\n\nBut we have some duplicate in action creators properties and reducer.\n\nLet's rewrite it to redux-symbiote:\n\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  start: (state) => ({ ...state, loading: true }),\n  finish: (state, { accounts }) => ({ ...state, loading: false, accounts }),\n  failed: (state, { error }) => ({ ...state, loading: false, error }),\n}\n\nexport const { actions, reducer: accountsReducer } =\n  createSymbiote(initialState, symbiotes, 'accounts/loading')\n```\n\nThat's all. `accounts/loading` is an optional namespace for actions types.\n\nTo reduce noise around loading actions try [`symbiote-fetching`](https://npmjs.com/symbiote-fetching).\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars0.githubusercontent.com/u/5620073?v=4\" width=\"100px;\"/><br /><sub><b>Sergey Sova</b></sub>](https://sergeysova.com)<br />[📖](https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova \"Documentation\") [💻](https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova \"Code\") [💡](#example-sergeysova \"Examples\") [🤔](#ideas-sergeysova \"Ideas, Planning, & Feedback\") [⚠️](https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/27290320?v=4\" width=\"100px;\"/><br /><sub><b>Arutyunyan Artyom</b></sub>](https://t.me/artalar)<br />[👀](#review-artalar \"Reviewed Pull Requests\") [🤔](#ideas-artalar \"Ideas, Planning, & Feedback\") [🐛](https://github.com/sergeysova/redux-symbiote/issues?q=author%3Aartalar \"Bug reports\") [💻](https://github.com/sergeysova/redux-symbiote/commits?author=artalar \"Code\") | [<img src=\"https://avatars3.githubusercontent.com/u/26767722?v=4\" width=\"100px;\"/><br /><sub><b>Igor Kamyshev</b></sub>](https://kamyshev.me)<br />[📦](#platform-igorkamyshev \"Packaging/porting to new platform\") [⚠️](https://github.com/sergeysova/redux-symbiote/commits?author=igorkamyshev \"Tests\") | [<img src=\"https://avatars2.githubusercontent.com/u/10822601?v=4\" width=\"100px;\"/><br /><sub><b>Ilya</b></sub>](https://github.com/ilyaagarkov)<br />[🐛](https://github.com/sergeysova/redux-symbiote/issues?q=author%3Ailyaagarkov \"Bug reports\") | [<img src=\"https://avatars2.githubusercontent.com/u/13759065?v=4\" width=\"100px;\"/><br /><sub><b>Ivanov Vadim</b></sub>](https://github.com/ivanov-v)<br />[📖](https://github.com/sergeysova/redux-symbiote/commits?author=ivanov-v \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/16399895?v=4\" width=\"100px;\"/><br /><sub><b>Аnton Krivokhizhin</b></sub>](https://github.com/antonkri97)<br />[📦](#platform-antonkri97 \"Packaging/porting to new platform\") [🚇](#infra-antonkri97 \"Infrastructure (Hosting, Build-Tools, etc)\") | [<img src=\"https://avatars0.githubusercontent.com/u/421161?v=4\" width=\"100px;\"/><br /><sub><b>Viacheslav</b></sub>](http://betula.co)<br />[🤔](#ideas-betula \"Ideas, Planning, & Feedback\") [👀](#review-betula \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!","readmeFilename":"README.md","_id":"redux-symbiote@3.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"dist":{"integrity":"sha512-VXPTmG0CycLWhrxebQ+qCEXKJCa9Sbshx3bi0lkH812OR/CroGESQQS9D5YJ2S8ngcEOp+ylB1S58d2YxrWhhg==","shasum":"937a91e5ba2d40fd8ee5d8ff0f9759c919eb7945","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.0.2.tgz","fileCount":9,"unpackedSize":28540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH+jWCRA9TVsSAnZWagAAwukP/3D+QaHoevLysD/RAuRF\nLZR739GmNrDQWUVmVztttfB1KPLHVil/ky0ALkrjpcTz/O9ToVO9g0Hztoh5\nbCDPSEJmQdRGNcYtmN6Cr2Ceg9R0qxpmqV6dcQO7HRRuA9iAulj7NlD2wsSb\nfpBkc11DSplFAIofOSn1pACmmlow7ggngvfJvbh26bIjdJUfAnqBPAe23mzz\nHnDy8l/FBy0DYUfKzEPty7+FRFskRzmTAHj241zLwPxmpVcO2axK6kra2psQ\nCik1UtU0B2eIrJ1w0+KSBykiSPSLKhIqP3lwrxQmJ2lLsFvvmz/3nf2Zl6XF\nYhYZwRC/uwMVGAEv/bdOU2WnSCgQVQwYWgVSoeewRAUjLYMRcthomZsYGC5S\no3F7879LQG2aqz2drrXEFOdAZjQIkDM3SDISOFVrIUmA+Xtac3byabOOU3ax\nuHjmwW07KBlevtuyWKXoksy7FjmnoWcskkLMUikB96zr/SjUM1FHDvsKc18S\n//oY4dwvV+iN7lJYlU54XGdHoW9IcDZZNmoGgcnziTDZ+vmrCY642AuLkJ9t\n86mmYICkoc+3TlfVLMuFbYZmc3dIYt5E9f1eVYUyXV0IZu4VnzVBZOXStn7H\n1eUokx7PxCUEqD/WJylywyvKmbetRGQ2NvpnLL73dHga5Q2AKhFyM6nnT806\nWClm\r\n=ouK5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBat2/ONMsmMZfRmNNJeq8rjPisMWiTulg0zve+QYeTRAiB2qwuM6881AgMUpZtmAdqw9qvLB8lxWVaSamIvhP8AEA=="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.0.2_1545595093595_0.33270717548528195"},"_hasShrinkwrap":false},"3.1.0":{"name":"redux-symbiote","version":"3.1.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"npm run test:lint && npm run test:code","test:lint":"eslint .","test:code":"nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm run test:lint"}},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"],"*.{json,eslintrc}":["prettier --write","git add"]},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"nanoid":"^2.0.1","symbiote-symbol":"^3.0.0"},"devDependencies":{"@atomix/eslint-config":"^7.0.0-next.1","@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/preset-env":"^7.3.4","@commitlint/cli":"^7.5.2","@commitlint/config-conventional":"^7.5.0","ava":"^1.2.1","commitizen":"^3.0.7","coveralls":"^3.0.3","cz-conventional-changelog":"^2.1.0","dtslint":"^0.5.3","eslint":"^5.15.1","eslint-plugin-import":"^2.16.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-unicorn":"^7.1.0","husky":"^1.3.1","lint-staged":"^8.1.5","nyc":"^13.3.0","prettier":"^1.16.4","typescript":"^3.3.3333"},"gitHead":"6cd9652d0dc94bb3be4624183612314b8818912b","_id":"redux-symbiote@3.1.0","_nodeVersion":"10.11.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-16THhoM5bgRW00rwqJt5TgaElaTJcjcIvb+EQ73U2VHSxjUJmLZrUK4cbR2nSr8RtCLErq9e52SOaGcu2itN/w==","shasum":"21e3528c3b524342b4f42766644b393547aad79b","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.1.0.tgz","fileCount":9,"unpackedSize":29760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgVd8CRA9TVsSAnZWagAAXFsQAIlULEZOeQd2XOssnhVs\nHLFqJ7MwdWOyRtcuB08vWfk2gCQAtogWanFFrIvdUwPOte2HMt43nnV4jcvd\namQgWnkgrv2OV1dV/hjmr6LVzdf409DdGrLjaMtGvmEMf8JRCdtOadfdeOq9\n1ULuFMfZrYKMjNJtUsNR8v812/ows8pkqVS/Q3wxhmECZdWYFAou1SkxTAya\n2H5R9PfIBe0ldE71TL3ZsFAzDUWBRyRALbm/IWE5oywnQvdBxsPyXXuSXQz4\nLrmWOc3UU5gain75UwMy+tCKNEJAC/GS1ieY6+Jvr4Rrpafvq7ENuIJ2uK8K\n+ZLbzneQvQGpQoCOZVkMmEJdiZwxCw8yC3ZyMSFshCmufT5MUGNolfz4aK4O\n3RPO/rZfenlyUugysHdbuEsPR0i+WOPH9M4YavMQ7KFkVsclJgmR5Vi5nniE\n+QuYpBrqZXhVskMQg06Am9my322fsUZr7nyvQRIVRM2Fp5/IN30/F1Zn6UYs\n3wvudPpW5KXZ3b0SMrDfjfxvk++w/WETrp+92+yXNXzdqnU4p9cv6KCFLifu\nw15N47dY+GnEh9D5rJ4MIOl0AqF0u+x8kVl8VuGSG3RuvjgSmwT15stQ4lPB\nMe64Ai0z94I2461XLAjro8XNqZWnCCyS95mNv7oAN/B4w8o3+i3pUMTC070y\nLvOo\r\n=ZRlC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYsHH/ATbZIWvMGgjUM1K5LsbdS2POg8smZ4nqhSQ+6wIgOFfZW4E9VyHKQbC1sVplIMLve7K1UukzABd2TAj4CjU="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.1.0_1551980411636_0.5439037960894213"},"_hasShrinkwrap":false},"3.2.0":{"name":"redux-symbiote","version":"3.2.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"npm run test:lint && npm run test:code","test:lint":"eslint .","test:code":"nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm run test:lint"}},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"],"*.{json,eslintrc}":["prettier --write","git add"]},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"nanoid":"^2.0.1","symbiote-symbol":"^3.0.0"},"devDependencies":{"@atomix/eslint-config":"^7.0.0-next.1","@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/preset-env":"^7.3.4","@commitlint/cli":"^7.5.2","@commitlint/config-conventional":"^7.5.0","ava":"^1.2.1","commitizen":"^3.0.7","coveralls":"^3.0.3","cz-conventional-changelog":"^2.1.0","dtslint":"^0.5.3","eslint":"^5.15.1","eslint-plugin-import":"^2.16.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-unicorn":"^7.1.0","husky":"^1.3.1","lint-staged":"^8.1.5","nyc":"^13.3.0","prettier":"^1.16.4","typescript":"^3.3.3333"},"gitHead":"91c7eb8d18493f59a0a19d91e5218791e79cc764","_id":"redux-symbiote@3.2.0","_nodeVersion":"10.11.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-OzSPorMLj8qDYrwUN2YZqw1zoCnVpYFfsV2WORplafjMiOSI1h8rEOOlMmte8AvWAVKseuCLAH264Sqa9ChOpA==","shasum":"ef8e853fe01e4dd065a6f059e9e10112eca1f153","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.2.0.tgz","fileCount":11,"unpackedSize":31380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKvO6CRA9TVsSAnZWagAAZsUP/jH9tdhJbbzJqDqjW4bp\nF6dhGMTP2V+0WmDsZ4DZylKr+rzT+Z0dmWCWWh34VtzU0EhJnVr/VBzs3q4C\nbt2OvDQsCt7r229rUxuWY+iu1HbR/dfncUk1u59JOFMQnff/I/90UGnFcYoZ\ndPLwz86ash19CZzTZhQbVVpm+3PgtQK7QO6EyVCOzNOQemYEB5v0U/kYZPoz\nnB+QqLRhsg5joRLz2dO3iKllnKrBLbZ1OI9gmT3l9exXL/imNBXU825R1N0z\nKt+mLthoQHKqGrdvpN0GfipBFMEfJVphkqrght5I4abll5jKW6FimWR9qLGM\nmsfetit7IQ05C5U/r2pFJPlqa0HJptjricBJgnd7NeGRAVx+9aRjv7n8wM25\nG294PD0n4yr/hq2O4+cTI7JvzqRzrmrlHVQ1Is24mgQkCs0CyNYW41JuyyT3\nvmj56w2fQhfviMeJohAXdr5qFa/eu8rLmTxsO29rCnFyPBUTkzEnvOTAooUd\nduivZAW78+5X+ecPyTHdf82e6Jo/+REifSBYH8cnvwh6n6616P4GKO4j0v97\np3Rv1IrMeG+iDCPHcgKK7t/pOOz22frmfg90M50ocKQW8Kdw8LSDzqhweUf7\nxy9yGBljSt+32D+fg2Tcv/QfUJ8w0L5iDTtbMSHnxkewG7GuudEjduCMBzgG\nosmu\r\n=JhcH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHDjEonLeFSAIIZaW9B4se3FcDQi7xNgRQaZSbiw9dcpAiEAofcxj7gZSnpEHl3x8nNNa/30JMzlgIgOGEyr8g2ySa4="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.2.0_1563095993896_0.9870502293096606"},"_hasShrinkwrap":false},"3.3.0":{"name":"redux-symbiote","version":"3.3.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"npm run test:lint && npm run test:code","test:lint":"eslint .","test:code":"nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm run test:lint"}},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"],"*.{json,eslintrc}":["prettier --write","git add"]},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"nanoid":"^2.0.1","symbiote-symbol":"^3.0.0"},"devDependencies":{"@atomix/eslint-config":"^7.0.0-next.1","@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/preset-env":"^7.3.4","@commitlint/cli":"^8.3.1","@commitlint/config-conventional":"^7.5.0","ava":"^1.2.1","commitizen":"^4.0.3","coveralls":"^3.0.3","cz-conventional-changelog":"^2.1.0","dtslint":"^0.5.3","eslint":"^5.15.1","eslint-plugin-import":"^2.16.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-unicorn":"^7.1.0","husky":"^1.3.1","lint-staged":"^8.1.5","nyc":"^14.1.1","prettier":"^1.16.4","typescript":"^3.3.3333"},"gitHead":"d359c7741c64feafd7d3fe3ceb5dc71c65a75437","_id":"redux-symbiote@3.3.0","_nodeVersion":"10.16.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-IOBf+eJMQpOL8CHcwK5Ixq+ujMd9aC1F71JV0ZIx2obJHaSMKuRb7reoM0aiH99NpzHK9hL3O6g5xy80xn5//w==","shasum":"837c3305777e0fbb3c0a0a11f7309501dc67fcf7","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.3.0.tgz","fileCount":11,"unpackedSize":32945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqcxHCRA9TVsSAnZWagAAqn4P+wSNp4t2tx5UXuyD+XE7\nd/jrYxRAOwNttoCXvvRngGdPB3pYH6wtoCULSUawYq4XVfpXgZ6z8T6Itap+\nHPOT/FFl5EKqWQNRZrgIb/PbxQFz5J5gguegQ/Mu6qVUJx1VqhfSjhj0E1a5\nDDSNixFyhU66WFb0g0pf+4ayQP16uKNV9D0oo2U5JKZOYKDz86lIUX0IBdMo\n9iy7uOqyRfKjTCWcSNrn3M9QuH5iddYvtiWFe5zE4wN7Wq/zMP17YiGhxYeh\ngKIT6NhCC1wojqCn+1iOhF0C4NUFb2vcGBQWxOIgKA21QkE09QImI1701Hqv\nCRapFRoOP+1gatxVRnvHkjdKY8FyG5yTXxnqxpbg/DVXGdLikZXdeuvE3fS4\n9Pbncn/XVRGob6CucvrZcYWwEbm6YZLtZ8KR0Cf42RxVEFgPewWm7JE5knvI\nr5Zs1fojovsSe7Z5pDO0I4cf6iohY0fSR9z/K97skCzPrsG2fIjvYBLw2EgF\nTL87p3zRwAlCelzcR/t57Hf3qnb7Atua/TMAe/DjhEf6e1bAaMHDBAh/kyci\nqar/ZygKwE0Z37F3RTi6hNsKdxclVfDoGeN5j5BRtExYv3CzJX19nYB84JML\nV9ctW00Phfw8Ga9TAgcsEqRwaWEDeFi8Y68lhA9F8D8dTVaA2JLkuvOvaPLk\nDx4W\r\n=Q9AN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAj/4S5qQFtX1oRxOQcdid8U8aPIi64rn9xEGZKO3ZkAAiEAqZvKo6jykhBFFi85SGTq2vLOYnA/+KqAcdZFFUNeBno="}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.3.0_1571408965854_0.49769768381578383"},"_hasShrinkwrap":false},"3.4.0":{"name":"redux-symbiote","version":"3.4.0","description":"Write your actions and reducers without pain","main":"lib/index.js","scripts":{"test":"npm run test:lint && npm run test:code","test:lint":"eslint .","test:code":"nyc ava","--types":"rm -rf node_modules && npm i -g dtslint && dtslint types","types":"dtslint types","build":"babel ./src -d ./lib","coverage":"NODE_ENV=test nyc report --reporter=text-lcov","report":"nyc report --reporter=text-lcov | coveralls","prepublish":"npm run build"},"types":"types","repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"license":"MIT","bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"},"husky":{"hooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm run test:lint"}},"lint-staged":{"*.js":["eslint --fix","prettier --write","git add"],"*.{json,eslintrc}":["prettier --write","git add"]},"keywords":["redux","flux","fsa","actions","react","act","reducer"],"homepage":"https://github.com/sergeysova/redux-symbiote#readme","dependencies":{"nanoid":"^2.0.1","symbiote-symbol":"^3.0.0"},"devDependencies":{"@atomix/eslint-config":"^7.0.0-next.1","@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/preset-env":"^7.3.4","@commitlint/cli":"^8.3.1","@commitlint/config-conventional":"^7.5.0","ava":"^1.2.1","commitizen":"^4.0.3","coveralls":"^3.0.3","cz-conventional-changelog":"^2.1.0","dtslint":"^0.5.3","eslint":"^5.15.1","eslint-plugin-import":"^2.16.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-unicorn":"^7.1.0","husky":"^1.3.1","lint-staged":"^8.1.5","nyc":"^14.1.1","prettier":"^1.16.4","typescript":"^3.3.3333"},"gitHead":"df19f06fd3405a9a6cfb1228ab624fc057794490","_id":"redux-symbiote@3.4.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Xk6vL9s4XT07nQRiEGml3LVhRlOc/baobcw+FiwMNP5fVqJ31cleZaDZ4vwGv8HQ4VApGl5LqogDAe+lPXJ78Q==","shasum":"8555b2b9b21386e067a559e94d0e062db5439197","tarball":"https://registry.npmjs.org/redux-symbiote/-/redux-symbiote-3.4.0.tgz","fileCount":11,"unpackedSize":33694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw8i5CRA9TVsSAnZWagAAOcwP/0f+BTwHeE7I9Z6WTxMt\nrOuqNzN0HIB2FjkIOQURFptHK1yxi5KPor6dj+Vzt3a5x25R5On/G1w5elu0\nSBT5/Cha6zVxC2pXCYk50FYyRROXxu708YMPgOxAd0C8tPijYCGlAahzt6as\n3Bru6plhg+zgtQG/hLhsUqf/voCy0PQljF2bnXSgmiqaEHUjNy6j4IxhWRon\nR0P21ZmLx96IWhLN0Ls+TCho1BVxdufJItBIt+ryfbfaCgKruHKVbqkCNcqu\nME2DEEWJpVf4UerPlLzjRQtJb6EoL/JJmORO2wTuDF1j+bam0m+wvxepcuAC\nafylEopkGQKWnJchBRcWv9iFzG8qUf7MlSP4VbQ9kVbF0sxQoB7NGYaYUFqa\nzlAAVJr+YCjpnnisdMgsf14TVOcRKiCDYaJvATf+gJ5DWR3RVTmlxB+6QGog\nB20/aVF33N8kR6VyGtcL3L9jp5Tcg9LPSmv52X5FF9yE50mHX7p+rXE/pVVK\nZG0G80/7TG/lshcaKGJx3lVEGZzCqKLlA63P4qceD1vFgQ9Kf6myIDE3p4k3\neE8n8f0rc7DXfViK5Ls3QX17oeewIxhOun/NNG+ETOLHilvvGxSC8tmOY6Us\njl81xSaCZMr9M2VFmgfCGzicJQMTbM+hyx21qImHgSfvZ2x7CnBvxGyauoki\nDv3c\r\n=Upjm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrp5Nvf4Qa76JsamwcOuZlQZcT8i46Ev5lB3qNHeNjBQIhAPbBqMFRUMHhOh7hEPaXr11c5sJIJpDZ0+zMjCBSZlcz"}]},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"_npmUser":{"name":"sergeysova","email":"mail@sergeysova.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-symbiote_3.4.0_1573111992631_0.6191409485241213"},"_hasShrinkwrap":false}},"time":{"created":"2018-02-17T21:44:57.490Z","0.0.0-reserved":"2018-02-17T21:44:57.636Z","modified":"2022-05-15T16:11:52.670Z","1.0.0":"2018-02-17T23:42:12.921Z","1.1.0":"2018-02-21T19:17:11.358Z","2.0.0":"2018-02-22T11:23:32.641Z","2.0.1":"2018-02-22T11:32:35.566Z","2.0.2":"2018-04-04T20:23:49.595Z","2.0.3":"2018-04-04T20:27:38.327Z","2.1.0":"2018-06-21T00:02:26.322Z","2.2.0":"2018-06-21T00:03:26.259Z","2.2.1":"2018-06-21T00:59:17.731Z","2.3.0":"2018-06-21T02:47:42.927Z","2.4.0":"2018-09-06T09:47:55.424Z","2.5.0":"2018-09-17T20:28:45.362Z","2.6.0":"2018-10-04T16:07:45.243Z","3.0.0-0":"2018-11-05T14:39:00.061Z","3.0.0":"2018-11-20T11:33:18.867Z","3.0.1":"2018-12-04T12:39:14.039Z","3.0.2":"2018-12-23T19:58:13.744Z","3.1.0":"2019-03-07T17:40:11.834Z","3.2.0":"2019-07-14T09:19:54.032Z","3.3.0":"2019-10-18T14:29:25.962Z","3.4.0":"2019-11-07T07:33:12.801Z"},"maintainers":[{"name":"betula","email":"mail@imm.su"},{"name":"sergeysova","email":"mail@sergeysova.com"}],"description":"Write your actions and reducers without pain","license":"MIT","readme":"# redux-symbiote [![Build Status](https://travis-ci.org/sergeysova/redux-symbiote.svg?branch=master)](https://travis-ci.org/sergeysova/redux-symbiote) [![Coverage Status](https://coveralls.io/repos/github/sergeysova/redux-symbiote/badge.svg?branch=master)](https://coveralls.io/github/sergeysova/redux-symbiote?branch=master)\n[![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors)\n\n<img src=\"https://raw.githubusercontent.com/sergeysova/redux-symbiote/master/assets/logo.svg?sanitize=true\" width=\"80\" />\n\n\n\nWrite your actions and reducers without pain\n\n## Usage\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  accounts: {\n    loading: {\n      start: (state) => ({ ...state, loading: true }),\n      failed: (state, error) => ({ ...state, loading: false, error }),\n      finish: (state, accounts) => ({ ...state, loading: false, accounts }),\n    },\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n```\n\nAlso you can use CommonJS:\n\n```js\nconst { createSymbiote } = require('redux-symbiote')\n\n// ...\n```\n\n## Demo\n\n[![Edit Redux Symbiote Todos](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/3x7n34n336?module=%2Fsrc%2Fstore%2Fsymbiotes%2Ftodos.js)\n\n## API\n\n### Create symbiote\n\n```js\nfunction createSymbiote(\n  initialState,\n  symbiotes,\n  ?namespace = ''\n)\n```\n\n### Create action handlers + reducer\n\n```js\ncreateSymbiote(initialState, {\n  actionType: actionReducer,\n  nestedType: {\n    actionType: nestedActionReducer,\n  }\n})\n```\n\nExample:\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  increment: (state) => ({ ...state, value: state.value + 1 }),\n  decrement: (state) => ({ ...state, value: state.value - 1 }),\n  setValue: (state, value) => ({ ...state, value }),\n  setData: (state, data) => ({ ...state, data }),\n  concatData: (state, data) => ({ ...state, data: data + state.data }),\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.increment()) // { type: 'increment' }\ndispatch(actions.setValue(4)) // { type: 'setValue', payload: [4] }\ndispatch(actions.decrement()) // { type: 'decrement' }\ndispatch(actions.setData('bar')) // { type: 'setData', payload: ['bar'] }\ndispatch(actions.concatData('foo ')) // { type: 'concatData', payload: ['foo '] }\n\n// State here { value: 3, data: 'foo bar' }\n```\n\nWhen you call `actions.setValue` symbiote calls your action handler with previousState and all arguments spreaded after state.\n\n#### Nested example\n\n```js\nconst initialState = { value: 1, data: 'another' }\n\nconst symbiotes = {\n  value: {\n    increment: (state) => ({ ...state, value: state.value + 1 }),\n    decrement: (state) => ({ ...state, value: state.value - 1 }),\n  },\n  data: {\n    set: (state, data) => ({ ...state, data }),\n    concat: (state, data) => ({ ...state, data: data + state.data }),\n  },\n}\n\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes)\n\ndispatch(actions.value.increment()) // { type: 'value/increment' }\ndispatch(actions.value.decrement()) // { type: 'value/decrement' }\ndispatch(actions.data.set('bar')) // { type: 'data/set', payload: ['bar'] }\ndispatch(actions.data.concat('foo ')) // { type: 'data/concat', payload: ['foo '] }\n```\n\n#### Options\n\nThird parameter in `createSymbiote` is optional `string` or `object`.\n\nIf `string` passed, symbiote converts it to `{ namespace: 'string' }`.\n\nObject has optional properties:\n\n- `namespace` is `string` — set prefix for each action type\n- `defaultReducer` is `(previousState, action) -> newState` — called instead of return previous state\n- `separator` is `string` — change separator of nested action types (default `/`)\n\n#### ActionHandler##toString\n\nYou can use action as action type in classic reducer or in [`handleAction(s)`](https://redux-actions.js.org/docs/api/handleAction.html) in [`redux-actions`](https://npmjs.com/redux-actions)\n\n```js\nimport { handleActions } from 'redux-actions'\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = { /* ... */ }\n\nconst symbiotes = {\n  foo: {\n    bar: {\n      baz: (state, arg1, arg2) => ({ ...state, data: arg1, atad: arg2 }),\n    },\n  },\n}\n\nconst { actions } = createSymbiote(initialState, symbiotes)\n\nconst reducer = handleActions({\n  [actions.foo.bar.baz]: (state, { payload: [arg1, arg2] }) => ({\n    ...state,\n    data: arg1,\n    atad: arg2,\n  }),\n}, initialState)\n```\n\n### How to use reducer\n\n`createSymbiote` returns object with `actions` and `reducer`.\n\nCreated reducer already handles created actions. You don't need to handle actions from symbiote.\n\n```js\n// accounts.js\nexport const { actions, reducer } = createSymbiote(initialState, symbiotes, options)\n\n// reducer.js\nimport { reducer as accounts } from '../accounts/symbiote'\n// another imports\n\nexport const reducer = combineReducers({\n  accounts,\n  // another reducers\n})\n```\n\n## Why?\n\nRedux recommends creating constants, action creators and reducers separately.\n\nhttps://redux.js.org/basics/\n\n```js\nconst ACCOUNTS_LOADING_START = 'ACCOUNTS_LOADING_START'\nconst ACCOUNTS_LOADING_FAILED = 'ACCOUNTS_LOADING_FAILED'\nconst ACCOUNTS_LOADING_FINISH = 'ACCOUNTS_LOADING_FINISH'\n\n\nexport function loadingStart() {\n  return {\n    type: ACCOUNTS_LOADING_START,\n  }\n}\n\nexport function loadingFailed(error) {\n  return {\n    type: ACCOUNTS_LOADING_FAILED,\n    payload: {\n      error,\n    },\n  }\n}\n\nexport function loadingFinish(accounts) {\n  return {\n    type: ACCOUNTS_LOADING_FINISH,\n    payload: {\n      accounts,\n    },\n  }\n}\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport function accountsReducer(state = initialState, action) {\n  switch (action.type) {\n    case ACCOUNTS_LOADING_START:\n      return Object.assign({}, state, {\n        loading: true,\n      })\n\n    case ACCOUNTS_LOADING_FAILED:\n      return Object.assign({}, state, {\n        loading: false,\n        error: action.payload.error,\n      })\n\n    case ACCOUNTS_LOADING_FINISH:\n      return Object.assign({}, state, {\n        loading: false,\n        accounts: action.payload.accounts,\n      })\n  }\n\n  return state\n}\n```\n\nSo much boilerplate.\n\nLet's look at [redux-actions](https://npmjs.com/redux-actions).\n\n```js\nimport { createActions, handleActions, combineActions } from 'redux-actions'\n\n\nexport const actions = createActions({\n  accounts: {\n    loading: {\n      start: () => ({ loading: true }),\n      failed: (error) => ({ loading: false, error }),\n      finish: (accounts) => ({ loading: false, accounts }),\n    },\n  },\n}).accounts\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nexport const accountsReducer = handleActions({\n  [combineActions(actions.loading.start, actions.loading.failed, actions.loading.finish)]:\n    (state, { payload: { loading } }) => ({ ...state, loading }),\n\n  [actions.loading.failed]: (state, { payload: { error } }) => ({ ...state, error }),\n\n  [actions.loading.finish]: (state, { payload: { accounts } }) => ({ ...state, accounts }),\n}, initialState)\n```\n\nBut we have some duplicate in action creators properties and reducer.\n\nLet's rewrite it to redux-symbiote:\n\n\n```js\nimport { createSymbiote } from 'redux-symbiote'\n\nconst initialState = {\n  error: null,\n  accounts: [],\n  loading: false,\n}\n\nconst symbiotes = {\n  start: (state) => ({ ...state, loading: true }),\n  finish: (state, { accounts }) => ({ ...state, loading: false, accounts }),\n  failed: (state, { error }) => ({ ...state, loading: false, error }),\n}\n\nexport const { actions, reducer: accountsReducer } =\n  createSymbiote(initialState, symbiotes, 'accounts/loading')\n```\n\nThat's all. `accounts/loading` is an optional namespace for actions types.\n\nTo reduce noise around loading actions try [`symbiote-fetching`](https://npmjs.com/symbiote-fetching).\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://sergeysova.com\"><img src=\"https://avatars0.githubusercontent.com/u/5620073?v=4\" width=\"100px;\" alt=\"Sergey Sova\"/><br /><sub><b>Sergey Sova</b></sub></a><br /><a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova\" title=\"Documentation\">📖</a> <a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova\" title=\"Code\">💻</a> <a href=\"#example-sergeysova\" title=\"Examples\">💡</a> <a href=\"#ideas-sergeysova\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=sergeysova\" title=\"Tests\">⚠️</a></td>\n    <td align=\"center\"><a href=\"https://t.me/artalar\"><img src=\"https://avatars0.githubusercontent.com/u/27290320?v=4\" width=\"100px;\" alt=\"Arutyunyan Artyom\"/><br /><sub><b>Arutyunyan Artyom</b></sub></a><br /><a href=\"#review-artalar\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#ideas-artalar\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"https://github.com/sergeysova/redux-symbiote/issues?q=author%3Aartalar\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=artalar\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://kamyshev.me\"><img src=\"https://avatars3.githubusercontent.com/u/26767722?v=4\" width=\"100px;\" alt=\"Igor Kamyshev\"/><br /><sub><b>Igor Kamyshev</b></sub></a><br /><a href=\"#platform-igorkamyshev\" title=\"Packaging/porting to new platform\">📦</a> <a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=igorkamyshev\" title=\"Tests\">⚠️</a></td>\n    <td align=\"center\"><a href=\"https://github.com/ilyaagarkov\"><img src=\"https://avatars2.githubusercontent.com/u/10822601?v=4\" width=\"100px;\" alt=\"Ilya\"/><br /><sub><b>Ilya</b></sub></a><br /><a href=\"https://github.com/sergeysova/redux-symbiote/issues?q=author%3Ailyaagarkov\" title=\"Bug reports\">🐛</a></td>\n    <td align=\"center\"><a href=\"https://github.com/ivanov-v\"><img src=\"https://avatars2.githubusercontent.com/u/13759065?v=4\" width=\"100px;\" alt=\"Ivanov Vadim\"/><br /><sub><b>Ivanov Vadim</b></sub></a><br /><a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=ivanov-v\" title=\"Documentation\">📖</a></td>\n    <td align=\"center\"><a href=\"https://github.com/antonkri97\"><img src=\"https://avatars0.githubusercontent.com/u/16399895?v=4\" width=\"100px;\" alt=\"Аnton Krivokhizhin\"/><br /><sub><b>Аnton Krivokhizhin</b></sub></a><br /><a href=\"#platform-antonkri97\" title=\"Packaging/porting to new platform\">📦</a> <a href=\"#infra-antonkri97\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a></td>\n    <td align=\"center\"><a href=\"http://betula.co\"><img src=\"https://avatars0.githubusercontent.com/u/421161?v=4\" width=\"100px;\" alt=\"Viacheslav\"/><br /><sub><b>Viacheslav</b></sub></a><br /><a href=\"#ideas-betula\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#review-betula\" title=\"Reviewed Pull Requests\">👀</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://ootm.ru/\"><img src=\"https://avatars1.githubusercontent.com/u/1402016?v=4\" width=\"100px;\" alt=\"Dmitri Razin\"/><br /><sub><b>Dmitri Razin</b></sub></a><br /><a href=\"https://github.com/sergeysova/redux-symbiote/issues?q=author%3ARusTorg\" title=\"Bug reports\">🐛</a> <a href=\"#design-RusTorg\" title=\"Design\">🎨</a></td>\n    <td align=\"center\"><a href=\"https://github.com/Finesse\"><img src=\"https://avatars3.githubusercontent.com/u/9006227?v=4\" width=\"100px;\" alt=\"Surgie Finesse\"/><br /><sub><b>Surgie Finesse</b></sub></a><br /><a href=\"https://github.com/sergeysova/redux-symbiote/commits?author=Finesse\" title=\"Code\">💻</a></td>\n  </tr>\n</table>\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","homepage":"https://github.com/sergeysova/redux-symbiote#readme","keywords":["redux","flux","fsa","actions","react","act","reducer"],"repository":{"type":"git","url":"git+https://github.com/sergeysova/redux-symbiote.git"},"contributors":[{"name":"Sergey Sova","email":"mail@sergeysova.com","url":"https://sergeysova.com"},{"name":"Viacheslav Bereza","email":"mail@betula.co","url":"http://betula.co"}],"bugs":{"url":"https://github.com/sergeysova/redux-symbiote/issues"}}