{"_id":"tannin","_rev":"6-2a77afcd72431dfbfbec9719b2fd079c","name":"tannin","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"tannin","version":"1.0.0","description":"gettext localization library compatible with Jed-formtted locale data","main":"build/index.js","module":"index.js","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"file:../plural-forms"},"devDependencies":{"benchmark":"^2.1.4","jed":"^1.1.1"},"publishConfig":{"access":"public"},"_id":"tannin@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"dist":{"integrity":"sha512-sWAPqHVTeD4Ak/06Iiny5zxfOEZC6RUKQl6o/IWg4ZKJ9g4XN9QrfDOXhm/l6U+VvyVxHG9/y5Cb24IhqGZ3xQ==","shasum":"4ca27fa9a02ed362f4289a5351bbec9bb7b592fc","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.0.0.tgz","fileCount":6,"unpackedSize":23340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb38EtCRA9TVsSAnZWagAA29wP/i+7FC1roXxLm/S2pogl\nKnkG1SAWz7mEhQUyGN2Y7T39Ln4BqNe6RQ4R1VV9wR5QNtL2HymB/ZFXsjbc\nWL11WoOjahR1GVF1UQDFagHTTNyAFqrCymz6qj5VTm/t0S/5uTrv9nbBEQOi\nctOgo9fgd2f9njw44U+1Ac7gzaXb7aKvNJkOCB91o+fISVdsd2u7/jK7wubL\n0POAkfIi4VXwXfB7WDHjj3rCS4eFEAV74gsQB4+0Gya4NlpvhXkkWEs5Ipmn\n9uc8dJh6XUi5bLDUlfGAIz1VIMjisRRbBHd5cOl4Cc5/MnzmuAwENT10q1YY\n0C4omo7NFICinO0iIEm236Iiy5wuYYvsvav3qbrnyHK3fvyLddbKu2WSZV2H\nq8LkKj3FNX1kdXLS+A1Yd8h02/xiyjcJLFxYb9090sYQnTx3icsfY6PeMp06\nAQkVwabBLgsgFFmwfOnl79Yz1cn1mRV43v7y7+G64Kx5b/VzJVKGfVFlPUYa\nGon/rOMnpMz+cuGu3il50NH+5OW4IOJCd+y1pAr3NQD4Byh0bDyNDV96fG0U\nUYdkPJx2w88EJzRzv94Xyq0jgCw+fDiF8wrM9ecALrjoG8EDeFWS9QJpTsjy\nSQwpt8NofZ1oakvwiCXCFcIQzvLIJGKVn+Jqn6H7SKDeQGIc4OXzMeVwOLAS\ntCmf\r\n=3FnN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVwUp54SGnyA5Go0fU2OUAQ/trOPz5S9i5fzmZnWWDSAIgUfQPEAelXtJu2tPwGvx5pO3QZNhP+GGjSdFnbHgwBLk="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.0.0_1541390636130_0.4519558583859198"},"_hasShrinkwrap":false},"1.0.1":{"name":"tannin","version":"1.0.1","description":"gettext localization library compatible with Jed-formatted locale data","main":"build/index.js","module":"index.js","moduleName":"Tannin","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"^1.0.0"},"devDependencies":{"benchmark":"^2.1.4","jed":"^1.1.1"},"publishConfig":{"access":"public"},"_id":"tannin@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"dist":{"integrity":"sha512-dDtnwHQ63bS/Gz0ZLY+E+JCdRoTZkmoKDoC64y3hzAD2X2qrp8jSuWNUjtiYHA48mtj4Ens9xl4knAOm1t+rfQ==","shasum":"fd0723315a0d9ad1d0ee1949b72c3ba618550e61","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.0.1.tgz","fileCount":7,"unpackedSize":23605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb38o+CRA9TVsSAnZWagAAa8UP/iXGUJyJRvPJUoxrpmsB\nVxXhYBPybvLRu6CUh+o7KahXUWog+guBDiLK571DW8oaF11xKF5PMdm8yEjT\n9do+R78TUXxHQcJLK8+uhx1nOmzjIic+pstk1ATjukXz6PhQrt/C9oSONkWf\nVo3AhLmfnnqUe0cjOXgZS6L4UM0xt9tsCMTJeM9JadPgSNNWmKoRuG/wSqUc\nd2nC4F5aF/fu2jGPzO9UMM9GtnRENtoCcC3DCeXsu7kA07B8FKeiAUNWKC9h\ntvYiTbjgoSnU+fTD2Ocr4s/13VlMrg6OGHN6NZdF16wc5v259ML9yur4SlXh\nEb9twQN+z2Cm3OYlezVKOhzjjEk/MxEKd9/6WCjpeUMkmNGOHgRp4vhU1WUq\nuaqsqsbR2mqt4A0qwcbSvbwvuMoCON4y/aRBh0Gq6m72FsYXPCevUQDmPpwx\ngurrAfsJWgLQF0LcgJIUMIKs9BMc/9BLzPKno4YkXGyyHl1mXX83vAAb131j\nAIbzlP306eMzmYhjLAqYl8HBsyrG+yPbdzTRv+eZSH2LfovHzyeFR15w7Ifd\npkkl88K/a/6RTgzuJOEzprNipmhS9DAe7+I+8/7lyjmDNPhmGJH0wl/BBBZG\nYzixVjTGIRIEXw/lsT6A68Yy5wMajeKqBzHdNfWklq3q1yM9pr/XQHELolKa\nxa18\r\n=wgx+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExeGcGwNMe73na0lvPPSY1yF5vNnWEXZzBbZSKq9RjXAiBez6yna+JdAlxqQnrdu1/r/RS+wWvMkLdCX6MlRwV0Vw=="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.0.1_1541392957972_0.28923076649513857"},"_hasShrinkwrap":false},"1.0.2":{"name":"tannin","version":"1.0.2","description":"gettext localization library compatible with Jed-formatted locale data","main":"build/index.js","module":"index.js","moduleName":"Tannin","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"^1.0.2"},"publishConfig":{"access":"public"},"gitHead":"f9eab450b38d99aa554626b550407f93397b7a4a","_id":"tannin@1.0.2","_nodeVersion":"10.14.2","_npmVersion":"lerna/3.10.6/node@v10.14.2+x64 (darwin)","dist":{"integrity":"sha512-5pqwELzsIO+zO3V3/jjlMR/ykzK41YNFLvb4SwPeAgrTiCjXwL/P3Om5uOiJk/iKdq6lBIO94rYAfBsEHu2vlA==","shasum":"b17a9188524ef9cbbc43b227bb9607c4c03d0c34","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.0.2.tgz","fileCount":8,"unpackedSize":24766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQ4TqCRA9TVsSAnZWagAA2VUP/R/fyKnjAKEj7jw/owIz\n1LD7rXnFypIX0RfBjT4EUPTdkQ90VikvKCozQ0pT258xvjxA5mRa/e+JcrKX\nWLY9LbYC8ZzfigYzOyJ+4oObYKh0KfC89rsVcM6T+xJlL/FdTJl6ItBX7VRs\nE9Hj5QLe1VXWaPTzNLfD/E7ohQd+DxwNl5Rg8CAm5EahYuwxXG2gGHCACr02\nJfLR+KJDxVEkIfZjXhGVe4GBGvoWm4PQ6lfq3okhNKCQgAv7aPjpUuUr9lye\n2EgWsMdYsTUxYSzeSvXtyBeSDwz87LUQLq2f8loME++tLY1bjc9VEjXs2S+3\np02NOQK7hAviSIY/EyIDE40IxdcZ1gmfc9G0uoyK7Y9fVbld6bJQTBIsrvVW\nCIW68viFAAbaq6Hu5m9L9HIvlnz2lRp34BLadsptc6epCLrIvHXzz+/j3HKG\n23W1fwH5N73Rzx4y1G1Is/srFlwiXPz4td9KQpdAj7ExP91gSpPrYDdiUk9I\nbUprY+RCJ4JOm+M531CY/+gUnNoKbIHmvqOomVX13ik15OjN92JwqMx68Fax\ntrdJjlqA4Gq6vWCMialCZCiZTK23faoLjI2dqHpVlqeBGS3ppyFd7Quw2rYU\nacRSyZPI2qroNMb9Yw5W4xmA4siP50F8h/BtMhJSpWzXuwty5mhBhW20mQp8\nEITJ\r\n=M+/y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7Rx3IQ5sxmSzQ/6b9CVcJgSCl7SpqRjUO1XbxVpnzrAiEAz78YVnze8fkqaXej3WHNZ09Nx7Lrc3YpDbDyjflRVFI="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.0.2_1547928809862_0.5224195240836125"},"_hasShrinkwrap":false},"1.1.0":{"name":"tannin","version":"1.1.0","description":"gettext localization library compatible with Jed-formatted locale data","main":"build/index.js","module":"index.js","moduleName":"Tannin","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git","directory":"packages/tannin"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"^1.0.3"},"publishConfig":{"access":"public"},"gitHead":"32fce6eeefdc3db7819004e9044e707604af4cd9","_id":"tannin@1.1.0","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","dist":{"integrity":"sha512-LxhcXqpMHEOVeVKmuG5aCPPsTXFlO373vrWkqN7FSJBVLS6lFOAg8ZGzIyGhrOf7Ho3xB4jdGedY1gi/8J1FCA==","shasum":"0cdc30bc81fafa63a0d6e9890e2bff56a64d27c7","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.1.0.tgz","fileCount":8,"unpackedSize":26916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgcJuCRA9TVsSAnZWagAAldcP/08dMHNbju0VyBtsZCBO\nWgLXGv2vH+VFmUJZUlPhZTm98JXf+yVNeq/+/jjbGCvzzNbwMjjDqhb6Wdqe\nE9NZ3aNiL9WTnroO3jA3GfQoELjmvwO0ewCCz7Od0Y38uNcdnjYh7JlAPt2Z\nTfj7uQPuVGmYqjTcq8AafwTlFJd7W6ZUbA7nGnmdF6bpg9RRZfASnLcMY4C7\nv8Hw92Ltc0ilxht1UcZMuG4JhEJ1qRB/x6VxMwyk+ukKEXZ5svxXXfUQuWnj\n6p+qvYQ8ji9vdhLIOKRhYlT50/IhbuGb2YfonuECDMJOYX+PtYlAu+XMEXGq\nf/vbRIpydzSf6AZfhQwp8syM0LGUfrAh7HHo+jJwuaam2qwUpgv9K4S8rwuP\nWtbgrdGL4Sj9u7YVLu0nhnifp4L7UqjhoHpM03Wy/R3BV10dWSydST0WiWbG\n8fljFWmY6uvM9DI8WkFB8C8deYLnDG9MwWs2OrT7UV8Tud39yQ1x4mjUAiko\nsAY3TAr3biEKuUR3yJdjQ57bNyMwD0cqiYENS4Zdep9P637XnglCVxWO/ax6\n4mPsxZuMve36dvnG7JkjRhlsOwTdJ9uxtfZE4w2hTwal/IzPLpILvOjXLgLM\nfIQDnDJT00oaP5t9yuYQjj0i1pRDIiUuRNVc7UjgybU+1pGxNNVKLm4OLcQ4\nIm7y\r\n=/236\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn7sx9r80stQdxj0JC1BqgamiPiKp9OqqsZEOux2G38QIgQJkzP0RbzCKxyZGPJAA9ZRbL/f2+2XMXUhk4rxtxwCw="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.1.0_1552007790083_0.9260785838457752"},"_hasShrinkwrap":false},"1.1.1":{"name":"tannin","version":"1.1.1","description":"gettext localization library compatible with Jed-formatted locale data","main":"build/index.js","module":"index.js","moduleName":"Tannin","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git","directory":"packages/tannin"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"^1.0.4"},"publishConfig":{"access":"public"},"gitHead":"0e72800b6a32ef0bd82cb6d14c156bfa4093dc2c","_id":"tannin@1.1.1","_nodeVersion":"12.13.0","_npmVersion":"lerna/3.18.3/node@v12.13.0+x64 (darwin)","dist":{"integrity":"sha512-e6qNtx1XZnvC3psLnvboUekSY4phq77YDnDDhE/nqghpTVz2MbrsrN0M1dysof/WfkcSvnRVZyR8NYu5KcFtQw==","shasum":"30daccac26b43200fa0a65a36391274ecfc67d6c","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.1.1.tgz","fileCount":8,"unpackedSize":32142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3tnvCRA9TVsSAnZWagAAq3MQAIBMTyftzjKLNbtx7eMR\nLpWavqp0XvBmqrgv0dGAfCCGxeGs7ymZ39rKFVcmkNVWsdbbiaYLutxQ9cXE\nnoOSYWFn/mH7a2EryEawQvMZzkK9BXAqRDLAc0Zw8D3EYx1kb5rMwfe8j5He\nUKY3mV3muXxJW8zG/XA4vi4G7nNwlVrqDAvlLtOdKEgrYMzPSNeW5HcGgEdZ\nZ1YJpZ0Vm8hJvoIbHn9EbT1N0DSY84w+kTqMHD3j+O+X9bPCa7pOkkCx2YOE\ntL6qL9JJmvT3JgIB/WDI7OpWf5HRi17sJV76ZcuFIO2SZFfc/BO+oHTPkONM\nqAUVsK46Y8V4MvqP2WVsD8Xo+e1i3Pc1MqG1zXrPLQShg+guQAq45AWzLjQa\n2eicrj/8a+QdinJf5Nt5UPIpiks2U0yTfRj2P3MuNPiA+DFul0+EoDjldo+t\n0iwxpjBGzr4JupR+IbUZWab1EGnmPDPQyRE/GY/Kt63yh8giEaJi/8ddlgPP\ncoGGQkRxB+MF9whx4k+7eun0w5QqNrGLnK3f3OdSVf7mftbHbVv8H+N59ufk\nuKDBgA+oOujH97pCp+QayUcW9L9b0VPGNcAGQV1+n/dXhRlhS2qGcbmmHONM\npRdTxrWPWgPzZT3rdkooKyqmaO/F/FywoU1VvWfh/c1wX09aZm09epRTcE5D\n7HQg\r\n=51LX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7oVAC1MYXwz5vRvtnwMMbq4KonvhXj4RlLGJMi6aJVAIgWX9eNkqMZ4bpIlbcDMgc8NHPwnZWSy+B0wJ+WVOyGLs="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.1.1_1574885871074_0.20632600292963876"},"_hasShrinkwrap":false},"1.2.0":{"name":"tannin","version":"1.2.0","description":"gettext localization library compatible with Jed-formatted locale data","main":"build/index.js","module":"index.js","types":"index.d.ts","moduleName":"Tannin","scripts":{"prepublishOnly":"cp ../../README.md README.md"},"keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"homepage":"https://github.com/aduth/tannin","repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git","directory":"packages/tannin"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","dependencies":{"@tannin/plural-forms":"^1.1.0"},"publishConfig":{"access":"public"},"gitHead":"cd1c7447843df7751c4abd1b92aee03fe56bfba4","_id":"tannin@1.2.0","_nodeVersion":"12.13.0","_npmVersion":"lerna/3.20.2/node@v12.13.0+x64 (darwin)","dist":{"integrity":"sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==","shasum":"1da6fe65280dca4c3d84efb075b077b1b94362a6","tarball":"https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz","fileCount":9,"unpackedSize":35095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeY+oGCRA9TVsSAnZWagAA8a8P/RQhlm3fjyUHNiEsV6/O\nPXgEDXUwZHwDApU1YcuDc/cPcJYOlUY5Z+dM9AgAFl+i5+5trhrth+imOsUx\nEaXaFzthqeWV+4KiKC04QTvJ8qjGPnDAgZGdkDRN5Rk+bN88vtC37HBT+jyO\n3Mrztp4zxHZ+VKwYH3jPXp1ZX5/7iYssQ5N9/J8O8q1mK+cBGtEnZKnEzGax\n6a1vwy4fALI2HNUkOtzExErAS+SYGAOeWfehQv8C+FC8yfU+BYfWEaIxdwHr\nGTfFZOPtMqMxM27w1CemhskaxqyX8X5PsAxWN5W4FqtliNCg5HBcYt+xS7S2\ndDUtwJdPabKG/ozdMPLdilIsKueYhgY5iBJwwVcmH4F/IP8qrYgtHwZbFbd9\nG3Jn72fgDLXEPcVScS25hNW/v+ZBzOqeGwHofSTBawoc8CW9O2M5YHKiWQRX\nDoErMEfMcWzu2TcaRF7knkj39IL7JxEUXdTG9x7hlB+1tpSL0A+6cn/UD5l0\nYzn7gDAyxqnBSTO1Ycrcp50Y3iZvtzraZL1SYMQ/T3sfO3kRv63MisbFFaHC\nL8TBzWWRY2RerpTveP8gyUO5BCcwBOeTCszxmmyVtuSmazxrSPLLRAA/JNHG\nQIWVY+yph3OFo/D8ADvhsapjTbhIdV5wGuyqRd+dndgFew8YLBWj91hRJctr\n1dY4\r\n=lEeq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKN8hVEfigAouBkLUIoY5w4rPN3oxyw6r22kPy9NDNXwIgOoc9sRMH587suc3pJBYnPg3mXX1zy2+ZoReL7GFhG9I="}]},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"_npmUser":{"name":"aduth","email":"andrew@andrewduthie.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tannin_1.2.0_1583606278629_0.15193601538207635"},"_hasShrinkwrap":false}},"time":{"created":"2018-11-05T04:03:55.938Z","1.0.0":"2018-11-05T04:03:56.648Z","modified":"2022-05-19T09:25:48.694Z","1.0.1":"2018-11-05T04:42:38.106Z","1.0.2":"2019-01-19T20:13:29.998Z","1.1.0":"2019-03-08T01:16:30.201Z","1.1.1":"2019-11-27T20:17:51.203Z","1.2.0":"2020-03-07T18:37:58.734Z"},"maintainers":[{"name":"aduth","email":"andrew@andrewduthie.com"}],"description":"gettext localization library compatible with Jed-formatted locale data","homepage":"https://github.com/aduth/tannin","keywords":["jed","gettext","localization","internationalization","l10n","i18n","translate"],"repository":{"type":"git","url":"git+https://github.com/aduth/tannin.git","directory":"packages/tannin"},"author":{"name":"Andrew Duthie","email":"andrew@andrewduthie.com","url":"https://andrewduthie.com"},"bugs":{"url":"https://github.com/aduth/tannin/issues"},"license":"MIT","readme":"Tannin\n======\n\nTannin is a [gettext](https://www.gnu.org/software/gettext/) localization library.\n\nInspired by [Jed](https://github.com/messageformat/Jed), it is built to be largely compatible with Jed-formatted locale data, and even offers a [Jed drop-in replacement compatibility shim](#jed-compatibility) to easily convert an existing project. Contrasted with Jed, it is more heavily optimized for performance and bundle size. While Jed works well with one-off translations, it suffers in single-page applications with repeated rendering of elements. Using Tannin, you can expect a bundle size **20% that of Jed** (**980 bytes gzipped**) and upwards of **330x better performance** ([see benchmarks](#benchmarks)). It does so without sacrificing the safety of plural forms evaluation, using a hand-crafted expression parser in place of the verbose compiled grammar included in Jed.\n\nFurthermore, the project is architected as a mono-repo, published on npm under the `@tannin` scope. These modules can be used standalone, with or without Tannin. For example, you may find value in [`@tannin/compile`](https://www.npmjs.com/package/@tannin/compile) for creating an expression evaluator, or [`@tannin/sprintf`](https://www.npmjs.com/package/@tannin/sprintf) as a minimal [printf](https://en.wikipedia.org/wiki/Printf_format_string) string formatter.\n\nThe following modules are available:\n\n- [`tannin`](https://www.npmjs.com/package/tannin)\n- [`@tannin/compat`](https://www.npmjs.com/package/@tannin/compat)\n- [`@tannin/compile`](https://www.npmjs.com/package/@tannin/compile)\n- [`@tannin/evaluate`](https://www.npmjs.com/package/@tannin/evaluate)\n- [`@tannin/plural-forms`](https://www.npmjs.com/package/@tannin/plural-forms)\n- [`@tannin/compat`](https://www.npmjs.com/package/@tannin/compat)\n- [`@tannin/postfix`](https://www.npmjs.com/package/@tannin/postfix)\n- [`@tannin/sprintf`](https://www.npmjs.com/package/@tannin/sprintf)\n\n## Installation\n\nUsing [npm](https://www.npmjs.com/) as a package manager:\n\n```\nnpm install tannin\n```\n\nOtherwise, download a pre-built copy from unpkg:\n\n[https://unpkg.com/tannin/dist/tannin.min.js](https://unpkg.com/tannin/dist/tannin.min.js)\n\n## Usage\n\nConstruct a new instance of `Tannin`, passing locale data in the form of a [Jed-formatted JSON object](http://messageformat.github.io/Jed/).\n\nThe returned `Tannin` instance includes the fully-qualified `dcnpgettext` function to retrieve a translated string.\n\n```js\nimport Tannin from 'tannin';\n\nconst i18n = new Tannin( {\n\tthe_domain: {\n\t\t'': {\n\t\t\tdomain: 'the_domain',\n\t\t\tlang: 'en',\n\t\t\tplural_forms: 'nplurals=2; plural=(n != 1);',\n\t\t},\n\t\texample: [ 'singular translation', 'plural translation' ],\n\t},\n} );\n\ni18n.dcnpgettext( 'the_domain', undefined, 'example' );\n// ⇒ 'singular translation'\n```\n\nTannin accepts `plural_forms` both as a standard [gettext plural forms string](https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html) or as a function which, given a number, should return the (zero-based) plural form index. Providing `plural_forms` as a function can yield a performance gain of approximately 8x for plural evaluation.\n\nFor example, consider the following \"default\" English (untranslated) initialization:\n\n```js\nconst i18n = new Tannin( {\n\tmessages: {\n\t\t'': {\n\t\t\tdomain: 'messages',\n\t\t\tplural_forms: ( n ) => n === 1 ? 0 : 1,\n\t\t},\n\t},\n} );\n\ni18n.dcnpgettext( 'messages', undefined, 'example', 'examples', 1 );\n// ⇒ 'example'\n\ni18n.dcnpgettext( 'messages', undefined, 'example', 'examples', 2 );\n// ⇒ 'examples'\n```\n\n## Jed Compatibility\n\nFor a more human-friendly API, or to more easily transition an existing project, consider using [`@tannin/compat`](https://www.npmjs.com/package/@tannin/compat) as a drop-in replacement for Jed.\n\n```js\nimport Jed from '@tannin/compat';\n\nconst i18n = new Jed( {\n\tlocale_data: {\n\t\tthe_domain: {\n\t\t\t'': {\n\t\t\t\tdomain: 'the_domain',\n\t\t\t\tlang: 'en',\n\t\t\t\tplural_forms: 'nplurals=2; plural=(n != 1);',\n\t\t\t},\n\t\t\texample: [ 'singular translation', 'plural translation' ],\n\t\t},\n\t},\n\tdomain: 'the_domain',\n} );\n\ni18n.translate( 'example' ).fetch();\n// ⇒ 'singular translation'\n```\n\n## Benchmarks\n\nThe following benchmarks are performed in Node 10.16.0 on a MacBook Pro (2019), 2.4 GHz 8-Core Intel Core i9, 32 GB 2400 MHz DDR4 RAM.\n\n```\nSingular\n---\nTannin x 216,670,213 ops/sec ±0.73% (90 runs sampled)\nTannin (Optimized Default) x 219,477,869 ops/sec ±0.32% (96 runs sampled)\nJed x 58,730,499 ops/sec ±0.34% (96 runs sampled)\n\n\nSingular (Untranslated)\n---\nTannin x 75,835,743 ops/sec ±1.26% (96 runs sampled)\nTannin (Optimized Default) x 76,474,169 ops/sec ±0.61% (92 runs sampled)\nJed x 241,632 ops/sec ±0.73% (96 runs sampled)\n\n\nPlural\n---\nTannin x 7,108,006 ops/sec ±0.96% (95 runs sampled)\nTannin (Optimized Default) x 51,658,190 ops/sec ±1.25% (94 runs sampled)\nJed x 236,797 ops/sec ±0.98% (97 runs sampled)\n```\n\nTo run benchmarks on your own machine:\n\n```\ngit clone https://github.com/aduth/tannin.git\ncd tannin\nnpm install\nnode packages/tannin/benchmark\n```\n\n## License\n\nCopyright 2019-2020 Andrew Duthie\n\nReleased under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md"}