{"_id":"@bryandbor/metaphor","_rev":"4-af7f75adb4c8da497a0602207bf41120","name":"@bryandbor/metaphor","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@bryandbor/metaphor","version":"0.0.1","description":"Store metadata for analytics","author":{"name":"bryandbor"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bryandbor/metaphor.git"},"main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","engines":{"node":">=8","npm":">=5"},"scripts":{"test":"cross-env CI=1 react-scripts test --env=jsdom","test:watch":"react-scripts test --env=jsdom","build":"rollup -c","start":"rollup -c -w","prepare":"yarn run build","predeploy":"cd example && yarn install && yarn run build","deploy":"gh-pages -d example/build"},"peerDependencies":{},"devDependencies":{"@svgr/rollup":"^2.4.1","babel-core":"^6.26.3","babel-eslint":"^8.2.5","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","cross-env":"^5.1.4","eslint":"^5.0.1","eslint-config-standard":"^11.0.0","eslint-config-standard-react":"^6.0.0","eslint-plugin-import":"^2.13.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^4.0.0","eslint-plugin-react":"^7.10.0","eslint-plugin-standard":"^3.1.0","gh-pages":"^1.2.0","object.omit":"^3.0.0","react":"^16.4.1","react-dom":"^16.4.1","react-scripts":"^1.1.4","rollup":"^0.64.1","rollup-plugin-babel":"^3.0.7","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-peer-deps-external":"^2.2.0","rollup-plugin-postcss":"^1.6.2","rollup-plugin-url":"^1.4.0"},"dependencies":{"deep-extend":"^0.6.0","dotty":"^0.1.0","redux":"^4.0.1","redux-actions":"^2.6.5","reselect":"^4.0.0"},"gitHead":"854bf8580876cea5c96e50e7003154849753c2cf","bugs":{"url":"https://github.com/bryandbor/metaphor/issues"},"homepage":"https://github.com/bryandbor/metaphor#readme","_id":"@bryandbor/metaphor@0.0.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","_npmUser":{"name":"bryandbor","email":"bryan@my-gala.com"},"dist":{"integrity":"sha512-aKZytnpHCpk52ErE+5GJhkQ4ht7ST7gItBJye6UgQGb2QopRZcF3t69u8uNthHeYwUkBeFnuugapZtimc8MD/Q==","shasum":"8643509a843f1fa5461420238c60c6ba6d757cb1","tarball":"https://registry.npmjs.org/@bryandbor/metaphor/-/metaphor-0.0.1.tgz","fileCount":6,"unpackedSize":168349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0xBSCRA9TVsSAnZWagAAhIAQAJvV16lcbdr7/ffFOpPa\n8yu+DMVTn6BZ3KaQGciC/GnWtdZ10M3dfx0oVj5xdWNQak7h3qekoW00We+d\nHrW1tyGGRI4uGOirQLdD4Zz67ko1Y1t5GWpnoq26dq3VNph3aJdPA51feEKR\n3qhY+bmdCNJtsE/zTJP1udIZ2n6hPgLjZxzdnsxAcxipncOSLKnxFKxVpThz\n372Ir4crU0HC5cUebN0YQMzxI1sjEA6pnXc04s4e34BRKeXmrnDytgW3R402\nYQAMB8CYssYHCigOdBZhB9aPiAtkgwwg/K5LyfULc63mqiOUr7RYT4WZr3HH\nhvTt6LcggYQyP0E6g2iJKDuT0eQ+ldlDBsjcR479T5r93obBkSF7LqnocSjy\nJpKTZqYzWjzox6SgiaZzBKOB4uo52rEibHhDGNaclkJ7kC+L5DZPkgror5ep\n3b5WnyFcE2QPlJhZnm3UCh3mM5epS6QD3A7ylHu1/0D36+O8YAPJEqG8Nk5f\nTaRlc0iHKew8GuI9/tP569us7eERVfaWoOSOqbyVaQ3OLH2vjz/U9ZufRz5P\nrVXIGIySVDSC0BtWwkGOm8E7PDT7uKO/LUsMHzdSWhqd5+ucX+sbvxlHBNZK\nPw9eLLhXktcXbzX8at5PXFWH59Jgf6NlPe/S9ZCrATzkoHfbM9RhFKa5dcAO\nn+RI\r\n=YjOi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpLzjNhTeStgdTtpGWALDn83Yq+gk6q1oD0fbt/Uok0AiEA1eKiJZI8rChVSDSDScb1J8u6wzA7U6O/+xvKIfFxn0k="}]},"maintainers":[{"name":"bryandbor","email":"bryan@my-gala.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/metaphor_0.0.1_1557336145413_0.2540831177689524"},"_hasShrinkwrap":false},"0.0.2":{"name":"@bryandbor/metaphor","version":"0.0.2","description":"Store metadata for analytics","author":{"name":"bryandbor"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bryandbor/metaphor.git"},"main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","engines":{"node":">=8","npm":">=5"},"scripts":{"test":"cross-env CI=1 react-scripts test --env=jsdom","test:watch":"react-scripts test --env=jsdom","build":"rollup -c","start":"rollup -c -w","prepare":"yarn run build","predeploy":"cd example && yarn install && yarn run build","deploy":"gh-pages -d example/build"},"peerDependencies":{"redux":"^4.0.1"},"devDependencies":{"@svgr/rollup":"^2.4.1","babel-core":"^6.26.3","babel-eslint":"^8.2.5","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","cross-env":"^5.1.4","eslint":"^5.0.1","eslint-config-standard":"^11.0.0","eslint-config-standard-react":"^6.0.0","eslint-plugin-import":"^2.13.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^4.0.0","eslint-plugin-react":"^7.10.0","eslint-plugin-standard":"^3.1.0","gh-pages":"^1.2.0","object.omit":"^3.0.0","react":"^16.4.1","react-dom":"^16.4.1","react-scripts":"^1.1.4","redux":"^4.0.1","rollup":"^0.64.1","rollup-plugin-babel":"^3.0.7","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-peer-deps-external":"^2.2.0","rollup-plugin-postcss":"^1.6.2","rollup-plugin-url":"^1.4.0"},"dependencies":{"deep-extend":"^0.6.0","dotty":"^0.1.0","redux-actions":"^2.6.5","reselect":"^4.0.0"},"gitHead":"c9141792a73a28fcb777fea1dcb8856e1993a193","bugs":{"url":"https://github.com/bryandbor/metaphor/issues"},"homepage":"https://github.com/bryandbor/metaphor#readme","_id":"@bryandbor/metaphor@0.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","_npmUser":{"name":"bryandbor","email":"bryan@my-gala.com"},"dist":{"integrity":"sha512-bPnmXO3zhalWHo/AuPg+mKehjnAb2wvPNEKacaVCq3C1AtP06Wm/zmGL3Kab9OCOUzvlVhhX7bvYzmSszwRmsA==","shasum":"fe9996b4ff5baee76ca81781c870a2f046758f96","tarball":"https://registry.npmjs.org/@bryandbor/metaphor/-/metaphor-0.0.2.tgz","fileCount":6,"unpackedSize":168374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1vZVCRA9TVsSAnZWagAA7P4P/jKlFLxr6+Xg094s09m8\n14BNtXZpb7/AED0yxYGHE85JGchbO0Csz0Co57ml6YtxNXMuIHObpwI/NycX\n0cJ7B4SMiYJKyPCeOCVAZfMVCfGYDv2Kkph+OOEn7XMo7L5m75hNOJ8QCp6s\nUiCZchvshBalxsgg4RopGpf7fypDOP9lJhu+OesgChdUWxbcmGUFnDMilhix\nn2/DvxQbW+A27yyV5HEL6yCD+H2s0rtPqES7GWVdF3okLev4lqVkA8wMBZhx\nDB4FQDfqQ/K9ZM0wHOUsHSngxRfnyza+0FC2fNdv3q3+aYsFky449HX3GhbQ\nUV9BR7mRG7iX4KQLpja89Vph6wEagIkV6JGMAzIMWJpuI+X00gXSNMVzg4Yo\nFQllqtXAZl082bJPKOHJg7RICVKkyL5gqtofn9xJMHlHGPVyf/R2yHWmFBSh\nN6xyBcAUo+ubiYtRgpvOPIVp+ywdrKcDM5P8P8ueobu22ldYPkD65PJpdVUF\nfCXLyKwMykXkz9SDkcl9a2t2hzlg5fmr6P0XR6AhlGR6nrq0yjMhUqm4hr+A\nFL6w0IUBL0rfGoWbI+OQyble76FiK/DmLz032kscS0QzbkH0j/a+Kjp1NvXQ\nIRi9fvIvZWGdlV/caRx1hD3zeSrBRt1N3xWotCSnC6hyYIKqSl5BgknXbvNn\nMp8u\r\n=9G21\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlY3F5HYWog8aQebyKiI307VwCIgwrWZsf99rVfVyLmAiBxbuBL7CZhsR+C8ibME1N1WlG9eLudnkEflcXomsqBQw=="}]},"maintainers":[{"name":"bryandbor","email":"bryan@my-gala.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/metaphor_0.0.2_1557591636448_0.39713409684218326"},"_hasShrinkwrap":false},"0.0.3":{"name":"@bryandbor/metaphor","version":"0.0.3","description":"Store metadata for analytics","author":{"name":"bryandbor"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bryandbor/metaphor.git"},"main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","engines":{"node":">=8","npm":">=5"},"scripts":{"test":"cross-env CI=1 react-scripts test --env=jsdom","test:watch":"react-scripts test --env=jsdom","build":"rollup -c","start":"rollup -c -w","prepare":"yarn run build","predeploy":"cd example && yarn install && yarn run build","deploy":"gh-pages -d example/build"},"peerDependencies":{"redux":"^4.0.1"},"devDependencies":{"@svgr/rollup":"^2.4.1","babel-core":"^6.26.3","babel-eslint":"^8.2.5","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","cross-env":"^5.1.4","eslint":"^5.0.1","eslint-config-standard":"^11.0.0","eslint-config-standard-react":"^6.0.0","eslint-plugin-import":"^2.13.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^4.0.0","eslint-plugin-react":"^7.10.0","eslint-plugin-standard":"^3.1.0","gh-pages":"^1.2.0","object.omit":"^3.0.0","react":"^16.4.1","react-dom":"^16.4.1","react-scripts":"^1.1.4","redux":"^4.0.1","rollup":"^0.64.1","rollup-plugin-babel":"^3.0.7","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-peer-deps-external":"^2.2.0","rollup-plugin-postcss":"^1.6.2","rollup-plugin-url":"^1.4.0"},"dependencies":{"deep-extend":"^0.6.0","dotty":"^0.1.0","redux-actions":"^2.6.5","reselect":"^4.0.0"},"gitHead":"2d482894fec07d7ad092a35ca2646b13ed35aa4f","bugs":{"url":"https://github.com/bryandbor/metaphor/issues"},"homepage":"https://github.com/bryandbor/metaphor#readme","_id":"@bryandbor/metaphor@0.0.3","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","_npmUser":{"name":"bryandbor","email":"bryan@my-gala.com"},"dist":{"integrity":"sha512-9Uvlu4JBQ2Rx3aD4wCfsLcXQSgbX8yYU9J2lt0JFfTSgMexsznhqkKOP8rdpF/yf8OUyCWKi2N5jqWuRk1yjlA==","shasum":"afd8668cbe3ee4ac75d8aab83d7441fff2595a0e","tarball":"https://registry.npmjs.org/@bryandbor/metaphor/-/metaphor-0.0.3.tgz","fileCount":6,"unpackedSize":168502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1voECRA9TVsSAnZWagAAGmkP/3D4dEvpLo3z8wYePyrW\np/p2IzCuYm5ia8tcy3mN/SdfVaJjyDJAGugTN4r1PLnsPATnI+ysUV6x/mNh\nuwTJ42KeBQILhnhamx5l/R2Rwg5fIhT2iE4bDZjIBRunswr1PTd+KMgI4Btc\ntj7VZg8JzfECBHB6H+jOm0FB1PIM2FD6iY5/5HUMGG+0hIC55iktXZlKeEtq\nLQZ/7ySbQw6ym5pVBN/D4wc1m+NsPMbZ0PeTI/CwbSXvKL0rLM4sI0MxAC7U\nbRmKNXek69hHM+y2j8DtZH9uT9wBKeau0EW/n31kEA8KumdcEBwV+xsSb0ql\nt93JF4L4zC7jMYM34Jz1jlf1zz1Sb/UjFLM0FwbqjIpfrOPvntwl0YRY/fNS\nJqJlf2e+eOBnVs6psn2cSHuZULCBHKkpp/MfDGHSrRpUVvPSFE1lMmAMnF80\na33hx9ttDFH1Wgabf2zAZXyHpu4eJNyrhjSFf9kLA6k26o8RvUFzrc830GSq\nawzkeNM1B5GyAEOCkPykCfara8Ix6wJOeSefxKaQDPmJtHdIlTX/1qFwAnjV\nVBbO58hhzTE7H6B3WbD4njM2M4nBFcETMzS9t1nIDqHYHKTtLLWyiddC89RB\nwOWGflEd/1mP24cSfgZCqs4Cd1Wy/kBGLLJIOtJBLwzX9Y4mCqjP7Oqk/ebq\nZwC+\r\n=ceSE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqaVUfZ9D/rTNlI4By6rfbhK1jibV3TwE1Y9M0GxteoAiEAlWewUnO65RIxJ74JV4QTIfdhBqQbRpkYzUFev8DDuyg="}]},"maintainers":[{"name":"bryandbor","email":"bryan@my-gala.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/metaphor_0.0.3_1557592579298_0.7412862599577037"},"_hasShrinkwrap":false},"0.0.4":{"name":"@bryandbor/metaphor","version":"0.0.4","description":"Store metadata for analytics","author":{"name":"bryandbor"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bryandbor/metaphor.git"},"main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","engines":{"node":">=8","npm":">=5"},"scripts":{"test":"cross-env CI=1 react-scripts test --env=jsdom","test:watch":"react-scripts test --env=jsdom","build":"rollup -c","start":"rollup -c -w","prepare":"yarn run build","predeploy":"cd example && yarn install && yarn run build","deploy":"gh-pages -d example/build"},"peerDependencies":{"redux":"^4.0.1"},"devDependencies":{"@svgr/rollup":"^2.4.1","babel-core":"^6.26.3","babel-eslint":"^8.2.5","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.7.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","cross-env":"^5.1.4","eslint":"^5.0.1","eslint-config-standard":"^11.0.0","eslint-config-standard-react":"^6.0.0","eslint-plugin-import":"^2.13.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^4.0.0","eslint-plugin-react":"^7.10.0","eslint-plugin-standard":"^3.1.0","gh-pages":"^1.2.0","object.omit":"^3.0.0","react":"^16.4.1","react-dom":"^16.4.1","react-scripts":"^1.1.4","redux":"^4.0.1","rollup":"^0.64.1","rollup-plugin-babel":"^3.0.7","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","rollup-plugin-peer-deps-external":"^2.2.0","rollup-plugin-postcss":"^1.6.2","rollup-plugin-url":"^1.4.0"},"dependencies":{"deep-extend":"^0.6.0","dotty":"^0.1.0","redux-actions":"^2.6.5","reselect":"^4.0.0"},"keywords":["metadata","analytics","redux"],"gitHead":"37888cbfe2102eb12e92243549d345e8bab96665","bugs":{"url":"https://github.com/bryandbor/metaphor/issues"},"homepage":"https://github.com/bryandbor/metaphor#readme","_id":"@bryandbor/metaphor@0.0.4","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","_npmUser":{"name":"bryandbor","email":"bryan@my-gala.com"},"dist":{"integrity":"sha512-FRzDgwtUVKBWDXyE98evR2pQprxp9/4erj/hS+jiPt4OmDvXzrYdF700iquajm2pWy2k/0tV1NzoHDjas3YGuw==","shasum":"5d583c484b0ee2a9f1041dba2d3e23799869097a","tarball":"https://registry.npmjs.org/@bryandbor/metaphor/-/metaphor-0.0.4.tgz","fileCount":6,"unpackedSize":168568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc10GWCRA9TVsSAnZWagAANp8P+QAYvXqjuepPgH5AK7lu\n2FZh+Byrdy1hrO5O+QQcuzKfCsvyBkkAYvzvITIILskZWqeKfFckIsUSy/sE\ncuilMs/jEf++TVXO3b8DfvrPGvEsXlO2DJJKXi0PynaMVIr3NsOJKiwPR/7h\nmhDidgSs+KYwDEgLqh0X6mS3WtI+hiqmMJUYGH2AuUDsOG9YddrR2jH+Tehz\nlj1yYcTqm6CdA2ORp4h18kyQef9r6Nl/JSh5xOUogpJPdsCpVNYOh21AvCKx\nJ1BRLZ/CjZZZI9/rF0GXCFdw7nYkcy0wtOl4W5VR3qWcgOPKenZlU1IHIpGY\n8u5SW8eLXUpMO9T1mUvmieJzmu5nQnPT9hv4oMPVK6ZkZXTyrgzIhkaIgu2s\nDn1Gdn/e4OagW/MehPeDutvSEXlfzJKAXYTUe7PCjL8xWU0FwhqVV6FiWvl4\n795jC4ZNXk6d+hDSPeJE2Dw5pinHW++so9/KkMqR8nTv8jhm87GjSExm5ODB\ndcbet50QsxS0EE4f2xZBHqBlc/RxjtAF5p1O5KW+NTX0U4+/Cp+FsNolRSZJ\n5/Ulu4ML/SJ7QM7gHkYzRH/KJ8p/pFfXPVA0PNRcqf9vLXEXCc3QEEgIa8fP\n0pyzc8XX7fx+V8fVQtK0XeV363FQVvp3gAGrs/fwb+uFP+BbhZj8fqc14cEW\nrrPl\r\n=AoIe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwNX7FJSi+ARglOfDF1kAcq7V/WSHdBaXllfQnAzuHKAiBn1KO8JKufvYRhFPLPqkALldHrcWI8+lTS9rrrWXLo9Q=="}]},"maintainers":[{"name":"bryandbor","email":"bryan@my-gala.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/metaphor_0.0.4_1557610901546_0.38334710882174106"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-08T17:22:25.412Z","0.0.1":"2019-05-08T17:22:25.551Z","modified":"2022-04-04T20:49:40.965Z","0.0.2":"2019-05-11T16:20:36.623Z","0.0.3":"2019-05-11T16:36:19.427Z","0.0.4":"2019-05-11T21:41:41.680Z"},"maintainers":[{"name":"bryandbor","email":"bryan@my-gala.com"}],"description":"Store metadata for analytics","homepage":"https://github.com/bryandbor/metaphor#readme","repository":{"type":"git","url":"git+https://github.com/bryandbor/metaphor.git"},"author":{"name":"bryandbor"},"bugs":{"url":"https://github.com/bryandbor/metaphor/issues"},"license":"MIT","readme":"# @bryandbor/metaphor\n\n> Store metadata for analytics\n\nMetaphor is built for storing/accessing metadata which can be used within analytics. This metadata is commonly not used within your application for purposes such as rendering. Since metadata can change over time, Metaphor provides a simple API for adding, or updating, metadata with a simple Redux action.\n\n[![NPM](https://img.shields.io/npm/v/@bryandbor/metaphor.svg)](https://www.npmjs.com/package/@bryandbor/metaphor) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Package Size](https://badgen.net/packagephobia/publish/@bryandbor/metaphor)](https://packagephobia.now.sh/result?p=%40bryandbor%2Fmetaphor) [![Weekly downloads](https://badgen.net/npm/dw/@bryandbor/metaphor)](https://www.npmjs.com/package/@bryandbor/metaphor)\n\n## Install\n\n```bash\nnpm install --save @bryandbor/metaphor\n```\n\n## Usage\n\nAdd Metaphor's reducer to the Redux state\n```js\n// reducers/index.js\nimport {combineReducers} from 'redux';\nimport {reducer as metaphorReducer} from '@bryandbor/metaphor';\n// ...\nexport default combineReducers({\n  meta: metaphorReducer,\n  // Other reducers\n});\n```\n\nAdd metadata whenever appropriate\n```jsx\n// The following libraries are only used for demonstration, they are not required to use Metaphor\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport uuid from 'uuid/v4';\nimport moment from 'moment';\nimport fetch from 'isomorphic-fetch';\n\nimport {addMeta as addMetaAction, getMetaValue, createMetaValueSelector} from '@bryandbor/metaphor';\n// ...\nexport class RootComponent {\n  componentDidMount() {\n    const {experiments, addMeta} = this.props;\n    addMeta({\n      session: {\n        id: uuid(),\n        start: moment.utc(),\n      },\n      experiments: someFunctionWhichDeterminesExperimentsInitialState(),\n    });\n  }\n  // Used to change the status of an experiment in metadata\n  handleExperimentChange = (experimentId, newValue) => {\n    const {addMeta} = this.props;\n    addMeta({\n      experiments: {\n        [experimentId]: newValue,\n      },\n    });\n  };\n  trackButtonClick = (buttonId) => {\n    const {sessionId, experiments} = this.props;\n    fetch('/events', {\n      method: 'POST',\n      body: JSON.stringify({\n        type: 'click',\n        id: buttonId,\n        sessionId,\n        meta: {\n          experiments,\n        },\n      }),\n    });\n  };\n  render() {\n    // ...\n  }\n}\n// Selectors can be created to DRY the code:\nexport const getSessionId = createMetaValueSelector('session.id', null);\n\nexport const mapStateToProps = state => ({\n  experiments: getMetaValue(state, 'experiments', {}),\n  sessionId: getSessionId(state),\n});\nconst mapDispatchToProps = {\n  addMeta: addMetaAction,\n};\nconst hoc = connect(mapStateToProps, mapDispatchToProps);\nexport default hoc(RootComponent);\n```\n\nThe example shown above includes usage of many libraries that are not required to use Metaphor. It is purely a demonstration of how metadata can be stored/accessed from the Redux store.\n\n## License\n\nMIT © [bryandbor](https://github.com/bryandbor)\n","readmeFilename":"README.md","keywords":["metadata","analytics","redux"]}