{"_id":"@absoluteinterpreting/translate-ai","_rev":"3-56823d61aba9edf0282726f31028bdee","name":"@absoluteinterpreting/translate-ai","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@absoluteinterpreting/translate-ai","version":"0.1.0","keywords":["absolute","translation","i18n","localization","abs-translate-ai"],"license":"MIT","_id":"@absoluteinterpreting/translate-ai@0.1.0","maintainers":[{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"}],"homepage":"https://docs.translate.absolute.co.uk","bugs":{"url":"https://translate.absolute.co.uk"},"dist":{"shasum":"ec8ed9eb5b35870a6bb3cc2a2f5230195df11e36","tarball":"https://registry.npmjs.org/@absoluteinterpreting/translate-ai/-/translate-ai-0.1.0.tgz","fileCount":5,"integrity":"sha512-51Y5Rmes8Zql3nCp+oKnCTgJp4hOEohfHC7512QosuRsgOUIpU/NW1VmJJqejVDHqxPcCgkXLALIgp1tOR/fRA==","signatures":[{"sig":"MEYCIQCjEbxUtD/4PJoV8qf7CFrw5aNdX6E9yShO/hAph+4hngIhAP9idgQuzphAf+06ePyZsiWyLOvE/BAjGfWdeJCwKI5n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13152},"type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"}},"scripts":{"test":"node --test","prepack":"npm test"},"_npmUser":{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"},"repository":{"url":"git+https://bitbucket.org/aivionwheels/itmsportalrepo25.git","type":"git","directory":"sdk/javascript"},"_npmVersion":"11.17.0","description":"Official browser JavaScript SDK for ABS Translate AI.","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/translate-ai_0.1.0_1788894649336_0.6219944752579976","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@absoluteinterpreting/translate-ai","version":"0.1.1","keywords":["absolute","translation","i18n","localization","abs-translate-ai"],"license":"MIT","_id":"@absoluteinterpreting/translate-ai@0.1.1","maintainers":[{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"}],"homepage":"https://docs.translate.absolute.co.uk","bugs":{"url":"https://translate.absolute.co.uk"},"dist":{"shasum":"66742a48723e9142e146f21f6b3c76dc4ef1d037","tarball":"https://registry.npmjs.org/@absoluteinterpreting/translate-ai/-/translate-ai-0.1.1.tgz","fileCount":5,"integrity":"sha512-jb666WUsNUS6t41oduXcc20cFTgeIIzq8XhH0f6u3HutJ1FrmMkxmSjjdUHqp3YUwxvpmcZ7ot4RI0Hftna7hw==","signatures":[{"sig":"MEUCIQCXPw2IB81nBb4pYqPoqduvJYpHMTJWD6zPyKiyXEBrKgIgQrdRHVl0t+nPf5PJ/EgksHhwfSwqbbacnfSuy6pUM+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCu9Qo59hCuKdidFambg8UxSDiWfY95tYrwiif0Lz1cpQIhAKacVXvnIBOtLRIaT+Sw4JFJ7hZwFASRwaFUfA4nf5CL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12990},"type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"}},"scripts":{"test":"node --test","prepack":"npm test"},"_npmUser":{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"},"_npmVersion":"11.17.0","description":"Official browser JavaScript SDK for ABS Translate AI.","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/translate-ai_0.1.1_1788896190604_0.0016956707062154575","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"_id":"@absoluteinterpreting/translate-ai@0.1.2","bugs":{"url":"https://translate.absolute.co.uk"},"dist":{"shasum":"535227740cbbc6b60e7e3d79ec638e83645094ca","tarball":"https://registry.npmjs.org/@absoluteinterpreting/translate-ai/-/translate-ai-0.1.2.tgz","fileCount":5,"integrity":"sha512-Ol+RF11nO2OHPtBk/vPBHmAeOOmAGGYwDMJfhk+E7kykgw0JDRt9KlcRj0dy2Zzp+mwMFdCCoz0OzSEB7u0GPg==","signatures":[{"sig":"MEUCIQD0dSH0JodyFSoUVsSkMoMszi6j83nxQmXHPR7Z8mdPuwIge/NUQbdTkYjA/6wlRKoUNPcrjy5ZswzqbtA3pxrV41Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIExrYKVIEFAi0yfj5RoiP0jooQD9YmVfRyEdX4r9UmrYAiAjreJyWQ8Q0p0xoXFHHfl5qteR6zZmcqzRXbIZ3UBxNg=="}],"unpackedSize":14480},"name":"@absoluteinterpreting/translate-ai","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"}},"gitHead":"5e70cf0ad6bb3e3a3cc4e3761bfee4a0c48c8ac6","license":"MIT","scripts":{"test":"node --test","prepack":"npm test"},"version":"0.1.2","_npmUser":{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"},"homepage":"https://docs.translate.absolute.co.uk","keywords":["absolute","translation","i18n","localization","abs-translate-ai"],"_npmVersion":"11.17.0","description":"Official browser JavaScript SDK for ABS Translate AI.","directories":{},"maintainers":[{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"}],"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/translate-ai_0.1.2_1789036848964_0.2564672143251705"}}},"time":{"created":"2026-09-08T19:10:49.123Z","modified":"2026-09-10T10:40:49.266Z","0.1.0":"2026-09-08T19:10:49.499Z","0.1.1":"2026-09-08T19:36:30.699Z","0.1.2":"2026-09-10T10:40:49.054Z"},"bugs":{"url":"https://translate.absolute.co.uk"},"license":"MIT","homepage":"https://docs.translate.absolute.co.uk","keywords":["absolute","translation","i18n","localization","abs-translate-ai"],"description":"Official browser JavaScript SDK for ABS Translate AI.","maintainers":[{"name":"absolute27","email":"emal.haidari@absolute-interpreting.co.uk"}],"readme":"# ABS Translation AI JavaScript SDK\n\nBrowser SDK for translating approved website content through ABS Translate AI.\n\n## Install\n\n```bash\nnpm install @absoluteinterpreting/translate-ai\n```\n\n## Public browser key setup\n\n1. In **ABS Translate AI → API keys**, choose the website project you are integrating.\n2. Create or select a **Public browser key**. The portal automatically restricts it to that project's verified base website origin.\n3. Copy the full key when it is shown. It is displayed only once.\n4. Use that key with the same project ID in browser code served from the approved origin.\n\nDo not use a key from another project or website. A public browser key is designed for approved browser use, but it is still project-scoped and must never be committed to a public repository.\n\n## Quick start\n\n```js\nimport { AbsTranslationClient } from \"@absoluteinterpreting/translate-ai\";\n\nconst client = new AbsTranslationClient({\n    baseUrl: \"https://api.translate.absolute.co.uk\",\n    // Public browser key for this project's verified origin only.\n    apiKey: \"abs_public_prefix.secret\",\n});\nconst result = await client.translate({\n    project_id: 1,\n    url: \"https://example.com/pricing\",\n    text: \"Continue\",\n    source_language: \"en\",\n    target_language: \"fr\",\n});\n```\n\nThe request is accepted only when all of the following match: the public key,\nthe `project_id`, the website's verified origin, and the project's approved\ntranslation access. For local development, create a project whose verified\norigin is your local HTTPS test address before using the SDK.\n\nThe SDK validates HTTPS configuration and payloads, uses abortable timeouts,\nadds an idempotency key for translation requests, and retries only transient\nnetwork/429/5xx failures (maximum three attempts). It never logs or persists\nthe installation key. The API remains responsible for entitlement, origin\nvalidation, pricing, rate limits and provider routing.\n\nEach project has its own `project_id`; do not reuse one project ID across\nunrelated websites or applications. Use this JavaScript SDK in a browser only\nwith a **public browser key** restricted to that project's verified origin.\n\nNever ship a **private server key** to a browser, JavaScript bundle, mobile app\nbundle, HTML, or public repository. Private keys are for trusted backend code\nonly; browser and mobile clients should call your backend when private server\naccess is required.\n\nFor browser navigation or header controls, use the included display helpers:\n\n```js\nimport { formatLanguageLabel } from \"@absoluteinterpreting/translate-ai\";\n// formatLanguageLabel(\"fr\") returns \"🇫🇷 French\"\n```\n","readmeFilename":"README.md"}