{"id":27171423,"url":"https://github.com/tankerhq/sdk-js","last_synced_at":"2025-05-14T03:03:28.551Z","repository":{"id":34260026,"uuid":"152438565","full_name":"TankerHQ/sdk-js","owner":"TankerHQ","description":"Tanker client-side encryption SDK for JavaScript","archived":false,"fork":false,"pushed_at":"2025-04-23T09:07:55.000Z","size":10091,"stargazers_count":798,"open_issues_count":0,"forks_count":26,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-06T15:20:47.906Z","etag":null,"topics":["cryptography","encryption","end-to-end","javascript","privacy","sdk","security","tanker"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TankerHQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-10T14:36:43.000Z","updated_at":"2025-04-24T16:02:32.000Z","dependencies_parsed_at":"2023-11-22T16:20:08.290Z","dependency_job_id":"374dcb71-edd6-4cf2-bf3d-c85a71459337","html_url":"https://github.com/TankerHQ/sdk-js","commit_stats":{"total_commits":1958,"total_committers":24,"mean_commits":81.58333333333333,"dds":0.8411644535240042,"last_synced_commit":"6cd90c3a1e1e06c6e31ca935d85e078b802277b4"},"previous_names":[],"tags_count":330,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TankerHQ%2Fsdk-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TankerHQ%2Fsdk-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TankerHQ%2Fsdk-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TankerHQ%2Fsdk-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TankerHQ","download_url":"https://codeload.github.com/TankerHQ/sdk-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059485,"owners_count":22007768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","encryption","end-to-end","javascript","privacy","sdk","security","tanker"],"created_at":"2025-04-09T08:34:20.483Z","updated_at":"2025-05-14T03:03:28.539Z","avatar_url":"https://github.com/TankerHQ.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[actions-badge]: https://github.com/TankerHQ/sdk-js/actions/workflows/tests.yml/badge.svg\n[actions-link]: https://github.com/TankerHQ/sdk-js/actions/workflows/tests.yml\n\n[browser_npm-badge]: https://img.shields.io/npm/v/@tanker/client-browser.svg\n[browser_npm-link]: https://npmjs.com/package/@tanker/client-browser\n\n[codecov-badge]: https://img.shields.io/codecov/c/github/TankerHQ/sdk-js.svg?label=Coverage\n[codecov-link]: https://codecov.io/gh/TankerHQ/sdk-js\n\n[identity_npm-badge]: https://img.shields.io/npm/v/@tanker/identity.svg\n[identity_npm-link]: https://npmjs.com/package/@tanker/identity\n\n[last-commit-badge]: https://img.shields.io/github/last-commit/TankerHQ/sdk-js.svg?label=Last%20commit\u0026logo=github\n[last-commit-link]: https://github.com/TankerHQ/sdk-js/commits/master\n\n[license-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n[license-link]: https://opensource.org/licenses/Apache-2.0\n\n[nodejs_npm-badge]: https://img.shields.io/npm/v/@tanker/client-node.svg\n[nodejs_npm-link]: https://npmjs.com/package/@tanker/client-node\n\n\u003ca href=\"#readme\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TankerHQ/spec/master/img/tanker-logotype-blue-nomargin-350.png\" alt=\"Tanker logo\" width=\"175\" /\u003e\u003c/a\u003e\n\n[![License][license-badge]][license-link]\n[![Build][actions-badge]][actions-link]\n[![Coverage][codecov-badge]][codecov-link]\n[![Last commit][last-commit-badge]][last-commit-link]\n\n# Encryption SDKs for JavaScript\n\n[Overview](#overview) · [Core](#tanker-core) · [Identity](#identity-management) · [Browser support](#browser-support) · [Other platforms](#other-platforms) · [Contributing](#contributing)\n\n## Overview\n\nTanker is an open-source solution to protect sensitive data in any application, with a simple end-user experience and good performance. No cryptographic expertise required.\n\n## Tanker Core\n\nTanker **Core** is the foundation, it provides powerful **end-to-end encryption** of any type of data, textual or binary. Tanker **Core** handles multi-device, identity verification, user groups and pre-registration sharing.\n\n| Package                                    | Version                                  |\n|:-------------------------------------------|:-----------------------------------------|\n| [@tanker/client-browser][browser_npm-link] | [![browser_npm-badge]][browser_npm-link] |\n| [@tanker/client-node][nodejs_npm-link]     | [![nodejs_npm-badge]][nodejs_npm-link]   |\n\nDetailed changes for each release are documented in the [Release Notes](https://github.com/TankerHQ/sdk-js/releases).\n\n\u003cdetails\u003e\u003csummary\u003eTanker Core usage example\u003c/summary\u003e\n\nThe Core SDK takes care of all the difficult cryptography in the background, leaving you with simple high-level APIs:\n\n```javascript\nimport { Tanker } from '@tanker/client-browser';\n\n// Initialize the isolated Tanker environment within your application\nconst tanker = new Tanker({ appId: '...' });\n\n// Start a session with the user's cryptographic identity\nawait tanker.start(aliceIdentity);\n\n// Encrypt data and share it with separate recipients or groups\nconst encryptedMessage = await tanker.encrypt(\n  \"It's a secret to everybody\",\n  { shareWithUsers: [bobIdentity] }\n);\n\n// Decrypt data (or throw if not a legitimate recipient)\nconst message = await tanker.decrypt(encryptedMessage);\n```\n\nThe Core SDK automatically handles complex key exchanges, cryptographic operations, and identity verification for you.\n\u003c/details\u003e\n\nFor more details and advanced examples, please refer to:\n\n* [Core SDK implementation guide](https://docs.tanker.io/latest/guides/)\n* [Core API reference](https://docs.tanker.io/latest/api/core/js/)\n\n## Identity management\n\nEnd-to-end encryption requires that all users have cryptographic identities. The following packages help to handle them:\n\nTanker **Identity** is a server side package to link Tanker identities with your users in your application backend.\nIt is available in multiple languages. This repository only contains the Javascript version.\n\n| Package                               | Version                                    |\n|:--------------------------------------|:-------------------------------------------|\n| [@tanker/identity][identity_npm-link] | [![identity_npm-badge]][identity_npm-link] |\n\n## Browser support\n\nThe Tanker JavaScript SDKs support the following platforms:\n\n* Chrome, Firefox, Safari, and Microsoft Edge\n* Node.js 20+\n\nThe Tanker JavaScript SDKs are constantly tested with all of the supported browsers via unit and functional tests.\n\n## Other platforms\n\nTanker is also available for your **desktop and mobile applications**: use our open-source **[Python](https://github.com/TankerHQ/sdk-python)**, **[Ruby](https://github.com/TankerHQ/sdk-ruby)**, and **[Rust](https://github.com/TankerHQ/sdk-rust)** SDKs.\n\n## Contributing\n\nWe welcome feedback, bug reports, and bug fixes in the form of [pull requests](https://github.com/TankerHQ/sdk-js/pulls).\n\nTo build the JavaScript SDKs yourself, please follow the steps below.\n\n### Prerequisites\n\nInstall the lastest version of [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).\n\nUse this command to check the npm version installed on your system:\n```bash\nnpm --version\n```\n\n### Install dependencies\n\nClone this repository:\n```bash\ngit clone https://github.com/TankerHQ/sdk-js.git\n```\n\nInstall dependencies:\n```bash\ncd sdk-js \u0026\u0026 npm install\n```\n\n### Test and lint\n\nOur codebase uses the following ES6 features: `async` / `await`, `import` / `export`, and classes with typescript for type-checking and with eslint for linting.\n\nTo check that the code is correct and to launch the tests in Node.js, use:\n\n```bash\nnpm run proof\n```\n\n### Submit your pull request\n\nBefore submitting your pull request, please make sure that your changes pass the linters and that all the tests pass on your local machine.\n\nFor non-trivial changes, we highly recommend including extra tests.\n\nWhen you're ready, submit your [pull request](https://github.com/TankerHQ/sdk-js/pulls), targeting the `master` branch of this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftankerhq%2Fsdk-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftankerhq%2Fsdk-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftankerhq%2Fsdk-js/lists"}