{"id":15290546,"url":"https://github.com/everx-labs/ever-sdk-js","last_synced_at":"2025-10-27T04:10:19.670Z","repository":{"id":37098884,"uuid":"206295732","full_name":"everx-labs/ever-sdk-js","owner":"everx-labs","description":"Javascript SDK for TVM blockchains (Everscale, TON, Venom, etc)","archived":false,"fork":false,"pushed_at":"2025-02-24T04:43:38.000Z","size":12317,"stargazers_count":96,"open_issues_count":24,"forks_count":26,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-05-13T14:21:36.825Z","etag":null,"topics":["blockchain","client","everscale","everscale-blockchain","javascript","js","sdk","solidity","ton","venom","venom-blockchain","venom-developer-program","web3"],"latest_commit_sha":null,"homepage":"https://tonlabs.github.io/ever-sdk-js/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/everx-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-09-04T10:42:33.000Z","updated_at":"2025-05-02T14:02:06.000Z","dependencies_parsed_at":"2023-11-17T08:51:34.030Z","dependency_job_id":"7ba951f2-b9dd-4f16-935d-dba369277c73","html_url":"https://github.com/everx-labs/ever-sdk-js","commit_stats":{"total_commits":1113,"total_committers":28,"mean_commits":39.75,"dds":0.7349505840071877,"last_synced_commit":"bdc47a6acf2fbef4872ddbff895707c68f299cbb"},"previous_names":["tonlabs/ton-client-js","everx-labs/ever-sdk-js","tonlabs/ever-sdk-js"],"tags_count":138,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everx-labs%2Fever-sdk-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everx-labs%2Fever-sdk-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everx-labs%2Fever-sdk-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everx-labs%2Fever-sdk-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/everx-labs","download_url":"https://codeload.github.com/everx-labs/ever-sdk-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254544146,"owners_count":22088807,"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":["blockchain","client","everscale","everscale-blockchain","javascript","js","sdk","solidity","ton","venom","venom-blockchain","venom-developer-program","web3"],"created_at":"2024-09-30T16:08:34.945Z","updated_at":"2025-10-27T04:10:14.619Z","avatar_url":"https://github.com/everx-labs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/everx-labs/ever-sdk-js/\"\u003e\u003cimg src=\"media/ton-sdk-blue.png\" height=\"60\"/\u003e\u003c/a\u003e\u003c/p\u003e \n\u003ch1 align=\"center\"\u003eJavaScript SDK for TVM compatible networks \u003c/h1\u003e\n\u003cp align=\"center\"\u003eClient Library built for Everscale, Venom blockchain, TON, Gosh\u003c/p\u003e\n\u003cp align=\"center\"\u003efor Web, Node.js and React Native platforms\u003c/p\u003e\n\n**Have a question? Get quick help in our channel:**\n\n[![Chat on Telegram](https://img.shields.io/badge/chat-on%20telegram-9cf.svg)](https://t.me/ever_sdk) \n\n# Table of Content\n- [Table of Content](#table-of-content)\n- [Useful links](#useful-links)\n- [Library distribution](#library-distribution)\n- [Installation](#installation)\n  - [Prerequisites](#prerequisites)\n  - [Install core package](#install-core-package)\n  - [Install bridge package (depends on target JS platform)](#install-bridge-package-depends-on-target-js-platform)\n    - [NodeJs](#nodejs)\n    - [Web](#web)\n    - [React Native](#react-native)\n- [Setup library](#setup-library)\n- [Use library](#use-library)\n- [Build bridge binaries](#build-bridge-binaries)\n- [Build binaries](#build-binaries)\n- [Run tests](#run-tests)\n  - [Preparation to run tests](#preparation-to-run-tests)\n  - [Run tests on node js](#run-tests-on-node-js)\n  - [Run tests on web browser](#run-tests-on-web-browser)\n  - [Run tests on react native platform](#run-tests-on-react-native-platform)\n  - [To control where your tests will run use this environments](#to-control-where-your-tests-will-run-use-this-environments)\n- [Download precompiled binaries](#download-precompiled-binaries)\n\n\n# Useful links\n- [Quick Start](https://tonlabs.gitbook.io/ton-sdk/quick_start)\n  \n- [Types and Methods (API Reference)](https://tonlabs.github.io/ever-sdk-js/)\n  \n- [AppKit](https://github.com/everx-labs/appkit-js) - JS package built on top of [@eversdk/core](https://www.npmjs.com/package/@eversdk/core) package which purpose is to simplify writing applications on EverScale. It helps to implement most common use-cases with less coding. \n  \n- [SDK guides](https://tonlabs.gitbook.io/ton-sdk/guides/installation/add_sdk_to_your_app) - get a deeper understanding by diving into our guides where you can find extensive explanations of each step of DApp development on EverScale.\n  \n- [SDK Samples](https://github.com/everx-labs/sdk-samples) - a good place to get to practice with SDK examples asap:)\n\n# Library distribution\nThis SDK is distributed via npm packages:\n- [@eversdk/core](https://www.npmjs.com/package/@eversdk/core) – common binding independent from JavaScript platform you use.\n- [@eversdk/lib-node](https://www.npmjs.com/package/@eversdk/lib-node) – bridge to NodeJs including NodeJs binary addon.\n- [@eversdk/lib-web](https://www.npmjs.com/package/@eversdk/lib-web) – bridge to browser including WASM module.\n- [@eversdk/lib-react-native](https://www.npmjs.com/package/@eversdk/lib-react-native) – bridge to mobile react-native platform including static libraries for iOS and Android.\n\nYou can find their source code in this repository.\n \n# Installation\n\n## Prerequisites\n\n- Node.js 14 LTS  \n  \n*Package probably works OK on other Node.js versions, but we use 14 version in our testing pipelines so we quarantee its stable work only on 14 version.*\n\n## Install core package\n\n```shell script\nnpm i --save @eversdk/core\n```\n\n## Install bridge package (depends on target JS platform)\n\nThe bridge package will download precompiled binaries from TON Labs cloud storage.\nIf you want to rebuild binary from sources see [build binaries](#build binaries) section. \n\n### NodeJs\n```shell script\nnpm i --save @eversdk/lib-node\n```\n\n### Web\n```shell script\nnpm i --save @eversdk/lib-web\n```\n**Important!** Each time you run `npm install` the new version of the `eversdk.wasm` and `index.js` is downloaded. So you have to always update the `eversdk.wasm` inside your web package before publishing (starting local web server, creating web bundle etc.). If you use Webpack the best way is to use CopyPlugin.\n\n### React Native\n```shell script\nnpm i --save @eversdk/lib-react-native\n```\n\n\n# Setup library\n\nYou must initialize the library before the first use. The best place to do it is an \ninitialization code of your application.\n\nYou need to attach the chosen binary module to the `TonClient` class.\n\nNodeJs:\n```ts\nconst {TonClient} = require(\"@eversdk/core\");\nconst {libNode} = require(\"@eversdk/lib-node\");\n\n// Application initialization\n\nTonClient.useBinaryLibrary(libNode)\n```\n  \nWeb:\n```ts\nimport {TonClient} from \"@eversdk/core\";\nimport {libWeb} from \"@eversdk/lib-web\";\n\n// Application initialization\n\nTonClient.useBinaryLibrary(libWeb);\n```\n\nBy default the library loads wasm module from relative URL `/eversdk.wasm`.\n\nYou can specify alternative URL if you want to place (or rename) wasm module.\n```ts\nimport {TonClient} from \"@eversdk/core\";\nimport {libWeb, libWebSetup} from \"@eversdk/lib-web\";\n\n// Setup alternative URL for WASM module.\nlibWebSetup({\n    binaryURL: \"/assets/eversdk_1_30_1.wasm\",\n});\n\nTonClient.useBinaryLibrary(libWeb);\n```\n\nBy default, lib web starts a separate worker that will utilize core (wasm).\n\nSo main thread never freezes – it is fine for UI. But in some cases (e.g. when worker already exists in application or extension)\nseparate worker is a bad approach.\n\nIn this case application can suppress separate worker with:\n\n```ts\nimport {TonClient} from \"@eversdk/core\";\nimport {libWeb, libWebSetup} from \"@eversdk/lib-web\";\n\n// Disable separate worker\nlibWebSetup({\n    disableSeparateWorker: true,\n});\n\nTonClient.useBinaryLibrary(libWeb);\n```\n\nReact Native (iOS/Android):\n```ts\nimport {TonClient} from \"@eversdk/core\";\nimport {libReactNative} from \"@eversdk/lib-react-native\";\n\n// Application initialization\n\nTonClient.useBinaryLibrary(libReactNative);\n```\n\nReact Native (Web):\n\nIf you use React Native in Web, work the same way as described in Web section (see above). \n\n\n\n# Use library\n\nAll library functions are incorporated into `TonClient` class. Each client module is represented as a \nproperty of the `TonClient` object.\n\nTo start use library you must create an instance of the `TonClient` class:\n```ts\nconst client = new TonClient();\nconst keys = await client.crypto.generate_random_sign_keys();\n```\n\nYou can pass a configuration object in `TonClient` constructor:\n```ts\nconst client = new TonClient({\n    network: { \n        endpoints: ['net.ton.dev']\n    } \n});\n```\n\nIn the end, close client to close all the sockets related to it:\n```ts\n client.close();\n```\n\nYou can find reference guide to `TonClient` here: [EVER-SDK API Documentation](https://github.com/everx-labs/ever-sdk/blob/master/docs/modules.md)\n\n# Build bridge binaries\n\nYou can build binaries from sources.\n\nIf you install a bridge package from the `npmjs` you can build it with the following commands (e.g. for nodejs):\n```shell script\ncd node_modules/@eversdk/lib-node/build\ncargo run\n```\n\n# Build binaries\n\nIf you checkout this repository you can build binaries for all bridges.\n\n```shell script\ncd packages/lib-node/build\ncargo run\ncd ../../lib-web/build\ncargo run\ncd ../../../lib-react-native/android/build\ncargo run\ncd ../../ios/build\ncargo run\n```\n\nAlso the archives will be created to be published on the TON Labs cloud storage. Archives will be placed into the following folders:\n- `packages/lib-node/publish`\n- `packages/lib-web/publish`\n- `packages/lib-react-native/ios/publish`\n- `packages/lib-react-native/android/publish`\n\n# Run tests\n\nThis suite has test packages:\n- `tests` – common test package containing all unit tests for a library.\n- `tests-node` – tests runner on node js.\n- `tests-web` – tests runner on web browser.\n- `tests-react-native` – tests runner on react native platform.\n\n## Preparation to run tests\n\nYou need to provide EVERCLOUD_AUTH_PROJECT environemnt variable. This is ProjectId. Take it from one of your project at https://dashboard.evercloud.dev/projects. (without secret / secret should be disabled)\n\n```shell script\ncd packages/core\nnpm i\nnpx tsc\ncd ../tests\nnpm i\nnpx tsc\n```\n\n## Run tests on node js\n\n```shell script\ncd packages/tests-node\nnpm i\nnode run\n```\n\n## Run tests on web browser\n\n```shell script\ncd packages/tests-web\nnpm i -f webpack\nnpm i -f webpack-cli\nnpm i -f\nnode run\n```\n\n## Run tests on react native platform\n\n```shell script\ncd packages/tests-react-native\nnpm i\nnode run ios\nnode run android\n```\n\n## To control where your tests will run use this environments\n```shell script\nTON_USE_SE=true TON_NETWORK_ADDRESS=http://localhost node run\n```\n\n# Download precompiled binaries\n\nInstead of building library yourself, you can download the __latest__ precompiled binaries from \nTON Labs SDK Binaries Store.\n\nBinary              | Target           | Major | Download links\n------------------- | ---------------- | ----- | --------------\nNode.js AddOn       | Win32            | 1     | [`eversdk.node`](https://binaries.tonlabs.io/eversdk_1_nodejs_addon_x64-win32.gz)\n\u0026nbsp;              | macOS x86_64     | 1     | [`eversdk.node`](https://binaries.tonlabs.io/eversdk_1_nodejs_addon_x64-darwin.gz)\n\u0026nbsp;              | macOS aarch64    | 1     | [`eversdk.node`](https://binaries.tonlabs.io/eversdk_1_nodejs_addon_arm64-darwin.gz)\n\u0026nbsp;              | Linux            | 1     | [`eversdk.node`](https://binaries.tonlabs.io/eversdk_1_nodejs_addon_x64-linux.gz)\nReact Native Module | Android x86_64   | 1     | [`libeversdk.so`](https://binaries.tonlabs.io/eversdk_1_react_native_x86_64-linux-android.gz)\n\u0026nbsp;              | Android i686     | 1     | [`libeversdk.so`](https://binaries.tonlabs.io/eversdk_1_react_native_i686-linux-android.gz)\n\u0026nbsp;              | Android armv7    | 1     | [`libeversdk.so`](https://binaries.tonlabs.io/eversdk_1_react_native_armv7-linux-androideabi.gz)\n\u0026nbsp;              | Android aarch64  | 1     | [`libeversdk.so`](https://binaries.tonlabs.io/eversdk_1_react_native_aarch64-linux-android.gz)\n\u0026nbsp;              | iOS              | 1     | [`libeversdk.a`](https://binaries.tonlabs.io/eversdk_1_react_native_ios.gz)\nWASM Module         | Browser          | 1     | [`eversdk.wasm`](https://binaries.tonlabs.io/eversdk_1_wasm.gz), [`index.js`](https://binaries.tonlabs.io/eversdk_1_wasm_js.gz)\n\n_Downloaded archive is gzipped file_\n\n---\nCopyright 2018-2020 TON Labs LTD.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverx-labs%2Fever-sdk-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feverx-labs%2Fever-sdk-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverx-labs%2Fever-sdk-js/lists"}