diff --git a/README.md b/README.md index ebd9177..fb4b3b9 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,38 @@ # Node.js & JavaScript SDK for Bybit REST API & WebSockets -[![Tests](https://circleci.com/gh/tiagosiebler/bybit-api.svg?style=shield)](https://circleci.com/gh/tiagosiebler/bybit-api) -[![npm version](https://img.shields.io/npm/v/bybit-api)][1] [![npm size](https://img.shields.io/bundlephobia/min/bybit-api/latest)][1] [![npm downloads](https://img.shields.io/npm/dt/bybit-api)][1] +[![Build & Test](https://github.com/tiagosiebler/bybit-api/actions/workflows/e2etest.yml/badge.svg?branch=master)](https://github.com/tiagosiebler/bybit-api/actions/workflows/e2etest.yml) +[![npm version](https://img.shields.io/npm/v/bybit-api)][1] +[![npm size](https://img.shields.io/bundlephobia/min/bybit-api/latest)][1] +[![npm downloads](https://img.shields.io/npm/dt/bybit-api)][1] [![last commit](https://img.shields.io/github/last-commit/tiagosiebler/bybit-api)][1] [![CodeFactor](https://www.codefactor.io/repository/github/tiagosiebler/bybit-api/badge)](https://www.codefactor.io/repository/github/tiagosiebler/bybit-api) +[![Telegram](https://img.shields.io/badge/chat-on%20telegram-blue.svg)](https://t.me/nodetraders) -[![connector logo](https://github.com/tiagosiebler/bybit-api/blob/master/docs/images/logo1.png?raw=true)][1] +

+ + + + SDK Logo + + +

[1]: https://www.npmjs.com/package/bybit-api Node.js & JavaScript SDK for the Bybit REST APIs and WebSockets: - Complete integration with all Bybit REST APIs & WebSockets. +- Actively maintained with a modern, promise-driven interface. - TypeScript support (with type declarations for most API requests & responses). - Over 450 end-to-end tests making real API calls & WebSocket connections, validating any changes before they reach npm. - Robust WebSocket integration with configurable connection heartbeats & automatic reconnect then resubscribe workflows. -- Browser support (via webpack bundle - see "Browser Usage" below). + - Event driven messaging. + - Smart websocket persistence + - Automatically handle silent websocket disconnections through timed heartbeats, including the scheduled 24hr disconnect. + - Automatically handle listenKey persistence and expiration/refresh. + - Emit `reconnected` event when dropped connection is restored. +- Proxy support via axios integration. +- Active community support & collaboration in telegram: [Node.js Algo Traders](https://t.me/nodetraders). ## Installation @@ -28,19 +45,20 @@ Node.js & JavaScript SDK for the Bybit REST APIs and WebSockets: ## Related projects -Check out my related projects: +Check out my related JavaScript/TypeScript/Node.js projects: -- Try my connectors: - - [bybit-api](https://www.npmjs.com/package/bybit-api) - - [binance](https://www.npmjs.com/package/binance) - - [okx-api](https://www.npmjs.com/package/okx-api) - - [bitget-api](https://www.npmjs.com/package/bitget-api) - - [bitmart-api](https://www.npmjs.com/package/bitmart-api) +- Try my REST API & WebSocket SDKs: + - [Bybit-api Node.js SDK](https://www.npmjs.com/package/bybit-api) + - [Binance Node.js SDK](https://www.npmjs.com/package/binance) + - [Okx-api Node.js SDK](https://www.npmjs.com/package/okx-api) + - [Gateio-api Node.js SDK](https://www.npmjs.com/package/gateio-api) + - [Bitget-api Node.js SDK](https://www.npmjs.com/package/bitget-api) + - [Bitmart-api Node.js SDK](https://www.npmjs.com/package/bitmart-api) - Try my misc utilities: - - [orderbooks](https://www.npmjs.com/package/orderbooks) - - [accountstate](https://www.npmjs.com/package/accountstate) + - [OrderBooks Node.js](https://www.npmjs.com/package/orderbooks) + - [Crypto Exchange Account State Cache](https://www.npmjs.com/package/accountstate) - Check out my examples: - - [awesome-crypto-examples](https://github.com/tiagosiebler/awesome-crypto-examples) + - [awesome-crypto-examples Node.js](https://github.com/tiagosiebler/awesome-crypto-examples) ## Documentation @@ -406,15 +424,15 @@ The bundle can be found in `dist/`. Altough usage should be largely consistent, #### tiagosiebler -If you found this project interesting or useful, create accounts with my referral links: +Have my projects helped you? Share the love, there are many ways you can show your thanks: -- [Bybit](https://www.bybit.com/en-US/register?affiliate_id=9410&language=en-US&group_id=0&group_type=1) -- [Binance](https://www.binance.com/en/register?ref=20983262) +- Star & share my projects. +- Are my projects useful? Sponsor me on Github and support my effort to maintain & improve them: https://github.com/sponsors/tiagosiebler +- Have an interesting project? Get in touch & invite me to it. +- Or buy me all the coffee: + - ETH(ERC20): `0xA3Bda8BecaB4DCdA539Dc16F9C54a592553Be06C` -Or buy me a coffee using any of these: - -- BTC: `1C6GWZL1XW3jrjpPTS863XtZiXL1aTK7Jk` -- ETH (ERC20): `0xd773d8e6a50758e1ada699bb6c4f98bb4abf82da` +For more ways to give thanks & support my efforts, visit [Contributions & Thanks](https://github.com/tiagosiebler/awesome-crypto-examples/wiki/Contributions-&-Thanks)! #### pixtron @@ -430,4 +448,4 @@ Contributions are encouraged, I will review any incoming pull requests. See the ## Star History -[![Star History Chart](https://api.star-history.com/svg?repos=tiagosiebler/ftx-api,tiagosiebler/bybit-api,tiagosiebler/binance,tiagosiebler/orderbooks,tiagosiebler/okx-api,tiagosiebler/awesome-crypto-examples,tiagosiebler/accountstate&type=Date)](https://star-history.com/#tiagosiebler/ftx-api&tiagosiebler/bybit-api&tiagosiebler/binance&tiagosiebler/orderbooks&tiagosiebler/okx-api&tiagosiebler/awesome-crypto-examples&tiagosiebler/accountstate&Date) +[![Star History Chart](https://api.star-history.com/svg?repos=tiagosiebler/bybit-api,tiagosiebler/binance,tiagosiebler/orderbooks,tiagosiebler/okx-api,tiagosiebler/bitget-api,tiagosiebler/awesome-crypto-examples,tiagosiebler/bitmart-api,tiagosiebler/gateio-api&type=Date)](https://star-history.com/#tiagosiebler/bybit-api&tiagosiebler/binance&tiagosiebler/orderbooks&tiagosiebler/okx-api&tiagosiebler/bitget-api&tiagosiebler/awesome-crypto-examples&tiagosiebler/bitmart-api&tiagosiebler/gateio-api&Date) diff --git a/docs/images/logoBrightMode1.svg b/docs/images/logoBrightMode1.svg new file mode 100644 index 0000000..a09f149 --- /dev/null +++ b/docs/images/logoBrightMode1.svg @@ -0,0 +1,177 @@ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/logoBrightMode2.svg b/docs/images/logoBrightMode2.svg new file mode 100644 index 0000000..ce11749 --- /dev/null +++ b/docs/images/logoBrightMode2.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/logoDarkMode1.svg b/docs/images/logoDarkMode1.svg new file mode 100644 index 0000000..9034fa8 --- /dev/null +++ b/docs/images/logoDarkMode1.svg @@ -0,0 +1,177 @@ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/logoDarkMode2.svg b/docs/images/logoDarkMode2.svg new file mode 100644 index 0000000..bc5fe94 --- /dev/null +++ b/docs/images/logoDarkMode2.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json index 34070e8..d4b5697 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bybit-api", - "version": "3.10.5", + "version": "3.10.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "bybit-api", - "version": "3.10.5", + "version": "3.10.6", "license": "MIT", "dependencies": { "axios": "^1.6.6", @@ -2214,12 +2214,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "devOptional": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3183,9 +3183,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "devOptional": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -8519,12 +8519,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "devOptional": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -9268,9 +9268,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "devOptional": true, "requires": { "to-regex-range": "^5.0.1" diff --git a/package.json b/package.json index 84e0f57..79f3623 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bybit-api", - "version": "3.10.5", + "version": "3.10.6", "description": "Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/test/spot/private.v3.read.test.ts b/test/spot/private.v3.read.test.ts index 9cf055f..2d61be0 100644 --- a/test/spot/private.v3.read.test.ts +++ b/test/spot/private.v3.read.test.ts @@ -84,13 +84,6 @@ describe('Private Spot REST API GET Endpoints', () => { ); }); - it('getLeveragedTokenPRHistory()', async () => { - expect(await api.getLeveragedTokenPRHistory()).toMatchObject({ - ...successResponseObjectV3(), - // retCode: API_ERROR_CODE.ORDER_NOT_FOUND_LEVERAGED_TOKEN, - }); - }); - it('getCrossMarginBorrowingInfo()', async () => { expect(await api.getCrossMarginBorrowingInfo()).toMatchObject( successResponseObjectV3(), diff --git a/test/v5/private.read.test.ts b/test/v5/private.read.test.ts index d8495c8..7282081 100644 --- a/test/v5/private.read.test.ts +++ b/test/v5/private.read.test.ts @@ -276,7 +276,7 @@ describe('Private READ V5 REST API Endpoints', () => { it('getSubAccountAllApiKeys()', async () => { expect( - await api.getSubAccountAllApiKeys({subMemberId: 'fakeid'}) + await api.getSubAccountAllApiKeys({ subMemberId: 'fakeid' }), ).toMatchObject({ // ...successResponseObjectV3(), // Expected, since sub account ID is fake @@ -284,12 +284,4 @@ describe('Private READ V5 REST API Endpoints', () => { }); }); }); - - describe('Spot Leverage Token APIs', () => { - it('getSpotLeveragedTokenOrderHistory()', async () => { - expect(await api.getSpotLeveragedTokenOrderHistory()).toMatchObject({ - ...successResponseObjectV3(), - }); - }); - }); });