{"_id":"@redux-ts-starter-kit/core","_rev":"54-ea9cb58f1f752fdacb9fcd0fb283b5f2","name":"@redux-ts-starter-kit/core","dist-tags":{"latest":"3.0.2-alpha.0","alpha":"2.0.0-alpha.6"},"versions":{"0.0.2-alpha.3":{"name":"@redux-ts-starter-kit/core","version":"0.0.2-alpha.3","main":"./lib/index.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && yarn test && yarn tsc -b","clean":"rimraf lib","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","ts-jest":"^23.10.5","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.0.2-alpha.3","immer":"^1.9.3","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"677677b696d6309614053618410abeee5ddf9592","_id":"@redux-ts-starter-kit/core@0.0.2-alpha.3","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-oCY+Rk530ZNLBFPkGeTCXolaXrZAuyxdpIakcyML8oDOXWCvOXktpFEDHRzFxGxvE/kAQPzVHY2UKp+LAslLbA==","shasum":"dbe220649263d59b79c0def4b9b68a4e62e2a4fe","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.0.2-alpha.3.tgz","fileCount":24,"unpackedSize":36748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLy/UCRA9TVsSAnZWagAAuFYP/35xg4dohbJHp5Aalz4K\nksMNoflm2i62xsc5uCgcB9DOU947/NWsBG2VQX94NZ8wLLQOUFZkm6rhEvsN\nS5z0VTDO8pLHye8wX+A2W/t+bsq9QX6o+fmlUN0SdJTX1tb32VyulMTE2mvr\nFTerycuYQJZxdMoK6qvhUBBHiXgoAX1DeXxh0hPwCim/fTu82MEaXhGYP22y\nF7OX4kV6lHM0+dW2cKUKyynj28h/t6QdWPfCy4v8rGO3dQKfy1G+fsRDXrdc\n9Orq4+N1mUwpxB9lK4RA6lANVn5umsSwWsGQ8fCpR2TIDyf878vNGRTp/I9e\nSytA15xsH27ewNqAqNhy8mFL9qY03qOrG3jjvg8pXyfumvl/J0rZWiAcozso\ncBWXpZj0/gKo/B2hjBTp6q83DYEjyobfDD/wdtoj3nbvbTolUxXGcygWE9J5\nGElsCs1Kaz4KVTwwr7PpV8sHnC6VyXrCkZw/j+c8G4PIGwtlPwBeSATdLthH\nSnmhIB1rkqB+fkWaQfHrBHhMKrr/p3jwSauPHhI6F4H2/CS2vhZh4gRNE1YZ\nkFI6U3uiWPDhNZscUGEsNoZvIGdZPij9+1aLwIt3i9jfHr/rYN1e+aR+7bjV\nSo1YUjtortCBocUXuNvswm30b5RiRKqPIbDW7vWQSw0S4SIS42C8hC110Gdd\n1E8p\r\n=g563\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNCrOCh0fwHGq6RA5Z4wNjO7WdgY8R69RkQREwx5UOBQIgCyo997r/aBKa/7UDJeRVPzNpIeszt+QoSxBPRCeQmeY="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.0.2-alpha.3_1546596307424_0.7111828867555925"},"_hasShrinkwrap":false},"0.0.2-alpha.4":{"name":"@redux-ts-starter-kit/core","version":"0.0.2-alpha.4","main":"./lib/index.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && yarn test && yarn tsc -b","clean":"rimraf lib","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","ts-jest":"^23.10.5","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.0.2-alpha.4","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"34ff3ab8b5cafb90507b5638c916e1ca72acb9c6","_id":"@redux-ts-starter-kit/core@0.0.2-alpha.4","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-x1b7adhVYmyzz/spOOnIxd2JEc9aNy7/RBCxEdg+9IZ5IDumJp89loeEO5I3wdNqCFSME8qSX+P3GBgHxgzggQ==","shasum":"9f7e11ae5164934aec890e4d48276d217874a3fa","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.0.2-alpha.4.tgz","fileCount":20,"unpackedSize":30673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLzOgCRA9TVsSAnZWagAAVGcP/RkWPeCUiQnKW7Yf+R5L\nhyb5tjZ5hAjhWM/i7A/91SGKFF26s1ZZN9T5BG5fE8iP4p/9Ie3SFxTq32tl\nY+nQOkzPPz8oHjsS3RWSPc0oC8c7SjDpNQc3DEP0cre+5FotgNcZFwzZlWA6\nRBKJwNrRAafVwG+1CKnGZilZPZ3uNky4txXRPyvKICeSMaZPoRbGk4iX0GKk\nBeJq16sjElnf2kmQoPL6bHJ+MPaZ/Tq32yBIU+PXlmqHogG9QzdaUAyTNCrF\ngJPVThJPoIriiHZvFJB4AQSz0wr4qfRUM+SGqDVLvIGWl8obw6sWxSvlffEs\nE+2XybCdh33dkcUO/Tf+CHjwNsDRrLv7HHou5SuimY+1VfNyH6WYLMpBJmI5\nF7WfIZvaoia6xwCD78cvVX0GZpyfglSI+5/sgiWDWbdUwMLGHTwL2oFGIvN9\nivq7TyrNuwrCG/YE8BrGDRknB867cwzRL0qATvlRSw3Pi4XdZw5fRxrIV+tw\nnqNBTgg5W9BUdCNaj1J9Al8u7H5K4A+IkuMl8z3uGjePCNPiU52w/sDDwB30\nujZqT12bQuYwkPIy46wkE8GRKNGfOZZ/GpPwTIwdl/FIkuyCdcRmefhfWH9Y\n9C59eYy/VRE4iwXmAr65gM59PvUFFKptXtNyRm/BanVJwWKRFxq9S0nZbRwg\nHcTN\r\n=FFcF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmwx6l+lr2Ijm+scvsvITeYZ70NTBq6bdlFJ8aRFuotwIgIzRAExhl+dkcYVTYN5riN90b/GMvkcqCgxAlG5eQfE8="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.0.2-alpha.4_1546597280237_0.5955596374340066"},"_hasShrinkwrap":false},"0.1.0-alpha.1":{"name":"@redux-ts-starter-kit/core","version":"0.1.0-alpha.1","main":"./lib/index.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && yarn test && yarn tsc -b","clean":"rimraf lib","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","ts-jest":"^23.10.5","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.0-alpha.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"a9252f2f4152836a9b9e70ee71067dca313d59cc","_id":"@redux-ts-starter-kit/core@0.1.0-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-cBawMMqGvngjhnrrgJu/wBH1Gaj2MJGQq53P7etmeetggfQFWBHupBVUXNvxrQAFCUvtBcmg2mDIFrtm3j0Epg==","shasum":"e3db48488f97087f112cd2687928c4a4ff9b08d8","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.0-alpha.1.tgz","fileCount":20,"unpackedSize":30594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL1QVCRA9TVsSAnZWagAACeAP+wZBAuEAq8Dxvk4AfIWu\n9ptQnecQABzWvycPt6wEkiX2g9r2le+6OQCp1YNNQ8kYAL6ZlFzTr6JRQN/C\n2+E0Sc6NWcY65h+TurZO4HGH4gCbvKBvPEWC/kXLBG0PfVivMAqgT9OjdjsA\nQu35tZjA11fafyqSRBkFGAhQnXx2ZYPvk7HQZTj+vvUSs8XHrZM8Lvw0ido8\nB9FiIthe3z+Mp02Ykv12o8+2ts24OfN87nboNmtjadFhMd8+oIYQ2RnSFJjD\nyrJGeBn4QRP7MgsshXmOp5XttgO7tfvAAIdpDrjE6f/gRG7uC/qDQQXtT6UT\nlPO1S5T76Hdp8oK7LOIdp5vnluC214Mmd0+dFnEHVtKGLoKKUlXHYXuGaWAD\nH53cteAoLyWByTf2ajpB9G4ZPHeDBaaiytsrJVILXYdTx5CGeX16mMWrwgpx\nYKLYpk516qI2EOFlJdNX7LTEWydwDpV56hADIP3gTLZyI2omYRqTKBwope5i\nG/zctXqUQBMnLwwvhkoZ3ersk5xxZvhwRAtL2PYkLq4o1RITjvbQinShm45v\n3isHq0oOPZxnfmgLaKbn33Oax5bznJZazmGgnWzifdjwLrMm7MCz/CN1vr+A\nUp1uGy7af6zkUPkfYTYfsH/P1NMMaEdA0YYlCAVjVEZeMEmkzEaVdSx+Gtbd\nDfE+\r\n=N4po\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRkii0bfdkbt9nGZmi+qNIac9eKeYz1ApnxHkqrR9Z5gIhALuv0cxWCMo9OpxvI+6qgoI5x6j6W01il5ttCiuGOxo8"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.0-alpha.1_1546605588560_0.28122797372723074"},"_hasShrinkwrap":false},"0.1.0-alpha.3":{"name":"@redux-ts-starter-kit/core","version":"0.1.0-alpha.3","main":"./lib/index.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && yarn test && yarn tsc -b","clean":"rimraf lib","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","ts-jest":"^23.10.5","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.0-alpha.3","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"696f89633eb8a55e13fe46ae9338a8d8d107314b","_id":"@redux-ts-starter-kit/core@0.1.0-alpha.3","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-bSDb03GS3TG00bURP45MWxS4X008zq0EeEwbAaJ9ggKTZW2n510z9aXXfzxWNSHbzKcgSr0/db7YK8KhkXBs9Q==","shasum":"6069b918beb85a0d521fdfc55b0caf68c8ba5e28","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.0-alpha.3.tgz","fileCount":20,"unpackedSize":30607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL1upCRA9TVsSAnZWagAAiaUP/ROEq59y0wzdWQuZz+X+\nkbGFLLn+Paaz8JlhsXX7IGbXdQNN23rIlQjeavxfcC+sjxQ6PyW9Jvlrhzqv\n/f98KV9uMO0avY6vpTYJnYCPe2DOQYMgv/YkltB60T2l+zS8YOuCirOrX/rs\nRLNfzdfp2Z69rxLO2rmjqhk5/5lklr/0N6jtN4tm5NyAgBsL/nB0GTLzRcpp\nK+01qI7c4kEQNFuULQLdcTcJqiDBHlBNr+Ozzna62MpAOd5PVR1otMnaB3el\nei91hjiCcu2ZSpBp/ty5o6NngHN0tMFrEg31wDPNrGJlIr35y4AnN/vaixku\nG9Fj5cVSwNXqmQA3kEN1zSoTfXYz+lIj1iSZLeTSHxInhqzP7FmVsMJBCmxa\nHqvS4AMZ8LwMiw1mSe70kTLrVRXwFcYCdFndkB+TVc01nn6GBFITndJbuGxa\nk6XZc066x7VekDMju+aH0gCc6GDGfpYCGM3+diOSm8zJQN19yKI4ZfojDBxb\nRQtIwrujaAd6A1lhaL6JyukFPEZkWvMNRL3GO2dasHBNyjh5xdncp2DsAhCD\n67KRyBBIPQXifAhgMam6JE26kMkL4Kf1HfrEg7yMzIn69m+YN+TwCb7QJo9H\n6KyTR3LIeJGgCvrLzUTrOTOmX+73Py09/gR2lTNKNBDUIoA8F+UAEsmqut26\nuFbG\r\n=tyiU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEg4Fx9V25PaU8PZ2jKddtw3k1mGxSNLPA7wcB3bNaKxAiBsm9uxrJJqIKpAZT9LMB53ySlTt1p7T0twq4p+fw/7KA=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.0-alpha.3_1546607528692_0.9162822312901349"},"_hasShrinkwrap":false},"0.2.0-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"0.2.0-alpha.0","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && rollup -c","clean":"rimraf lib","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.2.0-alpha.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"ed6c70d84f5e5420da32716bea6a3c484159f1f8","_id":"@redux-ts-starter-kit/core@0.2.0-alpha.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-RAZB3YwRH3+4f4Xxx0OwiaD1iXxw+3T0VyY++8wDTfvNvv/TuOBcRY1fY8U+xgBdsHHFKjHdpJ7FQ0jZ+mp2gQ==","shasum":"02bcb1d1f54f437d89fbc3d5c29e4f91bd716965","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.2.0-alpha.0.tgz","fileCount":14,"unpackedSize":30604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL40TCRA9TVsSAnZWagAAs4cP/Rp1+JW4+i/3oztshELC\nItdTdb8Ll+3hb/7G5UtI5AHWRz0+CYMtY0iDOCT1jaSJiRirIutZOJzcKh1q\ncEQBpi6xJWrfqElHyAOF7QmVkLhLyN5W2PI69YF4bXa7FHye8Y9QjidPscph\nZNiKr1lIS5ISdplofibmcZDtcamlGLWQigenOPE8binhTgLh9kHNO26BxXdq\nmAKDxXA/3nXJTTuubFbS4nZF8FX0m+hSKX+uiWsdsPTEHkaCyD1NMV6OjFpm\nhpgjOX5q7aTvWRn+8Oj8Soi2qIOF4tZKq3l7t5woT2r6FjU+ac/CRxWl9SyH\n00oG9EZ84fWQA0qZ8611wJ/c57hoajbsnSohR7VV5zQfKbiaO2JWL/V6V23n\nr6/1Hqw/WVb3oYzwe28mkza45gdu9VKz4B5Qiux4/BOtFt+ZmHlDbqYXFCtv\nFBBHfBcV+GQNZY1PpsOU59VGaZSxdQmZ9CrDUha2e+yW56CwDjYarpz2zB0E\nN1jrt4HtthXShzfVE9fBKKceWqUaia71lzTN/QDe/8lM9vZ2butXflZ9sR4I\nMzD/v437Ecu28CAaOm3hxVUgvSaXJqv64xLvBtH+OECqUqeIx8HL7vCbjFhC\neySYBDTdPxQqbD+7c5giSY0q6/oL2jaKs54Bg98AJG7GJEEB/pFsO84dTsFe\nI6uJ\r\n=JPpp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUQiyqO/EfJ8K3o9rnDin1IkokoeeToX9sB6kk8ngyrwIhAI+oo1a/J0C8ZoPdQuI8ICWWFMXJ2ka8P9gcZxtxT+nv"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.2.0-alpha.0_1546620179099_0.10700837159540089"},"_hasShrinkwrap":false},"1.0.1-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"1.0.1-alpha.0","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/**/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.1-alpha.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"91884c205879082df893c4d9fea8f34903613a3b","_id":"@redux-ts-starter-kit/core@1.0.1-alpha.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-WfscVp8Ea9M2GK976Eu2Pldv3t9qvqTLNdWHWfzDvVx0vsql0gFo4jzLFJQHBlOfZAgQFzHALGrWQKv/GVkjpA==","shasum":"5caf589feb0f9e9c2f32429138d1797766c4a7df","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.1-alpha.0.tgz","fileCount":14,"unpackedSize":38484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL+/oCRA9TVsSAnZWagAAVCQP/iY4Akj6SRUowjq0LeER\nvq12Vd2VW0k4+3ZpjFxTuWXNVdazzcn1zR//oYCyebusRmsd3gA6C9JdL6l+\nKmzgM8OmauTzZ1tuIPVR4IMbpsoqnI9xyXNiVevimxyXraiscbTBGVyRQUl7\nC71tB15oawdipu7xec0oLSsywduwVQKfpwdJHlwhGHCak5WJswsTHrdLoTnw\npaiRd/fRoAtqkEVEezoCQio78u0+9Hn3CXSVXO9D37Jxki7lgj3qB2z3U117\nlMqaAOBIEjCR2J/0jlJyKC5RGA15vJzdcxGtjGWImV23gz5MUezGw/l+kFWD\nRiBI5M7LtXqCs1cagF49UOrZ0sHGbtFfVbciRO9fpqQnrBkJidBdiW1pA20J\nZp/X+fvcp7giBjPwQOeJiv0nn23im9QIOraWgJXgGO/ZwRmqrZg7CZmbraYJ\nsTJ3AehCgMR89Z3pV4mD8SNjJjy+haX75f0HzLlgIkWTUfhjlVlmKOJce2LC\nO35qVcJ70yZIdLU8uYTey7sZ9oHz2pgC4p6eK+Bpk+ktep/Mky+3LJ4wtlOT\nbz7/7rqRE7LF6JwyMHjnC3QnWAKUnmk/vUv229NpI4mloW9i0qIC0HKeVE+K\nZklQKef9k+bBswE1ulI16sbJUf11i6q7bywijCGOizdcWmNRn9+tGu52qPWV\nYblM\r\n=8Vdl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGRsTdsnx4UTBbYfp779+239Of3+MP5vD7bEOGWbfP+iAiAOYK9EoHDryERZZqP0ca0/Ou1RDccP2ztTZXZupKJiYg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.1-alpha.0_1546645479070_0.5426587561786824"},"_hasShrinkwrap":false},"1.0.1-alpha.1":{"name":"@redux-ts-starter-kit/core","version":"1.0.1-alpha.1","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && yarn prettier && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn tsc --noEmit && yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","precommit":"lint-staged","prettier":"prettier --write src/**/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.1-alpha.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"lint-staged":{"*.{js}":["prettier --write","git add"]},"gitHead":"e91b226bcff1cd1a5a4f86f988cd6c861f1930be","_id":"@redux-ts-starter-kit/core@1.0.1-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-nANTodt5HWFz1cRu4wDh6dpUqHSwgXgKWopXDg/BONVe1JpMCqRrpUlzgNb4iJvbDgvy8dZFl8uoUGKRo7P/dw==","shasum":"39724e42f006a0446030102c2994aab4f5c2072c","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.1-alpha.1.tgz","fileCount":14,"unpackedSize":38498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL/JPCRA9TVsSAnZWagAAaP4P/jV/1mr/eKTSQBqdo58D\nPPmTT3XS0i+da/dnjSCUVnf/a2fFDLvyp5zO7HeFaSbUgqe5HauiMm4vZ2lM\n4jPaJMlIHx0Q22T11kLRyIN0iM082dTXhScojUv+e8KXwew3qipY6960XiDp\nujt3QvDIqPfZrDIPTOH3t6ytVzpSJr8+mS5GKHLxW8HwZVXExxGlDcsFaCYm\ndrv8ZqtTdgaGA/sAnuDva6m/sMRRekfB5SbP3p/ehsLcu/e5xL47Kj9srVmN\nKgVqruCzYm4WqHN3W6w29N8y3WDW+bPXyrUMWAa8EczyCvxXab6HoYr64ql2\nQMP7q0RCu5FqK8wrmW0LFEdCHXQm3a5xWjoHsZzQPLFlrsBbOsrw1EATQLdB\njIwNWfxcYX8xr8bvxs0a42TYH7z2ma3Vk4P3+HLDMgzuyyXNnEkHtlwypELa\nBXOp4SyYyVPP51zxGp2HsVbDqvYYHyI3f3NF+31Cr35WZV3HzBwlN6JOLtXd\nRB0OMQUEsv9TA1+RSCfowrbCsHdkoU6LSRqzOoRNn2ZOmV0SnLs6rP3NIe7J\n0K9vRo+YSDqNpngEiuj1XHsyDVs2mgEI/mmXQ/lrzuknkuZ28c6+PG4cdUgP\nhW8+ov2AxoolF2Tq0muQ81wFSxTHNCH6GgLBGgiy6VZhna4yv8wr3EOWZ52m\ngA2v\r\n=8V3l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyOqwa65bwXoLPzsyZJfcRJsgv28KI1iLgdkHucwJSkwIhANjViBRkrrsG9PSQiXL3wRW+aUmyIagOHec19ARq0LgM"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.1-alpha.1_1546646095000_0.8494975359029806"},"_hasShrinkwrap":false},"1.0.2-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"1.0.2-alpha.0","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"rimraf ./examples/test/ && tsc -p ./examples/ && node ./examples/test/examples/sample.js"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.2-alpha.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"2113c0c2cc18b49d84f22a801a77dc50ac49e3c7","_id":"@redux-ts-starter-kit/core@1.0.2-alpha.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-coMRt4xAHk5WaK6Nejncz3WAr2oauj5z3zB8GxxjaXqRteOPjmd1lrivPkPTd4PwHDO9OHzSqOv+HYYSf1FaSQ==","shasum":"2025b9347adbacf9c0f52c8a5a925a5b1052c1b6","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.2-alpha.0.tgz","fileCount":14,"unpackedSize":39595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMJGNCRA9TVsSAnZWagAAXjcP/1EgVFsWGgD0MGc98j3T\nTNK4b/pag6pBGiMGOEIYk9/nafPod7MeDXZcaVk/QWPnNgVguJW6Ad70hy7r\nldSqhzEmQzT9W9qTitek1yFAs/l4+iHsX5cbOT5uecSudrgdkhYmi9T22Peh\ngv2ZedZ/mcn0dF6Hv+w+ZoaTQwgbVXojmPcumHv+UYFjTfo+3j/PSHpZ3hvd\nEmREzlA9xtpG49QVF6KQU79K30O35ehCpgY9EwpIJ4d3veayuRHgS6JRgvm9\n6Ykk9xOBvs24fcNf0KPzZ1bWI5LmOLzANfLnsua5eWWpjlvmmB6obTsMQr30\nxZ4f4Uofz3eRJ4dylE8sqPRzdJJ5SRxNDzKbVajx5Uklop0qXza/iL21gOYg\nRhZ8hnfzS8kPdpFKV4elax1zJKFFskuSt62mfKL57WfypFMeGKoremDI7Zgm\nmXwOv6iR3T2rFxybkHen4mqrFuqXz/642lbm8GG+Ks3lmn87WvGTaz6xy+QN\ntN1IuuAnDfFxjKG4X5EfHn2xV6AAzNSQikAYYCd2ZJFbka1X7e1bZexFPOtr\nLbniJ+sXGAKi9PC27pE9ilVdFPJath5Jo6X2Jef1aU0kWhB2tddqjRzNDFkO\nH3azd+ohDnxJWUW6mMumbor0y7AX9xHNdgvI34qJ3AjBZEizJOy8Pe96kr+4\nXL2s\r\n=lqKN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDT8P3Mmpnyx234SZOdLc4neuEaZEymhhPC0BPnTK+LAiBP6IC3/fSD+0AwWmv1YwNu7iVbSxbk6MfJ8kM5jb83qg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.2-alpha.0_1546686860427_0.10780033951073276"},"_hasShrinkwrap":false},"1.0.2-alpha.1":{"name":"@redux-ts-starter-kit/core","version":"1.0.2-alpha.1","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.2-alpha.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"28456747e8e67557878efe682bd07d7e79634f52","_id":"@redux-ts-starter-kit/core@1.0.2-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-0OQ+lbZVZ5V/lJscbH78M01HA74R4PqqPuyWkYW6PTzA0IKDjIfh8x8hf9Fa/FyX/AXDK3FyyOmrmiX/ZeppwQ==","shasum":"936c4f40c2ba3e870ce7e2443c0ededbc8cf01ce","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.2-alpha.1.tgz","fileCount":14,"unpackedSize":39564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMJgaCRA9TVsSAnZWagAAdR8QAJ9xonrrKSeDZL2WYJum\nkBO3uUg9D8nFhIvu4q0IaASC8+kTXhBwkXKDdioIc0PxPZiZ1e8hSnIvGVUV\nuDfKK7T195XMradda6pTyDafSKx9jD/fScabacpVd0bkgBspVfjAz9f9w7nc\nx4xQFeHIqYn4zCenxs6nlF3Oi9HwshGIEjXYQmJ3M4SlKeF4cNy+v0sgJ73X\nsSJPYkmaRfQSCheZRmt2uu8dCdfB2ns7xnBP1ibAT6i5nBZy8jWDxRcudpW5\nkbVCD7Im41fpYt30ScdkbQMnkHOwQEQIWYN7iHrP0+M0gokWxiCdqZxYxcq+\nFaWsy3MEBBPBJQHDp3zUFDotCSmj2TCASL4OSKT5/YLPWc6dnGfbor9T0QLA\nBUuovQPi1o7eGcSrRUO8F80LafnXi326ottnrGlnT7g8GMVzRoXH1Pd5JHnk\nYgFwwFnjI01yM1GpDMCUE0jPjxLJwp4Za2fOEgdMLxK0S6A3IzIQReCFLfH4\nqRYfewpaslLLn9RuDjvWRmJWaf2RMxgegWoxFxrx+4W7kLgtVbak/wBr/1z4\nIcdR08KiXfgdZXDiik1aaUnD9xSLSNtlqplwh/VeTfhw/n0Va1qm1fvuhQvy\n74dezPUCHL0GZoxbaH0gl1MptTICU5eucsC9LjQfhc6ksPgxqFIq/HkDRHN0\n14D5\r\n=DhUK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnJGsGuaJve2GhH1K+Gcza03ZsTYjLejZQO88+kFoDPgIgVWFU559KM9hy2/CODeDpFsjBvp2o522rUbRLwCjedYA="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.2-alpha.1_1546688537674_0.17687659692809787"},"_hasShrinkwrap":false},"1.0.2-alpha.2":{"name":"@redux-ts-starter-kit/core","version":"1.0.2-alpha.2","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.2-alpha.2","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"cd8e4b6e68ab69a906daf78d5d965528ece5ed98","_id":"@redux-ts-starter-kit/core@1.0.2-alpha.2","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-Ye1cF1PSgzZqi9sMDmb8mbMLy/sKXPF1GNDRCW6ymo615q1XaTiJoBafWRqLN6OAzK6Z0lPj++VDDoozkE3KCA==","shasum":"3be778954dcde078a9041e3f28df2a11ce92fd6e","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.2-alpha.2.tgz","fileCount":14,"unpackedSize":39568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMKSZCRA9TVsSAnZWagAAnN0P/1ZzRPhHhaLzqJuJYvHQ\nLSJYnXSpEbwpCfyHPx76QR8aOkPis4DIvlA8StjtI/oXSsqW9nFWdlSGYtv8\nlQaXbAnVFN+HdMIN2sEmoaFE+egjepVVvGGXlNt/m5PBFISqWUxUg2QWs/IF\n0xkegclu2zry4n9b4h/0aT2tg5PwcdqeOzhOdjYLJW31fG9aOzDJaBmwmJl/\nqBjxikP2v3hUEK5lUBJu3ZiS00U22lw7wUCZgWM21Oc8+nv7jGOxq4CtLIJ2\nkGeFslgaD0zzAoQznyMcHm3AtP8DJjaOtFUNt1bZGMUBg9zkTioddAk9u5+c\ngxJYHaLP872JRIaeWWdwda1f6WaAgLdeRoRTWJR+7ggfNL8ajWj+3AEMszms\nWj6Mh+BG26ZITY+eeFqNhbVmgVgsUR5QPRq27H+SoByyS16UIvidEAC0ZLn+\nQNtZ+FnDljrczH1aOk+sSgYgA7iAzsNvekFFJVG1+T6keMLjqpV/OHnM5JWy\n7BiFxZzGZgmVrfsoVPYAK60sPSeucSQq/wWqG/ULBmAWUn3aM88z5hI7YV8+\n5Y69hthrTAKNYUS8oCg9+pTKqnydIZWmixe6TpOIUcjaJjvPPyMghQE5SkCv\nsDxMN3gv6y2SnxKdXpYSBTcdsdNPAl71egeNMNCGB4z5bWwriD4VZYPQW0sb\nz77n\r\n=nQOn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEntTDdbjgG15+U4nYY9x6muYHNw9TruaHoCKjHpHXyXAiBQQb4x2/A6gd13sVrpEpgfNg2UKkM7h+6T7iB/zwOE6g=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.2-alpha.2_1546691736167_0.18757594427116886"},"_hasShrinkwrap":false},"0.0.1":{"name":"@redux-ts-starter-kit/core","version":"0.0.1","main":"./lib/index.cjs.js","module":"./lib/index.esm.js","types":"./lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.0.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"249cbbb1643bb3abf5495b5e964b83c9c756de27","_id":"@redux-ts-starter-kit/core@0.0.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.4/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-OM4fmEtZr1XWVDWgrUof8A3e7WepTnh/q5Ya3XHtFZ0SYLTLIjvZFbW5dJ6wWoIZFK48Gv/7h2WeJMJe/CwwVA==","shasum":"f5afc30db7ab10da6ade8d8e3103a533b979e640","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.0.1.tgz","fileCount":14,"unpackedSize":39552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMKcFCRA9TVsSAnZWagAAkbgP/1Sjy5aYwh1qSJS6/UsQ\nGHEgBamaUQ7Eu+citaPbSgojFSyzDzoXmgkCMbG0SCtxpDvtEevBB3+Lget3\n+F60qdnEw8/OqX9FOeo1OvItM0aKGBtiNpHYjNg4RTKpTvrtV1wnVrWLY4Sd\nKqw+SdApR00gZenjDq/sRJ5vT4esd1y/nbw9NimHYLYw5aGqeNfugqjufiTA\nGx63t4GPU2QNm02dVAR4cjtI0FtP5ex3RMD1RFAx0rbAqkKin/TT/Q1zS/mO\nCadz3Kv1oTgsD6ShTgrHbxQ/Q+kW4u8Mto7+3VqbsUAIgwHWiICwz3syR2gM\nm/CjyDJK4HIHWrelZ23tTjORQ+/4IwNVFJZO8PuGmC/dakfyiklvZgdXWPhq\n/DtTGgj4R9XJ1gKPmyJAIYlO6SZNkThTdkKzqzHVhmee/1rmsEtxBvxeK7Z5\nbQMznYN6lRUvliefs1mebRIyiNZCz1qfQyrUoibe9YkpP7zhGxwmegoalvng\nzS3Jr8lXWKxxVhqFiMlWFDknfGuP3oL23/aYe+Y0SY/edRmD4/BWkVyZR7YG\nU9yE6GpJ72piSbm8jefDOxx2m9TYkwTRdCcD1Biz1FzRZbvzo2F4s8vXTTGm\n4q8rMsIt6M6+JL76Y6BoKWe4J7rbf2b/3e7/WMR186JnsyTxnWnJBGLZdc34\ne1Sl\r\n=csfX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtYdll22clsLhtPakZeFURI12jIZ7NB3ZZwV690kwVjAIgJxXDfkdh6z8VQxUKxvro9Ogrjz8KOdpTf4pDUjU+BxQ="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.0.1_1546692356316_0.8558846861840581"},"_hasShrinkwrap":false},"0.1.0":{"name":"@redux-ts-starter-kit/core","version":"0.1.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"7fe04fc71fc4d762ee5cb5ce46f453a81ea91722","_id":"@redux-ts-starter-kit/core@0.1.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-cHxBO4IuH8hSwi1Yy8S7wXE9ZyU5RRW05bnyD6oH/wVMDm5c5WYTgqd1ZtnEaTQSNK0EwyUwAK+aaLBuVBY5uA==","shasum":"69d5920c925291827620ae84bdcfc1adf8864da1","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.0.tgz","fileCount":16,"unpackedSize":52965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMNVNCRA9TVsSAnZWagAAhI8P/jngJGD13H6fWq63ZsCR\nas6dkj7Puy0Q4NqtxzxUdZsumnFb2Jf0hHIpOw1U4BULAXFHg+PnFoZQd0ag\nPY/YAxJseiwvpbVfEpKOxW9UJTqhAPx+cb1PtkWqg8SSdOA/K8mREVG2ek/E\nPJsV50byzPK/x+MCGbVWc+AOlV2jWfb3mfWiLz7iEMK3CWDERJPzwAgnkNj6\n20Q3YqiPyHfluLh+3LvRyZz2cWq9rC85Uqr0Q85g6o2XOFtSQJCex/GfND1m\n5TwGU3GU4BOoclwgnRgu+HT4+ae4VQZ6F5QzR/DuGqG2MuiVth92MiREan/6\nc0x3Ia+d1QNOocmteQjuY6xNm86295bYVk7JsaJ4UosDT+NBMn2NQfQWRsAj\nc1U1NNdUh0ZrLg4pPK0HKhRGnVRbV2SiY/o1G2Twnq/w+gP3yXaf8zC3S/02\neVhRT4axM7KvQsAP/Bzs1zgNdjlPqr4gnFK3i6cBpxiXu4Y6Z/RF38EkDbJh\nprNFIOfHZOuVGhXisxswPI1M5+wNIVA7TSUxgT/wZmRxK4pSrCKtjCfXt0DP\nBjuamacbK0N4zSUfDW0KbP17J4T9FbC4aCGeqILC3IeZfCPooNsb35Z2bRTY\nlDL22zCBftvGVud5vTLsq4BeeU5J2X9t5GVWpXPTi27pZ552WDl3y0Gb3ynP\nwk4T\r\n=LhhK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuZov3cHabdXs/HvF23Dp0QhXFn0p6W7GKms3duVFfFAiEA7ThXCq7dt/FJXwLoHqOrv5WIR5ZXvJIemvua9XPeSOk="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.0_1546704204617_0.6603668475266147"},"_hasShrinkwrap":false},"0.1.1":{"name":"@redux-ts-starter-kit/core","version":"0.1.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"e5feecdcd998e781acbf3f9a8bfacffce771217f","_id":"@redux-ts-starter-kit/core@0.1.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-RlSQ+bQZ2JQUMViPC14Pjn4VQdmHSlViYQABcm+wntqTj8Eic6UQ3xztRp3wzQrpdAt9bSfXuUNHOHYpwfxKSg==","shasum":"8d669e740696f8770552eec2f3a569f562692232","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.1.tgz","fileCount":16,"unpackedSize":53086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMQZdCRA9TVsSAnZWagAACNsQAIz/TTEP9N2fZ7MPPJBr\nHolpyaXJw87yPmJz24DdExMUslaA70BO/GvSJT1up1L2l63C/7e+BYAsXlTo\ne+PeRIJ3wIl54OTphEYL6Lg6bvOFIPlrJACKNX5s4yVEs/K77BJ+4+kOSP43\nEsbZdxZmkpnK2h4KlVRl9rManWX5bHBsgF00qtZDB0VScMFMNoftXBJSaaPU\nS6/yoPdhLKxq4Ak7J1hZUWo3SrfbgJZ4ySDu8NPL3OvLjqlGBw7jU55oDkK4\nr5L67S6aco7MI0zItP0eGwUb+kaIjyGaHhX4fYha0evDQR05s8vn9O8mF7Sl\nVZvz39bBz5xUitF2hf3qTttoHUPwbEG48Nrt7dhTQAi7ng4SEDgz8Um1Zssw\nB6CpdBguxgcWq3Vy/Ra5X6EdwaeJ5U9vO9oKdGsA8UJeMhtS8zs9UN9/pBhV\nGVodqSKpRs0alnYRbVEM+8AivpJf6+pO0IiuY/CpDXIKyboKa2i9zueea+cD\nEY5UAsBjxYgNdSalz4hrq9Voob43pScg626a/aaVT5whYiOiYGJyoVDSdj5v\nCHII6EjLxQDhrAquowWKbMuWpX9Ad7oUlS8Www9DIZA+uYqXtqa/QL4Iwnfl\n1yr40Go7GGtiKJAfwylBKyO4+5F5+L5r6+wMqKrxubV8r3wY1wkwzq7bI90h\nuxrk\r\n=wJn3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8auF44aZs2Zg+rXpZRq8DYazuzgujOKk4twH2Ht55qwIgdzNzCb/y36XrLefRBb4sL8vKcFBCbKotn/QLgAKswuc="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.1_1546716764186_0.8745033819818893"},"_hasShrinkwrap":false},"0.1.2":{"name":"@redux-ts-starter-kit/core","version":"0.1.2","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.2","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"865b4d04a98a79dce481028356616952aa377134","_id":"@redux-ts-starter-kit/core@0.1.2","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-H2VqdKrrxCOWhaOuXQrccUh38yi+kzhmEC9Vxj/CIUzBAWNoIPtC2VmDO3rCKdaZ8jfVic+1Yf2vg3mF3VwTIw==","shasum":"25ef6aee1f0c8d6d05616e064b4a42453ab5c684","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.2.tgz","fileCount":16,"unpackedSize":52362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMRa3CRA9TVsSAnZWagAA8AUP/iBmTGYcM6AR0OVzadVa\ntN0ErZISbTH+LzGhD3UTg7FPX10tifIwEWaKOqoyu9yUSkQm0IepBnIljSJI\nK3eIAL6r1hxcgV0d1DkWebvysA4XfNaCoWd61AtXRdJHOFOHm760s8srCg3N\nqcfvBBoTGG64orll3KTqUTc8JTYQ4nh2fdskLEwlJWgrZ/l6QDriTbIBkB9n\ntqk9S7EBvbPEpOQUlA6gXZvH0HJqU67ei4/At+MCOZz4T/QTwq2HUxg6yk7P\nWPe0D1WcusUV1aK67s8V/uKfLrkruqXhgt4L83pIm/dcPgiKqw94IgQV7qOs\nRHUgv7l5CEpFRrgGV3c7WjPv6bFVG4Z7MSWCy1hraxR49x/JKmP45H++xLwn\nLFDyVZAGvWxn46e1DDhhqK3267lg85uJoQWFbqAI3oPgRN8saPhTUeh6m3U8\nmR+Mwz5ybIu72jU3/ExNDsZwQGgb9az7vBZEQfnRjY9Zv3bbiSfYUbh1eP0z\nbkDpqD/7X+9opJfJ3/6HbNJ+uBhEMmdmb5eTl84DjxbEt9BmJRb5i6m/38av\nYBFRcCHxyfBeEl8izXrflQIdQJjwzmf7BN7Cg3EEojojo0nXWRwQ8uTX61zi\nC2X4opBqaCOJxz092uUOjc3E4M2uf6NnWMu+6658QJd62VwToej2QCrEXWj4\nzLIC\r\n=TqoQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiW06csTf1xnx0ajx4B+r87yFbYiJwxkRkvBmunY299AiEAx4MVlklYdqIGa4HiU151u/dzDRveIcNzo0XjNDNRR3M="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.2_1546720951290_0.501191578439592"},"_hasShrinkwrap":false},"0.1.3":{"name":"@redux-ts-starter-kit/core","version":"0.1.3","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.2","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"df8d099d03fc4c3912c1fb64008e36a93e8be4f2","_id":"@redux-ts-starter-kit/core@0.1.3","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-qQja77ZWlyd1ZDasBGJ1CTi8rcwQeCLOrtDS5bZondvhOKHNdxo78lUClbiS1Re6/zUxEL1Xq5QHMRR/izfeWg==","shasum":"1e1b74d9e2c458eddb664f4d15fc2e3dc1f2caee","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.3.tgz","fileCount":16,"unpackedSize":53978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMR9MCRA9TVsSAnZWagAAXjkP/0ULdbEY+5U2bwWFEvva\nSX9QsEmZvu2QVUkMu15P63QnNOY0kdELh6nruzWL6Ms+WYbsbuTCahiM0K+L\nUVZIbFXw1nox4quPCt2pthshHQOfmA+CGYvUi3kMc0s/1SE5w8atABWdQoRi\nK2oZbgCHMCHz6aZi2A2ygBpLtW4ffgMZFfKxzZzO9MGzZcRLlhqohvOhrEpR\nvYxWmJ2wq/0lH74R/53bmX7rY35uID1PpXYsDHAVvZOqjvV3IMzoDt9pxnBm\naQkAvqUOnOzDajtTZ61PFzPRAUS488aZU8qaJKQK1VykktVbOn8yCMVuq5vG\n3AgllRpPd4ctUDYRNgLAhqvci+eVLAC6Ue3arWnAUgdztaO1cHSC/NWr7odO\nB7xGVaLgFlz/vOB0lh7vmoCTfBQcphGNXSSQ3S2y2GiT+I12riRXT95Z6QJl\nuCf0hD/qJgsEOH9o2r32pxDxMX4E+haX30qcNDNbuZ6OPOmdS1Jk+jqJkQ02\nwYmwZt4ta4FYWSGrcEf11ioUdXG40i01Q0AlVkSDiFsIa5CJegMVGM8RztB+\nhT7SoRa77RgDYyzfB9Bw796tqP4hjcrvSqHnPt9bcPAnyiVe0RMAqk+pFbU8\nKIH238NbKZfkAMm8qCbStyJCKjZOn61v9Gc9EQ8bcw4MsB9nIVqVAybQE7nZ\nX9Df\r\n=HKFw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIcCdIWQA2M/7s308dGnyIlPRryIyq7yjQAh2gb39i6AiAYeTe/N8Zznk5qhmJsX3Kf0/xZc+0Pvv/zfbIBq1ewcg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.3_1546723148081_0.8232115513658962"},"_hasShrinkwrap":false},"0.1.4":{"name":"@redux-ts-starter-kit/core","version":"0.1.4","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.4","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"cb13d2bdb66d999b96980b39f53054c991ca9b71","_id":"@redux-ts-starter-kit/core@0.1.4","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-2UJao93d+wdXq6MdVPo4GXruona3yxzoaAk5Ywx2pD73yfIp5aEuOgLra3X4iAgwzGj1dKHhfPK5I9YJWZZBMA==","shasum":"ad192d7713094c7560e99ca0bb1fbfdb6f9606e0","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.4.tgz","fileCount":16,"unpackedSize":53978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMTSbCRA9TVsSAnZWagAANuIP/j3o/NPSZbfjq10UowfM\nliC9wSpsbsi7PEsqAIIACz4mCRaMwSe4VUiE00YG6zmuwrMyt62h1Bmdz+rI\n6s3d20FjB0OCivwHt8dL4WEus7FnhDfFgtLsrC0AC2j5FAElQ5rSaIlwn2Lt\nuu7vCYBS+Dd0DgIjcRQKjtKdql2cNt5qeXd062gpSPnaz/RRZlxCWLg0ycci\neZCV1PeM2GH3DmZNL0Tq5z9kwEDzGnuwMOutqpCYy6bg9pMQQcQZ8DwKQld6\ni+NJuTQFGYJwufEdB0LsHXmFj5HTPoQecaLt6HvdGM5kbA6Ilkjn8JVT+JFg\nFH/IoAjlY4lJIUTu7cUrQhfu0bgQaEspDkpRoWx2GGiJxtfGifIrHzRq0deO\nI6iZxnwIvu17qTZx3yTrzondyIrPju2RcFm3+POGv5CiS+s+RmAq7j/qb6sP\nRKXj9U92j1QoGrYopMPp028LqbNpICPDfM1bGi6JkyDRGoYWlvszTALDPfYG\n/J3jTVxJnG+SDqNGLk5uFjGkCLp1Ssa+DhwnKTgucdHtl7TCY4bxTxyHmdeI\nvu7SWmQk20ovP4Q89e/yZ/FfWsZnzYUJo38NEI9KHZaGzjNv3kENxK64rya6\nGKDWvKIa+csmX9zAPUbKwyS3hrw0LPbDCPZ3YIcN6/sHEQ/JHOIK+w527s1/\npImQ\r\n=HE9M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAS1MWf43OGqRmVhsZslzz5g67IJsh3mNL7V7k9bH2i9AiA+4TVEG9GZRLu1e3kLyqwEm9uqH1wcggIsnjA8ihaUbg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.4_1546728602486_0.8585587090162954"},"_hasShrinkwrap":false},"0.1.5":{"name":"@redux-ts-starter-kit/core","version":"0.1.5","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.5","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"0d7a53b7a6006014ce2ed2548e396c8a2b337475","_id":"@redux-ts-starter-kit/core@0.1.5","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-C71OKmOVuSl6lmQXAQTHQi+vAnDNdn1G2rYJ58TvAWhFjv38cm9xaJXSlGoYn1G3mCH8U5sQMe5x65YDzMDzEg==","shasum":"bf0c4242083b566dc7f953068d1b6c6871530414","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.5.tgz","fileCount":16,"unpackedSize":53978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMTzWCRA9TVsSAnZWagAAjuMP/jZel1Y7Yq83l56k8eng\n0T8FjTxt2TgGgLXu3/Hn4JeO40TrRZNuQs3JQK4c4Fxci3W9goIC+kCT/L6i\norl+wixR9R8ix+9CDhTQKIxiSxCx8rrmM7FlETj5+zHXN5787C4nacvkxR2B\n2lyMDejtDlyr3rAT2fuD3/ZOFmbQy/0eINamo4I55j1zhVZwxW82vAcqtUTu\n6t/94/73I9tgZEOqe2Zrn0RpIjj90dwo5i5tdgXX8iBmIp6zJgWmdbIDyl8V\nBm7TDV0dA3TgnCSCio2aj2jl9KZZZEppfAZ2Ad50ZEPrqanVcebsZmWLY1k5\nFxUY6UBum7vfL2sECKHOm3wHDI+TbO26agkMJaqVKDCVGmblHJFXFDZOpWrP\ng7bWECXU3ywGn0Id/uRbSwlSM6Tnr6A9prXp3ncwazPx5ryMb875AaJ7g+q1\nkVphfIQMxsozTOivTTG+ZRiGYmwIR9BwEuGWsjLa97lYqXKB3gnp+d22XAbF\naWRzRfB3eOPCqIlmcfwVpfvT6thz27iRMnVGQILCs1tU7hv5YCSZkjLu6A5/\n3AauESNaoxfZHKJ9jxKFjh2vqILsXVlLX/uohmOq/rEvvvaQQUykqLwAobde\nNd+zuS/AgqBXm18u5AHzGmNFac72wX970WnyZIv7h9W/KkYtjhMXiolV5QUR\nBJMM\r\n=7oN0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAmXC055h2jtlezmkVNV6IoYIeJ5Ql6AWgB+jnjhGXOAIgIA+tmcrRLe+qlROvtyNdPorO21Jajqo8Qe+bn3IhyBE="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.5_1546730709627_0.3213208233867706"},"_hasShrinkwrap":false},"0.1.6":{"name":"@redux-ts-starter-kit/core","version":"0.1.6","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.6","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"d20cec6aea1e7441e6197636b04f3e56b028c2a1","_id":"@redux-ts-starter-kit/core@0.1.6","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-0894VNK2UA6tM1iwSXDV86IDU/uCA0VMO3jY4UQ32WQA6a/8Ugv5PIHyqgzLIe18gqoXOGJhcozBlDRdTBBjBQ==","shasum":"1d2bce353fb9a82ea6705b4615ed7730df24d268","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.6.tgz","fileCount":16,"unpackedSize":53978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMT87CRA9TVsSAnZWagAARg8P/isqoFRhVE8QBniZ4q9y\negwHqkgWSm1WumZ4ne0jcEbimJqJtpiTmddTFJ1aNKbNs0SEjUPwDp4x+G9a\nRpRz7b8Jt0Rs9yEINLdkvuUKqRDUOxtgnJWDWDgHVPqQmrElpjaJeTNh6KJB\nFDXNwmaaAQzCQN8szuPVGkKYdNYtK27l9RKOs8h3RyEI6QaArDmMnIRrbSS+\n7NLPsjBmJjRUZPurBcNZJ4LSyVHQPc21/iQ7CH0jFehyx6JSgFdaI7aiJFhG\noAHXj6mVuJjI/bZwCZQrPKxjnj7iCss6+jrOmhiwKgIHDBfux2yvVTpQiWBv\nkav4Ji9orW/eQvesODxuycZTf9rgS9eXgyB0JsUJjixTimxbCD4uQD11kSeS\nrINJYpcVugMtfPWr3Mv78ESKp9r9fJ1tOLQQaxFxkENYh44E9SDsGzqKIDN7\nKZ9dpwgcOhNdx0ROncdz7GtvtRVUGvKwy05B6d21JVmxgjhcJvg0nRdETfA8\nVlgA+Rn+c0NzsF46QY4gT8OB8VEyieIZtzD563voYy/WhXzHXJfSZ0uq0kJv\nq6n4WROpFJLs7QWH6JYopX6fx2SWwON+P8MnPOV512kzrFnT4ltarREzdPJl\n/VaFaI3cJe8I7/qQi/ykUzsKMnIOg4SemDFFFdfN7vcRZMANGugVTk5K1YXL\nL5pw\r\n=wp6v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcvDEbsDy2ob2agk9JQ2tSvsN0fVdBDAWmKwb8SYEKaAiANCk9rTXQdESU5yuHL2SkEWxf09T1Xl81irCy78PIPOg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.6_1546731322426_0.7287160928152836"},"_hasShrinkwrap":false},"0.1.7":{"name":"@redux-ts-starter-kit/core","version":"0.1.7","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.7","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"e8edfb7df9b65aaff0a9732a6f50e305f5a18aa5","_id":"@redux-ts-starter-kit/core@0.1.7","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-VEHk116OUpLtB/NNbL+XnnoPyQtdzK3kSa6GlKKCHoDgzujmeaZezZOdBWDkxkkZsFxNvbPNA+5IcdvvAcfYPg==","shasum":"4cd2561b8ef0e49f4263479cab509fac4601ba98","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.7.tgz","fileCount":16,"unpackedSize":54196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMVqlCRA9TVsSAnZWagAA7nMP/iyyRQyFAPDJI8C1ehTP\n6ciskZFZWaAfN6SuwtbGyBdBRYN/pl39qjD3oYRvP6UCJEYeaSJobQ0wT/EY\nXvIpqfI7sjMwI5F4mSuN2G4MfqplxbFzQPmSxDWVVV11pxKVW8gs0+GFxhRc\nD9YIvRC9gmZAACC345Khhj25ICWvmN7/yK9rcRUS8TZtB0GFisy3kb9azYGR\n/IvZFh5s2aiO+xroLOfjQK1WXSSjfOUCw+K6HKeOB9vS2aCw1pZP9f/DFLOK\nPYES47rijgfwEE3KCtokor4EPxD45Axr2EaPf0QRPUBuGgJj+Jbm8jQPWL8Y\neAqLJsvUAnxVXuwNScci9InOA5RRC385yilNZTcWEkY0CxHLAF2ofiiqPh65\nJHEjSS2kJFYvSw4J2rM8GSy5vOGY3Q8jg5pcE+wka7hXQALht0wYO3AunHsu\ni9EVRMAo+wgYmUQn7rszbvp/AhFAVnQB9vYYIWhv+YsRYzIXTFQaRIu/3N4f\nzi3pMYOhNUwFOrihSfeLotNGARAyaz6S2G0VNTLIH55WMu+8Q5oZn/J47hci\nCHsGs1a9d8TuY6QA5V+8RsrtZ0ZTiN7C2nrlq6DZt1tDHRLUzh2ihaQNdfUC\nA2DwkXnToyLINcJEC5W8m7w6Wy1ZreuKQuqWgTvW8p5LqVKwE/8aJh57pcXp\n/iFn\r\n=tNVx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZIuaizopFuDTG6Ws4Yts8vkFVTek0eHkebTebc40jHAiBaiZHVhKjOYn91SvGe+Hd7lkV+2qrmfOJYIHHhnoAtgQ=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.7_1546738340923_0.6548396106041312"},"_hasShrinkwrap":false},"0.1.8":{"name":"@redux-ts-starter-kit/core","version":"0.1.8","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.8","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"f0c2fe71cc1cd2bd2c574c562af658c2ec223ede","_id":"@redux-ts-starter-kit/core@0.1.8","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-p5Zr+A0l2JSfBiZci3ywOg1nV25mI11JZQf+mBImrhRZhfDTP83G9tjgTkIyp79Dfw6CkKhoXS6vaxgr0A+5kQ==","shasum":"4ba84214117feacb62f5b854be6680f617718d55","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.8.tgz","fileCount":16,"unpackedSize":52790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMd7jCRA9TVsSAnZWagAAMsAP/0NSk+JYXczNICbbtv84\nu13wgydot8McIYD6obeFeRDXPnKBtBNg6r9PL1yz7WFFEUPmsc0p34QfVrg+\n2rQPN1vorxtqGwahDd+HMNPzCTX2YoEuQyhBtGyIMAG4OOCDB2iDP/li/ZLV\nCZ/NlMya1ue1B/ENBdWf9awrSqB3h8RnrTei/cKF3YqO8bCG/mUasAV688Ga\n/FuX0AraiiRIJvOZF0cY8gt1gBgU3uPdJU4NG1wcSi5Qphey8ONAWImgQsQW\nGWdfev4EsGYMrpcvm1eL52rQOfJ7P4byWYILPssnbfUK/UoBllXDFfQT5HEK\n0wKX7I2KGRJr1Zk5JX+Oi88VIGtsF3Od3591UPIu+lGQvBgPn7IE6VvdN5Zb\npdZDqM8ZWJRUieiXdC6cmI1yUT6WaeGTzm0YYgXYZ03nNdDtDZUPfUo5+ccS\nDFbfAHPliV4qhE8//FXCJIQlYcDOIcy/irPoRelZomWIEhjpgl9x95nGc4wC\n/VtSXZ0LccwVXiC9F14P+lrfFLybU9IQ+rQMwTj8ki+jlczmlx0BwLW7SbAw\nj2pcLpY9FMgvJ0lR9vD8Z55EOFwyYdG5VumRdbw9YwhC3mgb/q9nwhG3/USZ\nMciUFwyukPN1yzeJoVLehpwmEi0HoYaZ2eNEj6b44GfU58ST0YwEUG4vDuCe\ngSls\r\n=dwYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMvdRyp8UbfK2m0xC1NBMLZACGccv+mkl1+sYY+QSLdAiB0VRAXFGTjEu/iWUfjgRSFq/qvu127Zi1q6R7FMOlCXg=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.8_1546772194191_0.41315925724006686"},"_hasShrinkwrap":false},"0.1.9":{"name":"@redux-ts-starter-kit/core","version":"0.1.9","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.9","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"95a385c34f5e95979c693dbb987415299d2129a2","_id":"@redux-ts-starter-kit/core@0.1.9","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-NIyZhfvSh9roG1+snwWZFmvujZzzh2OGUEvT8fEgAKvuz6X71UFKkIXE8Z6yZM5ZaDr8dAw3gFTQrIbKOGiXZw==","shasum":"173abdfae0949776b1b78caaa64fbc4b5ef02e04","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.9.tgz","fileCount":18,"unpackedSize":53760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMgCaCRA9TVsSAnZWagAAFJcP/2kFo0xYyxRHXw28na1+\nxqT808gKCmPDuoIhK89rZKSeaocns9XfD7aHLaA0R6mLRvqz09UOtyKP80oM\np6otKk5iUGA5mK/m1KSXJ6htKgbkIDix01GoWvkZeAjRKaG5eq5/X5MtEwxT\nYmXxxDxGI0m9fQFmkyX0PdFq4feCOxiviI7qAHOJl/SSFw4RpD5IMlLE92ww\n7VDGA9jxVGrVFnJNCr4EFl9smjdUKwdL5+ljhj5G1nsCsxF8ppmuGFVA4Sqj\nSY2Kg+vqWd/YWKAignKUpNC480cTva3k/le3wuPO32MBU3tFGLNTwdalKu+l\nF4Cjt8Of0t3DDQgeNxqJ+ugE4m3JY/2qhmaGXv9GAHEWAnjHyG9DjJYKJ3dn\n9TFC47+zTCHEDiWX0N5qZTwlvjRO+awCvi+AMc6YLPgOF8WuoU2gf8BvdLuO\nWqW3uM2UqgyaSFwta466mp/uK0RVc/8STmrLbl116UvEAb/4IGcyiTEyrA8t\ndFBJ2ayj67CWlSWHEM9iaMv9SkKKjQovdBKvC0xVs8v7RBeICmxV/so0jqYk\nHjGTO1RpsvDDxA/TVv/lQO+qQTUUegYVBOjytepN0hBgGC51SI1TDfvsULtt\nu2I+Si3blya/Kw89MOHeu8SctEFo5O+4jurfVgMrWUbUWatzJo2do4i0rB9p\nbglq\r\n=h0aL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDkVyH7P21pyGMuUOOITGBY0KR11Wuj+rqdf71MjImwAiEA9JMZI8fBOiMpUUU/G+nZgKbO7cuTVQ1LhU53FQp3H5c="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.9_1546780825613_0.5096347537109949"},"_hasShrinkwrap":false},"0.1.11":{"name":"@redux-ts-starter-kit/core","version":"0.1.11","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.11","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"1327657678ae58401e2c44dfa66d58e706d4424b","_id":"@redux-ts-starter-kit/core@0.1.11","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-5lT04e6e8wSvKhBlK5E2TEec4hqMrcAaqdFyNUz1D/KPROPhcKdmwJsPIyvwTzI4BWYUStYlsI1rPVwbzoyBFA==","shasum":"68274e27455d22c1f802409211a7010a3672a0f4","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.11.tgz","fileCount":12,"unpackedSize":50852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMg21CRA9TVsSAnZWagAAF8kP/jDeXBMLdVPSIOFPQWc0\n5u+fM+HibJcxR+dzbLKDpTQAccFzvPVq6VeOHTi890KrSkt3hp6W5g6i/nO/\nxWMilEd7ZlM+BQSCbCIr8/QZ61psjGPzQdOPXLYSzlKRk839kB/JWrTxE38A\n1z5y2KLDmCvLi9rDiT1DCT68S8GOL/6IlMOokHVhb1sqSziLm37qMkaGzkAz\nJCCd6Bn567Ic/61ZTeTantVICpQN4uO5/FziS1btYVTFKlpuHOvJHd+1b8Ji\ni382d2ECd0iSwKmd8CwQI4wtezvcNFXr98Xp2m0QQFzO/LE7mPjcXdmz3nVN\nLKgr660NbqZma9pYsEeMjsPU9Z67spUvyo4Wo7QbJ5ifJ3cxb1rYHYehLNB5\nNXFUUh2rrRT8+MYLhZH8D63spNuIG1DWZ7lWcm1PYS+6hhsWhgkNcr1XJoFk\nljyoqpd6H+EGSbRVsC5Au2pvGEW3WolIQbBD4LItDxX4OGQnXyHhnILz5PkL\nrDE9e3lmyerdsgeaTpXbXBDIZoDRRFo/YGxK8uDw5V3TNZYdWqRM3B389o7l\nHigts/u4tvadUCWPf2NMKSGAWlmKXyu8fuzFRxGmm3/4Ro+CtFwo/v+F4BE9\nGZ2Jm2HhJuPKoNnjjeX1G3K7NXC4Ibn9LqnmNt1ASUDUodr+8xx/M225tOrr\niCQq\r\n=WCww\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8dbXE1c1ukq7Jv6XFnHNZHCGsaYwaERDKQF+9UnRslAiEA29GjA/O3eKhWJMGpvKyqUxc41qzOy2pLbIvY1FbK7pw="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.11_1546784180904_0.523652076013714"},"_hasShrinkwrap":false},"0.1.12":{"name":"@redux-ts-starter-kit/core","version":"0.1.12","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run jest","prepublish":"yarn test && yarn build","alpha":"yarn publish --tag alpha","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.12","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"49a527f4f0446c763d4bf0012474db35df31b69c","_id":"@redux-ts-starter-kit/core@0.1.12","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-aFrSlL7sSht9FqutwxpQfJnV0s04AZ3MdizGIyqE6pOrxHNkQt2PCtls36t1aaIYo6XdX/l44zltyEDEMjPISg==","shasum":"e1c501359b123a2059042f3b659eb816bdaa69ca","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.12.tgz","fileCount":12,"unpackedSize":51165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM6eYCRA9TVsSAnZWagAAG1IP/0VpPWTgW8n6b7qI9uNr\nhZ3LNywqCLYngFr8S1X30CbdfbRWwf9v8d3v32wA/qOa/llNt03UlsTb0jEO\nnchq2R+JNtY6LbZn8D9vXz4awq7ZDfyM8c/X6WE2p/hpFL49S6h8a3XPLIu3\n7oob0MciozKLqjAeslj1HSMpVMk7xNuMF5ihfU7Oq6EeyM/kBdUoZrMfl3Hy\nxYbkv4z0vEC9KAMnCW2p3BCsY+OJx4fJ26iU3MlW/MZjRiJSJ5/R923DeMTI\n0Qk2UybJGmTUf4MrZy3yhndOe3VVSvOKcwxPN1wyeNjRVwsc3pe7agvZKVxZ\nG2Q+BdI/TOhabu4KggvdlnOusxr26HeEyoKIzTwXVGmVdXiqvFsEql36n+Cg\nPkDR6W2P0GDWBnZ46vh1OUD+S1Ay1qJDg42O9xZzMAnGoRVhvWuZ++shtu7f\nr8IiCIg6OsL/vsLLZcg1tOLVXOSRUIeG2YHURsM31Hu97tdp6Ev9ra2oR93X\ns9+0r6zEkzN3VIyx9d1juqUtJQWHbKpkdvLu6/sRPIoC7XxPBPD6F1t9r2vz\nNJza0K1Ts7r0zTca+hF1XQJeCqZSxUWy2b455enX9Aaz47AxTK8gT1ACuGPP\n7z6uZtueEuFc6jkyoSjzo6+3BlQsWaMJo4q34ZycqPrhUYS4UGAbfKnPrICj\nK90Q\r\n=r6n8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6nNJCMYqPGTjkDhdydrLraGMjgaxrli6m+2UerbqDCAIhAKCs0t3gAq/a1KAaFTLix7ebCFMIVGoLW8CKyHdTC3AB"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.12_1546889111088_0.3371106570462996"},"_hasShrinkwrap":false},"0.1.13":{"name":"@redux-ts-starter-kit/core","version":"0.1.13","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.1.13","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"d5e147ff8106aa0f4d20c074cdfa2f85cae9d1f5","_id":"@redux-ts-starter-kit/core@0.1.13","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-cP2uJsF9eKHrP/MoQHs42G18/4KHgT+euW+XVGcWiicVplYIlMK2dvlLmehejQM5XUcgCXzP/Zz4WT1lm61/gw==","shasum":"1d4212235b464acb1bf51aecde53a119151f5000","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.1.13.tgz","fileCount":12,"unpackedSize":51202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM7K4CRA9TVsSAnZWagAA8xUP/1buAxw+AIEeHX0OC+vB\nNZGfZ+mD/9/EuNLgigUqCjHb8+V+iCneSbaG531PcQS+lmSMLnsndQt1b/3+\n/wghU0foroYbvGhVDcEgghT2p4FjR84bEYCkn0En3SsgQhVy2YfAn5274+qV\n2VGTsTdTpknzcuoGNmDFStaBKLeXkvPRbAldeqXlCZaz3YRJMMOzD0r8Q6XK\nj61K3+x83oqZkFaNwpzHkzTbJRu48BJWM8zToOCxT//6IqKbO/1RtfYZMQzj\nhCNEErlb3Xhx3/wprkgn2WTeUt5AE7V0yjV4aq2/9ivHPwyeGhK6xLtBIZ2j\nKNlG/SyNVGXbRQBrunV4lO7+BfwWium0eKUjDs9tlY1MJ9/L/QcpLRIfZL4S\nHNjgG19O8rjzOeUvuwR9o0Z+lC+GutgUktCskaIyzqZSzb25U7aFNXZGQRbQ\nOacFGJbniQjeCsn3mxfLdq0WBlV+TiTD8cpCDMSgX43paVAb42TaruByWCxC\nipM0xxjggEJZC/x/zV766fuvfqefuhWTGazAl40XM8puJ5y9T+z1laq39Xjn\n9VRZVwgZT3dN4i8Dla5vx90qeGRAhbQ9Ds3fltRVBAJYUclP6MHujV87Eq8d\nY+YeIV08FqTZSIJyliD0fBwnnmBRsOCuPGlF++MOi1QM54JvEY64yKb1bc9q\nwrsl\r\n=OpQl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdIxn0Ag8jbjilQItj+OortnXEQmeK2j+jn+/rYvAUeQIhAPSyWkAeFNtDMYZUfrSfkkCpNWZsZHFtZVMx+8Y93SXI"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.1.13_1546891959275_0.5475673558419851"},"_hasShrinkwrap":false},"0.2.0":{"name":"@redux-ts-starter-kit/core","version":"0.2.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.2.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"dde4aa43ee05617f005cfa9da92a671e6563e47f","_id":"@redux-ts-starter-kit/core@0.2.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-JB2lxTnLuiBBJRAmzzDmPhptCgplmYhi7KCgMzp2t+8dFjDcLjUpK9UlDrVxo74U0mQBRAoeGWCU/UjG9UNEQQ==","shasum":"893f138e63d5ad8073806fb585242b0e1ad4f060","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.2.0.tgz","fileCount":12,"unpackedSize":56401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOjBFCRA9TVsSAnZWagAA/OwP/REBiynoyBLd3svaHIsX\nraTWHpNMHubsBMZI7v3mLQmuoxrjz8U0eDmqaBqTQMLw4DhLfQFhNBo9kAwI\n7SImyeg4fYediENDUk87a8TSjd/PzU2O6wHj7Xemt6U3Q1mkUUqttp2+Sl+x\n5XlTvnr9SMzQkizyOQtSrU2ygakVdSl+IKocgP/cYR12mjfMgvYjI8ecrijL\nRjfO7zmEWFfqX+ImYigOXwrgMcGLEjpgotGXGTPA6LqGjTG5uy+uC/OQTCs9\ntnKz0YsK/PeFV6MAxG+namzNnK5/imt5UKEB6pz5zXJolXvFUiQuO1Cp5Lia\nDb8EqCjOADpKAkZJcrpyhmZMTKz/JY32d+3tzi1gObPOXmfrWXT4JvDw/Mwq\nrnXGz2QoHBGeKsJM02nTPypfmQCUXrFBDPwMHuxYbCkdLGObF3jtfJoDKkjm\n2rcuV9tMDM3Ushe/l7wHW8ZO30t3/oYAhxteNIYTj9z4f5MqcH+ZEb+qlBQ9\nb2kOT1GcBdBbVhdIBCglZjRmXfeI10tecs8tkX7rVrbH5ZtxqLfHzcOw+dG5\nE+XhTwrTBZtWzXd5fdXl/XRSTdnuYwsQt3vtzoDX8WZ5bE20tnwru0fI+a72\nAp24cbUHLy/uQnTRz25WmsxcuZTq4aJg7zFy+Hp7Lnnk4PeWUY0jrd158gOq\ntrhX\r\n=kLt7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJgMhUA36+KkBxZ+CYoli7BBXa4mUzUw61WjD8FvxbBwIhALOPutpUOkZlSSVxC2pox12eOcCD3Mcbh5HH+X3vtClU"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.2.0_1547317316730_0.26917056658054195"},"_hasShrinkwrap":false},"0.3.0-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"0.3.0-alpha.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.3.0-alpha.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"ef7dd9244ef552466f15d51bf24f925a9e8d545b","_id":"@redux-ts-starter-kit/core@0.3.0-alpha.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-GYbK83EzFmSSZ5veKLaRaUGc4R6LRzO8fs6lJT/p8Z1Ulv5fikvgfxWwcBWwwxCl7BJwCgBFWB6eH144EAVfLQ==","shasum":"33c7fcd5b9ee3a3222467db1242c0fe7c9dd6913","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.3.0-alpha.0.tgz","fileCount":12,"unpackedSize":56417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOpjQCRA9TVsSAnZWagAAN88P/RN35CCAtueP87SF2Kx7\nCQnsTE+6EKZlhjDmvho2NIXi3BISqO4cyO1t8out90eoNqmNoFu+4Q7FiVqJ\n3RR7JozMkjjQmS9J2VnDquS7gQsb4Nj4kg9g3G7HjBO+18OM9N1xjwbFSvP0\nmbzB9dtfGUIohh6F/uZzX7Uz8Twkq7Hjj/EwY6Kpmzg8WOfuGQWTowX+noAw\nwAFw5W9e14d/ukHJpDuvOwOM7ZbO1FHHzofphU1iRuJ2Opb+LIeJA9s/iwSP\nT6sVvM7d3fFMvsGvm+0/OHTOvlyrvB9NU+xVQENrb7CR90YLzWfl6i+v5d/3\nMYBFaG6kaEPKcMtXXJ269crFhAtT6gwYEsIc2hbQniyCZeD9VQM84LYO9wn4\n15JjCcwQ85h6JdIW18NSYAVA5T66w5lCvEjKfXVfGcsZ/p2vxwsxHopdqn+/\ndjeA5O8I7/4cCPt79X4Ddb0Dc/NZHx1p+oY4GVrVYN2XsvLJ30SO1729td2m\nLfPGmj/AMvB5B9/s607WLbkyyJQypbwwUH58wxCv+56yA7RjwJRkxYEHYVpR\nV/zJa9RDWKdrjZMID3AOiQN+rCdrq2TEYuS4S6BklfTqS0kPIwx7LWeHo79m\nR8Yf792AlfkS1I2gzVpioF7UWLPDAg11vjOj4uyhIJIlpPtzpYtOEEhvR+py\nHNyv\r\n=PoxE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWsPeD3RYJ88GgKuNsNabcorMqR6qnzQ26c/Gw9IR1EwIhAPC9ASIXSPze6zsBZ7z9tQYZv0eq16Gkbth16MdXOn9q"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.3.0-alpha.0_1547344079513_0.5028457410526899"},"_hasShrinkwrap":false},"0.3.0-alpha.1":{"name":"@redux-ts-starter-kit/core","version":"0.3.0-alpha.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.3.0-alpha.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"cf6b633fcb0346d7e4716235b4f442d350aecca5","_id":"@redux-ts-starter-kit/core@0.3.0-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-iTn/VEgcr6WkkjCWNnfVCygfZ3orzVnYoZpPj8YmqJuf8Ct9hLOrdMgVTqrT6MpqFmr8Xry2aBcvQM0sbR1YEw==","shasum":"8ee51bd086ab86050e1b8e49d3a8c491435df1f2","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.3.0-alpha.1.tgz","fileCount":12,"unpackedSize":55621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOp8+CRA9TVsSAnZWagAAuP0QAKIJlZiAV/qteXR+FhJQ\nxHtbROxbfXli99sTwMNdcZy0jSOYrzDog4B+gFKVDg0W6tx+UVOdg76rtBMS\nsy9SbsylZpcTg5EaW7ELxR85nQYCx2uoNCBGUqH70Uqnkr93Ux+VI8fn/QuO\n6tNEs8DBbkWFG3ecfqhRWHBO3xxcitVUe9sEUu99T357KyZpKIh1KPLUcOa2\nLhDbS+aFHKZjZi5Y4IRrALo18CvplDJHep2G0Z5UuukEbEr33Ih4BiWiy98I\nnG9lMWhHxB+zZpKy2kRBSn0InUJ98Z2kBCDnyeBCxCG8Zjpl4eMQWcJnvBpE\nKVrFiLfRFmXEn7ENga2NMKJy8juHznmE60BcyzZgcMMFboV+P7Q1vM+oNMdD\nKvE8O3pyL8FMUxVN/cz9zyP3EConDR1L64MFK2jtPC7+GvFfXEJlylEzxLw1\nY5ZrbI+XLzb1r6XoUfelMpXzI/lwJvKni61ueYRHFyccjguWHtMTqZWVW8fU\nzY4Ycl+XvzlxICg7gB10/UVeufZ5uLPPgAGl9d2WzomuHgpiEykJ7hDILY7z\npwfTXUIN75GtlKIXUzc1evn7afgJldlSkBX0D4/Dwyh11VJnaErZ4SjKO4GG\nPfRu13av1ACCvpo8TJmqR/hZCkTsQfow4PxC6BfPrRtJGTV5Xato5BJWs/Ml\n0xTb\r\n=AFaK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKmXDUrzwIgCLcB/sF53eb/pXyqasnjsREn/OCq2pE1AiEAlnQvLQwUb1k+n7x3r2pOGZgsukYty9Iwo1YUitgzXJU="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.3.0-alpha.1_1547345725005_0.08171186959766996"},"_hasShrinkwrap":false},"0.2.1":{"name":"@redux-ts-starter-kit/core","version":"0.2.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^0.2.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"485659c191862b7f409cc3819018884d29dba3e1","_id":"@redux-ts-starter-kit/core@0.2.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-pE/HlZGnCXy4SgDXYTmbjmzIaIwqWe8Zjl7ZzvttHvQG7Y2xtV2E2KYtd8TaAaDeFVFoN87WZjkcwojptB/Fng==","shasum":"9c6284c754f35efc2eba363020a47103d1186ecb","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-0.2.1.tgz","fileCount":12,"unpackedSize":55686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOqBjCRA9TVsSAnZWagAABV4P/R9MGXUP7vjt93WXLw5t\ncM4vKowvpWcJtrYjHoy8/cpNXcIZm7y6qK5SV7vFXnWS2jg2HzFVRCqsfRsh\nepkZ70UeS/7cd4KI2H0/88VhqCHrj/vXD5dUwrHXppEny6AkxK0tSUoqyYha\ngdHB6I/GweqN6YH0BywkwiKPi/pvhb71VlchvxFxnJfJmDM6G8SkkXNAjWmF\nhMQHS98lJUhjRCRppCTU3cOBL8+qf92L67mwAXcv8CF5jV1iGXq7T4qfoQkj\nTyl57zjzbStF0MJsmY0JXqsdY2MUL65ViNS+zJtKm8mGJsFOsjUBRVlruBfE\nML15bNRQexl11gkJHUlAMxt+M+2lCq4ff+/XCc2Gg7dj39fuiXRGNVldIGCc\npGhsJ99dab8GeZgDI8I8ssKRRhdxyOP9SAd4hpnbYnXf3P7X8bm8PBROiHP0\n8hsazbvRDE+QFdBBaYq288Wm0QNGeSejEHUrhM4WvbttWbvIupbKPYBMbhRG\nksLu5sVaNckxlkebWiVvjy0UXKj9cQ0/N8LtOVUNbyhWYzauHyLIIOWcoDhb\nOK27Prp3BMR/jPp2m5YsEC9VmLi5d2AFB4pXeILjkf/lCiQO0RjqmUTfSnry\n8ioCx741imFayeTBjv/t6CSfDYcFQOuXYjCijzNqRbk4PiKcRUhyYGZjdpee\ndRgG\r\n=wfDN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPbmLTNShP67r15hqyZ0WRhPkpxKWf5RcwSYqi5C9nQwIhAO0BuDbhylAKx966WMiSqpRXGlA1noz8apf1alfqJQBU"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_0.2.1_1547346018952_0.7932477654621615"},"_hasShrinkwrap":false},"1.1.0-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"1.1.0-alpha.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.1.0-alpha.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"4255f9cd27515fe756901887ba38b2bd3879a7d0","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@1.1.0-alpha.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-EpFDY/IREu4UvmnFo+I6/b3uYT7Tc+p3BTkUj1D8XvxVdccSw8byWDd8PKc2y73fJnozvES+EllRzp2+dNCJtA==","shasum":"58d94474eb5cdb7cc72d6362849fe87446a02e30","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.1.0-alpha.0.tgz","fileCount":12,"unpackedSize":54870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcO7OOCRA9TVsSAnZWagAAvgsQAIlM74R2q6IPW15+lDWe\nb9GQ/GnDyAg0ee1IMoI2+wVBW2BiftWRWimk+pg3jPzaKwEPfxAtREAqqq6N\ndbGNZ+QRtcF9VX8z5+2ctYBJrQvrmvv3lrNY4VwVl9HalbGXQiVmliFjJFl7\n5fQ67ey4LUm6pd0jHn9GaJMVs7iJLAMH9ko0L2D0HGPPYcW8y5/Zhi8DD+Vj\nT2u+18SzrBihyNuz+tRyoQsnvb3Wa2zVcq5GR0jHQWVztYw7hZnE5UgmsRad\n9FA3pij2pvhRudzXQCY93W2tqYXPwfWkbTyyifsLmgc3CL5yIiorI2DRIjLm\nwbN5aeNN1PzjYu2ex+wfieVBQw4XcC16WzmYYDt0vchrrGdZWaxIWqxwX+xL\ncD+iSlqg14aT8oSuzaH9+U+Mr9slcLQN7EIM55BgwV/KHEykkt2G4lfy39ID\nO+JxXVI/OB2th7exiL4H0kuDhZS/bmHuB6M6qmIEDjK1H7GAju/VZvzmWIaw\nue8m1tVlNaNxJtxvpRw05BmjgMkEjjf4JlXek1rJUzHt9QH7iZWkxLZcChRi\nJys0s8FMN99GZWkhe3lYPiO4D40lzJOUmmD7feR7GbTwct+z7QBXaAeHxxmj\naDN1HbzFq5LvzbedvO/VPZ3WfRcOqst1JuuGUCD+n3lqV3QfTzJMQ5YyVuuS\nphBp\r\n=g0R/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh7Y54w13eSIM61be1YqvuKjoYcLmPwgqiU8PESoLHPQIhAME9BHU9z6pt+v8us/r6M+iVe18ooSBfZDFpZge36wIN"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.1.0-alpha.0_1547416462130_0.8402849169155053"},"_hasShrinkwrap":false},"1.1.0-alpha.2":{"name":"@redux-ts-starter-kit/core","version":"1.1.0-alpha.2","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"yarn clean && rollup -c","clean":"rimraf lib .rpt2_cache","test":"yarn run typecheck:tests && yarn run jest","prepublish":"yarn build","typecheck:tests":"yarn run tsc -p ./src/tests --noEmit","prettier":"prettier --write src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.1.0-alpha.2","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["prettier --write","git add"]},"gitHead":"472118e575328928e7ab510650180d1c2c4fcfa0","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@1.1.0-alpha.2","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.8.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-E98dh7EfpSFY3l1UUFgOjptA1EZqpR7ZIqSdiuEbvbxj6iUwCYe7UuF2Tv2H6MblLHzt8453KpEpEQhc6NAj7g==","shasum":"430814b39049f83dff9b9f1e42a8ac65f07922d2","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.1.0-alpha.2.tgz","fileCount":12,"unpackedSize":57888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcO7zLCRA9TVsSAnZWagAAiTQQAIFHqWbdRlQBG6MwBKpI\nE8pb0ym4KPQX+jg+j0w/wPWfEmRGjRby7ypdiNdl9IO24VziJlmlNGYH3PuN\nDEDgc1+0pT/yurtgJaZ7/EodsZjvQqS60mFzkUoCUFdS8zrMoDi8sGn5y2F9\ncgSkgcMu2YCra5sEkW2Hl4kcVmcwKnrvklzEYlrffekN57e2jxumtaqR5E5Q\nAcYN+0ja/hUBTbIa2VC+eXuZKS06GxhfgtyZcoiyn271G5nvSFhjawgaa2AP\n17CGvUSqGGJWAdOk/+lKDOciqFMudpjq2M7h6l0VtO/a8ydpqrk/9Wwo4QUA\nf0P80BEBVqKjs4mQU4ZZf1hkt/JuMII4w4is/BrAPdbTuAR2KnHXgjCirHp6\nBQSAjlA7qCCbarzufG7O4EuiBX8mgaMi0gftvFClXaxth32ew5u92ipCdZki\nenlszkhwwvh0tXGjGy8ClNJ9Lo7/ef6QpN9/XPZcJZc3wZvuVqgdtfixaxmq\n5AL17J4vDSDDow6SV2vv3InZAZBAQB8oNazqkiNyuGJuOynlmH6q7Esm8QFe\nF/I3H7l+eeMa3tFogNh8onT3C94Hf4+WMw6qWUyE8rZp7p8FgviM+HMtB9TF\nlwutcJLscZndW//Poxfu33o2ADRKUvjO8LiOlRVyF/sA7RDewT3+IzZaWGGi\n78gG\r\n=PFDA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeavbJBmtFpxKrE8Za1ExPQmI0XOc10ywzFen7VUTiSAiARvhuDTm4CQQnHSdncyAwspMk450RT1BIxGhJ9Os6R2Q=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.1.0-alpha.2_1547418826578_0.19055787260423052"},"_hasShrinkwrap":false},"1.0.0":{"name":"@redux-ts-starter-kit/core","version":"1.0.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.0","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0","typings-checker":"^2.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"48a8d1e37c455d569b74ef6d2c43b9dd518ed969","_id":"@redux-ts-starter-kit/core@1.0.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-n6I7EGSKfcMkrESGi88P5vsa9k+unZFXdOIwYkOMzMgUvBQjpiGIyc5vc4n8IkaEYUw+kUQ+QaKwbQlD4aj3vw==","shasum":"6d67750e5d09d5bde323c6c7a6dbbd15ce609ae7","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.0.tgz","fileCount":12,"unpackedSize":58698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQk3pCRA9TVsSAnZWagAA3gAP/1TLrL8ftxjonHGdM6y1\n8UnhccduLxeIvCrSPcskrFBvQOl7OpWTI32ZJFQ/tZHI9YQ/20NZ5vjmnp/h\n00wVGpiaqqg5Tlh46L2XTm/i1fKdSWa2G+Bp/xItMwfno7+t88zc65XS7ppx\nHDgEPrbwh12kLElUsEUoKEWGt1fUoHcGsxRepcvKaAZ3m4tm727dPfhFUtwn\nWr+OvVw9Bk1VediRoDwomvZvD8CQTtHuA+xX4UNOInQodnhseiETyhJteLk2\nvIxMzKxSs8wU8GXgKx+5/FCPParXOc0E0BLriPcheWeUUO6+Oaa/cX6pf2Y/\nRGXv7ZlWd6ngY/2Fy++hADfAWtTdTJzMases3A5RSPll6JV0FXFOpLgdTZlv\nAoXcccPPvWE2p8Cy3O+bCzrV1T//ABQNStXMJtFvEtgG2BXTGIqvDnVCu8h9\nldLdIxDWEExz1Uch4qqNsUAfE9fVCcKvwItLxWEWl6TeuFXnWP/ETM+WTedF\nsl1echc9UWsW8p+GzweeQSjf45tfhk3S6Bi84alRn45rs8kCdihIDbeTb0V7\nV/4wjHDfQ2p4PQw0Bsyax74RRWePGT7N1WG1UvkRDKT4bLrIYtUhohQHfLDu\nNxMr9f6D6H+68CGq/3HeXh5mE16zBDAttRY4F2W7LZ9ICJ8zG247zDS0s8Fq\nkxrE\r\n=pGR7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHairNkclJcEPkFs29cvoGE1Ey7yYwBJ8ZQ5mWYHtMIvAiEA5I4YwGfB9ykhhtgeAqzfTSbRqmsV0K1+2CyNQ1iIrZ4="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.0_1547849192551_0.3791148173720489"},"_hasShrinkwrap":false},"1.0.1":{"name":"@redux-ts-starter-kit/core","version":"1.0.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^1.0.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"4125d6d7f0c011d1590376188f3747e1a3e8f793","_id":"@redux-ts-starter-kit/core@1.0.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-FXZ/ErAwCs3WPUOeZSrW5PBoIWVEUSWadNVC9rdyzPHPSOHh6j+5Cq4ayCOkcXeM3tNvOuWrXFGIW0aAvibO8w==","shasum":"51993ec13efa20721be6d809a8ec0fc19badc893","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-1.0.1.tgz","fileCount":12,"unpackedSize":58759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQlTmCRA9TVsSAnZWagAAQuwQAIE0oJyhgRZg6Sh/KSol\npvAeEnF9b80VcSQze7wa9TZ0XQXwezvAmGYSFlUGXwpbBEsdveLui2iADy3W\nY/Tu0UlX80GhcOYjc1ZXMPxPkzPJeCCe6ynwZVZqAJe/D2JljAr3Rt3hWKwc\n6Guj2sWLFMpGCO6uS1O44dp8GlYlpZBsBIQnSoQvnhvwTec5WyUUtOWKI8Lv\nYo8PVsXa89Oea0sz7Z93TVUDZRa00OU7I42r/4qEkz6CfRcRFSovNFfQ6e6C\nq5lvXm9w/Fo9zy+PMN5B1rTp4mmFtYXIJcTB6No5nqIpH2ngqECg+UcziRli\nGeXRFFa5iBnOYfvdYQ2VlnVzhEyJY2lPrXn/rTIQMxXgbicXEHl+mYzu0AKx\nIkrC3gEEATiFHFTCuZ/Fh2UKDJceJBjKK0rQLe6bFDdZDckuU332hGAAODAO\noLFvvLzn2HnIk9vkBHLcJnastNgxLtAqwX/1wo0iON4a0PN+oH0XjrrbKL1y\ntCre20yTSRBmTG3YuttzJcSzSpTRDBJ79ZgV3XXP91zbsgIu5f5y8i/9gFTC\n9WTkJi335ceupBBi6swcrgr235dxWUscayDbLuJqEoV0Ovw1SqjzpBqCXXBE\nKd070l0Fi0nbH3CF8KsABEWqJpGKs64H6y7AnmlVViVc0XAKG9+LqPz1+bT3\ncjNi\r\n=QWuC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3VQ5cZ62k0Sh163lkg1lFl/I69eup487WFwch4sCQ+AiB13/2pL5wG7uZu2U0RyBAGilsLZO3OQoi0xxUfE+36PA=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.1_1547850982022_0.14430490289150222"},"_hasShrinkwrap":false},"2.0.0-alpha.1":{"name":"@redux-ts-starter-kit/core","version":"2.0.0-alpha.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^2.0.0-alpha.1","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"9073cc276c3ca59cd9593c6d1ea95d1ee1ad861e","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@2.0.0-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-lVKc60AiFHhZZ0kfFb/WnpgpkxyixoJe4k59ZpH9slgp7LFmex+xJsC3o2FsE1/qXw4jduKx4kAkOF41FRGHqg==","shasum":"0ddde997e6b8624b3496157b5c5bd44c5e758f79","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0-alpha.1.tgz","fileCount":12,"unpackedSize":68630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXwo5CRA9TVsSAnZWagAAjJ4P/0RdwCQG2HNjIm/e8ubQ\nl1G0NZzAe3DQQFQiSUROHm1XzmM6Z0KdL2A8S5gjnWevPvo5kdhuOovk6F7X\n34CtOW9ayMPwMyKSE0bT6N5EqSvPNxNIvEN58mo38fMgrT9yrZKDWt14PG56\n1DGgN4MXtXfcCMvGWopMnuGzrZNs19BQxob0Je1Mn/rsxwB/r6qMbinj84jV\n6gDHUe4KYN7lTe/tLpnEDrgxq575zaHtwKHjCCymScNAYRqYoaiPkTN3xj8g\njjBLXZHgBFhl6HTUdz+siEYXeiNn0GniJk7DR/bHlj1r5wt0TbNHkVovHwkg\nDils6DjnSYJMgkF55RvYEDLNWHm3oU1tA4LZbWoCUuP07sjeY7a7DNRRpuJO\nW+X4daeVYKGOkkVEypPo02mlsgfF/hW7I7A4Z0rVwwoozSs4ik1I42KxuCzx\nF+GrrnW3ntPpXI+cSblKF1hrMznpdHkBsOC70YIy3sGRhy0/rloqQwLI2dR/\nusQZlIQBuy0AeKzMbgpwKKzN3TPpIB8DQAitKAG70XsYSa2hLiuU8pAuXgrQ\nzLnhotldPWpFnMsSoheRPdXHkXlfTSuwoo1xPUe6zrkRIOpqYNoiHLcmAZVy\nVZB3wgEJfxoC1tFD9vS5mxxpuOoLpUWRCPinvsEfKPR+7bbSkwVtnOgDte4U\nl8sV\r\n=PSi+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBWV9i2sbFFr9LWrXqVW5JjNTxxaPWo1aAOpRjxnhin2AiBIBkAO0aZ1MqDQq5IlfE8z/dEVO8GBvoF1AAfpmVXBOA=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-alpha.1_1549732408827_0.09257214103383582"},"_hasShrinkwrap":false},"2.0.0-alpha.2":{"name":"@redux-ts-starter-kit/core","version":"2.0.0-alpha.2","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^2.0.0-alpha.2","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"5b49dc95cf946af743328edc8828269f1e13ae3b","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@2.0.0-alpha.2","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-JVXi59yBj+0giC/0zWUeYKwmTfinhJuDR597a1VdUkC1xk7qPM6pLFzOQO9TmFayascTb7laS8jfrQKw7MqgCQ==","shasum":"08edd500a4b768931864cf4886301fd7627a96d7","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0-alpha.2.tgz","fileCount":12,"unpackedSize":68969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXxmaCRA9TVsSAnZWagAA03gP/j8RcdqCvSkpbFzqZpSq\nyam2YmwvGROuLgEEGYdqIoPf9i0jKKlPW9nT7OxFfMCO/0aQjdZ9e/h6SEQb\n80NTi0H/EmO/y8oHzyUEaCoPRHcDXnosqe2dNsN6mjit7MkyxCl8hNKdprMX\nCUuEcF0eWKUd0SGBGnPW/r/H+JAHGDrqHApN6IVDaXwBrgpVZNpC/5SvsCJh\nfHpJf52LNzQhNq3nc8IBDh7osvL1hcGFGczSUgIPLrH9O/p8z83oeLioE3RL\npUM4TW9QEhvJvcK0esFXPRv3mljBXbBoGvDCFLEXGRpgXaOlo5bLcQooQpdw\n9bYkiQMeAVIaxrI/IDpGJFZTs/G+FOCZLUJOALwLxKKd+V0/wHaKHT8y+WUZ\nnSxjc4pJK4vQ7P9VsAhGUQdfDXKgvaA1D537rLySgoFnmHtXqMQbOg3u2CSu\nPwuztuHZ5UmBE2dHz2LwNoenc6GaLJ0JqNHbXB1dWZhedbRs6r5VbEvAl0Yl\n34GWW4HHTzmcd7Klilbz3uONCb83JcOaUSZw/mP8yGym/YJxxkGSDC4WLiPM\nyoDceJ7i40+RphCVXqURgxT1xdF4by6FEUJOPj+FLWQJ0ifpbtG/zz/LMi7C\nNv0YUyiu0cbgf4ARerDSL52i1EqSfHeBFUoobLmP6DUkxPqDxqeJ6HJsUixA\nrdod\r\n=rq6j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEafO5MM/wqjDxxj6jbCnVj+SAWbWYKmJ2aXrICRIgFxAiEA+EY+4NQ0zFSLiRFNyrJg6nEEPULrpZgCxLSe9QMP9jE="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-alpha.2_1549736346055_0.6969954170690058"},"_hasShrinkwrap":false},"2.0.0-alpha.3":{"name":"@redux-ts-starter-kit/core","version":"2.0.0-alpha.3","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^2.0.0-alpha.3","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"8e1a129ac7b7afbe45b2c60a19be3a9220bbb22b","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@2.0.0-alpha.3","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-O74rOQo9ZGxe/3DEjRf/am7A4q73hVsOJHAYOvdF3rbCybSWKM1qR3J0kDIdYaMkFGIJhXEvGpeRmdUJSn5Jxg==","shasum":"832ec04f1c4e62028c8f87f3e3b67d8cc52c62fb","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0-alpha.3.tgz","fileCount":12,"unpackedSize":68969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYbHYCRA9TVsSAnZWagAAelEQAJirX0FU8TH9hhQwX327\nN9zvH08cCgLceYYLP0cTm96DPzodfhOIv68SFLnF6bO9lr4a55mzsATZqXIP\nVyB6y6uRkAw+a6e3pMUvsT2S/pwcHqYyKwQnEXx5Ibff83JeOpkxciwSMh6g\njf3Px21PNmq7D9RAL17cUXhpxh4Z0FeU3/uqeDRQd8go93OZLko/IqP9M9r6\n3N5w4GFYAMnHeuQ/q2qy+7tyavRENkK2wbcwaBpHJoBOGGkXZjtYTcD7bFE1\nRjq8YMJzfA/JFKjeorxjYrzDerYDwnIJ+IjpRKzwiV5YWvXk9moDebgl338Z\nTHWrNgNbxgGmFWWw5QiTJRm82DLyZKLPI2ck8bt4XscRyVgNj+wdnS6uk7DF\nLVqXEiMGfzQmNm8DuFoMDmhj19c3Xb/yeaCAF+wx3Xm63QomaVrQZwsuUHHi\n0GErkoUvho1lrpFCifpGQvv7F3IYVjSIwKzlf+1RG8SfoA0aBJtVZ+3nA+3B\n4XK9dZj863giAjap8QPE72nMjpqNZGKtbxf9U5MI5V5nvB1pPDbSQSyMvPjk\nY68uzmcQFJDi/zs3B8AlwJtp7u5h1Tdeeb+I2lfhJBdjGfOlxoZfNaB4QVyG\nhg8xFn36cNHnVM++sfbILosmG268aInXw2OVRTKvNDx7aOD6q9W2Jn+5GaSH\nPONs\r\n=aa5U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFClqXYuAslUgv6CA5W9rK4sy3F8/Fx039MgnbipM9ioAiBcchJWsvqCDamJnxpFhbjWJXSDhDann56Ci/fYsaXe5g=="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-alpha.3_1549906391616_0.024091913762203987"},"_hasShrinkwrap":false},"2.0.0-alpha.4":{"name":"@redux-ts-starter-kit/core","version":"2.0.0-alpha.4","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.2.2","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^2.0.0-alpha.4","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"efec371705d08068056832fd383fda88439b334e","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@2.0.0-alpha.4","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-UMja9th7KRQW7j90MlNsy/1NxkflNy1TC/rFXqeaq2RMgsop3DsTfTQjJ3AhBd7ddGHpiIhbydD7GetJpRy5iw==","shasum":"d5de5fa0c9a43a2e8466617410d225f1cdad98eb","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0-alpha.4.tgz","fileCount":12,"unpackedSize":68969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYbZ6CRA9TVsSAnZWagAAENYP/iWdXi19gbuEdh2tYS0E\nw/MTNHvb3Q8m9PzMozcqISWuHaRIE8tUwAnCceeHDhl7BvzKtGKEBRDeT1Ee\nPGIeIFgYUA1AzP7ye1JgT1K3XjhNq61R7DeF6BSBm+D78xaOTOCPq2L/8uDo\nzkEKz9bK4rG0biz7rac8B2NXi/kLGAaexo6cNIYHgBMZoPCx1GdL/S9zdSje\n++NJz7+IUZgzCLufgDxQzdFSuWsVm46myNnsFrvooJMRsTqu74ZrvlBJwXZ0\nhGxt9102ji4I6Pyb0dL3/MImrVo0OYy3eiZ+2eiDyAxkUHGryg82LkH0ehI7\nWbYU5M19ZvHatGXj9qiEQFE3KR5GAb36k32Tr5XpTVh8QnCsDqMde2dK3woE\nKY9tu0abPZhOgrSGsGgvI5siaWOa9WUvKNpgxQbXex5vfXradYKrnFgxH5XX\n92HvsVn/VPK5wdKuN+RlZZjdvq6iD+y9rEViK850zXtBqSQ6+rK5LFo2KBus\noNzZFcR9Gt1KnHuX+b4uXdg991FqH7rH6t1U2YQerRiARF/VHyaS5kOSdJfd\nNVd5O1IgK9Wg1G+0yV3xhgCRSHKQJ4Kpe0zAfdL1qIgEA5XysRYejaNVvUU/\nDcbzOhYCAebZD2htyIP2CmKUw6YcJ3QiLKPkR5GAOZKST35mW792ERIBmLEA\nJW4A\r\n=hM8v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKd5ojLIFyGeBNWNcllGtjXerkZEBly8osBT5iGyhtLAiEAzt16J1L3OeVNC+r7lcppw/hdG28azt9jO8jtR8QPDEM="}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-alpha.4_1549907577520_0.0063578282928185015"},"_hasShrinkwrap":false},"2.0.0-alpha.6":{"name":"@redux-ts-starter-kit/core","version":"2.0.0-alpha.6","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.18.1","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"3.3.4000","typings-checker":"^2.0.0"},"dependencies":{"@redux-ts-starter-kit/slice":"^2.0.0-alpha.6","redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"eca6d00386d0ef8eff070503441b78e320646c5f","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n_A typescript friendly combined fork of [react-starter-kit](https://github.com/reduxjs/redux-starter-kit) & [robodux](https://github.com/neurosnap/robodux)_\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n_This command installs `@redux-ts-starter-kit/core` alongside `@redux-ts-starter-kit/slice`,`redux`, `redux-thunk`, `immer`, and `reselect` as direct dependencies allowing the full use of redux with a single npm install_\r\n\r\n### Purpose\r\n\r\nThe `redux-ts-starter-kit` like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`redux-ts-starter-kit` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n- A `createSlice()` function re-exported from `@redux-ts-starter-kit/core` that accepts a set of reducer functions, a slice name, and an initial state value, and automatically generates corresponding action creators, types, and simple selector functions.\r\n- A `createReducer()` utility that lets you supply a lookup table of action types to case reducer functions, rather than writing switch statements. In addition, it automatically uses the [`immer` library](https://github.com/mweststrate/immer) to let you write simpler immutable updates with normal mutative code, like `state.todos[3].completed = true`.\r\n- A `createAction()` utility that returns an action creator function for the given action type string. The function itself has `toString()` defined, so that it can be used in place of the type constant.\r\n\r\n## Features\r\n\r\n- typescript support\r\n- Automatically creates actions, reducer, and selector(s) based on `slice`\r\n- Reducers leverage `immer` which makes updating state easy\r\n- When stringifying action creators they return the action type\r\n- Helper functions for manually creating actions and reducers\r\n- Reducers do not receive entire action object, only payload\r\n- Advanced type inferrence, minimizing the need to create one-off interfaces. _Note: supplying interfaces is largely not required but highly recommended_\r\n\r\n## Why not X\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n**Note: This started as fork of robodux that was supposed to merged in a PR, but the number of changes I ended up making were numerous and breaking, and I decided to incorporate the configure store feature of redux-starter-kit as well.**\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.getSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.getSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### ~~IMPORTANT~~\r\n\r\n  ~~**Note: A key difference between `configureStore` from `redux-starter-kit` and this `configureStore` from `@redux-ts-starter-kit/core` is that while `redux-starter-kit`'s `configureStore` returns only the created `store`, `@redux-ts-starter-kit/core`'s `configureStore` returns a tuple array containing the created store and the final root reducer.**~~\r\n  ~~**This was inspired by react hooks api and enables the user to access and unit test the root reducer**~~\r\n  ~~**Index 0 (i.e the first element of the array) is the store, and the second(index 1) is the root reducer**~~\r\n\r\n  **Note: `configureStore` no longer returns a tuple array as of `v1.0.0`**\r\n\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.\r\n\r\n## createSlice API\r\n\r\nA function that accepts an initial state, an object full of reducer functions, and optionally a \"slice name\", and automatically generates action creators, action types, and selectors that correspond to the reducers and state.\r\n\r\nThe reducers will be wrapped in the `createReducer()` utility, and so they can safely \"mutate\" the state they are given.\r\n\r\n**IMPORTANT: For proper typing support please use `const` if initialising `slice` outside `createSlice`**\r\n\r\n```typescript\r\nfunction createSlice<Actions, SliceState, State>({\r\n    // A object of function that will be used as cases for the returned reducer,\r\n    // is used to generate action creators that trigger the corresponding case\r\n    cases: Object<string, Function>,\r\n    // The initial Slice State, same as normal reducer\r\n    initialState: any,\r\n    // The key indicating this slice in the combined state.\r\n    slice?: string,\r\n})\r\n```\r\n\r\n### General Usage\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  interface FormActions {\r\n    setName: string;\r\n    setSurname: string;\r\n    setMiddlename: string;\r\n    resetForm: never;  // no payload expected\r\n  }\r\n\r\n  const formInitialState: FormState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: state => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\nOR leveraging it's type inferrence if you're feeling lazy.\r\n\r\n```typescript\r\n  import { createSlice } from '@redux-ts-starter-kit/slice';\r\n\r\n  interface IState {\r\n    form: FormState;\r\n    //.....\r\n  }\r\n\r\n  interface FormState {\r\n    name: string;\r\n    surname: string;\r\n    middlename: string;\r\n  }\r\n\r\n  const formInitialState = {\r\n    name: '',\r\n    surname: '',\r\n    middlename: ''\r\n  };\r\n\r\n  const formSlice = createSlice({\r\n    cases: {\r\n      setName: (state, name: string) => {\r\n        state.name = name;\r\n      },\r\n      setSurname: (state, surname: string) => {\r\n        state.surname = surname;\r\n      },\r\n      setMiddlename: (state, middlename: string) => {\r\n        state.middlename = middlename;\r\n      },\r\n      resetForm: (state, _: never) => formInitialState\r\n    },\r\n    slice: \"form\",\r\n    initialState: formInitialState\r\n  });\r\n```\r\n\r\n### Type parameters\r\n\r\n`createSlice` accepts three generics: `Actions`, `SliceState`, `State`. None of which are required and can mostly be inferred from the arguments given.\r\n\r\n`Actions` helps improve autocompelete and typing for the `actions` object returned from `createSlice`.\r\nSupply an interface where the keys are the action names and the values are the payload types, which should be `never` if the action takes no payload.\r\n\r\n`SliceState` is the state shape of the particular slice created with `createSlice`. If there is no\r\nslice passed to the state, then this will assume that this is the entire state shape.\r\n\r\n`State` is the entire state shape for when a slice is used with `createSlice`. This helps type the selectors we return.\r\n\r\n### Arguments\r\n\r\n`createSlice` accepts a single argument object with the following fields:\r\n\r\n#### slice\r\n\r\n*not required*\r\nThe name of the slice of state the reducer is expected to manage, should be left out completely or be '' if the reducer is going to be the root reducer.\r\nShould be a string or number.\r\n\r\nNote: if a combined State interface is provided, the slice is type checked to ensure that it is a key in the State.\r\n\r\n#### initialState\r\n\r\n*required*\r\nThe state that the reducer is initialized with, same usage as standard reducer.\r\n\r\n#### cases\r\n\r\n*required*\r\nAn object containing all the actions the reducer can perform on its state slice. Each function is equivalent to a standard switch case statement in a standard reducer.\r\nEach function can mutate the state directly as it uses `immer` behind the scenes to make it immutable.\r\nEach function is used to make an action creator of the same name.\r\n\r\nIf an Actions interface is not supplied, you can type cast the payload arguments directly and it will infer an Actions interface from it.\r\n\r\nNote:\r\n\r\n- Do not type cast the state argument, its type is automatically inferred from the initialState field if not interface is given\r\n\r\n- The returned action creators accept only a single argument as payload, i.e a case in the form `(state,payload1,payload2)=>{}` is invalid. If you need to pass multple arguments use an object or array to pass them.\r\n\r\n```typescript\r\nconst hiSlice = createSlice({\r\n    slice: 'hi',\r\n    initialState: hiInitialState,\r\n    cases: {\r\n      // state type is automatically inferred as typeof hiInitialState\r\n      setGreeting: (state, payload: string) => {\r\n        state.greeting = payload;\r\n      },\r\n      setWaves: (state, payload: number) => {\r\n        state.waves = payload;\r\n      },\r\n      resetHi: (state, payload: never) => hiInitialState\r\n    },\r\n  });\r\n\r\n  // Gives the following action creators\r\n\r\n  console.log(hiSlice.actions.setGreeting('hello'))\r\n  ->> {type: 'hi/SET_GREETING', payload: 'hello' }\r\n\r\n  console.log(hiSlice.actions.setWaves(5))\r\n  ->> {type: 'hi/SET_WAVES', payload: 5 }\r\n\r\n  console.log(hiSlice.actions.resetHi())\r\n  ->> {type: 'hi/RESET_HI', payload: undefined }\r\n\r\n  // again note that you can destructure the returned actions object\r\n\r\n```\r\n\r\n### Return value\r\n\r\ncreateSlice return an object with the following fields\r\n\r\n#### reducer\r\n\r\nA reducer function, works exactly the same as a standard reducer\r\n\r\n#### actions\r\n\r\nAn object of action creators with the same name as the corresponding case.\r\nYou can see this in action in the hiSlice example above, it's actions object has the following type signature\r\n\r\n```typescript\r\n\r\n  {\r\n    setGreeting: (payload: string) => ({type: 'hi/SET_GREETING', payload: string})\r\n\r\n    setWaves: (payload: number) => ({type: 'hi/SET_GREETING', payload: number})\r\n\r\n    resetHi: ()=> ({type: 'hi/RESET_HI', payload: undefined})\r\n  }\r\n\r\n```\r\n\r\n#### selectors\r\n\r\nAn object containing the generated selector(s), always includes a selector called getSlice that selects it's slice state from the state, if the initial state is an object additional selectors are generated with the same names as the corresponding initial state keys\r\n\r\n```typescript\r\nimport { createSlice } from '@redux-ts-starter-kit/core';\r\nimport { SliceState, Actions, State } from './types';\r\n\r\nconst formSlice = createSlice<SliceState, Actions, State>({\r\n      cases: {\r\n        setName: (state, name) => { state.name = name},\r\n        setSurname: (state, surname) => { state.surName = surname},\r\n        setMiddlename: (state, middlename) => { state.Middlename = middlename}\r\n      },\r\n      slice: 'form',\r\n      initialState: {\r\n        name: '',\r\n        surname: '',\r\n        middlename: '',\r\n      },\r\n    })\r\n\r\n     const state = {\r\n      counter: 5,\r\n      random: 'random',\r\n      auth: {\r\n        idToken: \"a random token\",\r\n        userId: \"a user id\"\r\n      }\r\n      form: {\r\n        name: \"John\",\r\n        surname: \"Doe\",\r\n        middlename: \"Wayne\"\r\n      }\r\n    };\r\n\r\n console.log(formSlice.selectors.getSlice(state))\r\n ->> {\r\n    name: \"John\",\r\n    surname: \"Doe\",\r\n    middlename: \"Wayne\"\r\n  }\r\n\r\n console.log(formSlice.selectors.name(state))\r\n->> 'John'\r\n\r\n console.log(formSlice.selectors.middlename(state))\r\n->> 'Wayne'\r\n\r\n console.log(formSlice.selectors.surname(state))\r\n->> 'Doe'\r\n\r\n```\r\n\r\n## Other Exports\r\n\r\n### createAction\r\n\r\nThis is the helper function that `createSlice` uses to create an action. It is also useful to use\r\nwhen not using createSlice because when stringifying the function it will return the action type.\r\nThis allows developers to not have to worry about passing around action types, instead they simply\r\npass around action creators for reducers, sagas, etc.\r\n\r\n```typescript\r\nimport { createAction } from '@redux-ts-starter-kit/core';\r\n\r\nconst increment = createAction('INCREMENT');\r\nconsole.log(increment);\r\n ->> 'INCREMENT'\r\nconsole.log(increment(2));\r\n->> { type: 'INCREMENT', payload: 2 };\r\n\r\nconst storeDetails = createAction('STORE_DETAILS');\r\n\r\nconsole.log(storeDetails);\r\n->> 'STORE_DETAILS'\r\n\r\nconsole.log(storeDetails({ name: 'John', surname: 'Doe' }));\r\n ->> { type: 'STORE_DETAILS', payload: {name: 'John', surname: 'Doe'} };\r\n```\r\n\r\n### createReducer\r\n\r\nThis is the helper function that `createSlice` uses to create a reducer. This function maps action types\r\nto reducer functions. It will return a reducer.\r\n\r\n```typescript\r\nimport { createReducer } from '@redux-ts-starter-kit/core';\r\n\r\nconst counter = createReducer({\r\n  initialState: 0,\r\n  cases: {\r\n    INCREMENT: (state) => state + 1,\r\n    DECREMENT: (state) => state - 1,\r\n    MULTIPLY: (state, payload) => state * payload,\r\n  }\r\n});\r\n\r\nconsole.log(counter(2, { type: 'MULTIPLY': payload: 5 }));\r\n// -> 10\r\n```\r\n","readmeFilename":"README.md","_id":"@redux-ts-starter-kit/core@2.0.0-alpha.6","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-pZ15DHOhQ4+AgHdpUQ4dHIdZnfrnybOb2ZWI5UceSxeinsCHoKJC8OquV0GqxeccacBQofLnuKyJmijgckVQLQ==","shasum":"20bdacf09d65af125bed9ec090b87e427de5c80b","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0-alpha.6.tgz","fileCount":12,"unpackedSize":68971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctnpICRA9TVsSAnZWagAA6aEP/0546tW0T9kKMEk+8Cht\nKky/y7niHnGOwrNVQOTOu5b7Y5iZF8iC64/oz34KpHM9mtrDMRV4509tIlYj\nQLrQQMQeApLs6YkD5zUCvhaMHgG77cXvqJLD4d0v3btZAeO4LHWOJZE9RpN9\n7R8Ga5XxX3wFZrgsc25Fv18vW7ANpUJdbnBs+dhHv4M/ddb25CmiRup6IVjJ\nTVeJoGsuZvrAi2pTI9qelV+5FLhzEYfv3vkdEti4iuPgbMf6/1U0w3kOlj6D\nkBLCAYsvpuHskYnBBPn8NSvsvgW6WHwudyusuQk6n/ummEJhL4+iOVgqhP5t\nQmPSiEi+DF0BC6iikK2zPKVHt7502DCC778QRBI1TW58TUaP804KSY5j7IhS\n8Vx8uB5UJvzx1NfOXBe57dGO9QVVY2e+Se/CgW8Hm7JyDHTUQSLbxo7bhELX\noghh3LN5kpZx/Tqj9zZKW8UgiGmRAxATjUjN1StSOV2Ata8rWV9qqn1c94Hg\ncX/h0VoVYfrr3bNoptmvE/KTSwrhh1xSHJ+zmtX8Y6tdq+aqJ5YCa57gpiZS\n6Ba9rvr7FyNhdxS0I2Q91jCrWzVtgPhQyEKgX93mylwVlhOhK7TNSXeCBx1z\nNDOrYl8LIeZkOGo/7mVapR+56yHZWiWZHLM54JXUeVT49DMClBQCo3eGmrQv\nSqYA\r\n=0Eb3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDq0YhWKLQ9dTjwU/cTyNTPBaJ8S61eASCt1zUfTpWlDQIhAMEPXDdPnr9jkL8CWPVRSmWEGT8yJ6axF7e9tC4f22sy"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-alpha.6_1555462727301_0.21731943348799598"},"_hasShrinkwrap":false},"2.0.0":{"name":"@redux-ts-starter-kit/core","version":"2.0.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier-tslint fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"devDependencies":{"@types/jest":"^23.3.11","@types/node":"^10.12.18","@types/redux-immutable-state-invariant":"^2.1.0","babel-core":"^6.0.0 || ^7.0.0-0","babel-jest":"^23.0.0 || ^24.0.0","cpx":"^1.5.0","husky":"^1.3.1","jest":"^23.6.0","lint-staged":"^8.1.0","prettier":"1.15.3","prettier-tslint":"^0.4.2","rimraf":"^2.6.3","rollup":"^1.0.1","rollup-plugin-babel":"^3.0.3","rollup-plugin-commonjs":"^8.3.0","rollup-plugin-node-resolve":"^3.0.3","rollup-plugin-replace":"^2.1.0","rollup-plugin-terser":"^4.0.1","rollup-plugin-typescript2":"^0.21.0","ts-jest":"^23.10.5","ts-node":"^7.0.1","tslib":"^1.9.3","tslint":"^5.12.0","tslint-config-prettier":"^1.17.0","tslint-react":"^3.6.0","typescript":"^3.4.5","typings-tester":"^0.3.2"},"dependencies":{"redux":"^4.0.1","redux-devtools-extension":"^2.13.7","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"prettier":{"arrowParens":"always","singleQuote":true,"printWidth":80,"trailingComma":"all"},"lint-staged":{"*.{ts}":["prettier-tslint fix","git add"]},"gitHead":"2fa60ecde4c8e78d1dbcde22731f5ebfa9c1cc01","_id":"@redux-ts-starter-kit/core@2.0.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.5/node@v10.13.0+x64 (win32)","_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"dist":{"integrity":"sha512-cZbYLN3SELqvdyc/AU9nF8e9hSWZLyWztaZAPCm5n6BWnfbB3Bx095mZQDA9SePuJgqlpfS8pLUjxSAzuKbreg==","shasum":"a8e95ff8c4e2db4bc522dab5156299ca28db4b5a","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.0.tgz","fileCount":12,"unpackedSize":56111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1qtRCRA9TVsSAnZWagAA0JEQAI1c7SsgZ+sAgv1oZ0aY\nXLthmiWGLNvE5N1UHsyaN6k2O6yh7za1ucmGrxi+PQ7mmob8cdK/mwfJkL6y\nPke7p4d6FXzNmVz/GZ1jXn8OvlnBl8l+sqIH+Puw95K5nY9UJJOdXnTco6a+\n+RA/BelfCNgfbn5rgwQcrQ2+wWGlWBDGnI4XmTmRohgNyUXzTJrNVkJhAwPT\nnNaeXC2Taky1z6jS61vO4PC8ZG8apb4XLSmmuVhhYHbBev4aVaU2S9J54oPY\nb1MhIXxqFaGR+Wsxe+KtP+ypS7HnNx/ci/wuU5EQs4hWRm7ZsE8BZne1iaip\nrJkHSQLCTmRTb0mO5LeceWGh+htdmqrKZ78D9FlH2l5Ijuk8wl1hwlMUpD9v\nQfacaWey46hb/G24nSgpRPdTvpjCF/vBBTutF7hfSPdf5CS1WeXFAreuvHJO\n77riKkF1cb3l+nWm3LI+1sBWLBbGaxq+GuIO3Id3Nb8dAHN71BGGoid9BK73\nFWT0DesshrgWoPrtQdMkEUKpSFKYfyfOTnu/2Y9/gB5jvDAyIAzVXGn6h5OI\nA5Iyo0vPcHOstT9MuwjGkHhOOuLf8/1bLH5MvcZgIVSp+WhQi8k4rdhJnVIc\n///yj2Mmpqi89J0nT7qtbCJx8qOi5P5fZ6GzvTiiyrO6M2yZ9PR9PGmJxbPx\n7/2k\r\n=wcj/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIXFoD3HDw1f+UM+roq8tLM2kRNTx7iGGlZ3KfcSp3qgIhANO4PQWm8JhjkeSjjvTRNfgnwIyGdP6xAQaaoXOPS8u8"}]},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0_1557572432983_0.02287929783899445"},"_hasShrinkwrap":false},"2.0.1":{"name":"@redux-ts-starter-kit/core","version":"2.0.1","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","build:declaration":"tsc -p tsconfig.build.json","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.0-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","tsdef":"^0.0.14"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"66780a64011eb13e5bdacef97fc88146242873cd","_id":"@redux-ts-starter-kit/core@2.0.1","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-HQpL2p4TOOw2LY7Q6OTIZTiahRI0Mi85wkU0ag90T3Dj+rrMm4xG2RDilzHWCDwFcLnRs2DnPBQxXx1OIN4+Sg==","shasum":"f13b6337e27c684f1cb740afa911a74eb0e08b4e","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.1.tgz","fileCount":11,"unpackedSize":54275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/zv2CRA9TVsSAnZWagAAJFIP/ibEblj24QqvhNoz34Qo\n9zCEE418DiOmm522AjgX7OIlf0tVhn0XZ9Y8diWx8kWQROsuo+aWkgOo9JtD\nnyjHM2/uitIFINfbidkA8fx+JIEEcBygyPZ9WLI1xWYWYAjvfR2Z/Lkn4YLn\ndoRxcAmBsnme0wencgqwomfbj4w0gMXK2uul+S+wugsg00/1xhvZKg6OFNRf\nncTCEUK6noEtE4ZkSzdh1ZMaxdJBEYrWBy6sZLfr/NNZKXtlNgVfHC9rrdim\nSbzh+YTf+rkX0kPEebgKQcnGlMTMcqxtmMxxy039pNQZN/UEAFAOYWy7OgEc\nHEilGE6osCduZCRfz7ydIr48MXBQNQ4WypWNiosGdfhmaRxlxyGQZiD9wke6\nKPkMi8FzHf+FwPAKVL0GxDYojzAB+DHgmK+fQKWqcchgw8gcXyY5aIzxFt1+\nFsPW8kntQHfrBCDnummfqUqX8x4dg7i23iDrWFx228Y+pjz+/DXJMstEFhDX\nIkdrZPVfMg/JSAoVGcKuqnGr7GQDdhBwBWOD0S2MPObPPu3KkyPWVpMje/Mp\nbpw3Gf8yklZHVhx2N6NOpAjQ+PFSJIzok75WxAQDjeZ7KM8aL9zUEFI+rB59\nvIrOWspW2bOLyxA8SJ3+0g8k9k5KvrJM3vrpBFfLga2HWV7Ujz1DJQgeNJC4\nQi0W\r\n=7JnX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEaYDfZZJsA+wrOfZGlQNbavV60lqDLsDMAr+f9qbGtAIhALKjak6LcYJaZJp4XqshadBVExHNYlzy0a7pr1mBdtS6"}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.1_1627339766070_0.13939682775997997"},"_hasShrinkwrap":false},"2.0.2":{"name":"@redux-ts-starter-kit/core","version":"2.0.2","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.1-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","tsdef":"^0.0.14"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"beb38f9ea366c9af9eb31461534c205a27606fdb","_id":"@redux-ts-starter-kit/core@2.0.2","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-K8ahoGofYoV3RpFFxhgiSJD84oSRAvHaaoF/Hz9RvCI9kd+hIpR3/5dJLsYamrGmOd9VWDXy7YLu3ncrunhalA==","shasum":"1766eafa98324510121da9da52809f7cd7cf132d","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.2.tgz","fileCount":11,"unpackedSize":75606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAH0SCRA9TVsSAnZWagAAIBMP/3gfX6ZSQ3Fw8VAW+WxF\njXGeipsXVrlqVFj3LrjaCCVdMV/oxX6lb0gCvXLcGQpxGvWxOLPUsCbTcSbU\nXngrnjPyUT0LS1pKh+rQoLPilpOu6gbcilhqYen4MpD9Cf9QM7VYWJTAhP1E\nSY2hzR+sbxI0Q5DnoIO6bXfgdebFWtzlnH4gjeuOqmFKzOzQwu5kE4o+g2Qy\nX99jcSkH0NezZ4ePYPV0Z+lI7TQFTxW8bGghnf1A0/ARblBN04H+XtXVRc0x\nECSJLcQCZ6/48ucCdKsWyOKX1cuoJx+etvIEXO6YaovCIWEhlGJqp6dsHzTf\nx4tg0VpdALdwAPSn8sfmGDkaWRNVa3ye9Rv2ZZx8SqqaOVVXtfN50/YD85NB\nF511LGq1865lMyUQ2if+7F8HbgQMMMOWNFkQc1kVEDUuaAghoCEzK8qObuKT\nisfsCC9/6gIXQciYAxTkhoyZI8yngZZpFxpIJHMB+wA67MQUoqfeO3ZtPZvZ\nJbzGJPDzMFTWopToLoIhPIm/5kHH3Qprh4PKneONzH5IT7IyKpX0qyqB8HQD\n8nLyBHutR/CPeYGnKbdbrw/gGBT5o+GnczsgDjTCY5bbh4BYUpK3iSH8u0EC\nW9nXAoOM79QJ/+kM3f38MUdMyaWOy0f0+J2KD3jhbwG+Q6XS1wc6EZv3a/KM\n7OMX\r\n=fEKU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdR1NDKSG7CvBUgNaVcW1F2ZJrAPtjjIWrGmCuwVbO0AIhANKCkcapUsgWx2Bsm5uvS55Awop04Lsc0mn12vkamJTR"}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.2_1627421970143_0.0886938217625457"},"_hasShrinkwrap":false},"2.0.3":{"name":"@redux-ts-starter-kit/core","version":"2.0.3","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.2-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"4bb5113c3f87eeadca249c44e5aa5459120ce5bd","_id":"@redux-ts-starter-kit/core@2.0.3","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-G01Huzzsp7DiN/Z7PjFmYAY7rhuVbTIKPaOlPomObMRvwk+I1WJJlp1WtHViEYpFEmHR+PARzDTneA/RI8ZQPA==","shasum":"717b696a3394e37b0f4251e2ece0dba58173ff9e","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.3.tgz","fileCount":11,"unpackedSize":75582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAIidCRA9TVsSAnZWagAAN1IP/iJ4av0OCuanU+5glsxR\n/QVTcJ9XS572vUjunDzGbUOTjO1ClMhHG+WuGR9QOQmDvSiuMqbIr78r0edD\nT3pqYTp2y4JGSzVpe3YLZdyzdzP0e212AFwlAqZCAnLOTj8cQaXbfUdfINtC\n6Y1lxMWceY7EwtNX+4cpxvy0UlWalaVX3aAaLhRJ7ds6RWIKyxiNqbvOOP2d\nmHgiPJnJtdIABEnQCva/dncjuJJ+w6mRWldriCafo9w+Z5b5m3nB3EGPVyr/\nEmGB3Ipj/Df/zmccAwfUmQAIl4MWI+wXfX/ItOmT/n+eNilx+thctVrDtrFT\nTzmBkSJx1lIT55WlWY0yMitM1Nc5epdHEGaWyvCMEOLTS9zCwZ+cGAaKpbTc\ngxBgiYcP+3MyEHqPxyEktxU6w3a3IaPhhAp/I+cp0HfsqqvC4e9hZAEJKsZX\nqNHoKsYXOoR/BiYqcufUw62EGXXjge6OKSZCi0bz0+9rnbDL47qVGu2dteAo\n1FneI6QocijUTzvRtOxCrfYN9puWvoBc6/w9zODgYbxEPhX8bgrKi2uP4qi1\nQKdQCjuDLsr9RLESsWUWKDihfgObd59OjoRPvlmGp1/ezhxNtkhmj6MZdFy1\n4MJWyxG0UnuFKFPo4UaCeld9w8L1aBvNHRwKqJWE5Y6kzUw5BCZk4YupAoNU\nTbUu\r\n=N2q8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByHP7G40b3wJ9hTRDBM4+LPcnQGxrftrAC70nu4t0rAAiABbBXroEwv9tX7sXkWFeAzLw/QHbW48kecxlNkqWxmsg=="}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.3_1627424925545_0.7234618757750879"},"_hasShrinkwrap":false},"2.0.4":{"name":"@redux-ts-starter-kit/core","version":"2.0.4","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.3-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"c511c1bd268c161fd72fc13b59a9d6d6c6dde5a2","_id":"@redux-ts-starter-kit/core@2.0.4","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-BNOaJr2cF02BsblZRqMOB0hArl7kubVm3tuiIUiufF7Jc2SkVphVirUWZAYH+I0KhtSnfvFn1FiowoyhuTXrjg==","shasum":"f3137d85724ededc616a6db83e231e1f460aca81","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.4.tgz","fileCount":11,"unpackedSize":74314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAdysCRA9TVsSAnZWagAAdt0P/RjDoisqm7zJuTNAb0zS\nn8/NZEfVzuYGzNqx9mfs6aSJwhHTehF5pHe33gvTTHT1i611CbctWjvkVR8o\nLv3Ac4pDK+UGhrtReL2UFyipeOnEESAwO8rYMBzQpbAQLvk2NB01sxFmseZZ\nGdM0kpsr5ePsef1eIQCQtnjFBV3OK8m9n8zJnRf/SKHkRovWeIL4+y1zmU87\nPtYTn7UMO0AO+njwlPC2RvqitcXbtn9AvKSBqCklIv94fpUAKqPjBkc9Ffhl\nnXbGBXsQEqdSru+dCZiB06begNAZIsRR2YgCpQ1NuYuWWXs4lr/Xx21s63sk\n9OIaY3L3ipiN7oaUBNysDycuaNNEWfn2QUZjM9e+zJ4FU3tomXteicdL2i/a\nHjGEsM6MZ2y1Jm7XpFbQnq31RI4rn/c5Ro1VbEM39w6DbIvd0i4MdxPnkcwF\n7NQYFO/Gw9VBvy0QRLb8+1QSQP2LwRUBffehst2pIC8Ql1m9Y9qIG8uFBL7m\n8smcgwbAjaOxV1Wa1/1+7QgqdMlLBu3nEkcwO8Dax5DBT2FJPY9rFp7+4vKL\n/s+Pfrz/7S9hsmvo9RGphKbravDarP10rqSH9tY3vDDYeFsgLUokO5zyxQMo\nUJa9E1qVZFs3IbF6PJJxDzcgTOoDMXG1S/hn/9gK0CQkApVTUhTT578faCCl\naeDb\r\n=l50/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHbmdpF0LIMtk7bdTAmcQ/DI/jh8MvXR+gLzrAWONgZAiBz2u28DQCXchct6yn0gBD/uUb6HGuTiOpEk8nbBkyg0Q=="}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.4_1627511980806_0.5566747721516767"},"_hasShrinkwrap":false},"2.0.5":{"name":"@redux-ts-starter-kit/core","version":"2.0.5","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.4-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"d3c3b912ad5e63e91c30a802fb3e99be94453375","_id":"@redux-ts-starter-kit/core@2.0.5","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-HvMp+lY6Ux0cdcBxcTyj2neJtsX2wFxrX5xx/Qj2p185m7EV0YD+3aRHnIQ6nKc745Rw55Bcy/sYmWLXQ/izGQ==","shasum":"b69f9e6d3772c6e85f2177f5f812dfd6d0ece43b","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-2.0.5.tgz","fileCount":11,"unpackedSize":74314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAenECRA9TVsSAnZWagAAVBUP/j+MqxAqWK+UdyC++/Ig\nZjY15e2PoTONNLxmG9NmfGr+zFOkWw+QeD2UwblzQ5MDQrK2bi7G3MkuGbCH\n9xX62wc8ONkaf+TUOvxtzKnJc34O8/rylozkv2fvhLtSwBv4oIeWOW9kQb7x\nzrSyCEbMrJEFG8Ra9jZsj0G3gxsQMNoJajKfYT9l8DJUwBFKlAliB90uoU1E\ncxtQER/Mh0WIYJ9OBk5+rk0s0Dx2FvkLrIZx03c09vWB20a4R6vYKLwWPGh+\nbTqxF7l59hbF5C163iLxU4RlUrNil0pmcc7r1mZ302n4Lq8XFWA8MYPcLYqR\nQhZpnGAnAN5aiN+XytI06P2lGQQ3bxcCZC1y8szvP3+yFZDJbkAc5rT0BYvX\nbEZKHb3lfene7xP7HitAaShgn45C+oV8hOeNcTHaPxWh7ktu38vyZdiPiihh\nFz9MLusGxzY2FXpvW9bKjr7WxYYvOU6RksUURa+KvKbKP06t6wUrfk4hJL1I\nL4vQ8b6xa3WsRjku7EiRQAf/iWla+QufDZOiJBZBsoYrlB5j6mJkTZ014fbN\nGla4AtlyMQEJRDjhwA+ttqc5ZWzlK23y8NJEtV8TJ+kPf+QGvyY+x/ymdouY\nhCi1wBIY5tnZlDtpYC6qmSOvMZQkIvZEkkyuuIBPVrTvABqLhNMD7IYP5rUW\nOouW\r\n=2yQH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkXG7iqHQFLszhtKgi5NnDg2szg8aXlybnzdu3Kpo6RAiEArp4cUykfONyI59K0ecSE+gAaTWY/RYdk/MN8vcBS5NE="}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.5_1627515332063_0.6155958639033927"},"_hasShrinkwrap":false},"3.0.0-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"3.0.0-alpha.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.5-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"324fc23c4ea32e541877ad5249f73c0671ac6c08","_id":"@redux-ts-starter-kit/core@3.0.0-alpha.0","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-MYC37gL9u2RjCoktdF6r6uI+ztMoJeLfVP5xp9JID+sLeDypiegyvRa6vp2iOWi50oA83weYZLA22Fu1wVpBgw==","shasum":"cb9d25aa07800e47daf1fcb96e4c747c83d5874a","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-3.0.0-alpha.0.tgz","fileCount":11,"unpackedSize":74322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBbE1CRA9TVsSAnZWagAAdAAP/Asd9Aqek/yoGFGMRVyX\n7Ku8KoMoSWDBs0Qf7riusQvIZOsn4DHKY9XErGQMOY3bccdKOTn4dk8/JmfH\nKiibQO2YGDipmThbNzRucFin4BI0A+M+RgCDCpVg63YbQgzunEcuixzKcIai\naCQE/HkWn+pEziPJLIgB1/yFpDC3fFVs33weHxPXjRy0q2KMd1OS1/Oc4BuX\nukJLHCqNYOf6v7+h+Ne/Ta8bkbVBrkywOQYkJSGUiFdw740WRYMOYqgk03X4\nmVVcd7YXhFW6PClaCSRS8tnnFTuxqHAuQL0yo4mbsQpo2CpBooBZIjgQumUb\nxAJejsZ5Dj8RFCrjBdQM9vI1SLFJaAVIujHWZVhfiw+Kn5BNauHaf19Ap430\nkdVPUUJaHXUFTVRptMlGWNw2Le7lQYbxYpsojfX0PhcJfvMavjNMeG2QZH0I\n0qbJA6i3uquHj54SAaab1VuJW+t4FnykqiPZ2LOly5ebb42H2bELvF5/p78g\n33D4Gpa5fLM/ZGNw/r9xkID/+w3ozjW2rBkFUhComqUZA47vTeMrGHyW16S5\nl1bObAsqkv5UJM1qHY133xSh+EhgVnM9I+IsAmgqfseqiEGRSSW6OefNMFKj\n+RGRz04kxZq661SGfqMSDO4vOVrsIyDYzCvi6dyiIO4ZkLbGYKyhGpKijmEx\nIXUs\r\n=pn/u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyPmCgNM4ZVFo2sgufaDUpW//PiiAi9zDjHb6JiEGkewIhAM31KFVoyxLOqwyNUNpd7JTwsbkR0v3mgVBmaI1npkMu"}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_3.0.0-alpha.0_1627762997090_0.367773465825443"},"_hasShrinkwrap":false},"3.0.1-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"3.0.1-alpha.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.6-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"8fea4d8f1d1fbf3232389bfe58712ea12eca04ae","_id":"@redux-ts-starter-kit/core@3.0.1-alpha.0","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-MsXnTKuqYp31VGpnBcVCbeMLouxCQhFtkr5d9jgFepvMAMQjbGOJM8Y1K9o10MyaW1EC72fFRe7wtEyLDFliNw==","shasum":"240f9988e838becfbe4b075ee65e4c5d11555126","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-3.0.1-alpha.0.tgz","fileCount":11,"unpackedSize":54441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBbxYCRA9TVsSAnZWagAADCQP/1TwE2drv6N+ybfJdWlJ\ng52ksjWVVUkUnU7cPgoLWoLIMtQqNs6taaSwC0xPVihovZaSn+vwNdRkwh26\n4NpNKmibfZOC9Kw1txVXxj4KyH+1uxBdEzfPBYyMh5Z9s/xFNjwfxMWbHiRO\n9TUqOePqv7GTjs09votGRxNZVhviC6Uc8cjX2YLNW9O5R/CVjCHEJIWSY4/U\n1SulXgDx/s1yYoUp1N9ry40XIwXoJb9zuhoa4EPg2M4AbjTuiJf4Gz4t89+j\nCnVJae092gdDSL+BT5UxrpWKaQ8BrMdD2gHY5GzMYhzfsM0S9Z5sEXmpi5LV\neBSKSCth8r0m5cbdOOr7yu1NL8LxPQZ/ylEr5ehID1eTdJZp2bEoOmJZmvw8\nZXINuVHJlX9Z8GgF6MgOmFNQ7mo0uleXczSwcxQSL7B7YReijpSu4ZOLM6/s\nnKGPoLVHKgmapgx/93ovoqF9wQxfqB4aVtxwLdlP7CxwPNN9wHeJNVahlwme\nRCtNemtI+iE1R3t3CGgIY5jkzxWzjKw4Cott7O2Zj2gRUbBAIquFLcPkWj0B\nObJhxMdEkSgCdGM2LZ5jJU2GiMd3tv0JfuzVQkUntSWbC3LDvb28w6HWs2rw\ne3qUjqjR3HXibGwv0b+kWOFcYKq3c963T6+F5QCqpGYGm9lrAex2za6xce0j\nb3BQ\r\n=apxr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8oQQBz38myhWJGdN2LBvjSa5EheJiWO+1uDvx14xvPAiB7nUQ7waq1sK1Pm6VKTLGHRF/Pbd5oIE+93RJyEV7d5Q=="}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_3.0.1-alpha.0_1627765848381_0.4464592760456183"},"_hasShrinkwrap":false},"3.0.2-alpha.0":{"name":"@redux-ts-starter-kit/core","version":"3.0.2-alpha.0","main":"lib/redux-ts-starter-kit-core.cjs.js","module":"lib/redux-ts-starter-kit-core.esm.js","types":"lib/index.d.ts","license":"MIT","description":"Reduce redux boilerplate","author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","clean":"rimraf lib .rpt2_cache","tsc:tests":"yarn run tsc -p ./src/tests --noEmit","lint":"prettier --write src/**/*.ts && eslint --fix src/**/*.ts","example":"ts-node ./src/examples/sample.ts"},"keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"dependencies":{"@redux-ts-starter-kit/slice":"^3.0.7-alpha.0","redux":"^4.1.0","redux-devtools-extension":"^2.13.9","redux-immutable-state-invariant":"^2.1.0","redux-thunk":"^2.3.0","reselect":"^4.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.1","@rollup/plugin-node-resolve":"^13.0.2","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^8.2.3","@types/jest":"^23.3.11","@types/node":"^16.4.0","@typescript-eslint/eslint-plugin":"latest","@typescript-eslint/parser":"latest","@typescript-eslint/typescript-estree":"^4.28.3","babel-core":"^6.26.3","babel-jest":"^27.0.6","eslint":"^7.3.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-react":"^7.24.0","eslint-plugin-react-app":"^6.2.2","husky":"^7.0.1","jest":"^27.0.6","lint-staged":"^11.0.1","prettier":"^2.3.2","prettier-eslint":"^12.0.0","prettier-eslint-cli":"^5.0.1","redux":"^4.1.0","redux-thunk":"^2.3.0","rimraf":"^3.0.2","rollup":"^2.53.2","rollup-plugin-terser":"^7.0.2","ts-jest":"^27.0.3","ts-node":"^10.1.0","tslib":"^2.3.0","typescript":"^4.3.0"},"gitHead":"6e7140b4cd6ff76e3b83cd8fa168a67ac6572131","_id":"@redux-ts-starter-kit/core@3.0.2-alpha.0","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (win32)","dist":{"integrity":"sha512-wmwRcn6/gpOLZVGji166Fxh8X/k0OKtCTCYY4Fj79uDMcrOmXwh+ka9VgpatQEH8bcUtWB8gBKM7iRIuocT3kw==","shasum":"d0fdac0b001997ee7b2265cd22ad89f6ae73aedf","tarball":"https://registry.npmjs.org/@redux-ts-starter-kit/core/-/core-3.0.2-alpha.0.tgz","fileCount":11,"unpackedSize":54441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBcvwCRA9TVsSAnZWagAA6gIQAIGWtT9Vnzy6yW/X2XT0\nLECj9o9fCE8yiDDRB+fK/NyFIVRRiPpQz6YVoBpUmkPQfUH0AFzwZB6tjHF7\nsCnYDXIe+EcjneZOGJzuijkdh+4kOp+XpG1X4P/0LVKwIflDgwT9/I5QvW9e\nbblfXNdqWzw2JFlBhBdUfO3/xF81WGdOJTtJ31nDexPebfMYsAiVel54lhQe\nMD156BS03mA4/nCEw6TgQ6ARIk/d6ZAJndbvCqCDXci2MQ5MMFBG7fLSulI/\n19Em5b/4pLsZ/NLufXHpg5hG4wEuGb60VcfjfeYy7mgj/3/yEl+sg8TEuO/C\nE6n4P983qHxZYh4vXhx9ovnCgNYvUIrk2XWbezyDME5hiRYIvAlWrdh02h6x\nfs8gmENx4hMKkCddyl64+Qpf/FpsHBJm4o/LFLswsw6m2WH8+LWc2RXrValb\nWQ8wP0daFNTtBbAewY3b4bzW6mAgKD72ZbhCvUh2exGUbAAZyOmCJot1ATdq\nTaXHZyUTWGqfUgzIEl6oxIYHpqey0oB8XuKDGqlzuc0LUIuVKad1/fnoRBeS\n16QOlyagr+cioYQQtx+DA7B9oExdZRaRrMAfuQz71A+btlZRwh3GLvooTlQN\nXHSLQeEiUrHnN1yrELfprBVKQDorgkQTdSdKQSqW+Xg5w5kQD8XPCBVV5a8z\nlOnY\r\n=mH8m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ4G0bU/kLV2Bhecqka3kHFTJIPXYDGgBjgBQ6620kzAIhAKk6Ck4rEUOcAQjZzB1bY6fkxl4/JCSSDDTuw6pMmGET"}]},"_npmUser":{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"},"directories":{},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_3.0.2-alpha.0_1627769840415_0.5767494514522753"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-04T10:05:06.733Z","0.0.2-alpha.3":"2019-01-04T10:05:07.651Z","modified":"2022-04-06T19:00:26.878Z","0.0.2-alpha.4":"2019-01-04T10:21:20.406Z","0.1.0-alpha.1":"2019-01-04T12:39:48.740Z","0.1.0-alpha.3":"2019-01-04T13:12:08.882Z","0.2.0-alpha.0":"2019-01-04T16:42:59.239Z","1.0.1-alpha.0":"2019-01-04T23:44:39.363Z","1.0.1-alpha.1":"2019-01-04T23:54:55.129Z","1.0.2-alpha.0":"2019-01-05T11:14:20.583Z","1.0.2-alpha.1":"2019-01-05T11:42:17.800Z","1.0.2-alpha.2":"2019-01-05T12:35:36.347Z","0.0.1":"2019-01-05T12:45:56.479Z","0.1.0":"2019-01-05T16:03:24.763Z","0.1.1":"2019-01-05T19:32:44.310Z","0.1.2":"2019-01-05T20:42:31.475Z","0.1.3":"2019-01-05T21:19:08.293Z","0.1.4":"2019-01-05T22:50:02.633Z","0.1.5":"2019-01-05T23:25:09.887Z","0.1.6":"2019-01-05T23:35:22.589Z","0.1.7":"2019-01-06T01:32:21.125Z","0.1.8":"2019-01-06T10:56:34.283Z","0.1.9":"2019-01-06T13:20:25.789Z","0.1.11":"2019-01-06T14:16:21.033Z","0.1.12":"2019-01-07T19:25:11.373Z","0.1.13":"2019-01-07T20:12:39.467Z","0.2.0":"2019-01-12T18:21:56.916Z","0.3.0-alpha.0":"2019-01-13T01:47:59.640Z","0.3.0-alpha.1":"2019-01-13T02:15:25.128Z","0.2.1":"2019-01-13T02:20:19.044Z","1.1.0-alpha.0":"2019-01-13T21:54:22.238Z","1.1.0-alpha.1":"2019-01-13T22:07:55.193Z","1.1.0-alpha.2":"2019-01-13T22:33:46.730Z","1.1.0-alpha.3":"2019-01-18T21:30:53.410Z","1.1.1-alpha.0":"2019-01-18T21:48:13.563Z","1.0.0":"2019-01-18T22:06:32.655Z","1.0.1":"2019-01-18T22:36:22.205Z","2.0.0-alpha.1":"2019-02-09T17:13:29.006Z","2.0.0-alpha.2":"2019-02-09T18:19:06.241Z","2.0.0-alpha.3":"2019-02-11T17:33:11.740Z","2.0.0-alpha.4":"2019-02-11T17:52:57.671Z","2.0.0-alpha.6":"2019-04-17T00:58:47.484Z","2.0.0-alpha.7":"2019-05-10T22:41:52.666Z","2.0.0":"2019-05-11T11:00:33.173Z","2.0.1":"2021-07-26T22:49:26.311Z","2.0.2":"2021-07-27T21:39:30.309Z","2.0.3":"2021-07-27T22:28:45.721Z","2.0.4":"2021-07-28T22:39:40.948Z","2.0.5":"2021-07-28T23:35:32.228Z","3.0.0-alpha.0":"2021-07-31T20:23:17.242Z","3.0.1-alpha.0":"2021-07-31T21:10:48.503Z","3.0.2-alpha.0":"2021-07-31T22:17:20.542Z"},"maintainers":[{"name":"dudeonyx","email":"umeayo.o.h@gmail.com"}],"description":"Reduce redux boilerplate","homepage":"https://github.com/Dudeonyx/redux-ts-starter-kit#readme","keywords":["react","redux-starter-kit","starter","redux","boilerplate","typescript","reducers","createSlice","react-redux","javascript"],"repository":{"type":"git","url":"git+https://github.com/Dudeonyx/redux-ts-starter-kit.git"},"author":{"name":"Umeayo Onyekachukwu","email":"umeayo.o.h@gmail.com"},"bugs":{"url":"https://github.com/Dudeonyx/redux-ts-starter-kit/issues"},"license":"MIT","readme":"# @redux-ts-starter-kit/core [![Build Status](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit.svg?branch=master)](https://travis-ci.org/Dudeonyx/redux-ts-starter-kit)\r\n\r\n## A simple set of tools to make using Redux easier\r\n\r\n### Installation\r\n\r\n`npm install @redux-ts-starter-kit/core`\r\n\r\n### Purpose\r\n\r\nThe `@redux-ts-starter-kit/core` package like the original `redux-starter-kit` package is intended to help address three common complaints about Redux:\r\n\r\n- \"Configuring a Redux store is too complicated\"\r\n- \"I have to add a lot of packages to get Redux to do anything useful\"\r\n- \"Redux requires too much boilerplate code\"\r\n- \"Using redux with typescript is boilerplate hell\"\r\n\r\nWe can't solve every use case, but in the spirit of [`create-react-app`](https://github.com/facebook/create-react-app) and [`apollo-boost`](https://dev-blog.apollodata.com/zero-config-graphql-state-management-27b1f1b3c2c3), we can try to provide some tools that abstract over the setup process and handle the most common use cases, as well as include some useful utilities that will let the user simplify their application code.\r\n\r\nThis package is _not_ intended to solve every possible complaint about Redux, and is deliberately limited in scope. It does _not_ address concepts like \"reusable encapsulated Redux modules\", data fetching, folder or file structures, managing entity relationships in the store, and so on.\r\n\r\n### What's Included\r\n\r\n`@redux-ts-starter-kit/core` includes:\r\n\r\n- A `configureStore()` function with simplified configuration options. It can automatically combine your slice reducers, adds whatever Redux middleware you supply, includes `redux-thunk` by default, and enables use of the Redux DevTools Extension.\r\n\r\n## Inspiration\r\n\r\nThis library was heavily inspired by [autodux](https://github.com/ericelliott/autodux), [robodux](https://github.com/neurosnap/robodux) and [redux-starter-kit](https://github.com/markerikson/redux-starter-kit).\r\n\r\n## Example\r\n\r\n```typescript\r\nimport { configureStore, createSlice } from '@redux-ts-starter-kit/core';\r\n\r\n\r\ninterface State { // interface representing the entire state tree\r\n  user: User;\r\n  counter: number;\r\n}\r\n// Actions interface where the keys are the action names and the values represent the payload types\r\ninterface CounterActions {\r\n  increment: never;    // <- never indicates that no payload is expected\r\n  incrementBy: number;\r\n  decrement: never;\r\n  decrementBy: number;\r\n  multiply: number;\r\n}\r\n\r\n// You can destructure, rename and export the reducer, action creators and selectors\r\n\r\n      // number is the state slice/initial state type\r\nconst counter = createSlice<CounterActions, number,  State>({\r\n  slice: 'counter', // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: 0,\r\n  cases: {\r\n    increment: state => state + 1,\r\n    incrementBy: (state,payload) => state + payload, // payload is type number\r\n    decrement: state => state - 1,\r\n    decrementBy: (state,payload) => state - payload,\r\n    multiply: (state, payload) => state * payload,\r\n  },\r\n});\r\n\r\ninterface User {   // state slice/initial state interface\r\n  name: string;\r\n}\r\n\r\ninterface UserActions {  // Actions interface\r\n  setUserName: string;\r\n}\r\n\r\nconst user = createSlice<UserActions, User, State>({\r\n  slice: 'user',    // slice is optional could be blank '' if this will be the sole/root reducer\r\n  initialState: { name: '' },\r\n  cases: {\r\n    setUserName: (state, payload) => {\r\n      state.name = payload; // mutate the state all you want with immer\r\n    },\r\n  }\r\n})\r\n\r\n\r\nconst store = configureStore({  \r\n    reducer: {            // <- can be a single reducer or an object of reducers\r\n      counter: counter.reducer,  \r\n      user: user.reducer,\r\n    }\r\n});\r\n\r\nstore.dispatch(counter.actions.increment());\r\n// New State -> { counter: 1, user: { name: '' } }\r\nstore.dispatch(counter.actions.incrementBy(10));\r\n// New State -> { counter: 11, user: { name: '' } }\r\nstore.dispatch(counter.actions.multiply(3));\r\n// New State -> { counter: 33, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrement());\r\n// New State -> { counter: 32, user: { name: '' } }\r\nstore.dispatch(counter.actions.decrementBy(8));\r\n// New State -> { counter: 26, user: { name: '' } }\r\nconsole.log(`${counter.actions.decrement}`);\r\n// New State -> counter/DECREMENT\r\nstore.dispatch(user.actions.setUserName('eric'));\r\n// New State -> { counter: 6, user: { name: 'eric' } }\r\n\r\nconst state = store.getState();\r\nconsole.log(counter.selectors.selectSlice(state));\r\n// -> 6\r\nconsole.log(user.selectors.selectSlice(state));\r\n// -> { name: 'eric' }\r\nconsole.log(user.selectors.name(state));\r\n// -> 'eric'\r\n```\r\n\r\n## configureStore API\r\n\r\n  *Plagarised with love from [redux-starter-kit.js.org](https://redux-starter-kit.js.org/api/configurestore)*\r\n\r\n  A friendlier abstraction over the standard Redux createStore function. Takes a single configuration object parameter, with the following options:\r\n\r\n```typescript\r\nfunction configureStore({\r\n    // A single reducer function that will be used as the root reducer,\r\n    // or an object of slice reducers that will be passed to combineReducers()\r\n    reducer: Object<string, Function> | Function,\r\n    // An array of Redux middlewares.  If not supplied, defaults to just redux-thunk.\r\n    middleware: Array<MiddlewareFunction>,\r\n    // Built-in support for devtools. Defaults to true.\r\n    devTools: boolean,\r\n    // Same as current createStore.\r\n    preloadedState: State,\r\n    // Same as current createStore.\r\n    enhancer: ReduxStoreEnhancer,\r\n})\r\n```\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { configureStore } from '@redux-ts-starter-kit/core'\r\n\r\nimport rootReducer from './reducers'\r\n\r\nconst store = configureStore({ reducer: rootReducer })\r\n// The store now has redux-thunk added and the Redux DevTools Extension is turned on\r\n```\r\n\r\n### Full Example\r\n\r\n```typescript\r\nimport { configureStore, getDefaultMiddleware } from '@redux-ts-starter-kit/core'\r\n\r\n// We'll use redux-logger just as an example of adding another middleware\r\nimport logger from 'redux-logger'\r\n\r\n// And use redux-batch as an example of adding enhancers\r\nimport { reduxBatch } from '@manaflair/redux-batch'\r\n\r\nimport todosReducer from './todos/todosReducer'\r\nimport visibilityReducer from './visibility/visibilityReducer'\r\n\r\nconst reducer = {\r\n  todos: todosReducer,\r\n  visibility: visibilityReducer\r\n}\r\n\r\nconst middleware = [...getDefaultMiddleware(), logger]\r\n\r\nconst preloadedState = {\r\n  todos: [\r\n    {\r\n      text: 'Eat food',\r\n      completed: true\r\n    },\r\n    {\r\n      text: 'Exercise',\r\n      completed: false\r\n    }\r\n  ],\r\n  visibilityFilter: 'SHOW_COMPLETED'\r\n}\r\n\r\nconst store = configureStore({\r\n  reducer,\r\n  middleware,\r\n  devTools: NODE_ENV !== 'production',\r\n  preloadedState,\r\n  enhancers: [reduxBatch]\r\n})\r\n\r\n// The store has been created with these options:\r\n// - The slice reducers were automatically passed to combineReducers()\r\n// - redux-thunk and redux-logger were added as middleware\r\n// - The Redux DevTools Extension is disabled for production\r\n// - The middleware, batch, and devtools enhancers were automatically composed together\r\n```\r\n\r\n## getDefaultMiddleWare API\r\n\r\n`getDefaultMiddleware()` is useful if you need to add custom middlewares without removing `@redux-ts-starter-kit/core`'s default middleware.\r\n\r\nCurrently it returns an array with redux-thunk.","readmeFilename":"README.md"}