{"_id":"@flourish/transform-data","_rev":"85-378ea094f568b5a01466102efbc29b0a","name":"@flourish/transform-data","dist-tags":{"latest":"2.1.0"},"versions":{"0.0.1":{"name":"@flourish/transform-data","version":"0.0.1","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@0.0.1","maintainers":[{"name":"kiln-ci","email":"ci@kiln.it"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"williamkeashock","email":"michael@flourish.studio"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"annaps","email":"anna@anna.ps"},{"name":"timbrock","email":"info@datatodisplay.com"},{"name":"gavrilov","email":"daniel@gavrilov.co.uk"},{"name":"hughsk","email":"hughskennedy@gmail.com"}],"dist":{"shasum":"e3cbfc6e821d3248f1990b69a5dbd8740bf811d8","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-0.0.1.tgz","fileCount":16,"integrity":"sha512-LDmGQPlaYBu9a32kQ8zh6OQXQZiDFUFMtHcFMcH8SR+eNRL8eUTbyIUWu60CHZkcm0F6kJ122tXvbbnh3i7UWw==","signatures":[{"sig":"MEUCIQDktBPOos6br6gu7Q81oVsAJ27aHmOQjB9MbBtyo9sfrAIgFCjzGv+LHThOe0xj0owp0F21MraoEvK233Z1js1Zfmk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2880370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctdOzCRA9TVsSAnZWagAAcW4P/AuI3zQ99hN+0lOtQwAc\ncaA8nhNmHvBcbv4SXYYrWznGAYWMqrBGmsq+yHu7dXvKCTBfkJ5xXR0US2vW\nnmASEHtBn4WYnN0C2/1FwBc0n76NBVOGq6NGF1fLkBXugdGDJthKrbnPqOew\nQfOlaceNIScmyrnJRwbDTVo26egXWVT+X8+ZbKQDoKVJW1A3FBo4u6VkjjUh\nGtPn5QudG6SxgnbbsLPqLyMekrUEDCNnF+imboImbY+v8opsyy/2uDvoqaAh\nhBAH5gtQb9D1CByeNO6YOl3bNr/t1Ia0waZ0ybYgy3tbDFSJ7uwlbcjSUgUB\n4N60gXdcMB9YydIInLTmIO+qUDK3Mn+kS+7hr4fwzO6GXUqHLpPnzN8LnATZ\nBTPnxlCRsGOrJehS2OwIdvVspfpa7CSL9Va/rP2reWE99g64eVEkTNrvQE71\naziJ3X1Dfwnh9H7DfV0nOBK20TVbhqLMTOSnvpgx1Va+GQ/zPPongSoAFeiM\n4u+FCW/oWY5bU2aMb0OiMyfX9qmvynS9m3Ta0FM+j3biJxiVLCoALhHkKp99\nsW7GJNUtRWz8hRpnZKj/C69XSVw+sLlFKxyAB21CA3ACviSYBmpoyKAa5x3n\nqrzm6MRuS6EFBTuymQESkSh9jypJ9a9BT9Ntagn7fujrSQKFuWwfJ2HaNblr\nBXkj\r\n=VxQN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"a230a397007466496328c5f9ca289d3a9ef13ed6","scripts":{"lint":"eslint src","build":"rollup -c","minify":"uglifyjs -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"timbrock","email":"info@datatodisplay.com"},"_npmVersion":"5.6.0","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"8.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^1.3.1","eslint":"^5.16.0","rollup":"^0.61.1","uglify-js":"^2.7.5","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^3.3.0","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_0.0.1_1555420083386_0.9791830077347199","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@flourish/transform-data","version":"0.1.0","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@0.1.0","maintainers":[{"name":"annaps","email":"anna@anna.ps"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"hughsk","email":"hughskennedy@gmail.com"},{"name":"keriley","email":"katie@kiln.it"},{"name":"kiln-ci","email":"ci@kiln.it"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"timbrock","email":"info@datatodisplay.com"},{"name":"williamkeashock","email":"michael@flourish.studio"}],"dist":{"shasum":"939cc575c9f8319312f432ea3dc66c289c209589","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-0.1.0.tgz","fileCount":17,"integrity":"sha512-S+wuR9gf/nT7KCXAJkH9ebwuvz3Wv/rcFCnrUGVh0431+ziUnVjYZ5g0CJP76lP+kHjLcxJHUry6NOutM7mKGQ==","signatures":[{"sig":"MEYCIQCdYu2pVzFez4R70XlLs7H/oOkjUPbUYsOuHiFMnWY7swIhAPejcwZ7UWuBAhzngs/oVFbI/skIsD1TYhp7ky5shEm8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2889801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyDXjCRA9TVsSAnZWagAAagEP/R7YhWB9Xiife0gXR21u\ndYvWiL3L2XLe+M0uKXwZTYwsSvR6EOJX6oMSAUGylOOOebQxPLk/XMc2fl64\n89XpExCNtYK3A/WgXWj6wZpG0zV5EojsueJg9TK9yNBS3mTCfaQKw9kVt+ZH\nHLiJ7BkaFb+UhAxNydydv5TNqoliLUXRf84e7D/7ldiBvQ6zv7ymst4eFwcV\nY0CO7pjnZ1DQdl6aDYNF8TI2+8Wx8FMUcO5dfMpAzY1DKYLl56Y2ifMyphVO\n9D3la7j5sEANNaHyAZmsTL+09C9XvxoLcX0aqbayxMyXYg3wqgR7E/89wq/A\nY88LbUcjoKoQ9sn5YhE8EkNPBO8r+dussHsR0vyIkZJNn8bGGaLweTmya/si\nA4+sGICTj/ichdc+eGXkmBjO7p2qIC1sXMXnZgZq4xiBtuKZ5c3HMogM82ZP\nggm9u9MmAUdIBn+O3az1PXXyrqvPOmM7gIOZ2NZgN1tUAHEZ7GFtIeKyTN64\nPY+GTKad03tzZEux2ueyKUbzZTEcrnW5ubG/J18cWcKtXLlTRb1YFe5ugCSX\nua+HFR1rz9pMnDnMNLeUcGoRmcJpdKhlcILXB5t5olqYJ8AoTYcFRE44OwFg\nwkxnomnSGq9YC3LCrOkWbnqQvU+PMpRXa4T9HnPgjOkqm91GyiKZf7fKB/wi\nFju8\r\n=Ea81\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"ffb0dc9e1a75b2694c644076432dbcb143f07922","scripts":{"lint":"eslint src","build":"rollup -c","minify":"uglifyjs -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"timbrock","email":"info@datatodisplay.com"},"_npmVersion":"5.6.0","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"8.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^2.1.0","eslint":"^5.16.0","rollup":"^1.10.1","uglify-js":"^3.5.9","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^4.2.3","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_0.1.0_1556624866314_0.4344068006477029","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@flourish/transform-data","version":"0.1.1","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@0.1.1","maintainers":[{"name":"annaps","email":"anna@anna.ps"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"hughsk","email":"hughskennedy@gmail.com"},{"name":"keriley","email":"katie@kiln.it"},{"name":"kiln-ci","email":"ci@kiln.it"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"timbrock","email":"info@datatodisplay.com"},{"name":"williamkeashock","email":"michael@flourish.studio"}],"dist":{"shasum":"bad4390c8e9a2d9f0b42cee3e350731c5a097f23","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-0.1.1.tgz","fileCount":20,"integrity":"sha512-9/TKni57q5ESbByHaFPUhPnfrU3smUUcGzOLMmN6NCuVp9kj9wA1QmHOO/Ab8iOzH9284ThuhvSUUvK456KG7A==","signatures":[{"sig":"MEUCIBGM9AZlFdsDtJIsQJ5cUjqxuFr96Hk4Fqr3mJtuXnPWAiEAt7IfATvgP6RmnhLO0QrA9VyA+8I5+ggzKo+59GRp25g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3005972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcytgbCRA9TVsSAnZWagAAfgoP/iyGhKQ6esn6BvKKscfp\nJCHeIY4L01kYXlzJcVW4ITkJs+176IVMb1q6rr1qHGVlFskrH0goS+ZG0fVg\nU4O6Y4gSXxZ4TpnN4+Wn3m6eNR0kmmYeqbUtm24g5d/yFHKZTA88ObD5Dr+q\n2DKMes1D2cTkUnViSTjCopBQjWfFdK7UdTELxedeoo9TTJjGKY+roSAtRK/7\n8am3FivGXU7fGkX6dgSuKwcqEvpkxYwmVW4zIn2yugy0mF3M4cqLFBmMAnx4\neIBnasugjMqHgs4oliaSikyGvc7hq51+uhdzmwvxvYJxIIAbw6By3LsW5hCe\njOKCh+ENFp6aXaXCUutEQf5aFPR6Dp3xqpKG9Z12yitQnCwM8S38wk2oStRn\n6ugF7OtT0K9tO79so20DP1DAuN8B91uRqtwws01RI+nHTv0GAra4YKOgNDj3\n6+WqdPbz6c9cqUt0fMukf9tpnJC8DWxNwt9rYy/tXjAuXnlfhDh9pf7M88Fv\nRImL5NImdEVbWvU+62yiL/hzhaR+ge+6/JBxJihRG5LrOoCnY9DRZT4tn0vB\n7cpwWYrK24zsmf7e+u2XcoZ/qxYmhiPs+CoRsPbaRPZPBL7eS2bBFreKKyMC\nmwMgf1hDEGxY6basrqwH9tDUVSFbF4wSyERSGcZOTiLxZ+ynKSFlxjePGEOV\nSOiZ\r\n=Gj3r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"261d201171be9d82a8920ab55734ede7051739c4","scripts":{"lint":"eslint src","build":"rollup -c","minify":"uglifyjs -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"mark-kiln","email":"mark@kiln.it"},"_npmVersion":"5.6.0","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"8.11.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^2.1.0","eslint":"^5.16.0","rollup":"^1.10.1","uglify-js":"^3.5.9","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^4.2.3","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_0.1.1_1556797466622_0.01909897214485068","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@flourish/transform-data","version":"1.0.0","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@1.0.0","maintainers":[{"name":"animateddata","email":"hello@animateddata.co.uk"},{"name":"annaps","email":"anna@anna.ps"},{"name":"bobbysebolao","email":"bobbysebolao@gmail.com"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"hughsk","email":"hughskennedy@gmail.com"},{"name":"larsvers","email":"lars@datamake.io"},{"name":"luptilu","email":"luisabider@hotmail.com"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"timbrock","email":"info@datatodisplay.com"}],"dist":{"shasum":"e8e336eec1b3eb19ff123eaffe1cb5daa92e53a4","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-1.0.0.tgz","fileCount":20,"integrity":"sha512-drubCH7j6WI2X2JzY8V1aGMPggIzrQu6+2Va9vs0AMTCom3UFd8+6DHKAF4+HBxWsiWldPWiu209hVTE5plFvA==","signatures":[{"sig":"MEUCIQCoC0ZRHEKAYlrIJARiaUMWAsspHCIFs6tB5a/5M8F4swIgU3Q5YplmcZTGmEFQsQT6M0umSH3HsAl18ISWnxOxfEQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2898366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJedK8NCRA9TVsSAnZWagAAR3cQAJSgzkEUMMu8BXEcyq8K\nVk++ypmE8VavkIuaLZrgTeylgiAxDh3QL2YnIizJs2h6uClYHtiZeKmPeJgh\ntFDDUj02s409F0ebOd0kAMBdplWvuOCCsYBt6lu5JiqpEfTkKhWS5J85VXzh\nIdUBVbVnI+AiFLxladj6go8r9pArlttFW5h3RFdb06BjxnOONN5bUy5jffBF\niVGPUYgC0D5wr9iBKr5uGuDLlIYuF7kJ5VRsNtxa1TijvBUGxG1eWrMHNjRD\n5iB0uUXasFRjPfGEWjJbw49uDecwARIStDRELTo2xykaTtbGbNw3IfWscwYZ\nJsjlRcZ7m0k1SFkFrEcFL63TweOp3QJ4RW27x3hSdGNiR+N1LlKjf3i5ysPL\nohi3nAXXdn2fjkjGPzetyL59F3VFlNRNBRgLeTBWi1nptLyv5oFFkbhL0INj\nCy0InZ3pnckAETdt9E/ayfTxR8VVam9/RHvorXe7VRfz6uTRMXbrS+u3q3Zk\nOyQtzPg9AJ9rtJZt3vF7SzceyalPvFzJNycUjEbB6SkOZ7f55fgPIlp9viX7\niHOCppV5t+T22d4SFv1xvrc2snp0Le/vIeoBkAhj54P0FZlF4HYxWKK9EMts\nNwSoZ6MbFPApmFkPKrhhKggTDIb/o1YkjAiZ9N+PjtEUhpecl9GLNkg4Xm0x\nbqbd\r\n=tfqR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"cf456de5a88629e3f1b9cd2141bca8b666aec02a","scripts":{"lint":"eslint src","build":"rollup -c","minify":"uglifyjs -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"timbrock","email":"info@datatodisplay.com"},"_npmVersion":"6.9.0","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"10.16.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^2.1.0","eslint":"^5.16.0","rollup":"^1.10.1","uglify-js":"^3.5.9","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^4.2.3","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_1.0.0_1584705292709_0.5745704453724609","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@flourish/transform-data","version":"2.0.0","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@2.0.0","maintainers":[{"name":"hrobertson","email":"h.robertson@icloud.com"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"timbrock","email":"info@datatodisplay.com"},{"name":"hughsk","email":"hughskennedy@gmail.com"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"animateddata","email":"hello@animateddata.co.uk"},{"name":"larsvers","email":"lars@datamake.io"},{"name":"luptilu","email":"luisabider@hotmail.com"},{"name":"bobbysebolao","email":"bobbysebolao@gmail.com"},{"name":"liakouras","email":"ilias@kiln.it"},{"name":"oliviajanelawlor","email":"oliviajanelawlor@gmail.com"}],"dist":{"shasum":"3dfda1fbf1235d02d22b21a4b359c82b4b2d4148","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-2.0.0.tgz","fileCount":20,"integrity":"sha512-HoMMvmfbZhMHSjH2+TkfLyjvD1OCK7GcnhUjyvFfPAWvc1wEzlE0K6s77sLCuVFkpl1Y4jT0JxjdlffhEPRQhw==","signatures":[{"sig":"MEUCIDO011+C7/0rUZv90gqPXArmQlLWiDthD7GuK7Z4tiASAiEAjvmcJkdjJCLTlNkVrcfI9Bmx75vfH0ma3deA6+SAjqI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2900000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE/B6CRA9TVsSAnZWagAADAcQAJRGa5yjI3ZrYBNJMHIu\nYEokbotwZydnlrjfWoBcB1tFDmxD1L0gNTqMnokwu+LbSYV5bzA49Jdzyv4A\n/GKtPTMMOEODzvx9RlLUIZsvjjl2Ixt91vn60sgd2dCESYJn09LE11Oe2rxY\nH9vk0GDJS25l4JoIGjf71aKT4olPwKaEg85VAGmCL3PnaGer9E5si2rkmyZn\nyvVi9nsvM7ho/R1DaxPCrYpzFBzU2dfGZrPPzlVkPTKjp0C+ZtrxU/DTPLCI\nG1da2YzMdM8cFn/4nFdZUydg3gg1jqyWcYo67/VAw7/xH+j3rSSDdJrRzQ29\n6/LEOR7JwOJ1gu1i4WTBlpEk0EY2oPrsMjO3sOndPeqgG00MhQnbxEZIF9lT\nal/BmVyplLXRPCHFOtVUPG+Sl7xcvqhBkKSivaAaVqfVgCsmQ/u7GehpeEVs\n+3AnsYmeKT0sLp5y8sIJWZL3lRFB54/9Uvq1gHfow7rrvJjlpggo+0AnT1A0\n+As5pWU7u1sMrewR/QOSJN1Mp3v/1wOkMhr/mil5Df2uBohdrjn4BY46V+G+\ne/Kplcax22QV5Ik3+Q2rCZOg7IKnyU+CAOr0ng79/QOCk9Dp6WNXGteXX68D\nbJUPOwtZHbw7748Tjd9ErfvCdhBXhD+XobrVDGiJQ8VvTpya8vDo0mV0AT6S\n3R6q\r\n=NoOm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"6697be328aea1b2fea8e14d6d96a041f7f01270c","scripts":{"lint":"eslint src","build":"rollup -c","minify":"terser -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"timbrock","email":"info@datatodisplay.com"},"_npmVersion":"6.14.8","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"12.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^2.1.0","eslint":"^5.16.0","rollup":"^1.10.1","terser":"^5.3.8","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^4.2.3","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_2.0.0_1611919482315_0.032548006528405615","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@flourish/transform-data","version":"2.1.0","author":{"name":"Flourish team"},"license":"UNLICENSED","_id":"@flourish/transform-data@2.1.0","maintainers":[{"name":"eademoon","email":"eade@kiln.it"},{"name":"hrobertson","email":"h.robertson@icloud.com"},{"name":"robinhouston","email":"robin@kiln.digital"},{"name":"duncanclark","email":"duncan@kiln.digital"},{"name":"daanlouter","email":"daan.louter@gmail.com"},{"name":"timbrock","email":"info@datatodisplay.com"},{"name":"hughsk","email":"hughskennedy@gmail.com"},{"name":"mark-kiln","email":"mark@kiln.it"},{"name":"animateddata","email":"hello@animateddata.co.uk"},{"name":"larsvers","email":"lars@datamake.io"},{"name":"luptilu","email":"luisabider@hotmail.com"},{"name":"bobbysebolao","email":"bobbysebolao@gmail.com"},{"name":"liakouras","email":"ilias@kiln.it"},{"name":"oliviajanelawlor","email":"oliviajanelawlor@gmail.com"}],"dist":{"shasum":"a889b6a2e9f2aca9cbdb6e06bba5076a00291cd3","tarball":"https://registry.npmjs.org/@flourish/transform-data/-/transform-data-2.1.0.tgz","fileCount":20,"integrity":"sha512-gx2u2ViLaIqwL3p1J8Md4LDpdSbsOAn50UKHGo/KPX9bVWmEW9cY44n0/4bPZ3bt2+OGLJ2yciZUDG4w+sUMfQ==","signatures":[{"sig":"MEUCIG3VQj5EkzkNveN9ouf+ou/TtZRjfp2CrNv9W0HWqZn3AiEA2CopDInFxlgIvQL8bBFfT5ZYIWNPCAo8BOCmZHe0l3U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2902547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL9NwCRA9TVsSAnZWagAAgSYQAKTuPBUcZ+L7g3IeJOxW\n7nCkdSpdO4mote3mG0Oq6O8Yhu7OGlIsO7cDOxwt26yzJrFIjUgnvOFpEwyz\nRxjTFLmk8ww/WGmc9plKd7CVEoBM6UbAvospo2RtfHsO02xeeH6ZNlM1oDFB\nDaKaNG6Ms7z92gmM+gMOmD4A7KuhukMMbixu0ZFGDz9bVJkqYJ9HFcZZPvGl\nDTTsjifSZF3u+/g2KaUCc7dHPvG4lN2VOJhozaE39ZsSBGiXp8nmWo5uD7sb\nhOZbrIZHTJm1i3e7JRg45JEw+TqYsOkSgn3z8UMrWCoSaTK4L+k43oEwFYSF\n8dIdxQcRE7IBJzYFF2fZxPeG3tjTHf1ry/IGYp8EcvgnbbTjYgOucz3AfVCg\non+3Ayw3bFOr1lZyUUmu7pdoUUHUiECfFlp0fDhEHBmadXzBv23Um+ZG/QMr\nqW2KkTUTNPvi0JWQ3ct4TKnPJ7qr8VJ8S3BmIT0S0+fHS1Gw6VL9tIOoEbmt\n/Y46FyigmcFqwdB3tOvGPBHZ7aR7pRbsvuyUxWsfOEvkK+2ykon+nFiW1nB3\n0ZQpdVEvv+yyIJY4N1BX9ceThvr4aO4QnpXlvTM8RlLiDiXh4ftsftz3eP0o\n0VBICmpTdBa7pbhtVFBTkx6IlcK0r0FbW/XCIt5X1csrdOhgUfuu2/2qq2Pz\nSzNT\r\n=yjIY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"transform-data.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"src/index.js","gitHead":"7e6f7363b81773ec7ca0098f7861e92634e2a145","scripts":{"lint":"eslint src","build":"rollup -c","minify":"terser -m -o transform-data.min.js transform-data.js","prepare":"npm run build && npm run minify","precommit":"lint-staged"},"_npmUser":{"name":"timbrock","email":"info@datatodisplay.com"},"_npmVersion":"6.14.8","description":"Reshape data","directories":{},"lint-staged":{"*.js":"npm run lint --"},"_nodeVersion":"12.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^2.1.0","eslint":"^5.16.0","rollup":"^1.10.1","terser":"^5.3.8","lint-staged":"^8.1.5","rollup-plugin-node-resolve":"^4.2.3","@flourish/eslint-plugin-flourish":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/transform-data_2.1.0_1613747055290_0.10255265549022696","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-04-16T13:08:03.385Z","modified":"2026-08-19T18:13:42.466Z","0.0.1":"2019-04-16T13:08:03.534Z","0.1.0":"2019-04-30T11:47:46.485Z","0.1.1":"2019-05-02T11:44:26.793Z","1.0.0":"2020-03-20T11:54:52.946Z","2.0.0":"2021-01-29T11:24:42.533Z","2.1.0":"2021-02-19T15:04:15.530Z"},"author":{"name":"Flourish team"},"license":"UNLICENSED","description":"Reshape data","maintainers":[{"email":"duncan@kiln.digital","name":"duncanclark"},{"email":"daan.louter@gmail.com","name":"daanlouter"},{"email":"hello@animateddata.co.uk","name":"animateddata"},{"email":"lars@datamake.io","name":"larsvers"},{"email":"luisabider@hotmail.com","name":"luptilu"},{"email":"h.robertson@icloud.com","name":"hrobertson"},{"email":"florin@kiln.digital","name":"florin.oprina"},{"email":"ben.lloyd@canva.com","name":"b3n-canva"},{"email":"brunoriddy@canva.com","name":"bruno-riddy"},{"email":"katietanner@canva.com","name":"katietannercanva"},{"email":"josephw@canva.com","name":"jwitcombe"},{"email":"becky.rush14@yahoo.co.uk","name":"rushlet"},{"email":"winna@canva.com","name":"winna_canva"},{"email":"jonty@canva.com","name":"jontyt"},{"email":"scottb@canva.com","name":"scottb-flourish"},{"email":"gwyneth@canva.com","name":"gwyneth.bassett"},{"email":"snavad@canva.com","name":"sega-canva"},{"email":"ci@kiln.it","name":"kiln-ci"},{"email":"niamhb@canva.com","name":"niamhb"},{"email":"guy.n@canva.com","name":"guyneedhamcanva"}],"readme":"# Transform data\n\nThis module exports a collection of functions for transforming data (arrays of objects and arrays of arrays) that may be useful either in the visualisation editor or when using the API.\n\n## `pivotObjects(input_data, headers_column, values_column)`\n\nTakes an array of objects, `input_data`, and two strings that should refer to properties in the `input_data` object. The output data is then a pivotted version of `input_data` with properties from the `headers_column` and values from the `values_column`. This is similar to the Excel pivot table operation and will generally turn \"long\" data into \"wide data\". It also adds a `column_names` property to the output array that is useful with the Flourish API.\n\n## `pivotArrays(input_data, headers_index, values_index)`\n\nTakes an array of arrays, `input_data`, and two numbers that should refer to indexes within each inner array. The first element of `input_data` should contain the headers. The output data is then a pivotted version of `input_data` with properties from the `headers_index` entries and values from the `values_index` entries. This is similar to the Excel pivot table operation and will generally turn \"long\" data into \"wide data\".\n\n\n## `meltObjects(input_data, melt_columns, opts)`\n\nTakes an array of objects, `input_data`, and an array of property names, `melt_columns`. The `melt_columns` are then used to create multiple rows for each previous row. This is the reverse operation of `pivotObjects` and will generally turn \"wide data\" into \"long data\". It also adds a `column_names` property to the output array that is useful with the Flourish API. The `opts` argument, if present, should be an object that can have up to three (useful) properties:\n- `variable_name`: The name applied to the new column based on the `melt_columns` properties (headers);\n- `value_name`: The name applied to the new column based on the `melt_columns` values;\n- `keep_empty_strings`: If `true`, keeps rows that would otherwise by ignored because the associated value is an empty string.\n\n## `meltArrays(input_data, melt_columns, opts)`\n\nTakes an array of arrays, `input_data`, and an array of indexes, `melt_columns`. The `melt_columns` are then used to create multiple rows for each previous row. The first element of `input_data` should contain the headers. This is the reverse operation of `pivotArrays` and will generally turn \"wide data\" into \"long data\". The `opts` argument, if present, should be an object that can have up to three (useful) properties:\n- `variable_name`: The name given to the new column based on the `melt_columns` properties (headers);\n- `value_name`: The name given to the new column based on the `melt_columns` values;\n- `keep_empty_strings`: If `true`, keeps rows that would otherwise by ignored because the associated value is an empty string.\n\n## `flourishifyObjects(input_data, column_bindings, columns_bindings)`\nTakes an array of objects, `input_data`, and up to two objects, `column_bindings` and `columns_bindings`. These two objects then act as dictionaries to transform the `input_data` into output data that better matches the structure used in a Flourish template. Each key of the `column_bindings` object should match a key of `type: column` in the template and the values should match keys in the input data. Similarly, each key of the `columns_bindings` should match a key in the template of `type: columns` while the values should be arrays whose elements match keys in the input data (you can also use a string in place of an array if you only want to map one column to a given key). This function will also add a `column_names` property to the output array.\n\n## `flourishifyArrays(input_data, column_bindings, columns_bindings)`\nTakes an array of _arrays_, `input_data`, and up to two objects, `column_bindings` and `columns_bindings`. These two objects then act as dictionaries to transform the `input_data` into an array of _objects_ that better matches the structure used in a Flourish template and by the API. Each key of the `column_bindings` object should match a key of `type: column` in the template and the values should match indexes in the input data. Similarly, each key of the `columns_bindings` should match a key in the template of `type: columns` while the values should be arrays whose elements match indexes in the input data (you can also use a single index in place of an array if you only want to map one column to a given key). This function will also add a `column_names` property to the output array.\n\n## `flourishify(input_data, column_bindings, columns_bindings)`\nCalls and returns the results of either `flourishifyArrays` or `flourishifyObjects` (passing in all arguments) based on whether `input_data[0]` is an array or not.\n\n## `leftJoin(left_data, right_data, [options])`\nExpects two arrays of arrays - `left_data` and `right_data` - plus `options` and returns an array of arrays that is the left join of `left_data` and `right_data`. `options` properties are the `left_index` for the `left_data` column to join on (defaults to the last column in `left_data`), `right_index` for the `right_data` column to join on (defaults to the first column, index 0, in `right_data`), `left_keep` for whether to keep the `left_index` column in the merged data (defaults to `true`) and `right_keep` for whether to keep the `right_index` column in the merged data (defaults to `true`).\n\n## `rightJoin(left_data, right_data, [options])`\nExpects two arrays of arrays - `left_data` and `right_data` - plus `options` and returns an array of arrays that is the right outer join of `left_data` and `right_data`. `options` properties are the `left_index` for the `left_data` column to join on (defaults to the last column in `left_data`), `right_index` for the `right_data` column to join on (defaults to the first column, index 0, in `right_data`), `left_keep` for whether to keep the `left_index` column in the merged data (defaults to `true`) and `right_keep` for whether to keep the `right_index` column in the merged data (defaults to `true`).\n\n## `fullJoin(left_data, right_data, [options])`\nExpects two arrays of arrays - `left_data` and `right_data` - plus `options` and returns an array of arrays that is the full outer join of `left_data` and `right_data`. `options` properties are the `left_index` for the `left_data` column to join on (defaults to the last column in `left_data`), `right_index` for the `right_data` column to join on (defaults to the first column, index 0, in `right_data`), `left_keep` for whether to keep the `left_index` column in the merged data (defaults to `true`) and `right_keep` for whether to keep the `right_index` column in the merged data (defaults to `true`).\n\n## `innerJoin(left_data, right_data, [options])`\nExpects two arrays of arrays - `left_data` and `right_data`- plus `options` and returns an array of arrays that is the inner join of `left_data` and `right_data`. `options` properties are the `left_index` for the `left_data` column to join on (defaults to the last column in `left_data`), `right_index` for the `right_data` column to join on (defaults to the first column, index 0, in `right_data`), `left_keep` for whether to keep the `left_index` column in the merged data (defaults to `true`) and `right_keep` for whether to keep the `right_index` column in the merged data (defaults to `true`).\n\n## `*Join.getLastUnmatched()`\nThe four `*Join` methods all have an attached `getLastUnmatched` method. These methods return an `unmatched` object giving information on rows that had no matches the last time the parent function was invoked. The `unmatched` object contains two properties: `left` and `right` whose values are arrays of objects. Each object in the `left` or `right` array represents an unmatched row from the appropriate `left_data` or `right_data` dataset. The properties of these objects are `input_row` (the row index in the input data), `output_row` (the row index in the output data or `null` if it does not appear) and the `value` that had no match.\n","readmeFilename":"README.md"}