{"_id":"pofile-ts","_rev":"19-224f93ccce82a8cbe6e1315c71bcee53","name":"pofile-ts","dist-tags":{"latest":"4.0.3"},"versions":{"1.0.0":{"name":"pofile-ts","version":"1.0.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@1.0.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://github.com/sebastian-software/pofile-ts#readme","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"44f2c5d64528da3ba51c49273b60eb44726c98a7","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-1.0.0.tgz","fileCount":47,"integrity":"sha512-chVYlTFuVJ6T0lYCM26Ea7yVtXoj/yZs+8vxlblS+CjJLKNYHvH7mTmp/3/2vU2IHsBTz4KuRp0CLqm9cOLm3A==","signatures":[{"sig":"MEQCIDpSWJRtmNy1mgJokANS/p0bS1lzi3cyp0fpo4E5JIeDAiBQmKQLyWsC3LFweHsmn3Eb+2pVhQ+/PndCTpRtgmVu+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"11cfa01e4c4105c590a82be1b9e6a98c91fca3c5","scripts":{"dev":"tsc --watch","lint":"eslint src","test":"vitest run","build":"rm -rf dist && tsc","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_1.0.0_1765274578475_0.5925575042201467","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"pofile-ts","version":"2.0.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.0.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://github.com/sebastian-software/pofile-ts#readme","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"78b9b3c0ab572537a9d811f0f4128df88fb6e9e8","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.0.0.tgz","fileCount":47,"integrity":"sha512-Bd7pCK74RFgzgS8xrN9S4x7r7u/5o7kSZbk4onEwY1ekLKzvNSQzlTkq40xwExz0VOSDwiMVrEA0/Y4a2AoBvg==","signatures":[{"sig":"MEQCIFMgZs9+b8eLQryTnfSVCiKrF2XVx8r0d6FIW2msHy/pAiBFePtdE++26eniFegj4UdPJoPEPX0vlHQZxtcF9a4o/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ad450410d1d8d4998eb219e04fdbd666d5ba1d77","scripts":{"dev":"tsc --watch","lint":"eslint src","test":"vitest run","build":"rm -rf dist && tsc","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.0.0_1765274728052_0.8896519615938416","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"pofile-ts","version":"2.0.1","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.0.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"5702a93924c89ce363d5c553f07a820283da749b","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.0.1.tgz","fileCount":47,"integrity":"sha512-VdrRD3P/YMNB8MWmYXuqE5cg+gXsimg3XIDcmECbj9E6aBbzrV48167McZE47Kj8qRKy3gu+cy1pZOy1kbfF/A==","signatures":[{"sig":"MEYCIQDYtLi2U6ZR3rpbsbtaQ8Mtt7AVNTERWCzGJ9RJzW+0QAIhANqpmy1gFuVtb9AMaF/cl7/DUyBQ6Z72LgdBfX32G7fk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123591},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"043826e7b9aef355988d30ca1a1ec5d7325b1675","scripts":{"dev":"tsc --watch","lint":"eslint src","test":"vitest run","build":"rm -rf dist && tsc","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.0.1_1765275875858_0.2351263710773832","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"pofile-ts","version":"2.0.2","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.0.2","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"f68b95e2878f3fa19e0bb1d828943dfaa6ddd4d1","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.0.2.tgz","fileCount":9,"integrity":"sha512-6tku0OQcyqJc5F5U8F2w/FtLMa7IbmvU/KZtAxU2aF9jXggaJw5awZKosCcSlbPwABwWEUJi8Cu63kABab2lLA==","signatures":[{"sig":"MEUCIQD9VtXe4OgqpOrbglJPd8/L3vqQSPZPv0BCn5TPEiBy3wIgL5d+5udeVPpDnpdOmQ6uvyjI7mQSuScwrsha9kM8IX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97894},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d36b504285cdd0ff47ebcc2274e820d94534a237","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.0.2_1765278155145_0.5599496620276543","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"pofile-ts","version":"2.0.3","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.0.3","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"0319bafd1198075b702d88f84cf5cc0e2a0751a4","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.0.3.tgz","fileCount":9,"integrity":"sha512-JGDFDf96BhOcPTjIRoMjeDbCDwdI7H8nA62I7mbYhyOolIM6mi+Zzxw/lYAC49mgRBcvIJygqaNeY3b4qkrAlA==","signatures":[{"sig":"MEYCIQCaQCkN6HSghWF+E9wtnpubSiZqVW+ek5/mhZE9Kvw6RQIhAMbxMK/ex4TbrlWAc7QgddJtJH+MM/H+2mOjUJnzW8Oo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97993},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"34a76de59a7f016864d8468d4dbc5ea2d4bbae70","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.0.3_1765278706315_0.611751483915224","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"pofile-ts","version":"2.1.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.1.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"96e08a6af4540de1677341af720a53efa2c3dee4","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.1.0.tgz","fileCount":9,"integrity":"sha512-dGL6/Gy1XykdVXxMI5atUrlnMELkYOecvfHaR+3QoWR9TceRM3TaLR9Eq84swiLBq82AnvEmAB5/D/pV0+2OFA==","signatures":[{"sig":"MEYCIQCtD/v771xAjcRkn8DUA2GFEYzT0+S9Az0fFUN2uKtOjAIhAOi9vP4aERUmYiv9wTxEJkoI2t37XuSRvVmEddHMP2EA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98112},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"f480eebf08002cd9ef65c223f9e422f4e0ad163a","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.1.0_1765279838102_0.47041900421263305","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"pofile-ts","version":"2.2.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.2.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"e10bf0d0f5f4a4a5e39956c2451cff2e0617d7f3","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.2.0.tgz","fileCount":9,"integrity":"sha512-vUeGfSl1LHJ/D3aJ7ZA6G7TRXxJiatfiSe0MCLzj2QrLy9LYJu/6RS+VgOqRtTAHUB9xam0OMgHRb+WUAuSTVA==","signatures":[{"sig":"MEUCIBKQErj3sV8kQlonqZLEn97TxZJqO6fACClwGGwtG70FAiEA3WtfAvDsV6WFB06hRA+MDlgkx75/Y0y36NW4sdVN6o0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95732},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"5217fe70940c387b00c1ab90d2731f332e695980","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.2.0_1765283458128_0.5520012968076125","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"pofile-ts","version":"2.2.1","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@2.2.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"83f328e68204a848f816260c91b421238cdb2942","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-2.2.1.tgz","fileCount":9,"integrity":"sha512-fr/MrK0cibSpBk+DHegsbWnRdsk/9MeLzglBJT1cRnv+aQ75pH+QFrtWtZ1f/ze57YhRDnsRllXZFv47I5oWWg==","signatures":[{"sig":"MEUCIQCfTZiujrRkdcjES0Fr29t1RsHyAHztIAwc3JK/7LgHfgIgFQ/1U/Ez5gzkvk3+3lNKybvr9sx4RbAxiOkB4fu9q9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95732},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c5a170d071c42095e748586df84578bdcaa69457","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_2.2.1_1765284796048_0.3605865357463103","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"pofile-ts","version":"3.0.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.0.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"5d8b152fa01ca05a4171cbc7c845f601850bd137","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.0.0.tgz","fileCount":9,"integrity":"sha512-7tr6PpbLlMMbbj4r+UxgyMJ/wWBV8LgyY3/ej+EcCO7hzCXAaNUYb8V4HFAorU05Qj+XW9Z+Sueu9G4OCfW+6w==","signatures":[{"sig":"MEYCIQCOzDfS5nZ/VxHMzcUPemP4+RGbHOzt+xNJEJAUj5++FgIhAO080mJw2OMvM0fhxmFhn/PpGbFD191KjBvYmClo4AgQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90925},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"af268d770c06ede4713f52a29b5643fe03e036bd","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.0.0_1765294103292_0.47540115248886905","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"pofile-ts","version":"3.1.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.1.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"9f162823472bb692941b8d051b52b0c4df529c99","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.1.0.tgz","fileCount":9,"integrity":"sha512-V61teSMTCt0DNnOWk5wf0myFAsoMRKD/9yuCMf0h5YvdsYqAAvu2xgQwYjzmQ59pob2R/cvXcz14NHjFyEmZnw==","signatures":[{"sig":"MEQCIE2kViZdIUdT/8MVTEaKvQkA578DGdp9v9igq6z9/+RfAiBEvaIBU6YbRCINHvoj9OYOaBrWhn09CZhua1fTK8YquQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111400},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c18fee8950164a98d0e3b28a800c55aa486268ab","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.1.0_1765371913695_0.5943085781453761","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"pofile-ts","version":"3.2.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.2.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"a823843f7cd2cc1dd175d1efa47b334993d4c69a","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.2.0.tgz","fileCount":9,"integrity":"sha512-3cAUDtmQx1kPi11bSab9dfTQNdHCfvVVl85ScZ6dpIrcKpB6ZASJSE4cVquxYaWhqKOdOlt8/RBG3hgT6xoncA==","signatures":[{"sig":"MEQCIDy73OYwoC/R81hLr9eVhJ48LJXK38v3kvEfSqq3ctqpAiAsSBVYMboZjfpYK/dj7qfFH5UIPTrfdWDrTBEVNigCBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126449},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"9c252283dbf68dc87c68149da4314597c4bba6dd","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","bench":"pnpm --filter pofile-ts-benchmark bench","build":"tsup","format":"prettier --write .","prepare":"husky","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","release:auto":"release-it --ci","bench:generate":"pnpm --filter pofile-ts-benchmark generate-fixture","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"lint-staged":{"*":"prettier --write --ignore-unknown"},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501","devDependencies":{"tsup":"^8.5.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","prettier":"^3.7.4","@eslint/js":"^9.39.1","release-it":"^19.0.6","typescript":"^5.9.3","@types/node":"^22.19.1","lint-staged":"^16.2.7","typescript-eslint":"^8.49.0","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.2.0_1765458986046_0.20720344572772698","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"pofile-ts","version":"3.3.0","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.3.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"1a8b06a73919feebea5e1cf1c3d229c9f9ce8114","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.3.0.tgz","fileCount":9,"integrity":"sha512-ImM7eXptOmfbDJadd5thD3attcDEFaoQrWsKBvjo7S6YuxRZxU04vSuOV/x9P5Ag8NzBwVj5PCGUFk/pn6x3OA==","signatures":[{"sig":"MEQCIAPvmgK5GOG9tBue9sBZ+YnR+eih+PC/t0hC9SIc2FocAiBAA6SX9UZtNicZTZY80e4U66Vf2F0YsXmXz5rkH6DY+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290576},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"d8d76d82ca5f24939b64711516d9cf51dfec757c","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.3.0_1765575335565_0.18733377211761493","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"pofile-ts","version":"3.3.1","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.3.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"ca1891764036c329e130eebba45cac20da245349","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.3.1.tgz","fileCount":9,"integrity":"sha512-AlHFWHfulOGyUm7fRaINIezwZIZzrQ3fvRb57ceR2QnFEs8bLwupz21UrEC4ibpfpgyRdiSmKPse2M7KrDSoFA==","signatures":[{"sig":"MEUCIQD8DNzWfhsk6MSRrOD8GxFbHZWKy+wSXixY/Vmnfdlp+QIgPv7+6Pk+me6qOXK/sDccOJTwqxjfbfn3DvBSLrn+CJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290576},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"26944b564532c61e53bcc3d5d4bd2b396ed3b384","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.3.1_1765576554460_0.23369412729093653","host":"s3://npm-registry-packages-npm-production"}},"3.4.2":{"name":"pofile-ts","version":"3.4.2","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.4.2","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"828d8140d99faf5f2db40414407ebd3a8eb1edde","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.4.2.tgz","fileCount":9,"integrity":"sha512-8virUtYD6t2J20bNxSLBdm8rvjQ9Y5KinMPFAgJws2gfmaiIJ/QRLXvXx2Pyyg7KNGfxLJfuIV1nvtVTctUkYQ==","signatures":[{"sig":"MEUCIQCdKmKmBZ74fKra5TjnNTc7NOXDDQx3CvmAx9r1dPsujgIgO+PlpHUg7+qcpoJ9sW0gdhuFrtY67DIdlI/Y70THEgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":298218},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"1029bf7687fbcfc1d2255ddbdfc23632b369a0bb","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.4.2_1765654058683_0.29064582907731684","host":"s3://npm-registry-packages-npm-production"}},"3.5.1":{"name":"pofile-ts","version":"3.5.1","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.5.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"853397034de6e9f5937b036cf8c49293913fe64f","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.5.1.tgz","fileCount":9,"integrity":"sha512-ceNPTcIVX7gNn6dWz3QallwJhdJ+UdIyIOGXP+rDwnxp2iCS1hlu/xOCpNZUSsPrY/3pZjKS5GOCJ2X9KYlC8Q==","signatures":[{"sig":"MEQCIF5HT8D2s152goLl2jQIutQb9sczNllviclSipOn2ultAiAVXgN5TNZ7NyopgJH3MGZ1uYmoIspBisW+eLuQygSuCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349950},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"135d56bb16f5c77f7005f45c8affb3ee2982d184","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.5.1_1765786185579_0.2381834620118919","host":"s3://npm-registry-packages-npm-production"}},"3.6.1":{"name":"pofile-ts","version":"3.6.1","keywords":["i18n","l10n","gettext","mo","po"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.6.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"16e14b16abcb122a18a893a017127a29ce570a74","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.6.1.tgz","fileCount":9,"integrity":"sha512-nGfHOXWDhcffuSi48XlEc0laPFhHIgHciFeEF9Ff1bOPtvwd0E3LuzCyw8S2wEUYP7W0mBSrlvWu7GILSUnJDQ==","signatures":[{"sig":"MEYCIQDuggp+hpSiIveSPSxTHawNCCqSfe+5G9rQ61q0Q3AdeAIhAIR1dJTjc9fQOa860coDEJ7M6Eh6LUOf7VeCIIotpi91","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395350},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"0de2428d999f7983ee74bf6d3b111d07211bcfd9","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","prepack":"cp ../../README.md .","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","cldr-core":"^48.0.0","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.6.1_1765794481798_0.8998761659960599","host":"s3://npm-registry-packages-npm-production"}},"3.7.1":{"name":"pofile-ts","version":"3.7.1","keywords":["i18n","l10n","gettext","po","mo","icu","intl","messageformat","cldr","plural","translation","localization","lingui","formatjs"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@3.7.1","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"118505018962ee2709765bde9be5a6d67d0bda47","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-3.7.1.tgz","fileCount":9,"integrity":"sha512-kbdhbXOGswqRDaRXzbqjrba1qxGUlTvdTHjUKSSRySzx3EueDjFkTOah7bJoDjo6o+eAfvMlIFq+RLN0bDoQgQ==","signatures":[{"sig":"MEUCIQC2qDGxeVr9x9vU9CthC/G6cqvmFgjsVN0MYF71SYFONAIgeGAJrjF3QI/Jdwhy6GcUq45zWbBMyDJfbXt7mwtBaIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":635851},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a6daf1c0e5e30e132f742519cdf4ebeb970907c2","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","prepack":"cp ../../README.md .","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","cldr-core":"^48.0.0","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_3.7.1_1765837882588_0.8659303093079014","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"pofile-ts","version":"4.0.0","keywords":["i18n","l10n","gettext","po","mo","icu","intl","messageformat","cldr","plural","translation","localization","lingui","formatjs"],"author":{"url":"https://sebastian-software.de/","name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de"},"license":"MIT","_id":"pofile-ts@4.0.0","maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"homepage":"https://sebastian-software.github.io/pofile-ts/","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"dist":{"shasum":"d2ee1ecfe0bf552c3ab31fd40e44a319fcb0fb22","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-4.0.0.tgz","fileCount":9,"integrity":"sha512-S2p4wGpmeG0pwmoGDSKsETRs6yqnJQbYAb+pfO4sPe0vDoO6K0FYDu0BJfdcQ2MG0j9sON4u+SkrMF1yI0GYOw==","signatures":[{"sig":"MEYCIQDdtmUeqexrgPH/K+Naui/D58cy1PQdRfUcgKjqIHURuwIhAPEgAAR9BfmATam4y5C9H93zLgJSewMQJIuNTzN300ca","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732566},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"b10d0bcd1b29a4799a88a42078f817373f787a4b","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","prepack":"cp ../../README.md .","release":"release-it","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","release:auto":"release-it --ci","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"swernerx","email":"s.werner@sebastian-software.de"},"repository":{"url":"git+https://github.com/sebastian-software/pofile-ts.git","type":"git","directory":"packages/pofile-ts"},"_npmVersion":"11.6.2","description":"Parse and serialize Gettext PO files.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9.39.1","vitest":"^4.0.15","cldr-core":"^48.0.0","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^22.19.1","typescript-eslint":"^8.49.0","@vitest/coverage-v8":"^4.0.15","eslint-config-prettier":"^10.1.8","@release-it/conventional-changelog":"^10.0.2"},"_npmOperationalInternal":{"tmp":"tmp/pofile-ts_4.0.0_1765890102976_0.2270653849025528","host":"s3://npm-registry-packages-npm-production"}},"4.0.3":{"name":"pofile-ts","description":"Parse and serialize Gettext PO files.","version":"4.0.3","author":{"name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de","url":"https://sebastian-software.de/"},"contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"license":"MIT","homepage":"https://sebastian-software.github.io/pofile-ts/","repository":{"type":"git","url":"git+https://github.com/sebastian-software/pofile-ts.git","directory":"packages/pofile-ts"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"keywords":["i18n","l10n","gettext","po","mo","icu","intl","messageformat","cldr","plural","translation","localization","lingui","formatjs"],"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest","lint":"eslint src","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","prepack":"cp ../../README.md .","prepublishOnly":"npm run build"},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^25.5.0","@vitest/coverage-v8":"^4.1.0","cldr-core":"^48.1.0","eslint":"^10.0.3","eslint-config-prettier":"^10.1.8","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.57.0","vitest":"^4.1.0"},"engines":{"node":">=20"},"gitHead":"4ddcd3d78ea3f02be284b25cd238bce19e5c12a7","_id":"pofile-ts@4.0.3","bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-sz1pnjgEfPyZ+QvaeX3NtCmbYnEvG01LZRLoN/uXoLtPZtxCIH5IctL7yXXc0fFyk/fqV6K8g3hlNfr6IJwupA==","shasum":"272e3da5a3e84e758267ebeb1f41cade75a0185e","tarball":"https://registry.npmjs.org/pofile-ts/-/pofile-ts-4.0.3.tgz","fileCount":9,"unpackedSize":732508,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pofile-ts@4.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHB2hNlvLfF8it4kD8jtsXksW9M4gUIGxRjuY3BNy5cVAiEA13vXIbcnk4NvMsl0OiN2mEjbshUVZ5gZxb5dEUnU0XY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:667ad4c1-1399-4a0e-806a-8b7ef198b141"}},"directories":{},"maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pofile-ts_4.0.3_1773438828528_0.011907466493098262"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-09T10:02:58.474Z","modified":"2026-03-13T21:53:49.059Z","1.0.0":"2025-12-09T10:02:58.624Z","2.0.0":"2025-12-09T10:05:28.195Z","2.0.1":"2025-12-09T10:24:36.011Z","2.0.2":"2025-12-09T11:02:35.318Z","2.0.3":"2025-12-09T11:11:46.462Z","2.1.0":"2025-12-09T11:30:38.323Z","2.2.0":"2025-12-09T12:30:58.280Z","2.2.1":"2025-12-09T12:53:16.176Z","3.0.0":"2025-12-09T15:28:23.465Z","3.1.0":"2025-12-10T13:05:14.007Z","3.2.0":"2025-12-11T13:16:26.198Z","3.3.0":"2025-12-12T21:35:35.747Z","3.3.1":"2025-12-12T21:55:54.639Z","3.4.2":"2025-12-13T19:27:38.837Z","3.5.1":"2025-12-15T08:09:45.747Z","3.6.1":"2025-12-15T10:28:01.951Z","3.7.1":"2025-12-15T22:31:22.774Z","4.0.0":"2025-12-16T13:01:43.139Z","4.0.3":"2026-03-13T21:53:48.760Z"},"bugs":{"url":"https://github.com/sebastian-software/pofile-ts/issues"},"author":{"name":"Sebastian Software GmbH","email":"s.werner@sebastian-software.de","url":"https://sebastian-software.de/"},"license":"MIT","homepage":"https://sebastian-software.github.io/pofile-ts/","keywords":["i18n","l10n","gettext","po","mo","icu","intl","messageformat","cldr","plural","translation","localization","lingui","formatjs"],"repository":{"type":"git","url":"git+https://github.com/sebastian-software/pofile-ts.git","directory":"packages/pofile-ts"},"description":"Parse and serialize Gettext PO files.","contributors":[{"name":"Ruben Vermeersch"},{"name":"Eyal Lewinsohn"},{"name":"Gabe Gorelick"},{"name":"Julian Bäume"},{"name":"Mike Holly"},{"name":"Sander Houttekier"}],"maintainers":[{"name":"swernerx","email":"s.werner@sebastian-software.de"}],"readme":"<p align=\"center\">\n  <a href=\"https://sebastian-software.github.io/pofile-ts/\">\n    <img src=\"logo.svg\" alt=\"pofile-ts\" width=\"120\" height=\"120\">\n  </a>\n</p>\n\n<h1 align=\"center\">pofile-ts</h1>\n\n<p align=\"center\">\n  <strong>Parse, compile & transform PO files — 20× faster</strong>\n</p>\n\n[![CI](https://github.com/sebastian-software/pofile-ts/actions/workflows/ci.yml/badge.svg)](https://github.com/sebastian-software/pofile-ts/actions/workflows/ci.yml)\n[![Coverage](https://codecov.io/gh/sebastian-software/pofile-ts/graph/badge.svg)](https://codecov.io/gh/sebastian-software/pofile-ts)\n[![npm version](https://img.shields.io/npm/v/pofile-ts.svg)](https://www.npmjs.com/package/pofile-ts)\n[![npm downloads](https://img.shields.io/npm/dm/pofile-ts.svg)](https://www.npmjs.com/package/pofile-ts)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/pofile-ts)](https://bundlephobia.com/package/pofile-ts)\n[![Tree Shakeable](https://img.shields.io/badge/tree--shakeable-yes-brightgreen)](https://bundlephobia.com/package/pofile-ts)\n[![Node 20+](https://img.shields.io/badge/node-20%2B-brightgreen)](https://nodejs.org/)\n[![Bun](https://img.shields.io/badge/bun-compatible-f472b6)](https://bun.sh/)\n\n**pofile-ts** is a modern i18n toolkit for [GNU gettext](https://www.gnu.org/software/gettext/) PO files. Not just a parser — includes an ICU compiler with 3-4× faster runtime than Lingui/FormatJS, native CLDR plural rules, and format conversion helpers. Zero dependencies. TypeScript-first. Built for Node 20+, Bun, and modern browsers.\n\n## Why pofile-ts?\n\n- **20× faster parsing** — Hand-optimized with first-char dispatch and fast-paths. No regex soup.\n- **ICU Compiler** — Compile ICU messages to JavaScript functions. 3-4× faster runtime than Lingui and FormatJS.\n- **Native CLDR plurals** — Uses `Intl.PluralRules` for all 100+ locales. Zero CLDR data in bundle.\n- **CSP-safe** — No `eval()`, no `new Function()`. Works in strict security environments.\n- **Modern-first** — Built for Node 20+, ESM-native, tree-shakeable. No legacy polyfills.\n- **Zero dependencies** — ~11KB full, ~5KB tree-shaken. No transitive deps, no supply chain bloat.\n\n## Features\n\n### Core\n\n- 📖 **Parse** PO files from strings — 20× faster than pofile, 7× faster than gettext-parser\n- ✏️ **Serialize** PO files back to strings — 2.5× faster than pofile, ~4.5× faster than gettext-parser\n- 🎯 **Full PO support** — headers, comments, flags, plurals, message context\n\n### i18n Toolkit\n\n- 🌍 **CLDR plural rules** — Uses native `Intl.PluralRules`, zero bundle size for CLDR data\n- 🔄 **ICU MessageFormat** — Convert between Gettext plurals and ICU syntax\n- 🧩 **ICU Parser** — Parse and analyze ICU messages (<3KB gzipped, 5× faster than FormatJS)\n- ⚡ **ICU Compiler** — Compile ICU messages to fast JavaScript functions (3-4× faster at runtime)\n- 🔢 **Plural helpers** — Get categories, counts, and selector functions for any locale\n- 🆕 **Extended Intl Formatters** — Lists, durations, relative times, and display names built-in\n\n### Format Styles\n\n- 🎨 **50+ built-in styles** — `compact`, `percent`, `bytes`, `iso`, `relative`, and more\n- 🔧 **Custom styles** — Register your own `Intl.NumberFormat`, `DateTimeFormat`, `ListFormat` options\n- 💱 **Dynamic currency** — Currency code read from message values at runtime\n- 🏭 **Factory pattern** — `createIcuCompiler()` for pre-configured, reusable compilers\n\n### Developer Experience\n\n- 📦 **Zero dependencies** — No bloat, no supply chain risk\n- 🌳 **Tree-shakeable** — ~5KB for PO parsing only, ~11KB full\n- 💎 **TypeScript-first** — Written in TypeScript, full type definitions\n- 🛡️ **CSP-safe** — No `eval()`, no `new Function()`\n- ⚡ **Modern-first** — Node 20+, ESM-native, no legacy polyfills\n\n## Use Cases\n\n- **Vite/Webpack plugins** — Parse and compile PO files at build time for zero runtime cost\n- **TMS pipelines** — Crowdin, Lokalise, Phrase — sync and transform translations\n- **CI/CD validation** — Validate plural forms, variables, and syntax in PRs\n- **Custom tooling** — Low-level APIs for message extraction and code generation\n\n## Installation\n\n```bash\nnpm install pofile-ts\n```\n\n## Quick Start\n\n```typescript\nimport { parsePo, stringifyPo } from \"pofile-ts\"\n\nconst po = parsePo(`\nmsgid \"Hello\"\nmsgstr \"Hallo\"\n`)\n\nconsole.log(po.items[0].msgid) // \"Hello\"\nconsole.log(po.items[0].msgstr) // [\"Hallo\"]\n\nconsole.log(stringifyPo(po))\n```\n\n### ICU MessageFormat\n\nA fast, lightweight ICU MessageFormat parser — 5× faster and 4× smaller than FormatJS:\n\n```typescript\nimport { parseIcu, extractVariables, validateIcu, hasPlural } from \"pofile-ts\"\n\n// Parse ICU messages into an AST\nconst result = parseIcu(\"{count, plural, one {# item} other {# items}}\")\nif (result.success) {\n  console.log(result.ast) // AST with plural node\n}\n\n// Extract variables from messages\nextractVariables(\"{name} has {count} messages\")\n// → [\"name\", \"count\"]\n\n// Validate syntax before use\nconst validation = validateIcu(\"{gender, select, male {He} other {They}}\")\nconsole.log(validation.valid) // true\n\n// Check message structure\nhasPlural(\"{n, plural, one {#} other {#}}\") // true\nhasPlural(\"Hello {name}\") // false\n```\n\nSupports ICU MessageFormat v1: arguments, plurals, selects, selectordinals, number/date/time formatting, tags, and escaping. Trade-offs for size: no AST location tracking, styles stored as opaque strings.\n\n### ICU Compiler\n\nCompile ICU messages to fast JavaScript functions — about 3× faster than intl-messageformat and 4× faster than Lingui at runtime:\n\n```typescript\nimport { compileIcu, compileCatalog, generateCompiledCode } from \"pofile-ts\"\n\n// Compile a single message\nconst greet = compileIcu(\"Hello {name}!\", { locale: \"en\" })\ngreet({ name: \"World\" }) // → \"Hello World!\"\n\n// Full ICU support: plurals, select, number/date/time, tags\nconst msg = compileIcu(\"{count, plural, one {# item} other {# items}} in <link>cart</link>\", {\n  locale: \"en\"\n})\nmsg({ count: 5, link: (text) => `<a>${text}</a>` })\n// → \"5 items in <a>cart</a>\"\n\n// Dynamic currency from values\nconst price = compileIcu(\"{amount, number, currency}\", { locale: \"de\" })\nprice({ amount: 99.99, currency: \"EUR\" }) // → \"99,99 €\"\nprice({ amount: 99.99, currency: \"USD\" }) // → \"99,99 $\"\n\n// Custom format styles with full Intl options\nconst size = compileIcu(\"{bytes, number, filesize}\", {\n  locale: \"en\",\n  numberStyles: {\n    filesize: { style: \"unit\", unit: \"kilobyte\", unitDisplay: \"short\" }\n  }\n})\nsize({ bytes: 512 }) // → \"512 kB\"\n\n// Compile an entire catalog at runtime\nconst compiled = compileCatalog(catalog, { locale: \"de\" })\ncompiled.format(\"messageId\", { name: \"Sebastian\" })\n\n// Or generate static code for build-time compilation\nconst code = generateCompiledCode(catalog, { locale: \"de\" })\n// → TypeScript file with pre-compiled functions\n```\n\nSupports named tags (`<link>`), numeric tags (`<0>`, `<1>` — Lingui-style), and React components (returns array when tag functions return objects).\n\n### Extended Intl Formatters\n\nGo beyond standard ICU with built-in support for modern `Intl` APIs:\n\n```typescript\nimport { compileIcu } from \"pofile-ts\"\n\n// Lists — \"Alice, Bob, and Charlie\" or \"Alice, Bob, or Charlie\"\nconst list = compileIcu(\"{authors, list}\", { locale: \"en\" })\nlist({ authors: [\"Alice\", \"Bob\", \"Charlie\"] }) // → \"Alice, Bob, and Charlie\"\n\n// Relative time — \"in 3 days\" or \"2 hours ago\"\nconst ago = compileIcu(\"{days, ago, day}\", { locale: \"de\" })\nago({ days: -2 }) // → \"vor 2 Tagen\"\n\n// Display names — Localized country, language, currency names\nconst name = compileIcu(\"{lang, name, language}\", { locale: \"de\" })\nname({ lang: \"en\" }) // → \"Englisch\"\n\n// Durations — \"2 hours, 30 minutes\" (Baseline 2025)\nconst dur = compileIcu(\"{time, duration, short}\", { locale: \"en\" })\ndur({ time: { hours: 2, minutes: 30 } }) // → \"2 hr, 30 min\"\n```\n\nAll formatters use native browser APIs — zero additional bundle size. See [browser support](https://sebastian-software.github.io/pofile-ts/docs/helpers#browser-support).\n\n## Documentation\n\nFor full documentation including API reference, i18n helpers, and migration guide:\n\n**[📖 Documentation](https://sebastian-software.github.io/pofile-ts/)**\n\n## Performance\n\nSpeed matters for build tools and CI pipelines. pofile-ts is hand-optimized for performance — no regex soup, no unnecessary allocations, just fast parsing.\n\n_Benchmarked on Apple M1 Ultra, Node.js 22. Relative performance is consistent across different hardware._\n\n### PO File Parsing\n\n10,000 entries (~10% plurals):\n\n| Library        |       Parsing | Serialization |\n| -------------- | ------------: | ------------: |\n| **pofile-ts**  | **209 ops/s** | **256 ops/s** |\n| gettext-parser |      28 ops/s |      54 ops/s |\n| pofile         |       8 ops/s |     100 ops/s |\n\n→ **20× faster parsing** vs pofile, **7× faster** vs gettext-parser\n\n### ICU MessageFormat Parsing\n\nRealistic messages with plurals, selects, nested structures, and tags:\n\n| Library                            |         Speed | Bundle (gzip) |\n| ---------------------------------- | ------------: | ------------: |\n| **pofile-ts**                      | **5× faster** |      **<3KB** |\n| @formatjs/icu-messageformat-parser |      baseline |          ~9KB |\n\n→ **5× faster**, **4× smaller bundle**\n\n### ICU Compilation & Runtime\n\nCompiling ICU messages to functions and executing them:\n\n| Metric            | pofile-ts | vs intl-messageformat | vs @lingui (compiled) |\n| ----------------- | --------: | --------------------: | --------------------: |\n| **Compilation**   | 409k op/s |         **7× faster** |                     — |\n| **Runtime**       | 792k op/s |         **3× faster** |         **4× faster** |\n| **Catalog (200)** |  ~1.35M/s |         **7× faster** |                     — |\n\n→ **3× faster** at runtime vs intl-messageformat, **4× faster** vs Lingui\n\n## Bundle Size\n\nThe full library is **~11KB gzipped**. Tree-shaking lets you import only what you need:\n\n| Export         | Gzipped |\n| -------------- | ------: |\n| PO parsing     |    ~5KB |\n| Plural helpers |    ~1KB |\n| ICU conversion |    ~2KB |\n| ICU parser     |    ~3KB |\n\nPlural helpers use native `Intl.PluralRules` — no CLDR data in the bundle.\n\nAll exports are **named exports** — modern bundlers (Vite, esbuild, Rollup, webpack) automatically tree-shake unused code.\n\n## Monorepo Structure\n\n```\npackages/pofile-ts/  # The library (published to npm)\napps/docs/           # Documentation site (Fumadocs)\nbenchmark/           # Performance benchmarks\n```\n\n## Development\n\n```bash\npnpm install\npnpm test           # Run tests\npnpm build          # Build library\npnpm docs:dev       # Start docs dev server\n```\n\n## Credits\n\nOriginally forked from [pofile](https://github.com/rubenv/pofile) by Ruben Vermeersch. Completely rewritten with modern TypeScript, expanded with CLDR plural support, ICU conversion, and comprehensive i18n helpers.\n\nMaintained by [Sebastian Software](https://sebastian-software.de/).\n\n## License\n\n[MIT](LICENSE) — Use it freely in personal and commercial projects.\n","readmeFilename":"README.md"}