{"_id":"@desert-ant-labs/tongue","_rev":"12-c5433a4c9fcaaa7057a0d621e37e59e9","name":"@desert-ant-labs/tongue","dist-tags":{"latest":"3.5.0"},"versions":{"0.1.0":{"name":"@desert-ant-labs/tongue","version":"0.1.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@0.1.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/tongue/issues"},"dist":{"shasum":"e0c5cd9323fbedc0746bd03fb403974dd3575770","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-0.1.0.tgz","fileCount":21,"integrity":"sha512-WKBKyGlpirXHrxzUp5898zR/sgDDM6Ve4avD2G+k5iRVSZzx2lXUt6PJl0vT8X4SfOnW924Q9XBOr8bv6+3zNQ==","signatures":[{"sig":"MEQCIERcWnH08PgN3Qm36DdjV47sTiQrbaHeiYrSy7tqr56nAiAt2hV2v6XcMpJLl6QZMX5Y79l+u7x4Qweq6MpNFJM5XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2175914},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e5cc8ae17cf1540bad983a8a5c3e3590c5745e4e","scripts":{"test":"npm run build && node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/tongue.git","type":"git","directory":"packages/tongue-js"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 83 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_0.1.0_1785250780118_0.11504309516758116","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@desert-ant-labs/tongue","version":"0.1.1","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@0.1.1","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/tongue/issues"},"dist":{"shasum":"c6958feff778f7682a898c89081601ee595933d4","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-0.1.1.tgz","fileCount":28,"integrity":"sha512-Z05Ixj6+JjAkMH+0o/FBW4ZMksWyduqBpPSbOBSZIA9MHLt8WqwliWVywNxU6h0aXy3dX1TIGZYXE5ZgY7nWSA==","signatures":[{"sig":"MEQCIGLblGC4caYwRCpnf8h0agVXoqNQXKkbVdvEjcOO/NC8AiArmBwtpUWpM00DLJnkwOp+sP4bJdTWulfAXcjNOHLThg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2192806},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"5b4ff361d60f0f55c2811e9f61e7ed0f92b3dbcf","scripts":{"test":"npm run build && node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/tongue.git","type":"git","directory":"packages/tongue-js"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 83 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_0.1.1_1785271519141_0.6278734176203564","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@desert-ant-labs/tongue","version":"0.1.2","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@0.1.2","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/tongue/issues"},"dist":{"shasum":"4162345abb539866da443eac9c15fe8bdb3abc07","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-0.1.2.tgz","fileCount":28,"integrity":"sha512-r6IfJyQsXo+a8QYgvPhHSlhVdrW9DHSwIH5inyOVutOaT4AAo6cYxRHRXj0Uxgce/uyyGxh1LhSljX/uJHb5Mg==","signatures":[{"sig":"MEQCIEcZb3o/X0rZ5o6XCYyWQOeiEfvFY1/7j43N3ulrBvfDAiAqqRXL8TegxXb6BANQPePEEl5Tw2qPa3DcbDqB17KR2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193242},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"c996a8e9d57ef8bbd0a92de4a6a8b6ed9238fd1c","scripts":{"test":"npm run build && node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/tongue.git","type":"git","directory":"packages/tongue-js"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_0.1.2_1785287162112_0.718176515897897","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@desert-ant-labs/tongue","version":"1.2.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@1.2.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"75f7f5678a1d92cccfc7972b1abbf2b7dac9b6fa","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-1.2.0.tgz","fileCount":28,"integrity":"sha512-ZZYMdM/BWnX7c0OIjBMevbT7MyqvnKeTERQEMU/18ui6XHceSx2zlw9nI5r2OJVjcq+Zf/yixe1wYA5RMZfIPQ==","signatures":[{"sig":"MEYCIQDKTc9GRRnajeulaz8AJVOqdvSBjjPVbNTqXNuATUfUdwIhALe2R7+ifwaTMsYzPUFJzoflse3IL6MTba27LikVjN2H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"11af5243431c468213f67ca7e54ae7b55ebb5b6a","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_1.2.0_1787103653284_0.49805882795773093","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@desert-ant-labs/tongue","version":"3.0.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.0.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"ed9e8ccb17d0485825427b85f48ca4d25689613c","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.0.0.tgz","fileCount":28,"integrity":"sha512-K9n7HrvYFw3RyH3Hfz7sJpi1oUn3d3Y+1ZFDMtzm22+mqWsKdC46fWebw98V4kihoJEs8OimUosXeMbqcUHX1g==","signatures":[{"sig":"MEQCIDp4xjYfo6XboJ5+1ekHfHLGdxqWP5i34FJuOTdhQRWqAiBw25ZHtn7f9AWG8e6aNDU6FAGy/wBfB5ImEE5BR82v7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"8e998490fb4c711ad6385b03b671db132afcaf1e","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.0.0_1787161664504_0.3315021634733659","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@desert-ant-labs/tongue","version":"3.1.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.1.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"69bdcff883e6d319b92378d873a074e4ba85ed0e","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.1.0.tgz","fileCount":28,"integrity":"sha512-+AxvGO87PlViBN1tn9srb/2AmZg42x8NKgQmDZiF2I1MILXKE+0x6dZJ2OT+r4HL/dkADxLP+M7n2xlm4E0xgQ==","signatures":[{"sig":"MEUCIBbS4uQ3oyJcYR0QgFiEGTG2dYajgJT88z4SHbF2qgphAiEAvR42FWnfDo+HvYm2KSKLvw+5+4UF7bw3M2yLd0nQnzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD0Z3ZqZAFO/Cl3FDeAXSO49aQK1BqJNKBL3eFEzYerDwIgPTxe92jFMUzMlOWfSRq6LuE0esPzSR/y8ncx0OYpPeE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193313},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"9e11fdf9566df2e34b9516ac76403b1ff0f839d8","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.1.0_1787931623653_0.6995165237102543","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@desert-ant-labs/tongue","version":"3.2.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.2.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"87c8e45f68f31daa10a217ec5f430edd2198139f","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.2.0.tgz","fileCount":28,"integrity":"sha512-1Ybc10PfihVACwCdH3zZLKb1YxVBsxN8Zk9nGUeHlVNyCdH06nVKiPMTMe/Dv6zrU2Pl7v5J6q1DvxMVMO4vwA==","signatures":[{"sig":"MEUCIC3aXSNmhrMuBECAPEONk+KVXA9B1+d6zOsMq+EfypvOAiEA9cKJbTM2f7OqDywXDngrF2WR1rhxIFp9sBc9Nsh8Ao8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCqL2WohqTO+W4vqWQEywXvSqfb/hUeoPlm5lwcIz+akgIgDHWQulVNd98J5ReibLVOp+aPPFMdyFRxttO8NlPbFeE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193765},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"3a8d13cd1c4f027f095822956d9b08eb5ce6684d","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.2.0_1789734167142_0.5568317807755572","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@desert-ant-labs/tongue","version":"3.3.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.3.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"cb5af517ad2cbab48c297da1ee60e9fb0833acd1","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.3.0.tgz","fileCount":28,"integrity":"sha512-wLL5+9v+erkrYoaVxybUQH1e7+wARUwWrEBRuIO/gcDuLzgGRdL+jcSdQOxZBfkBXnay+jrjdAR85NcvrO/61g==","signatures":[{"sig":"MEQCIHudWfBGxgQHgimgnlXZAOBFTLdiHs9GIrXZJ2EDaBjyAiB7y5qyHI3dwCJDbwYyTuneEK/PEvM2xNshLUe8lJuQ8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDpjUt0rcGHX6lOSRS7KtvfEXBJZ7DJnaGT+3WgBO6xdQIgYtdGSJnMfwag5OPQFOcly/3KYH6e9h0WqdPlE9qknNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2193765},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"0711f8907188ca1ee85b2a0fa37ad7aa64b9a750","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"finnvoorhees","email":"finn@detail.co"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.3.0_1790031855698_0.21446101793479744","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"@desert-ant-labs/tongue","version":"3.3.1","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.3.1","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"df6c7cc5a087fb1b9226dd14dd683a863ac85f2d","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.3.1.tgz","fileCount":28,"integrity":"sha512-N/aSuKl8WFWf6NKGOgIu/TXPghCeJUbvOMyOdK3wBKpyakNQDP8jcGuzzEThWiy8QcKVXxqKpaWLwuxqX4NPBg==","signatures":[{"sig":"MEUCIQCVj0u76ILdSkb1F5zftb70qBMqpov2OIb2qNtD1TB6HQIgA+gu0dOxWvUlE0kvQ2Yof8oZrvkspzxjwPuMP1Ch47o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCfpENiPprx5r5HJjcmYhrCit6OfgESEPZ1pVgwxSihUQIhAPFyl3m0CaPp+2VOXjnh6WBadJDA5AzIzt8R9E2mAEUh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2206228},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"7e9107f47d8f2c56fbd5a1b93bae637f1c92a92c","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"akagabi","email":"gabesuit@gmail.com"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.3.1_1790125995870_0.8289656302583712","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@desert-ant-labs/tongue","version":"3.4.0","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@desert-ant-labs/tongue@3.4.0","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"homepage":"https://desertant.com/models/tongue/","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"2d95f6186ab46fccc53b0a36d18de8ad6b9e8acb","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.4.0.tgz","fileCount":28,"integrity":"sha512-ce/rlNlv2wgu8DDQ5tDotC4K9ONRZP0rWm6I0fDAkwJm+6MhJrXF1p356jVinuhvQbgdwzOR8MCsFbuTBBfufg==","signatures":[{"sig":"MEQCIAY/dc+K+YuxRzo+aC7eOyMJbJN4FeqSbQpICeM9QWxKAiBZ8QlhlslrdHkNpuQSl5aBh7tWlOpgbqHYi0IOZm1joA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCts9+pXNf5wEOM+krK9JCI27p0/5PuiBt38M32Hm2FNwIgXB1xZ/j3XeNGhuBaROq/gOlI7MC+yawmFlJ0CF1W5Fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2206228},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"2ac655305628a4d1489387c87675e044b715583a","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"_npmUser":{"name":"akagabi","email":"gabesuit@gmail.com"},"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.8","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/tongue_3.4.0_1790183654553_0.4498613749400362","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"_id":"@desert-ant-labs/tongue@3.5.0","bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"dist":{"shasum":"55c7328fb75fccba75a5bd55f91758e3c64a1219","tarball":"https://registry.npmjs.org/@desert-ant-labs/tongue/-/tongue-3.5.0.tgz","fileCount":28,"integrity":"sha512-igmS4debwPMlBQitTv9RpSH9wtJHgoJgGGVTISRKy4tIjVJXyQbRnqCaGFkSuNhdYXXOHhwBR5gcpoxf16DYng==","signatures":[{"sig":"MEUCIQCWq6+KSiX0iEDujGhRiu1KOmukQyKdI9/e++r5vyUASwIgLgG2BdMvFkChkAqFrb1VJzm2ZQb4WeVcFemAps+9v1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPT3DLcQ4jtYHAtbYKB4e3yf42rmNo6UGa/VOij7y1sQIgLByUVEzXX9jdme/YVuKlWG1rve45zhNmFEoa71audIk="}],"unpackedSize":2235998},"main":"./dist/index.js","name":"@desert-ant-labs/tongue","type":"module","types":"./dist/index.d.ts","author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"browser":{"./dist/platform.js":"./dist/platform.browser.js"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./dist/tongue_int8.bin":"./dist/tongue_int8.bin","./dist/tongue_meta.json":"./dist/tongue_meta.json","./model/tongue_int8.bin":"./dist/tongue_int8.bin","./model/tongue_meta.json":"./dist/tongue_meta.json"},"gitHead":"ec1f2895369d072a8a16baa1ef0761862d4c87cf","license":"SEE LICENSE IN LICENSE.md","scripts":{"test":"npm run build && DAL_USAGE_DISABLED=1 node --test test/*.test.js","build":"tsc && cp src/tongue_int8.bin src/tongue_meta.json dist/","prepare":"npm run build"},"version":"3.5.0","_npmUser":{"name":"akagabi","email":"gabesuit@gmail.com"},"homepage":"https://desertant.com/models/tongue/","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"desertant":{"pure":true},"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"_npmVersion":"10.9.9","description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","directories":{},"maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tongue_3.5.0_1790215546513_0.5118125302903367"}}},"time":{"created":"2026-07-28T14:59:39.945Z","modified":"2026-09-24T02:05:46.857Z","0.1.0":"2026-07-28T14:59:40.344Z","0.1.1":"2026-07-28T20:45:19.313Z","0.1.2":"2026-07-29T01:06:02.286Z","1.2.0":"2026-08-19T01:40:53.509Z","3.0.0":"2026-08-19T17:47:44.704Z","3.1.0":"2026-08-28T15:40:23.765Z","3.2.0":"2026-09-18T12:22:47.256Z","3.3.0":"2026-09-21T23:04:15.840Z","3.3.1":"2026-09-23T01:13:15.994Z","3.4.0":"2026-09-23T17:14:14.751Z","3.5.0":"2026-09-24T02:05:46.656Z"},"bugs":{"url":"https://github.com/Desert-Ant-Labs/desert-ant-core/issues"},"author":{"name":"Gabriel Bueno","email":"gabesuit@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","homepage":"https://desertant.com/models/tongue/","keywords":["language-identification","language-detection","langid","on-device","offline","multilingual","typescript","browser"],"repository":{"url":"git+https://github.com/Desert-Ant-Labs/desert-ant-core.git","type":"git","directory":"packages/tongue-node"},"description":"On-device language identification for short text, across 84 languages. Pure JavaScript: no wasm, no inference runtime.","maintainers":[{"name":"finnvoorhees","email":"finn@detail.co"},{"name":"laurierrochon","email":"laurier@detail.co"},{"name":"pveugen","email":"paul@pave4.com"},{"name":"akagabi","email":"gabesuit@gmail.com"}],"readme":"# tongue — JavaScript / TypeScript SDK\n\nOn-device language identification for short text, across 84 languages. Runs in the\nbrowser and in Node from one import.\n\n```ts\nimport { Tongue } from \"@desert-ant-labs/tongue\";\n\nconst tongue = await Tongue.load();\ntongue.detect(\"kann ich das haben\").language;   // \"de\"\ntongue.detect(\"안녕하세요\").language;             // \"ko\"\n```\n\n**No wasm, no inference runtime, no dependencies.** A detection is an int8\nembedding gather, a sum, one 59×32 matmul and a masked softmax — a few thousand\nmultiply-adds in plain JavaScript. That is why this package has a single entry\npoint where `emo-js` needs separate browser and Node builds: there is no runtime to\nswap, only two ways to read 2 MB of weights.\n\n## Install\n\n```\nnpm i @desert-ant-labs/tongue\n```\n\nNode ≥18, or any modern browser.\n\n```ts\n// Node: reads the bundled weights from the package directory.\nconst tongue = await Tongue.load();\n\n// Browser: serve tongue_int8.bin and tongue_meta.json and point at them.\nconst tongue = await Tongue.load({ from: \"/models/tongue\" });\n\n// Or supply the bytes yourself.\nconst tongue = Tongue.fromBytes(metadata, weightBytes);\n```\n\n## Saying \"I don't know\"\n\nShort input is often genuinely undecidable, and the SDK says so rather than\nguessing. Reliability is keyed off evidence — input length and how far the top\ncandidate leads the runner-up — not raw softmax confidence, which is badly\noverconfident on two words.\n\n```ts\nconst detection = tongue.detect(\"la casa\");\ndetection.isTooCloseToCall;   // true — equally Italian and Spanish\ndetection.reliability;        // \"tentative\"\ndetection.candidates;         // [it 0.31, es 0.29, …]\n```\n\nPresent both when `isTooCloseToCall` is set. Treat `\"tentative\"` as \"unknown\"\nrather than as an answer, and ask for more text where the product allows it.\n\n## API\n\n| | |\n|---|---|\n| `Tongue.load(options?)` | load the model; `options.from` is a directory or base URL |\n| `Tongue.fromBytes(metadata, bytes)` | load from bytes you already have |\n| `detect(text, topK?)` | `Detection` |\n| `Detection.language` | top candidate, or `null` on empty input |\n| `Detection.candidates` | `Prediction[]` with probabilities |\n| `Detection.reliability` | `\"confident\"` · `\"likely\"` · `\"tentative\"` · `\"empty\"` |\n| `Detection.isTooCloseToCall` | top two ranked within 0.12, whatever `topK` is |\n| `Detection.route.verdict` | `\"decisive\"` (script alone settled it) · `\"narrowing\"` · `\"ambiguous\"` |\n\n`normalize`, `route`, `fnv1a` and `buckets` are also exported, for anyone\nreproducing the feature pipeline.\n\n## CommonJS and TypeScript\n\nThe package is ESM-only. `require()` of it works natively on Node 20.19+, so a\nCJS server needs no changes at runtime. TypeScript in a CJS project should set\n`\"moduleResolution\": \"nodenext\"` (TS 5.8+) — the older `node16` setting rejects\nthe import with TS1479 even though the emitted `require()` runs. On Node older\nthan 20.19, use a dynamic `import()`.\n\n## Serving the model in a browser\n\nOn Node the weights load out of the package with no configuration. A bundler does\nnot serve files from `node_modules`, so in a browser you serve the two model files\nyourself and point `load` at them:\n\n```ts\nconst tongue = await Tongue.load({ from: \"/models/tongue\" });\n```\n\nBoth files are exported, so a bundler can fingerprint and hash them rather than\nneeding a copy step:\n\n```ts\nimport binUrl from \"@desert-ant-labs/tongue/model/tongue_int8.bin?url\";   // Vite\nimport metaUrl from \"@desert-ant-labs/tongue/model/tongue_meta.json?url\";\n```\n\nOr copy `node_modules/@desert-ant-labs/tongue/dist/tongue_{int8.bin,meta.json}`\ninto your static directory as a build step.\n\nCalling `Tongue.load()` with no `from` in a browser resolves against the page URL,\nwhich on a single-page app hits the history fallback and returns `index.html`. The\nerror says so explicitly if it happens.\n\n## The cross-platform contract\n\nThe normalizer, hasher and router are a **frozen specification** shared with the\nPython reference and the Swift and Kotlin SDKs. `test/golden.test.js` replays the\nsame vector files all of them do, including whole-bag hasher equality:\n\n```\nnpm test\n```\n\nRegenerate the Unicode tables rather than editing them:\n\n```\npython3 scripts/gen_ts_tables.py --reference ../tongue-training\n```\n\n## Model\n\nWeights, benchmarks and limitations: [huggingface.co/desert-ant-labs/tongue](https://huggingface.co/desert-ant-labs/tongue).\nLive demo: [desert-ant-labs-tongue-demo.static.hf.space](https://desert-ant-labs-tongue-demo.static.hf.space/).\n\nRead the model card's failure modes before deploying: one or two words is often\ngenuinely ambiguous, Malay and Indonesian are not reliably separable at this size,\nMongolian works only in the traditional script, and brand names and version\nstrings are not language at all.\n\n## Licence\n\n[Desert Ant Labs Source-Available Licence](https://license.desertant.com/1.0).\nFree for most apps; a commercial licence is required at scale.\n","readmeFilename":"README.md"}