Skip to content

Commit

Permalink
Merge pull request #273 from tiagosiebler/typenaming
Browse files Browse the repository at this point in the history
v3.7.1: chore() naming consistency for interface, pass through logger for ws url getter
  • Loading branch information
tiagosiebler authored Jun 27, 2023
2 parents b12f243 + 821e949 commit f8be8a6
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 17 deletions.
40 changes: 34 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Node.js & Typescript Bybit API SDK
# 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]
Expand All @@ -9,9 +9,9 @@

[1]: https://www.npmjs.com/package/bybit-api

Node.js SDK for the Bybit APIs and WebSockets:
Node.js & JavaScript SDK for the Bybit REST APIs and WebSockets:

- Complete integration with all Bybit APIs.
- Complete integration with all Bybit REST APIs & WebSockets.
- 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.
Expand Down Expand Up @@ -329,15 +329,43 @@ In rare situations, you may want to see the raw HTTP requets being built as well

## Browser Usage

### Import

This is the "modern" way, allowing the package to be directly imported into frontend projects with full typescript support.

1. Install these dependencies
```sh
npm install crypto-browserify stream-browserify
```
2. Add this to your `tsconfig.json`
```json
{
"compilerOptions": {
"paths": {
"crypto": [
"./node_modules/crypto-browserify"
],
"stream": [
"./node_modules/stream-browserify"
]
}
```
3. Declare this in the global context of your application (ex: in polyfills for angular)
```js
(window as any).global = window;
```
### Webpack
This is the "old" way of using this package on webpages. This will build a minified js bundle that can be pulled in using a script tag on a website.
Build a bundle using webpack:
- `npm install`
- `npm build`
- `npm pack`
The bundle can be found in `dist/`. Altough usage should be largely consistent, smaller differences will exist. Documentation is still TODO.

However, note that browser usage will lead to CORS errors due Bybit. See [issue #79](#79) for more information & alternative suggestions.
The bundle can be found in `dist/`. Altough usage should be largely consistent, smaller differences will exist. Documentation is still TODO - contributions welcome.
---
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bybit-api",
"version": "3.7.0",
"version": "3.7.1",
"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",
Expand Down
8 changes: 4 additions & 4 deletions src/rest-client-v5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ import {
FeeRateV5,
FundingRateHistoryResponseV5,
GetAccountCoinBalanceParamsV5,
GetAccountHistoricOrdersPArams,
GetAccountOrdersParams,
GetAccountHistoricOrdersParamsV5,
GetAccountOrdersParamsV5,
GetAllCoinsBalanceParamsV5,
GetAllowedDepositCoinInfoParamsV5,
GetAssetInfoParamsV5,
Expand Down Expand Up @@ -392,7 +392,7 @@ export class RestClientV5 extends BaseRestClient {
* Query unfilled or partially filled orders in real-time. To query older order records, please use the order history interface.
*/
getActiveOrders(
params: GetAccountOrdersParams,
params: GetAccountOrdersParamsV5,
): Promise<APIResponseV3WithTime<CategoryCursorListV5<AccountOrderV5[]>>> {
return this.getPrivate('/v5/order/realtime', params);
}
Expand All @@ -409,7 +409,7 @@ export class RestClientV5 extends BaseRestClient {
* If you want to get real-time order information, you could query this endpoint or rely on the websocket stream (recommended).
*/
getHistoricOrders(
params: GetAccountHistoricOrdersPArams,
params: GetAccountHistoricOrdersParamsV5,
): Promise<APIResponseV3WithTime<CategoryCursorListV5<AccountOrderV5[]>>> {
return this.getPrivate('/v5/order/history', params);
}
Expand Down
4 changes: 2 additions & 2 deletions src/types/request/v5-trade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export interface CancelOrderParamsV5 {
orderFilter?: OrderFilterV5;
}

export interface GetAccountOrdersParams {
export interface GetAccountOrdersParamsV5 {
category: CategoryV5;
symbol?: string;
baseCoin?: string;
Expand All @@ -81,7 +81,7 @@ export interface GetAccountOrdersParams {
cursor?: string;
}

export interface GetAccountHistoricOrdersPArams {
export interface GetAccountHistoricOrdersParamsV5 {
category: CategoryV5;
symbol?: string;
baseCoin?: string;
Expand Down
4 changes: 3 additions & 1 deletion src/util/websocket-util.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { APIMarket, CategoryV5, WsKey } from '../types';
import { DefaultLogger } from './logger';

interface NetworkMapV3 {
livenet: string;
Expand Down Expand Up @@ -397,6 +398,7 @@ export function getWsUrl(
wsKey: WsKey,
wsUrl: string | undefined,
isTestnet: boolean,
logger: typeof DefaultLogger,
): string {
if (wsUrl) {
return wsUrl;
Expand Down Expand Up @@ -479,7 +481,7 @@ export function getWsUrl(
return WS_BASE_URL_MAP.v5OptionPublic.public[networkKey];
}
default: {
this.logger.error('getWsUrl(): Unhandled wsKey: ', {
logger.error('getWsUrl(): Unhandled wsKey: ', {
category: 'bybit-ws',
wsKey,
});
Expand Down
7 changes: 6 additions & 1 deletion src/websocket-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,12 @@ export class WebsocketClient extends EventEmitter {
}

const authParams = await this.getAuthParams(wsKey);
const url = getWsUrl(wsKey, this.options.wsUrl, this.isTestnet());
const url = getWsUrl(
wsKey,
this.options.wsUrl,
this.isTestnet(),
this.logger,
);
const ws = this.connectToWsUrl(url + authParams, wsKey);

return this.wsStore.setWs(wsKey, ws);
Expand Down
1 change: 1 addition & 0 deletions webpack/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ function generateConfig(name) {
alias: {
[path.resolve(__dirname, "../lib/util/node-support.js")]:
path.resolve(__dirname, "../lib/util/browser-support.js"),
process: "process/browser",
}
},

Expand Down

0 comments on commit f8be8a6

Please sign in to comment.