{"_id":"@aperture.io/analytics","_rev":"10-9192e1ddfb353dd3c2488ce55a24faad","name":"@aperture.io/analytics","dist-tags":{"latest":"0.1.8-rc.1"},"versions":{"0.1.0":{"private":false,"name":"@aperture.io/analytics","version":"0.1.0","type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"_id":"@aperture.io/analytics@0.1.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bHisBxW5Ucve/k0SyxsdQr06mTHr8y5dQkFurLWYpq0nGiYTZVIB0htew7og9XjMUICMv5jqkuF8CO9J8DcE3g==","shasum":"e9afe59662d4935084598aa38b844cef2efc7549","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.0.tgz","fileCount":20,"unpackedSize":35208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjsD/CRA9TVsSAnZWagAAOwQP/jn98D1PqZN5mEOQUvQv\n3B5JI02a5wTsjV0uU4i7EA/B5Hf85kbISAp26NAsqRd8kRlebLLpJYsh9Pjz\nEZkNzPC7H16epUK39Q9Fh5PCmxY3rvrryuh2LlahNJwIK982WK2yo4oTAxay\nW2HKB5nqTFXLp6vN7vpSF9UNDtQtZVrkB40/UTPxgjrdbojt9JJQLjP9auwa\nE+gsyVrj0S0W8NufTG3mvfJl/t5abN+WMedSCRMBO3CmGvlat9QePiN75Wmo\nqg+KJWIBgBc/cDiX0bRWAou9oJMkJmS8gLBbxkATKh9FlHNiZFyFbkkWrUfe\n+cr8dubA/9I1OjRKVY5bCSW605EkXDi3zmRtG4Bix5/igXc6Gmm+aptKIfwG\nlm77VXpQcdXXBS42XGeJ67/QOr2Zv/1FABL4f1bKxHvf2Va0dD37uOIWxl1z\n81Hjms9UF+p+VZ9pOnVIOMZfD3ck7OJ23TNcVpeIosT3VyGHVamZGUtilMSr\nN4o9hgfrS2Vhb8Cu+RbPrnFlyF/dlbA+AW+ca8UQlvD0llAEi3QJVs9iGJs0\nQufDPOHqvEa7hdGGazw4L10ZU0/J+u8SYaER24roy75DzR3QHuDTStdBLIih\ncKJRfw7iuSzXYX35cb0OB6iAG4eBMKiAlxUPpXMWaoTd6Wd+3p3i3thcUndb\n98OI\r\n=kENc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFRU+q6R2XzWwSPp4cIPtl0aeQ+q4+TQhlEcC49IEH+AiEA0vzivsASnXqgqDwI+vC+5TeyyQZwBDEBSMRZedtObW8="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.0_1619968254536_0.7328843887456717"},"_hasShrinkwrap":false},"0.1.1":{"private":false,"name":"@aperture.io/analytics","version":"0.1.1","type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ti96bDoMBQgmqi9WgwYfizQLMgV1RQsZ9BJ8mdPP9bpol4c1MZe63bcAUuRWg6C8eLQGFLa30oniU08hOSBa3g==","shasum":"f9acdc5fe5af094806bff8442e4ffae97b7a32f1","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.1.tgz","fileCount":20,"unpackedSize":35359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjsF+CRA9TVsSAnZWagAACDgP/ReWaWC4DS8WDvXw6S4B\nYUVhWCXbrYnMoIt93CNLC9tNxD3JS5f6rCE2f3MJK5UPLllcg9yNuSKdAB90\n15Iy47KI9tx+MtpD8MRl8sjY8CfAk2v2jF0puD8z9hd213zANGBl7BmJolk5\ndpHMx//TLG0W5hHCg9MRzdGzwc+pup2juCxuUgThU+dPDmEe4Yv0KG8LCqvP\nMiQJ3S9StdJ8CmBW6Xn0avf4xXZbxfZ42677Ivh6f6yGU/SLrJS1FD0ReNdS\niU+/DKueaj7If18p1yAKBZXzIkKyz0gCMtRtoPg/wbNQr+lQzTK8sFX2M9b/\nXhG83EIH9L25GQU23e6qMpar5GT1ARYdAmbMVhvB52sQhabKinIoi2QCF6p1\nV9EAGw+FAGadg7XOAYDrvgbvYs/khdfHhraIxrH86cfWX9QJh7TgkaXdIpN2\ncIGpch3TB1NdvfTkHf1AdvHUHItrKTt7bN4vPjfWM4PxmB1srd8cPaqCdP+c\niVQkE4Q5+MMlDn0qKONgvqNorhZrfE2HASQYmi6qMOIwHaWBsBz7GdsJ09bZ\nnVdAySwKpjN5qjZCG+nmeQq4M2isevKm7xtSeRPR4X/HuOyZwHjmW+57eBLF\nQU99YoPDUZqincuT4Hzo1pfwtOx/E8Wn/fF8uSLD/CzKeoMMyS+RiOwOfHyy\nwYO8\r\n=fz7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHiZw4WP7n4BPmV6Wx8XIUSMRkkEJN+Xe2xFzdjk5tfVAiAf91+mZlaXXKBOfZIphzACsVW45QXFaza/POiP2iAlrg=="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.1_1619968382206_0.25304545771225895"},"_hasShrinkwrap":false},"0.1.2":{"private":false,"name":"@aperture.io/analytics","version":"0.1.2","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-R1kBH6Un71BIYannnZAAca+vUrIm1ASnithl080CT5W890Zov1y7N7Q/bxLCGPnapy87Hq7xgILLcZxWdjLCng==","shasum":"4866d0aac489596516eacb67cb32b119a5bbb1d5","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.2.tgz","fileCount":2,"unpackedSize":17605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjyw6CRA9TVsSAnZWagAAhxYP/0qe1DvptIpM+08HTCv+\nHmR1qGzoLGCAE2Ges7VZ/ULxbcmzOvf9nBD/myl+ouzP0YgJkAG21DdodNrA\nHooLfKVFQZiE0oiNzLXo83hDMHlUbe+nl/aBbPngzKM8mzN7Hi8eLt3Pcosc\n27Erif246/ttziPE2om3S/9cBTi4oh4SEiRLpo1D5IIjzvrTg+OSGWKAThAQ\nAGa6xaxyT9vsEfKiIKnEo+RjqziPQ5yqtVwG/5yZA7QopyxDAZmBumaZnWHj\nIc4ThW/2zq6aOkce0kT/Jx6LFm2nNG0yZw99I+lEjbnZFn8ylwfFj0P4oI2Y\njPRfejmWCDFsRR7KJMCU6HDTXWaOlKs85n9cbfhc7XEMDenzuJpiOoKZt4iV\nEvhZM6UO8zvYhlyNWtXo/I/iXlMQq1W1vYJ+9vUauvaDQ5pTN/MCeFXKe+7x\n9WHBpUtA4c+tYqxBJ6SGNipSsVtzLxdYPJRIQMiEzg/wgm7Qdq7ZxeDN5FSh\nJbxezb6xBtanUVb8Ffl3wYrgr8B4cihJVneN1BB1ENfUrFJJkXzd5+xiXY18\n20FUi9BxeJ9w0F9OicLsJNJ17mcDhvnIlQFSsus+1Wcr3Qg4JiliZT8jJRPc\n4U80cxY9ivMQWKC9NjM/yhA2jpeLJs9z8iTMINWF3WO6NnFJyrcXH1D4iaIW\noqnk\r\n=Ugcb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqsH9gdmAPYP9KmwoTU5tiN9VdIS/hscWegTDVOlVmRAiAaxqHOXJGJ/FZOOcUsBZVmRH+z+YkMhK1HOwSmfxThjw=="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.2_1619995705828_0.2241942236503216"},"_hasShrinkwrap":false},"0.1.3":{"private":false,"name":"@aperture.io/analytics","version":"0.1.3","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.3","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-c8uv9Ya+AWEjzIAE2QAotauJztW9quDReIJHDJ4h6f405WY3G+nvpY5KWBKxJTzGVFUUyAJszVzyv0Q2F7oU1Q==","shasum":"727903841199b0599c485227a972b8124a6c603e","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.3.tgz","fileCount":8,"unpackedSize":229429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjyzdCRA9TVsSAnZWagAAsm4P+QHB8ti7ddUbRv8lS3xg\nhpgF/x77yQJP7EYBw/WY6UKwfWiWALqb5fmfj/O00paCYo6jChl9xfyBBYyE\nvFAcmwthNBAhEQf463/qxwBEVyhswcd0ty3pG6kFbhLcBVpIIBVNKeeeJWwg\nvzvbq9SYtKz3XEVvlbQcfosfyQZss7BOeKUIEqs7OiEC7RJiK1hHUcJXYwqN\nL6sfnify7GlBMlR2un7FZh+JJLHQI1YbdrogvAFjjTKLtvHNfMbgBapNeaPF\n3BAV5HkdwFol2CXHe7W+nNqtAAWYPeKUATo5Wmd1oFhnvYBBYWp4QkbCBY8V\nLB7kMneHPRxBTNLj0UJ8W+sSXfTCFPz1eeQLsrCr0bQDqXzuf1NYqoh0G/Xd\nLFIbwYLtkNmAbpQEBANoVoHQwtWmeZCZwP/bOgxQbfzRUzrQVjpB+32BSwnC\nBR1NTbeYFokN0RPZWmQpK9cYy4LNOmSIpkCJsYFh5b3ap/fiFxa6Ue+yQAOj\nRvC21Uh6X4Maob+avLel08yhyZD8c7cp3MNOIeGKYsV/VwSegkKW6Ije3NSZ\nozj+JQvo7jmkf6xjkEW/Jr5U0DqqzrC8d4l8bBc1DRB3JLzjrEskMrN5AOh7\nFfjwsEODP6e62WLpw/4n7FtMv48PuZMSRnMapIy1agbJ9kZDT9MdynAxfxFK\nMiUj\r\n=2iuT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCSeiaWtRfJIDlboqcu61zPsp0lJPLSrgruRlRqD8byAiEA1WuYL+LvN3wbecQDdRIak1gd9eHqCu72fY3kc6FI8gw="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.3_1619995869426_0.3290264238004026"},"_hasShrinkwrap":false},"0.1.4":{"private":false,"name":"@aperture.io/analytics","version":"0.1.4","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.4","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Id2XbbjL+YOSNO1EAuwKVKw0ZoQWI3VgwKT2T9KpyFtPrCzviscf85F9rl5iYNlO57EFWfycmataqBU54OnEqA==","shasum":"e343c6fe1dedcc1455224f44572e12f6c05e3d43","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.4.tgz","fileCount":8,"unpackedSize":229660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj3oSCRA9TVsSAnZWagAAw9cQAJZOC+okfHTXY44xL4RC\nS906kkDP48XOR5ErSernsungusJLuu9Z6Qlc4/Nd7J+zx1wxZBoFTfGtNrH5\nNap7avJYrnpB1hKDTHQ8Y3lLo1RWgHNTyIiEqyYM4nJlWfpLRGYQdFM5MPAs\nHC18YQJ2v931mHtauM+hHxtXf2jg46lgLphzaRH8jeKS13wND1YWhGm4oPVs\n0beSh7yxbeAUkDDwGA47UWrmF3l3Z1yqNOrdiVbGYM31R0z5QI/ZVL/9GFUg\nRNA+b7bdEoG/alben0fMaekRaA/9LMlTAA6gAPC49TRC6/FmKUoJSMfSyLnP\nUm2br6b1417HaYaop0unlhdZ8q8m/o678s6BJ6C8m3ahO4pJGQBYGmpT+AQ4\ni0hsJyFDR4LsigWkvOWyGeNdYWTEt69VL0qxWmPyXlMmGlNE3oLn5p3QSpUX\nm6YjjnJ031KyQlXE904fRaDCJ1YjLnA3GqPcFYNULl8MEN/9+KNdg9cZh6hh\nxxpy4vSKMqfUGkN9AmhzGvGJvdp6udRlomUZGEtQzaKA5BsQM8UK68Si9PUk\nZI14B+409DEk2/kK3WE8ivgFIBjiQfOku/PV1NNo5BoR/VwBWn92OMSVGQap\nVOzkxqaunriImPTBwy+JS6yKl2u8F0R/GKLZC6rCMJqMXnsnwPMgXtL/opsI\n2ktX\r\n=dCNN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmwbkmWY5AIkRsmMmPszH2sk8tEwPTP6vA0NHBOcfXsAIhALkYfjURFOYjaJlKedHnhFQRJflN/EObQVcfxw8Ptdib"}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.4_1620015633363_0.6065546879111738"},"_hasShrinkwrap":false},"0.1.5":{"private":false,"name":"@aperture.io/analytics","version":"0.1.5","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.5","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-YA9iLyJjUcK6rT1HtuvtXThSS4uikqlbhEgSWYxg0oWZ3EJmAA1o+L1WQ5Gr1XIF8qB94cZ3E2KOQZR+AEYz0A==","shasum":"74c958bad97bdd6c2b06a7bf31c9f63667da3ff1","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.5.tgz","fileCount":8,"unpackedSize":229660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglv7xCRA9TVsSAnZWagAAfqEQAJHISWKOna5oWsolBoK/\nvOR5tZi1a9zsvaDmEq5kG/fVPLJ4tjf99yqjDljPwziSf6UoJ1B0Pz2wE7iH\n5nAH8Hv1XkRZbWVzZ+GH645rhR2u+xzn01dCluPgQZEKXOzWUJJjl6NzrcDv\nA8rbcpdB6rprFFr5n+NDP/tVnu731encpghXmO4Znj1RHHzad7TKfoJKSkJR\nO6ZH4EZs5c3Imf/45KSAbsAGUmfd3WIdqNmI3gSoa5HPyjMEwdLP+FlV7wVB\n76XK5jzgpj+8Kto+Xrk1ua0h8PkSAf86vDSuLybctzLmRshqYV6mQkTBPsyb\nVbIEwYbFCRpprTle2/LIA/XX8yCDizB1kOjpEvDCyTq6mN/ARpaCnPovCZB+\nNZZPErHJ0zjy2LyhxkEpN1vRcbS5t0Z1DEny4A+tLwVQwgVfKKxcb4xpHdzD\nQfHvWPWaiCpnUPZywTBTAZgFI4LEzJGtYOcrs/wWYAAYI1gmQamledXzigO+\n7rXE9UN7W7MZHR+70WT5Uo4FczVmLH1tmSId0TneWuctCg4zKevN2Nc6C0/I\nr5Qi0BnwB8FC+yRUbx6W4fR8M56xVNb4lEJMXBtNzw9uWUBwmFt7H/gZlmBd\nwJCIhySNMJ9I5Qr+34C3Vf7TC5ftSlGlZZ6pHRcQ08A1V7hkAr3V2OnLpYom\nJ+58\r\n=p4bg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3HtL+UoE73XwgWNnkQ8uZ7cuMtMvjdbx/3u+vToW4kQIgP+yCAmB4LFVP15X0EagLB/eSWY2f6dDXFjpgI7csMwg="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.5_1620508400845_0.4654968584989181"},"_hasShrinkwrap":false},"0.1.6":{"private":false,"name":"@aperture.io/analytics","version":"0.1.6","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.6","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-IbbV37KVn1HJDTuwwubu8UgtUaJFues8anWVNuGtM7XGOMhFJ93LVJuExGUe/J6pRz9RLmnD2paDeDBTVHoD5A==","shasum":"1a13aeb1c7a3050d2927a4d618d2ebd41c81e205","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.6.tgz","fileCount":8,"unpackedSize":175831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglv/gCRA9TVsSAnZWagAALqMP+wU0jCVaTRYcFoHu2sk0\nLcEnvHnRhmbUvAPCstz3y+ePr2/IPbUmJafQNDQiWcVqbEsQzTZ6Wwyg79Q2\nxgpPWm7ZjBUwwdcbOnqLl5A2yt4sNS30K0YMI4UZTRxHxdaANRZFWduHSB3M\njL0621rtXWhMMN3Hs+mzsdvshlRUlaYp4rWWaahsabYAD6LGGdYH2F9uSUDu\nLf2l6OtuR8keUpElkvJxX93u7pJiEeiwdMwE7sRkCBneBzWq20TS2EBAq16/\n6/RHvusUttzyBb4nmA4nuHU9pNXl7iurQpUkdPWo9BiY+xxt/l9dkarvAQwN\nh+p7/+SilmoqdmRcBgsHA7FnyqsGtWCXNu2bw+vGNEYU97W/3em972rjrnW8\nR/AHa/8Dj668AOm9w0cls6hzC/FN7/SYAgYo9IBYi/Vjwm7B+4zx63TBSjMg\nlhxtnWi9gK0TQJk2TOtN22oUzL9c4MQ3d2p08cejSmGtMD09E9PqS8afkjpa\neGJ22hDPpMVleXO2Bs2gn0c+ZJ5i6c4nZjHpxP29i1sFgMctYWWYjj+78oJE\nNFM3bh6q3UoUq+M5MFQXKBbYPhG6xvKWG2PvRNopkXj9TDukTasIxnr9fUu5\niBMXHyARV8pdUW3wHuy7oZ1/tlxG3UlGzb/8UHZxfeRVJ7wabV29OFvQdXsO\n6O3s\r\n=DUfm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJXaTZg0kUadib1wNjkZgrz7w1OTD6edli62R8pSBbsAiBtAqpwt6wOePsb7prA16lHTLWU0nx09MdujOauYHrjRw=="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.6_1620508639959_0.008978176136357874"},"_hasShrinkwrap":false},"0.1.7":{"private":false,"name":"@aperture.io/analytics","version":"0.1.7","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.7","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xLO0SHbOI8pARn0pwDviTq0Yeowr/M7cvS/jLA+IOViv22d3uqpTyJeHQRa0k+TSWuNJhfLOg22/KyS5ChQ5Gw==","shasum":"70299abc0369bcb67305700384cf6346d538d8f2","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.7.tgz","fileCount":10,"unpackedSize":178517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmDLgCRA9TVsSAnZWagAAmRcP/isa20T7VzDYFIngDEEg\n4tPRc4A5rzi1PM/aqGB3LTckLk2BpHdEZ1SvbQy4mdru+QWffhysmOOrcWQq\njpzYCsnQVUswCVwc/i9SrbJ8EikxiMjn1rA5IR1T3lA94Z6DiRRoxT740Gks\nG9OMZXGo+YoMv9Ur45ZVIHZrf+EXOsYTMRJDfBaV6Q1XsVds8BNhO0K1fmwy\nWKU8WB3X62r4Di961iVA0LYZ/SE22l82ExZnR4cJqFzc4EC+nn7JHerY7/i4\nBai2QqK9gAT0UyawrlHka9ozUri4dWAuzU1IbDXjr76b08H88Z/zt5Ohm6tr\n3D0LdHTr7/W+yNh32+L03LVxter9FoBQrVu5f2v7f1DbYAXDw8/Wtb43j26F\nPJH3fjgEuA9/MObdrLPm2gdw3zyb+dbL1wAlHYZWl5QORq+76bW90m0UZq/A\nbuZAUprqUP/S3j7cOEoni2qrOZhx0M79HL8Foua8Q8UF2MCJBheuHcvuejeJ\neN5Hpt2dSrI+OClSDhXdeAgdZJuKk/ZrAsEuisqxPXJrwBhXuiAL6B4WCC1r\nqwSJmvM54xMt7P4DuyrxNQ3aomme5dOoMhttGZMHfizCWYnZsx7ro3qU7k3a\nc6XZcj049PPH6GSMs3ZPoWC8Fsxu3fT+i2xeUlF5rS9UJAcriHj7Qjy/Wsa4\n6eo6\r\n=anm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKHwjEVVa1sutMkFQAdusFE9KdYDJqBXyVRJQpsZng8AIgOkXViw0tGFkH1NdoPKC4ZRrxuK5E1/9pCtHPh6okH/E="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.7_1620587232069_0.6716349197967273"},"_hasShrinkwrap":false},"0.1.8-rc.0":{"private":false,"name":"@aperture.io/analytics","version":"0.1.8-rc.0","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.8-rc.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-3KqOeTXgk3uvWNw7Y7/3aMGJhJ66b4KWdbbR4IzMA+pQ0TH8b0M9DWUM2ZEGaSFh6RB99zw2p7M5N7M5DJcpUg==","shasum":"7960e943a4e40b0198dbf595cde58fe1b9b8959c","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.8-rc.0.tgz","fileCount":10,"unpackedSize":178522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmDOhCRA9TVsSAnZWagAApIcP/iB6ZwFevNZrPW4F4dvz\nzGDI0TDieNeCCjQdlkcRH4NwZ30EMZH0rdq3QAYdxPNXFipdnJEwZ+yNp12I\nPP4wg6PyW7xBCpWVBgET1bpPjT+RsyihaZqzUbKDjI3IhwdMJXYBOvgSfRsa\n1bsTfAx5lQnz9XGW8H0SMsCnwFqA383BiexrMVUEraXXORBVF3KSJlfF77Iq\nA/cdmpzfQH/UqQbS97Y1YGkvHKGBipiQqSJ1XssxMBoSmulo2KNghDjx8God\nVNBWciHjt0tsVkTbxG6bXVoiurysdkQldjjCjvvv+PPwqTOn8xNRcoDSfpcd\n5tSYzfYimL3m+AiUYQpmYllWdopclNpodmtf4mRk51HjdF1LG1rV5nUW4RwS\n/uXsm2zRw7NiLC1+I6rezX8/cl+seAIM77ZwOcaV7MS/z2rSx+XxH0IGPmgD\nGjlBgHF5k3KNBw9SAqG5jUxh8Ev2q52rcTxS3uBhTYuqbRN68e8IRowOhq2a\nrOLw/RR4QGXsLZxZ45qfkUkI+044SBVB99OxHkrEHxDGz3IAG7vVcmYNwyEX\nVjrdaKDBVpNX9Mt/iClIPHalG7LAF5RiKrP1/lICxVTH2EcAC7xq8nYjluBi\nKKfK5PMp0oukxjmWIB0X4Z6AJUNrrt0DY4JzAml3w40QYgxcjy5lXWDDiQtl\n17W2\r\n=hkQa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpKnuN4vkvblhGiYHkYcaTVo/aI5U0TlsCyVyabdDfyQIgc0S6w1nGceh8PFUx0dEW/J2fqYKuEge3F29XinRajqM="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.8-rc.0_1620587425492_0.7602691621345548"},"_hasShrinkwrap":false},"0.1.8-rc.1":{"private":false,"name":"@aperture.io/analytics","version":"0.1.8-rc.1","description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"type":"module","types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.16"},"buildConfig":{"environments":["development","production","testing"]},"scripts":{"build":"build-tools esbuild build","start":"build-tools esbuild dev","lint":"pnpx eslint . --ext=js,mjs,cjs,jsx,ts,tsx","lint:watch":"pnpm run lint","test":"NODE_ENV=testing pnpx jest . --passWithNoTests","test:watch":"pnpm run test","tsc":"pnpx tsc","tsc:watch":"pnpm run tsc"},"browserslist":["last 2 chrome versions","last 2 firefox versions","last 2 safari versions","last 2 ios versions"],"peerDependencies":{"react":"^17.0.2"},"dependencies":{"lodash-es":"4.17.20"},"devDependencies":{"@aperture.io/babel-config":"0.1.0","@aperture.io/build-tools":"0.1.9","@aperture.io/eslint-config":"0.1.0","@aperture.io/jest-config":"0.1.1","@babel/core":"7.12.10","@testing-library/react":"11.2.6","@types/jest":"26.0.22","@types/lodash-es":"4.17.4","@types/react":"17.0.0","@typescript-eslint/eslint-plugin":"4.21.0","@typescript-eslint/parser":"4.21.0","eslint":"7.16.0","eslint-config-airbnb":"18.2.1","eslint-config-prettier":"7.1.0","eslint-plugin-babel":"5.3.1","eslint-plugin-import":"2.22.1","eslint-plugin-jsx-a11y":"6.4.1","eslint-plugin-react-hooks":"4.2.0","eslint-plugin-react":"7.21.5","jest":"26.6.3","react":"^17.0.2","ts-jest":"26.5.4","typescript":"4.2.3"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"},"homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","_id":"@aperture.io/analytics@0.1.8-rc.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-xyuzSqNiV5UBqYsmVMI9IY/NU8ldLEN974RkMcXQG4JfMC/BuT+vZdvdYO9ke2LTddjS7jTCooMEO16lWuT7ng==","shasum":"02f5882ee724b69fb71c7f3887758ea623e9df11","tarball":"https://registry.npmjs.org/@aperture.io/analytics/-/analytics-0.1.8-rc.1.tgz","fileCount":10,"unpackedSize":178522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmDPeCRA9TVsSAnZWagAAYykQAIRlN5GiHEFmaa+bxs6w\n3X42tkYPA34h3BkXHaeuiMTN5HdBNRq0gRZq3ShSxFsXfxdchClnx7XTpMbS\ncbnHPLYtFS1y08j0ehOTY1ijGP2Qq+0HPHcBL66WhHEpbvkAXZcAt0IpeFPE\nF/jY4DpnI7XV0QVWBpis5OZWZvUfMlXGD1sE/6C4KtTbeYcYaiU7QGyIrznM\nphUhio29GFBnAfRGwn5wLLQqAjw+Rz8SVKSbO5Z9t4Zlp853djZur8e0fbst\nNDhZvAWjQdCqpToMIwMgBNRqPh3CXW+Dxk8eEutTyhSJjOP30mtx9V6NjCfL\nKgKNKTlTd+aafCDHcAhWj6IZNB8ZarMMlvM9ifmjZk2PQy9Tu4Dph2L2Zatn\nw6aG+AALucyl1jUnVzy3/ljJWNkZT/JbRmqIX9qGmhJvhbNWZFKg/788hdqo\nU2O6vONwM7un8LUu/ztwj8bFAATuc4nUM+TfAogxwmOU24Fs5EbbZ0LKHlpJ\n4HezC5y5XFzPI7HXgdI51YEfwVx9ByooJV1+id0KIyo2lp1nrnT3pK552Wtd\nq2D1IEQseNcKVmIL2UTh2znhYmxbnHG+ZAm96y14kjE3iqP3PwqzsaCyMMi0\nCMudBiK/JdHrDOGAqMaRHKxZ8PwDTG0tGdVlBD+oqZf3g6ONFA+MVhRoac6U\nyV/e\r\n=vsA/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB4noTiXl/3x2BY1hsmsZyIItOnm94gRfYBw8Ff/lPrNAiAUVzorYbuCnIuXRAL8YY0shTbip0om/ytsk3H0/ulVxA=="}]},"_npmUser":{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"},"directories":{},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/analytics_0.1.8-rc.1_1620587485790_0.07001884171113137"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-02T15:10:54.298Z","0.1.0":"2021-05-02T15:10:54.727Z","modified":"2022-04-04T14:32:52.384Z","0.1.1":"2021-05-02T15:13:02.353Z","0.1.2":"2021-05-02T22:48:25.964Z","0.1.3":"2021-05-02T22:51:09.569Z","0.1.4":"2021-05-03T04:20:33.541Z","0.1.5":"2021-05-08T21:13:20.988Z","0.1.6":"2021-05-08T21:17:20.127Z","0.1.7":"2021-05-09T19:07:12.257Z","0.1.8-rc.0":"2021-05-09T19:10:25.667Z","0.1.8-rc.1":"2021-05-09T19:11:25.970Z"},"maintainers":[{"name":"eldarshamukhamedov","email":"shamu1001@gmail.com"}],"description":"Declarative React analytics library","author":{"name":"Eldar Shamukhamedov"},"license":"MIT","readme":"# Analytics library\n\nDeclarative and compartmentalized library for React analytics, heavily inspired by the New York Times' blog post on [declarative React tracking](https://open.nytimes.com/introducing-react-tracking-declarative-tracking-for-react-apps-2c76706bb79a).\n\n## TL;DR\n\n1. Components define only the event data that's relevant to them.\n2. When an event is triggered, event data is deeply-merged all the way up the component tree.\n3. Finally, the combined event data is pushed to analytics provider.\n\n## Introduction\n\n### Setting up example components\n\nLet's start with a top-level `<App />` component:\n\n```js\nexport const App = () => {\n  const { Provider } = useAnalytics(\n    // Event data shared by all components within our app\n    { app: 'MyApp' },\n    // Function used to handle triggered events\n    // This is where you would integrate with Amplitude, Segment, etc.\n    { dispatch: (eventData) => console.log('dispatch', eventData) },\n  );\n\n  return (\n    // <Provider /> passes App event data down to its children\n    <Provider>\n      <HomePage />\n    </Provider>\n  );\n};\n```\n\nHere, we are doing three things:\n\n1. Defining a set of event data to be shared by `<App />` and all of it children\n2. Adding a `dispatch` function that will called whenever an tracking event is triggered by one of the components\n3. Using a `<Provider />` to pass event data down to `<App />`'s children\n\nNext, let's add a `<HomePage />` component:\n\n```js\nexport const HomePage = () => {\n  const { Provider } = useAnalytics(\n    // Event data shared by all components within HomePage\n    { page: 'HomePage' },\n    // Trigger an event when the component is mounted\n    { dispatchOnMount: true },\n  );\n\n  return (\n    // <Provider /> passes HomePage event data down to its children\n    <Provider>\n      <NewsletterForm />\n    </Provider>\n  );\n};\n```\n\nIn this component, we are:\n\n1. Defining a set of event data specific to `<HomePage />`, to be shared with all of its children\n2. Telling `useAnalytics` to dispatch an event _as soon as the component is mounted_. This is handy for tracking things like page views\n3. Again, using a `<Provider />` to pass the event data down to `<HomePage />`'s children.\n\n> 💡 Note that the `<Provider />` is returned from the local `useAnalytics` hook call. This allows `<Provider />` to merge any parent event data with the local `<HomePage />` event data, before passing the combined data down to `<HomePage />`'s children.\n\nFinally, let's add the `<NewsletterForm />` component, where our user interaction tracking will take place:\n\n```js\nexport const NewsletterForm = ({ handleSubmit }) => {\n  const { trackEvent } = useAnalytics(\n    // Event data shared by all components within NewsletterForm\n    { module: 'NewsletterForm' },\n  );\n\n  return (\n    <Form\n      onSubmit={(event) => {\n        handleSubmit(event);\n        // Event data specific to form submission\n        trackEvent({ action: 'submit-form' });\n      }}\n    >\n      <FormLabel>Sign up for our newsletter!</FormLabel>\n      <Input\n        placeholder=\"Email address\"\n        onFocus={() => {\n          // Event data specific to focusing the email input\n          trackEvent({ action: 'email-input-focused' });\n        }}\n      />\n      <Button type=\"submit\">Sign up!</Button>\n    </Form>\n  );\n};\n```\n\nIn this component we:\n\n1. Define some local event data for use within `<NewsletterForm />`\n2. Dispatch a tracking event when a user focuses the \"Email address\" field with some event-specific props\n3. Dispatch a tracking event when a user submits the form with some event-specific props\n4. We _do not_ use `<Provider />` in this component, since it has no children that implement their own tracking\n\nWe already saw how you can define _shared_ event data when you call `useAnalytics` before. Here we are also passing event-specific data to `trackEvent` when handling specific user interactions. This allows you to minimize how much data you have to pass to each `trackEvent` call, without sacrificing flexibility.\n\n### How data is merged\n\nNow that we have all of our components set up, let's walk through _exactly_ what happens when a user interacts with our app. There are a total of three events that _could_ be dispatched, so let's walk through them, one by one.\n\nFirst, when `<HomePage />` is mounted, an event is dispatched immediately because we set `dispatchOnMount: true`. `<HomePage />` is a child of `<App />`, so its event data will be merged with its parent. This is what the combined data will look like:\n\n```js\n{\n  // <App /> event data\n  app: 'MyApp',\n  // <HomePage /> event data\n  page: 'HomePage',\n}\n```\n\nThe next event is dispatched when a user focuses an input in the `<NewsletterForm />` component. `<NewsletterForm />` has two parents, `<HomePage />` and `<App />`, and we also passed some event-specific data when we called `trackEvent`. Here is how this data would be merged:\n\n```js\n{\n  // <App /> event data\n  app: 'MyApp',\n  // <HomePage /> event data\n  page: 'HomePage',\n  // <NewsletterForm /> shared data\n  module: 'NewsletterForm',\n  // Event-specific data passed to `trackEvent` directly\n  action: 'email-input-focused',\n}\n```\n\nThe last event is dispatched when a user submits the `<NewsletterForm />`. It's very similar to the input focus event above, but has different event-specific data. Here it is merged:\n\n```js\n{\n  // <App /> event data\n  app: 'MyApp',\n  // <HomePage /> event data\n  page: 'HomePage',\n  // <NewsletterForm /> shared data\n  module: 'NewsletterForm',\n  // Event-specific data passed to `trackEvent` directly\n  action: 'submit-form',\n}\n```\n\n### Overriding the dispatch function locally\n\nIf you are writing a component within a larger application, it is sometimes useful to override the parent `dispatch` function in your local component. Here are some possible cases where this can be useful:\n\n1. You want to disable all tracking for a specific component or its children\n2. You want to send tracking event data to a different analytics provider (e.g. Segement instead of Amplitude)\n3. You want to do something custom first, _before_ passing the data on to the parent `dispatch` function (think \"event data middleware\")\n4. You want to validate the format of the data using an event data schema\n\nTo see how we can do this, let's go back to our example app above, and override the `dispatch` for the `<HomePage />` component:\n\n```js\nexport const HomePage = () => {\n  const { Provider } = useAnalytics(\n    { page: 'HomePage' },\n    {\n      dispatch: (eventData, parentDispatch) => {\n        // Disable tracking in development\n        if (process.env.NODE_ENV === 'development') return;\n        // Remove some event data\n        const filteredData = omit(eventData, ['debug']);\n        // Add some event data\n        const newData = { ...filteredEventData, url: window.location.href };\n        // Validate the event data format\n        if (newData.fullName) throw Error(\"Don't track personal user data!\");\n        // Send data to a different analytics service\n        Segment.track(eventData);\n        // Finally, pass the modified data to the parent dispatch function\n        parentDispatch(newData);\n      },\n      dispatchOnMount: true,\n    },\n  );\n  return (\n    <Provider>\n      <NewsletterForm />\n    </Provider>\n  );\n};\n```\n\nWe are doing a lot of things: piping data to a different provider, removing, adding, and validating data on the fly, and eventually passing the modified data up to the parent `dispatch` function. And the best part, since the `dispatch` function override happens locally in `<HomePage />`, the rest of the application is unaffected. As you can see, this approach can be very powerful!\n\n### Middleware\n\nOur `dispatch` function in the last example got rather complicated. It's not exactly \"doing one thing, and doing it well\". We also don't have a way to easily re-use our code in a different component\n\nThe first thing we could do is break up the `dispatch` function into separate helper functions:\n\n```js\n// Remove some event data\nconst filterFields = (data, fieldsToOmit) => {\n  const nextData = omit(data, fieldsToOmit);\n  return nextData;\n};\n// Add some event data\nconst trackUrl = (data) => {\n  const nextData = { ...data, url: window.location.href };\n  return nextData;\n};\n// Validate the event data format\nconst validateEventData = (data) => {\n  if (data.fullName) throw Error(\"Don't track personal user data!\");\n  return data;\n};\n// Send data to a different analytics service\nconst pushToSegment = (data) => {\n  Segment.track(data);\n  return data;\n};\n\nconst dispatch = (eventData, parentDispatch) => {\n  // Disable tracking in development\n  if (process.env.NODE_ENV === 'development') return;\n\n  let data = eventData;\n  data = filterFields(data, ['debug']);\n  data = trackUrl(data);\n  data = validateEventData(data);\n  data = pushToSegment(data);\n  // Finally, pass the modified data to the parent dispatch function\n  parentDispatch(data);\n};\n```\n\nThat's certainly looking better, and we most of our code is not reusable! There are, however, still two issues remaining:\n\n1. It's a little repetitive to keep having to pass data into, and out of, our helpers. We could have the helpers _mutate_ their `data` argument, but that's hardly a good way to write modern JavaScript. It would be nice if we had a way to get rid of all of this boilerplate 🤔\n2. You might have noticed that we weren't able to refactor out the code that disables tracking in `development`. We could have added an `isDisabled` function, but we'd still need an `if` statement in our `dispatch` function. To put it another way, our helpers can't easily \"short-circuit\" the `dispatch` function. This seems like something we might need, especially if we have a lot of reusable analytics helpers in a large codebase! 😟\n\nThis is where middleware comes in! A middleware function typically takes some data (or state), performs some action, and then, if everything looks good, calls the _next_ middleware function. You've probably encountered middleware in libraries like [`express`](https://expressjs.com/en/guide/using-middleware.html) or [`redux`](https://redux.js.org/understanding/history-and-design/middleware) before. When used effectively, middleware allows developers to implement complex behaviors using simple, reusable, and composable functions, and helps cut down on boilerplate code.\n\nSo, what does middleware look like in _this_ library? Well, you've already seen it. Take another look at a `dispatch` function:\n\n```js\nconst dispatch = (eventData, parentDispatch) => {\n  // Possibly short-circuit...\n  if (process.env.NODE_ENV === 'development') return;\n  // Do something...\n  const nextData = filterFields(eventData, ['debug']);\n  // Everything looks good, pass the data along to the next dispatch function!\n  parentDispatch(nextData);\n};\n```\n\nThat... sounds a lot like the middleware function we described earlier! It's even more obvious if you rename a few fields:\n\n```js\nconst middleware = (data, next) => {\n  // Possibly short-circuit...\n  if (process.env.NODE_ENV === 'development') return;\n  // Do something...\n  const nextData = filterFields(data, ['debug']);\n  // Everything looks good, pass the data along to the next middleware function!\n  next(nextData);\n};\n```\n\nNow, let's rewrite our helper functions from earlier:\n\n```js\n// Remove some event data\nconst filterFields = (fieldsToOmit) => (data, next) => {\n  const nextData = omit(data, fieldsToOmit);\n  next(nextData);\n};\n// Add some event data\nconst trackUrl = (data, next) => {\n  const nextData = { ...data, url: window.location.href };\n  next(nextData);\n};\n// Validate the event data format\nconst validateEventData = (data, next) => {\n  if (data.fullName) throw Error(\"Don't track personal user data!\");\n  next(data);\n};\n// Send data to a different analytics service\nconst pushToSegment = (data, next) => {\n  Segment.track(data);\n  next(data);\n};\n```\n\nVery similar so far! This just leaves the logic that disables tracking in a `development` environment. What we are really trying to do here is to not call any middleware _after_ the environment check. We know that calling `next` from one middleware function is how we tell the _next_ middleware function to run, so all we have to do is not call `next`, and our middleware execution chain stops:\n\n```js\nconst disableInDevelopment = (data, next) => {\n  // In development, return without calling `next` to prevent additional\n  // middleware from running\n  if (process.env.NODE_ENV === 'development') return;\n  // For other environments, call `next` to keep the middleware execution going\n  next();\n};\n```\n\nThe last thing we need is to somehow combine all our middleware functions into a single `dispatch` function that can be passed to the `useAnalytics` good. You can do this using the `applyMiddleware` helper function provided by this library:\n\n```js\nimport { applyMiddleware } from '@aperture.io/analytics';\n\n// Merge our middleware functions into a single dispatch function\nconst dispatch = applyMiddleware([\n  disableInDevelopment,\n  filterFields(['debug']),\n  trackUrl,\n  validateEventData,\n  pushToSegment,\n]);\n```\n\nThat's _much_ cleaner! ✨\n\nThe `applyMiddleware` function takes an array of middleware functions, `Middleware[]`, and returns a single, merged `Middleware` function. The `dispatch` function is _also_ of type `Middleware`. This means that you can _nest calls_ to `applyMiddleware`, and any previously-defined `dispatch` function can be passed _as middleware_ to `applyMiddleware`:\n\n```js\nconst someDispatchFunction = // ...\nconst dispatch = applyMiddleware([\n  someDispatchFunction,\n  applyMiddleware([someMiddleware, anotherMiddleware]),\n  oneMoreMiddleware,\n]);\n```\n\n### Error handling\n\nDespite our best efforts, our code will inevitably throw unexpected runtime errors. In this library's case, the most common errors we might run into are:\n\n1. Logic errors in our `dispatch` functions\n2. Validation errors that we might throw on purpose in our validation middleware\n\nWhen an error is thrown, the `useAnalytics` hook returns an additional `error` object:\n\n```js\nconst { error } = useAnalytics(\n  { some: 'data' },\n  {\n    dispatch: () => {\n      throw Error('Uh oh');\n    },\n  },\n);\n```\n\nGiven the _highly-nested_ nature of this library, it is important to note that errors are handled in the _local_ call to `useAnalytics`, and do not bubble up to parents.\n\nIn our grocery list example from earlier, events were triggered from the `<GroceryCheckbox />` component, so that is where the `error` object will be available:\n\n```js\nconst GroceryCheckbox = () => {\n  // 👇 Call to trackEvent happens in this component, so the error is caught here\n  const { trackEvent, error } = useAnalytics();\n  const [checked, setChecked] = useState(false);\n  return (\n    <input\n      type=\"checkbox\"\n      checked={checked}\n      onChange={() => {\n        trackEvent({\n          action: 'done-button-toggle',\n          bought: !checked,\n        });\n        setChecked(!checked);\n      }}\n    />\n  );\n};\n```\n\n### Overriding default merge behavior\n\nTo avoid making assumption about the desired merging behavior, this library _merges event data shallowly_ by default. Deeply merging event data is a large application with many levels of tracked parent and child components can get complicated quickly, so it is generally discouraged.\n\nIf you do require more complex data shapes, you have the option to override the default merge using the `mergeData` config option:\n\n```js\nimport { merge } from 'lodash';\n\nconst { error } = useAnalytics(\n  { nested: { some: 'data' } },\n  { mergeData: (parentData, localData) => merge({}, parentData, localData) },\n);\n```\n\n💡 Note that you can pass different `mergeData` functions to each call to `useAnalytics`, so each nested tracked component has full control over how its local event data merging is handled.\n\n---\n\nAnd that's the library! Happy tracking! 🚀🚀🚀\n\n## Public API\n\n```ts\n// Types\ntype Dispatch = (data: Object) => void;\ntype Middleware = (data: Object, next: Dispatch) => void;\ntype UseAnalytics = (\n  // Shared analytics data\n  eventData: Object,\n  // Configuration object\n  options: {\n    // Dispatch event handler\n    dispatch: Middleware;\n    // Whether to dispatch an event on component mount\n    dispatchOnMount: true;\n  },\n) => {\n  // Localized analytics provider\n  Provider: React.Provider<Object>;\n  // trackEvent function\n  trackEvent: (data: Object) => void;\n};\n\n// Exports\nexport const applyMiddleware: (fn: Middleware[]) => Middleware;\nexport const useAnalytics: UseAnalytics;\n```\n\n## Scripts\n\n```sh\npnpm run build                            # Build library bundle\npnpm run start                            # Start dev server\npnpm run tsc                              # Start Typescript compiler\npnpm run tsc:watch                        # Start Typescript compiler (watch mode)\npnpm run test                             # Run Jest tests\npnpm run test:watch                       # Run Jest tests  (watch mode)\npnpm run lint                             # Check for ESLint issues\npnpm run lint:watch                       # Check for ESLint issues  (watch mode)\n```\n\n## Code organization\n\n```py\n/dist                                 # Build artifacts destination folder (compiles TS output)\n/source                               # Library source files\n  /index.ts                           # Library entry point\n/.eslint.json                         # Local ESLint configuration\n/babel.config.js                      # Local Babel configuration\n/jest.config.json                     # Local Jest configuration\n/jsconfig.json                        # JS config, primarily used by code editors to resolve path aliases\n/tsconfig.json                        # TS configuration\n```\n","readmeFilename":"README.md","homepage":"https://github.com/eldarshamukhamedov/aperture-public#readme","repository":{"type":"git","url":"git+https://github.com/eldarshamukhamedov/aperture-public.git","directory":"modules/analytics"},"bugs":{"url":"https://github.com/eldarshamukhamedov/aperture-public/issues"}}