{"_id":"@deijose/nix-i18n","_rev":"7-3f3fa3705cbc3917ae44f7304c47f110","name":"@deijose/nix-i18n","dist-tags":{"latest":"1.3.2"},"versions":{"1.1.0":{"name":"@deijose/nix-i18n","version":"1.1.0","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.1.0","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js"},"dist":{"shasum":"848c6b3acb9a6fe4632852c341d3a9ef162a8c7c","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.1.0.tgz","fileCount":99,"integrity":"sha512-yDLkJ4u7HQ67mHNcvyWs0kAuO7+CXG2J0nmwD76WIKcrddmn8ityPrlbhXhd21TLDnTOiSEaRtHiSLwoY5JfkQ==","signatures":[{"sig":"MEQCICb+pvOZEsmbEeccdz403UTRd+QUQgGd0LMcFVUO/JiRAiA9f5Blv8cM3stCgJGMzCQV6120uKxBcjfjifo2sK8SZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139586},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"77d0f3c6a675f6fe394c2747a5e042501b2d6d0e","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"11.13.0","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"^2.5.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.1.0_1782252367463_0.6017253195231256","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@deijose/nix-i18n","version":"1.2.0","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.2.0","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"dist":{"shasum":"73ee47e949a4fd15c7709c9104161de400627726","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.2.0.tgz","fileCount":113,"integrity":"sha512-PwzaI2xMiNllVgjsk0H7AOeX7CCA00+l3sQg+kFjHciSm1PCdo6TqKAZBHRNyM54mhgfBr4kCH3CVT+d+IfLHw==","signatures":[{"sig":"MEUCIHsQyxv9ubN7gwukC65G+qH2wRU84obk9hoQAec3dbw0AiEAhT2+PctOpcIuHotBZ/zN3MUjBhEZqlIrU5GkuzPn7Ec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163340},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"a42a6434311b4899706e8e2342fb1774299c789a","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","generate":"bun run src/cli/generate.ts","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"11.13.0","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"^2.5.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.2.0_1782253119314_0.5001231021256864","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@deijose/nix-i18n","version":"1.2.1","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.2.1","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"dist":{"shasum":"bebb66ca189632654d6e3472c1d97522325fccc2","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.2.1.tgz","fileCount":118,"integrity":"sha512-VaUdNlJWfAV+7V5F+eeMPJAHU+vuNBwoF7jLTm7ByaZkWP1mxiG8dLDQEOOT14EVPIHoPY/fhacPz/oHgTS1Ew==","signatures":[{"sig":"MEUCIDU7FK2/X0mWuYf1C7HJLeDIfb9cBV+Xgeo1r2iz5vt8AiEAil46VaHsMtqoQwjeKduNoydi9+tiZSb0kjTo7KRR/tQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173983},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"b8cfc4598b1a5acd7bad0bb026ecdf981306f694","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","generate":"bun run src/cli/generate.ts","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"11.13.0","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"^2.5.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.2.1_1782917445940_0.7706335206542678","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@deijose/nix-i18n","version":"1.2.2","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.2.2","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"dist":{"shasum":"02842acfb749912188cbcdce2eb6403e3d8f8174","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.2.2.tgz","fileCount":118,"integrity":"sha512-6HjL0qoVedYgmmd4AsYrRHiTKAL6ebqorFNsCdHzAZjqcc/Qdp99/yhaPUdMiksRtKhEVjfy/4Kab+EFH9Ua/g==","signatures":[{"sig":"MEUCIG8CnMkO6jFTDlduxsU11fzQVtCix+f6Ef8ThLIYxILrAiEA4XlHJZH6+zYaG1xUSyMCRVJRK8fOojbqx1ued3e3BkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173993},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"b8cfc4598b1a5acd7bad0bb026ecdf981306f694","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","generate":"bun run src/cli/generate.ts","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"10.9.9","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"3.0.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3 || ^3.0.0"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.2.2_1787279981959_0.2505577629095268","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@deijose/nix-i18n","version":"1.3.0","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.3.0","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"dist":{"shasum":"9b993fc7cd8acd6226dd7ef4e1845858b4e0e4f9","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.3.0.tgz","fileCount":118,"integrity":"sha512-8F76ndjzGqbbHTs6KS04O1NyY/trC1IV1bN9eodMY0SORMVoycCCB+vjAgy5xf4vx1V/m47Wo/hS0mYYWdZH7g==","signatures":[{"sig":"MEQCIFz+5HzRfciuBPupyDQBRcjNHre5VY282sANxrf6E38/AiBKbM19JdHH8j/bcUMHeLT8V5MnoBNGNNT0GaxfsCSy2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249949},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"64a9caf816be1e39154785430435ba0cf13f4b62","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","generate":"bun run src/cli/generate.ts","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"10.9.9","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@babel/parser":"^8.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"3.0.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3 || ^3.0.0"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.3.0_1787357956733_0.4148584513098432","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@deijose/nix-i18n","version":"1.3.1","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"author":{"name":"Deiver Vasquez"},"license":"MIT","_id":"@deijose/nix-i18n@1.3.1","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"homepage":"https://github.com/DeijoseDevelop/nix-i18n","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"dist":{"shasum":"19b3aa8c7c61d9709d952058946d3253cca36e29","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.3.1.tgz","fileCount":118,"integrity":"sha512-AEnFNohcQTFMtN6wqHI+YDw1/QIIVFh+uxPjiCYOWmjptmCvhw/iGZu6VzTgHFJ8pH0IxDWKKW1+h4b37FgJCA==","signatures":[{"sig":"MEYCIQCT7brx0q6dsupVN0IjoVP6w6auEOPtVlEz1tsOzv09rwIhAMCdUwOLUCxOsT2HrLrtUSlucI3s/gfqQQQGf1gPSWUH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245718},"main":"./dist/lib/nix-i18n.cjs","type":"module","types":"./dist/lib/index.d.ts","module":"./dist/lib/nix-i18n.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs"},"./format/*":{"types":"./dist/lib/format/*.d.ts","import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs"},"./plugins/*":{"types":"./dist/lib/plugins/*.d.ts","import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs"},"./backends/*":{"types":"./dist/lib/backends/*.d.ts","import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs"}},"gitHead":"ec585c9cc03f6753a45741f843656627c927d381","scripts":{"dev":"vite","test":"vitest run","build":"bun run typecheck && vite build","extract":"bun run src/cli/extract.ts","prepack":"bun run clean:lib && bun run build:lib","preview":"vite preview","generate":"bun run src/cli/generate.ts","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","clean:lib":"rm -rf dist/lib","typecheck":"tsc --noEmit"},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"repository":{"url":"git+https://github.com/DeijoseDevelop/nix-i18n.git","type":"git"},"_npmVersion":"10.9.9","description":"Internationalization library for Nix.js built on signals and stores","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@babel/parser":"^8.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","jsdom":"^29.1.1","terser":"^5.46.0","vitest":"^4.0.18","happy-dom":"^20.8.3","typescript":"~5.9.3","@deijose/nix-js":"3.0.3"},"peerDependencies":{"@deijose/nix-js":"^2.5.3 || ^3.0.0"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nix-i18n_1.3.1_1787445862764_0.4691690390809422","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@deijose/nix-i18n","version":"1.3.2","description":"Internationalization library for Nix.js built on signals and stores","license":"MIT","author":{"name":"Deiver Vasquez"},"type":"module","homepage":"https://github.com/DeijoseDevelop/nix-i18n","repository":{"type":"git","url":"git+https://github.com/DeijoseDevelop/nix-i18n.git"},"main":"./dist/lib/nix-i18n.cjs","module":"./dist/lib/nix-i18n.js","types":"./dist/lib/index.d.ts","exports":{".":{"import":"./dist/lib/nix-i18n.js","require":"./dist/lib/nix-i18n.cjs","types":"./dist/lib/index.d.ts"},"./format/*":{"import":"./dist/lib/format/*.js","require":"./dist/lib/format/*.cjs","types":"./dist/lib/format/*.d.ts"},"./backends/*":{"import":"./dist/lib/backends/*.js","require":"./dist/lib/backends/*.cjs","types":"./dist/lib/backends/*.d.ts"},"./plugins/*":{"import":"./dist/lib/plugins/*.js","require":"./dist/lib/plugins/*.cjs","types":"./dist/lib/plugins/*.d.ts"}},"keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"sideEffects":false,"engines":{"node":">=18.0.0"},"bin":{"nix-i18n-extract":"dist/lib/cli/extract.js","nix-i18n-generate":"dist/lib/cli/generate.js"},"scripts":{"dev":"vite","build":"bun run typecheck && vite build","preview":"vite preview","clean:lib":"rm -rf dist/lib","build:lib":"vite build --config vite.lib.config.ts && tsc --project tsconfig.lib.json && terser dist/lib/nix-i18n.js -c -m -o dist/lib/nix-i18n.js && terser dist/lib/nix-i18n.cjs -c -m -o dist/lib/nix-i18n.cjs","prepack":"bun run clean:lib && bun run build:lib","typecheck":"tsc --noEmit","test":"vitest run","extract":"bun run src/cli/extract.ts","generate":"bun run src/cli/generate.ts"},"peerDependencies":{"@deijose/nix-js":"^2.5.3 || ^3.0.0"},"peerDependenciesMeta":{"@deijose/nix-js":{"optional":false}},"devDependencies":{"@deijose/nix-js":"3.0.3","happy-dom":"^20.8.3","jsdom":"^29.1.1","terser":"^5.46.0","typescript":"~5.9.3","vite":"^8.0.0","vitest":"^4.0.18"},"dependencies":{"@babel/parser":"^8.0.4"},"_id":"@deijose/nix-i18n@1.3.2","gitHead":"e044b7b869098b71b25ce36f21357cf4eea1eb70","bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"_nodeVersion":"22.14.0","_npmVersion":"10.9.9","dist":{"integrity":"sha512-LQJ5VCRh30pYpAiOezvbplmNFHiBWfqEBmdsuTYhPzjvweyfEqZjg+RWXYyI8O3KiHYrLscAb9DnT3k3uHjZTQ==","shasum":"e14dc49d40ce77feaadb3e46c5393adab0725cce","tarball":"https://registry.npmjs.org/@deijose/nix-i18n/-/nix-i18n-1.3.2.tgz","fileCount":118,"unpackedSize":245718,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGA4EwnJtY53wWkDC2gM0NnLIU0jGxEQX9wjGDXNNHlzAiB5X1/5rHwuQMbYUvlZsB+N84qKGjfup6d7bxP1YtNOUQ=="}]},"_npmUser":{"name":"deijose","email":"estudiandovazmore@gmail.com"},"directories":{},"maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nix-i18n_1.3.2_1787445967646_0.8999079756751236"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T22:06:07.256Z","modified":"2026-08-23T00:46:07.933Z","1.1.0":"2026-06-23T22:06:07.602Z","1.2.0":"2026-06-23T22:18:39.455Z","1.2.1":"2026-07-01T14:50:46.096Z","1.2.2":"2026-08-21T02:39:42.111Z","1.3.0":"2026-08-22T00:19:16.944Z","1.3.1":"2026-08-23T00:44:22.920Z","1.3.2":"2026-08-23T00:46:07.778Z"},"bugs":{"url":"https://github.com/DeijoseDevelop/nix-i18n/issues"},"author":{"name":"Deiver Vasquez"},"license":"MIT","homepage":"https://github.com/DeijoseDevelop/nix-i18n","keywords":["nix-js","i18n","internationalization","localization","signals","reactive","typescript"],"repository":{"type":"git","url":"git+https://github.com/DeijoseDevelop/nix-i18n.git"},"description":"Internationalization library for Nix.js built on signals and stores","maintainers":[{"name":"deijose","email":"estudiandovazmore@gmail.com"}],"readme":"# @deijose/nix-i18n\n\nInternationalization library for [Nix.js](https://nix-js.dev) built on signals and stores.\n\n## Features\n\n- Reactive translations powered by Nix.js signals.\n- Zero runtime dependencies (uses native `Intl` API).\n- Small bundle size (~4-5 KB typical).\n- Type-safe keys and interpolation parameters.\n- Multiple backends: inline objects, JSON files, API.\n- Lazy-loaded namespaces with error-safe caching (retries on failure).\n- Pluralization, contexts, and namespaces.\n- Full ICU MessageFormat support: `plural`, `select`, `selectordinal`, nested messages.\n- Date, number, currency, relative time, and list formatting.\n- Composable plugin pipeline (no more mutation conflicts).\n- Optional plugins for persistence, locale detection (URL, path, navigator, storage), router integration, form validation, head tags (with orphan cleanup), cross-tab sync, ICU MessageFormat, and dev overlay for missing keys.\n- Optional `provide/inject` support for sub-trees and tenants.\n- CLI with AST-based key extraction (Babel parser) for reliable TypeScript/JSX support.\n\n## Installation\n\n```bash\nnpm install @deijose/nix-i18n\n```\n\nPeer dependency:\n\n```bash\nnpm install @deijose/nix-js\n```\n\n## Quick start\n\n```ts\nimport { createI18n } from \"@deijose/nix-i18n\";\nimport { html } from \"@deijose/nix-js\";\n\nconst i18n = createI18n({\n  locale: \"es\",\n  fallbackLocale: \"en\",\n  messages: {\n    es: { hello: \"Hola {name}\" },\n    en: { hello: \"Hello {name}\" },\n  },\n});\n\nfunction App() {\n  return html`\n    <h1>${i18n.t(\"hello\", { name: \"Deiver\" })}</h1>\n    <button @click=${() => i18n.setLocale(\"en\")}>English</button>\n  `;\n}\n```\n\n## Pluralization\n\nUse the pipe syntax for plural forms:\n\n```json\n{\n  \"items\": \"No items | One item | {count} items\"\n}\n```\n\n```ts\ni18n.t(\"items\", { count: 5 }); // \"5 items\"\n```\n\n## Nested fallback\n\n```ts\nconst i18n = createI18n({\n  locale: \"es\",\n  nestedFallback: true,\n  messages: {\n    es: {\n      auth: { login: \"Acceder\" },\n    },\n  },\n});\n\ni18n.t(\"auth.login.title\"); // \"Acceder\" fallback desde \"auth.login\"\n```\n\n## Namespaces\n\n```ts\nconst auth = i18n.useNamespace(\"auth\");\nauth.t(\"login.title\"); // resolves \"auth:login.title\"\n```\n\nOr use the key directly:\n\n```ts\ni18n.t(\"auth:login.title\");\n```\n\n## Backends\n\n### JSON backend\n\n```ts\nimport { jsonBackend } from \"@deijose/nix-i18n/backends/json\";\n\nconst i18n = createI18n({\n  locale: \"es\",\n  backend: jsonBackend({\n    baseUrl: \"/locales\",\n    namespaces: [\"common\", \"auth\"],\n    cacheTtl: 60000, // optional: re-fetch after 60s (default: cache forever)\n  }),\n});\n```\n\nLoads `/locales/es/common.json`, `/locales/en/common.json`, etc.\n\n**Error handling (v1.3):** Failed requests (network errors, HTTP 4xx/5xx) are **not cached**. Subsequent calls to `load()` will retry automatically. Successful results are cached for single-flight deduplication.\n\n### API backend\n\n```ts\nimport { apiBackend } from \"@deijose/nix-i18n/backends/api\";\n\nconst i18n = createI18n({\n  locale: \"es\",\n  backend: apiBackend({\n    url: \"/api/translations\",\n    headers: { Authorization: \"Bearer ...\" },\n    cacheTtl: 30000, // optional: re-fetch after 30s\n  }),\n});\n```\n\n**Error handling (v1.3):** Same retry behavior as `jsonBackend` — errors are not cached, allowing automatic retries.\n\n## Formatters\n\nAll formatters use the `Intl` API and react to locale changes.\n\n```ts\ni18n.d(new Date(), { dateStyle: \"long\" });\ni18n.nFormat(1234.5, { maximumFractionDigits: 2 });\ni18n.c(99.9, \"USD\");\ni18n.rt(-1, \"day\");\ni18n.list([\"a\", \"b\", \"c\"], { type: \"conjunction\" });\n```\n\n## Plugins\n\n### Persist locale\n\n```ts\nimport { persistLocalePlugin } from \"@deijose/nix-i18n/plugins/persist\";\n\npersistLocalePlugin(i18n, { key: \"app-locale\" });\n```\n\n### Detect locale\n\n```ts\nimport { detectLocalePlugin } from \"@deijose/nix-i18n/plugins/detect\";\n\n// Returns { reDetect } — call reDetect() to re-run detection after URL/storage changes.\nconst { reDetect } = detectLocalePlugin(i18n, {\n  order: [\"localStorage\", \"navigator\", \"fallback\"],\n});\n\n// Or use via createI18n options — exposes i18n.reDetect():\nconst i18n = createI18n({\n  locale: \"en\",\n  detect: { order: [\"url\", \"navigator\", \"fallback\"] },\n});\n\n// Later, after URL changes:\ni18n.reDetect?.();\n```\n\n### Router integration\n\n```ts\nimport { routerLocalePlugin } from \"@deijose/nix-i18n/plugins/router\";\n\nrouterLocalePlugin(i18n, router, { mode: \"query\" });\n```\n\n### Head tags\n\n```ts\nimport { headPlugin } from \"@deijose/nix-i18n/plugins/head\";\n\nconst cleanup = headPlugin(i18n, {\n  lang: true,\n  dir: \"auto\",\n  meta: [{ name: \"description\", content: (locale) => descriptions[locale] }],\n});\n\n// Call cleanup() to remove all injected meta tags\n```\n\n**v1.3:** Meta tags injected by the plugin are marked with `data-nix-i18n-head` and automatically removed on locale change (no more orphan tags from previous locales) and on cleanup.\n\n### Cross-tab sync\n\n```ts\nimport { syncLocalePlugin } from \"@deijose/nix-i18n/plugins/sync\";\n\nsyncLocalePlugin(i18n);\n```\n\n### Form validation\n\n```ts\nimport { formValidationPlugin } from \"@deijose/nix-i18n/plugins/forms\";\n\nconst validators = formValidationPlugin(i18n, {\n  required: () => (value) => value ? undefined : \"required\",\n  minLength: (n) => (value) => String(value).length < n ? \"minLength\" : undefined,\n}, { keyPrefix: \"errors\" });\n```\n\n### ICU MessageFormat\n\n```ts\nimport { icuPluralizePlugin } from \"@deijose/nix-i18n/plugins/icuPluralize\";\n\nicuPluralizePlugin(i18n);\n\n// Plural\nconst messages = {\n  en: { items: \"{count, plural, one {# item} other {# items}}\" },\n};\ni18n.t(\"items\", { count: 5 }); // \"5 items\"\n\n// Select (gender)\n{\n  greeting: \"{gender, select, male {Sir} female {Madam} other {Friend}}\",\n}\ni18n.t(\"greeting\", { gender: \"male\" }); // \"Sir\"\n\n// Selectordinal\n{\n  place: \"{count, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}\",\n}\ni18n.t(\"place\", { count: 1 }); // \"1st\"\n\n// Nested\n{\n  items: \"{gender, select, male {{count, plural, one {He has # item} other {He has # items}}} other {{count, plural, one {They have # item} other {They have # items}}}}\",\n}\n\n// Exact match (=N)\n{\n  items: \"{count, plural, =0 {no items} one {# item} other {# items}}\",\n}\ni18n.t(\"items\", { count: 0 }); // \"no items\"\n```\n\n**v1.3:** Full ICU MessageFormat support via a lightweight built-in parser. Supports `plural`, `select`, `selectordinal`, nested messages, `=N` exact match, and `{{` escaped braces. No external ICU library required.\n\n### Dev overlay\n\n```ts\nimport { devOverlayPlugin } from \"@deijose/nix-i18n/plugins/devOverlay\";\n\ndevOverlayPlugin(i18n, { log: true, overlay: true });\n```\n\n### Translate middleware pipeline (v1.3)\n\nPlugins like `devOverlayPlugin` and `icuPluralizePlugin` now use a composable middleware pipeline instead of mutating `i18n.t` directly. This means multiple plugins compose correctly and cleanup works in any order.\n\nYou can also add your own middleware:\n\n```ts\n// Custom middleware — e.g. logging all translations\nconst cleanup = i18n.useTranslateMiddleware?.((next) => (key, params, opts) => {\n  console.log(`[i18n] translating: ${key}`);\n  return next(key, params, opts);\n});\n\n// Remove when done\ncleanup();\n```\n\n## CLI\n\nExtract translation keys from source files using AST parsing (Babel parser):\n\n```bash\nnpx nix-i18n-extract src --output extracted-keys.json\n```\n\n**v1.3:** The extractor now uses `@babel/parser` instead of regex, providing reliable extraction in TypeScript/JSX/TSX code. It correctly handles:\n- String literals: `t(\"key\")`, `t('key')`\n- Template literals: `` t(`key`) ``\n- Member expressions: `i18n.t(\"key\")`, `this.t(\"key\")`\n- Skips dynamic keys: `t(variable)` (not statically extractable)\n- Skips comments: `// t(\"not_a_key\")`\n- Falls back to regex for Vue/Svelte templates\n\nGenerate a JSON translation file with empty values for multiple locales:\n\n```bash\nnpx nix-i18n-generate src --locales es,en --output translations.json\n```\n\n## TypeScript\n\n```ts\nconst i18n = createI18n({\n  locale: \"es\",\n  messages: {\n    es: { hello: \"Hola {name}\" },\n  },\n});\n\ni18n.t(\"hello\", { name: \"Deiver\" }); // OK\ni18n.t(\"helo\"); // Type error\ni18n.t(\"hello\"); // Type error: missing `name`\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}