@yuants/vendor-okx 0.16.9 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/account.js +198 -0
  2. package/dist/account.js.map +1 -0
  3. package/dist/api.js +463 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/cli.js +3 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/cluster.js +80 -0
  8. package/dist/cluster.js.map +1 -0
  9. package/dist/extension.js +89 -0
  10. package/dist/extension.js.map +1 -0
  11. package/dist/index.js +7 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interest_rate.js +133 -0
  14. package/dist/interest_rate.js.map +1 -0
  15. package/dist/legacy_index.js +554 -0
  16. package/dist/legacy_index.js.map +1 -0
  17. package/dist/logger.js +91 -0
  18. package/dist/logger.js.map +1 -0
  19. package/dist/ohlc.js +171 -0
  20. package/dist/ohlc.js.map +1 -0
  21. package/dist/order.js +96 -0
  22. package/dist/order.js.map +1 -0
  23. package/dist/product.js +85 -0
  24. package/dist/product.js.map +1 -0
  25. package/dist/quote.js +58 -0
  26. package/dist/quote.js.map +1 -0
  27. package/dist/vendor-okx.d.ts +1 -0
  28. package/dist/websocket.js +80 -0
  29. package/dist/websocket.js.map +1 -0
  30. package/lib/account.d.ts +102 -0
  31. package/lib/account.d.ts.map +1 -0
  32. package/lib/account.js +201 -0
  33. package/lib/account.js.map +1 -0
  34. package/lib/api.d.ts +1401 -0
  35. package/lib/api.d.ts.map +1 -0
  36. package/lib/api.js +470 -0
  37. package/lib/api.js.map +1 -0
  38. package/lib/cli.d.ts +3 -0
  39. package/lib/cli.d.ts.map +1 -0
  40. package/lib/cli.js +5 -0
  41. package/lib/cli.js.map +1 -0
  42. package/lib/cluster.d.ts +2 -0
  43. package/lib/cluster.d.ts.map +1 -0
  44. package/lib/cluster.js +108 -0
  45. package/lib/cluster.js.map +1 -0
  46. package/lib/extension.d.ts +4 -0
  47. package/lib/extension.d.ts.map +1 -0
  48. package/lib/extension.js +91 -0
  49. package/lib/extension.js.map +1 -0
  50. package/lib/index.d.ts +7 -0
  51. package/lib/index.d.ts.map +1 -0
  52. package/lib/index.js +9 -0
  53. package/lib/index.js.map +1 -0
  54. package/lib/interest_rate.d.ts +2 -0
  55. package/lib/interest_rate.d.ts.map +1 -0
  56. package/lib/interest_rate.js +135 -0
  57. package/lib/interest_rate.js.map +1 -0
  58. package/lib/legacy_index.d.ts +2 -0
  59. package/lib/legacy_index.d.ts.map +1 -0
  60. package/lib/legacy_index.js +556 -0
  61. package/lib/legacy_index.js.map +1 -0
  62. package/lib/logger.d.ts +21 -0
  63. package/lib/logger.d.ts.map +1 -0
  64. package/lib/logger.js +98 -0
  65. package/lib/logger.js.map +1 -0
  66. package/lib/ohlc.d.ts +2 -0
  67. package/lib/ohlc.d.ts.map +1 -0
  68. package/lib/ohlc.js +173 -0
  69. package/lib/ohlc.js.map +1 -0
  70. package/lib/order.d.ts +4 -0
  71. package/lib/order.d.ts.map +1 -0
  72. package/lib/order.js +99 -0
  73. package/lib/order.js.map +1 -0
  74. package/lib/product.d.ts +6 -0
  75. package/lib/product.d.ts.map +1 -0
  76. package/lib/product.js +88 -0
  77. package/lib/product.js.map +1 -0
  78. package/lib/quote.d.ts +42 -0
  79. package/lib/quote.d.ts.map +1 -0
  80. package/lib/quote.js +61 -0
  81. package/lib/quote.js.map +1 -0
  82. package/lib/websocket.d.ts +14 -0
  83. package/lib/websocket.d.ts.map +1 -0
  84. package/lib/websocket.js +83 -0
  85. package/lib/websocket.js.map +1 -0
  86. package/package.json +9 -4
  87. package/temp/image-tag +1 -0
  88. package/temp/package-deps.json +42 -0
  89. package/temp/vendor-okx.api.json +177 -0
  90. package/temp/vendor-okx.api.md +9 -0
package/lib/quote.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swapOpenInterest$ = exports.spotMarketTickers$ = exports.swapMarketTickers$ = void 0;
4
+ const utils_1 = require("@yuants/utils");
5
+ const protocol_1 = require("@yuants/protocol");
6
+ const sql_1 = require("@yuants/sql");
7
+ const rxjs_1 = require("rxjs");
8
+ const api_1 = require("./api");
9
+ const swapTickers$ = (0, rxjs_1.defer)(() => api_1.client.getMarketTickers({ instType: 'SWAP' })).pipe((0, rxjs_1.repeat)({ delay: 5000 }), (0, rxjs_1.retry)({ delay: 5000 }), (0, rxjs_1.shareReplay)(1));
10
+ const spotTickers$ = (0, rxjs_1.defer)(() => api_1.client.getMarketTickers({ instType: 'SPOT' })).pipe((0, rxjs_1.repeat)({ delay: 5000 }), (0, rxjs_1.retry)({ delay: 5000 }), (0, rxjs_1.shareReplay)(1));
11
+ exports.swapMarketTickers$ = (0, rxjs_1.defer)(() => swapTickers$).pipe((0, rxjs_1.mergeMap)((x) => (0, rxjs_1.from)(x.data).pipe((0, rxjs_1.map)((x) => [x.instId, x]), (0, rxjs_1.toArray)(), (0, rxjs_1.map)((x) => Object.fromEntries(x)))), (0, rxjs_1.repeat)({ delay: 5000 }), (0, rxjs_1.retry)({ delay: 5000 }), (0, rxjs_1.shareReplay)(1));
12
+ exports.spotMarketTickers$ = (0, rxjs_1.defer)(() => spotTickers$).pipe((0, rxjs_1.mergeMap)((x) => (0, rxjs_1.from)(x.data).pipe((0, rxjs_1.map)((x) => [x.instId, x]), (0, rxjs_1.toArray)(), (0, rxjs_1.map)((x) => Object.fromEntries(x)))), (0, rxjs_1.repeat)({ delay: 5000 }), (0, rxjs_1.retry)({ delay: 5000 }), (0, rxjs_1.shareReplay)(1));
13
+ const quote1$ = swapTickers$.pipe((0, rxjs_1.mergeMap)((x) => x.data || []), (0, rxjs_1.map)((ticker) => ({
14
+ datasource_id: 'OKX',
15
+ product_id: (0, utils_1.encodePath)('SWAP', ticker.instId),
16
+ last_price: ticker.last,
17
+ ask_price: ticker.askPx,
18
+ bid_price: ticker.bidPx,
19
+ ask_volume: ticker.askSz,
20
+ bid_volume: ticker.bidSz,
21
+ })));
22
+ const quote2$ = spotTickers$.pipe((0, rxjs_1.mergeMap)((x) => x.data || []), (0, rxjs_1.map)((ticker) => ({
23
+ datasource_id: 'OKX',
24
+ product_id: (0, utils_1.encodePath)('SPOT', ticker.instId),
25
+ last_price: ticker.last,
26
+ ask_price: ticker.askPx,
27
+ bid_price: ticker.bidPx,
28
+ ask_volume: ticker.askSz,
29
+ bid_volume: ticker.bidSz,
30
+ })));
31
+ const quote4$ = spotTickers$.pipe((0, rxjs_1.mergeMap)((x) => x.data || []), (0, rxjs_1.map)((ticker) => ({
32
+ datasource_id: 'OKX',
33
+ product_id: (0, utils_1.encodePath)('MARGIN', ticker.instId),
34
+ last_price: ticker.last,
35
+ ask_price: ticker.askPx,
36
+ bid_price: ticker.bidPx,
37
+ ask_volume: ticker.askSz,
38
+ bid_volume: ticker.bidSz,
39
+ })));
40
+ const swapOpenInterests$ = (0, rxjs_1.defer)(() => api_1.client.getOpenInterest({ instType: 'SWAP' })).pipe((0, rxjs_1.repeat)({ delay: 10000 }), (0, rxjs_1.retry)({ delay: 10000 }), (0, rxjs_1.shareReplay)(1));
41
+ const quote3$ = swapOpenInterests$.pipe((0, rxjs_1.mergeMap)((x) => x.data || []), (0, rxjs_1.map)((x) => ({
42
+ datasource_id: 'OKX',
43
+ product_id: (0, utils_1.encodePath)('SWAP', x.instId),
44
+ open_interest: x.oi,
45
+ })));
46
+ // 合并不同来源的数据并进行合并,避免死锁
47
+ if (process.env.WRITE_QUOTE_TO_SQL === 'true') {
48
+ (0, rxjs_1.merge)(quote1$, quote2$, quote3$, quote4$)
49
+ .pipe((0, rxjs_1.groupBy)((x) => (0, utils_1.encodePath)(x.datasource_id, x.product_id)), (0, rxjs_1.mergeMap)((group$) => {
50
+ return group$.pipe((0, rxjs_1.scan)((acc, cur) => Object.assign(acc, cur), {}));
51
+ }), (0, sql_1.writeToSQL)({
52
+ terminal: protocol_1.Terminal.fromNodeEnv(),
53
+ writeInterval: 1000,
54
+ tableName: 'quote',
55
+ keyFn: (quote) => (0, utils_1.encodePath)(quote.datasource_id, quote.product_id),
56
+ conflictKeys: ['datasource_id', 'product_id'],
57
+ }))
58
+ .subscribe();
59
+ }
60
+ exports.swapOpenInterest$ = (0, rxjs_1.defer)(() => swapOpenInterests$).pipe((0, rxjs_1.map)((x) => new Map(x.data.map((x) => [x.instId, +x.oi]))), (0, rxjs_1.shareReplay)(1));
61
+ //# sourceMappingURL=quote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodePath } from '@yuants/utils';\nimport { IQuote } from '@yuants/data-quote';\nimport { Terminal } from '@yuants/protocol';\nimport { writeToSQL } from '@yuants/sql';\nimport { defer, from, groupBy, map, merge, mergeMap, repeat, retry, scan, shareReplay, toArray } from 'rxjs';\nimport { client } from './api';\n\nconst swapTickers$ = defer(() => client.getMarketTickers({ instType: 'SWAP' })).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst spotTickers$ = defer(() => client.getMarketTickers({ instType: 'SPOT' })).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const swapMarketTickers$ = defer(() => swapTickers$).pipe(\n mergeMap((x) =>\n from(x.data).pipe(\n map((x) => [x.instId, x] as const),\n toArray(),\n map((x) => Object.fromEntries(x)),\n ),\n ),\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const spotMarketTickers$ = defer(() => spotTickers$).pipe(\n mergeMap((x) =>\n from(x.data).pipe(\n map((x) => [x.instId, x] as const),\n toArray(),\n map((x) => Object.fromEntries(x)),\n ),\n ),\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst quote1$ = swapTickers$.pipe(\n mergeMap((x) => x.data || []),\n map(\n (ticker): Partial<IQuote> => ({\n datasource_id: 'OKX',\n product_id: encodePath('SWAP', ticker.instId),\n last_price: ticker.last,\n ask_price: ticker.askPx,\n bid_price: ticker.bidPx,\n ask_volume: ticker.askSz,\n bid_volume: ticker.bidSz,\n }),\n ),\n);\n\nconst quote2$ = spotTickers$.pipe(\n mergeMap((x) => x.data || []),\n map(\n (ticker): Partial<IQuote> => ({\n datasource_id: 'OKX',\n product_id: encodePath('SPOT', ticker.instId),\n last_price: ticker.last,\n ask_price: ticker.askPx,\n bid_price: ticker.bidPx,\n ask_volume: ticker.askSz,\n bid_volume: ticker.bidSz,\n }),\n ),\n);\n\nconst quote4$ = spotTickers$.pipe(\n mergeMap((x) => x.data || []),\n map(\n (ticker): Partial<IQuote> => ({\n datasource_id: 'OKX',\n product_id: encodePath('MARGIN', ticker.instId),\n last_price: ticker.last,\n ask_price: ticker.askPx,\n bid_price: ticker.bidPx,\n ask_volume: ticker.askSz,\n bid_volume: ticker.bidSz,\n }),\n ),\n);\n\nconst swapOpenInterests$ = defer(() => client.getOpenInterest({ instType: 'SWAP' })).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nconst quote3$ = swapOpenInterests$.pipe(\n mergeMap((x) => x.data || []),\n map(\n (x): Partial<IQuote> => ({\n datasource_id: 'OKX',\n product_id: encodePath('SWAP', x.instId),\n open_interest: x.oi,\n }),\n ),\n);\n\n// 合并不同来源的数据并进行合并,避免死锁\nif (process.env.WRITE_QUOTE_TO_SQL === 'true') {\n merge(quote1$, quote2$, quote3$, quote4$)\n .pipe(\n groupBy((x) => encodePath(x.datasource_id, x.product_id)),\n mergeMap((group$) => {\n return group$.pipe(scan((acc, cur) => Object.assign(acc, cur), {} as Partial<IQuote>));\n }),\n writeToSQL({\n terminal: Terminal.fromNodeEnv(),\n writeInterval: 1000,\n tableName: 'quote',\n keyFn: (quote) => encodePath(quote.datasource_id, quote.product_id),\n conflictKeys: ['datasource_id', 'product_id'],\n }),\n )\n .subscribe();\n}\n\nexport const swapOpenInterest$ = defer(() => swapOpenInterests$).pipe(\n map((x) => new Map(x.data.map((x) => [x.instId, +x.oi] as const))),\n shareReplay(1),\n);\n"]}
@@ -0,0 +1,14 @@
1
+ declare class OKXWsClient {
2
+ ws: WebSocket;
3
+ connected: boolean;
4
+ subscriptions: Set<string>;
5
+ handlers: Record<string, Function>;
6
+ pendingSub: string[];
7
+ constructor(url: string);
8
+ handleMessage(raw: any): void;
9
+ subscribe(channel: string, instId?: string, handler?: Function): void;
10
+ unsubscribe(channel: string, instId?: string): void;
11
+ }
12
+ export declare const okxBusinessWsClient: OKXWsClient;
13
+ export {};
14
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAGA,cAAM,WAAW;IACf,EAAE,EAAE,SAAS,CAAC;IACd,SAAS,EAAE,OAAO,CAAS;IAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;gBACT,GAAG,EAAE,MAAM;IAsBvB,aAAa,CAAC,GAAG,EAAE,GAAG;IActB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ;IA0B9D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAc7C;AAED,eAAO,MAAM,mBAAmB,aAA6D,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.okxBusinessWsClient = void 0;
4
+ const utils_1 = require("@yuants/utils");
5
+ // import WebSocket from 'ws';
6
+ class OKXWsClient {
7
+ constructor(url) {
8
+ this.connected = false;
9
+ // this.instId = instId;
10
+ this.ws = new WebSocket(url);
11
+ this.pendingSub = [];
12
+ // this.ws.
13
+ this.ws.addEventListener('open', () => {
14
+ this.connected = true;
15
+ console.info((0, utils_1.formatTime)(Date.now()), '✅ WS connected');
16
+ while (this.pendingSub.length > 0) {
17
+ const msg = this.pendingSub.shift();
18
+ if (msg) {
19
+ this.ws.send(msg);
20
+ console.info((0, utils_1.formatTime)(Date.now()), `📩 Sent subscribe for ${msg}`);
21
+ }
22
+ }
23
+ });
24
+ this.ws.addEventListener('message', (raw) => this.handleMessage(raw));
25
+ this.subscriptions = new Set();
26
+ this.handlers = {}; // key: channel, value: callback
27
+ }
28
+ // 处理消息
29
+ handleMessage(raw) {
30
+ var _a, _b;
31
+ const msg = JSON.parse(raw.data);
32
+ if ((_a = msg.arg) === null || _a === void 0 ? void 0 : _a.channel) {
33
+ const channelId = (0, utils_1.encodePath)(msg.arg.channel, msg.arg.instId);
34
+ const data = (_b = msg.data) === null || _b === void 0 ? void 0 : _b[0];
35
+ if (data && this.handlers[channelId]) {
36
+ this.handlers[channelId](data, msg.arg);
37
+ }
38
+ }
39
+ else if (msg.event) {
40
+ console.info('Event:', msg);
41
+ }
42
+ }
43
+ // 调用订阅
44
+ subscribe(channel, instId, handler) {
45
+ const channelId = (0, utils_1.encodePath)(channel, instId);
46
+ if (this.subscriptions.has(channelId)) {
47
+ console.info((0, utils_1.formatTime)(Date.now()), `⚠️ Already subscribed: ${channelId}`);
48
+ return;
49
+ }
50
+ const subMsg = {
51
+ op: 'subscribe',
52
+ args: [{ channel, instId }],
53
+ };
54
+ if (this.connected) {
55
+ this.ws.send(JSON.stringify(subMsg));
56
+ console.info((0, utils_1.formatTime)(Date.now()), `📩 Sent subscribe for ${channelId}`);
57
+ }
58
+ else {
59
+ this.pendingSub.push(JSON.stringify(subMsg));
60
+ console.info((0, utils_1.formatTime)(Date.now()), `📩 add subscribe for ${channelId} to pending list`);
61
+ }
62
+ this.subscriptions.add(channelId);
63
+ if (handler) {
64
+ this.handlers[channelId] = handler;
65
+ }
66
+ }
67
+ // 取消订阅
68
+ unsubscribe(channel, instId) {
69
+ const channelId = (0, utils_1.encodePath)(channel, instId);
70
+ if (!this.subscriptions.has(channelId))
71
+ return;
72
+ const unSubMsg = {
73
+ op: 'unsubscribe',
74
+ args: [{ channel, instId }],
75
+ };
76
+ this.ws.send(JSON.stringify(unSubMsg));
77
+ this.subscriptions.delete(channelId);
78
+ delete this.handlers[channelId];
79
+ console.info(`📩 Sent unsubscribe for ${channelId}`);
80
+ }
81
+ }
82
+ exports.okxBusinessWsClient = new OKXWsClient('wss://wspap.okx.com:8443/ws/v5/business');
83
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodePath, formatTime } from '@yuants/utils';\n// import WebSocket from 'ws';\n\nclass OKXWsClient {\n ws: WebSocket;\n connected: boolean = false;\n subscriptions: Set<string>;\n handlers: Record<string, Function>;\n pendingSub: string[];\n constructor(url: string) {\n // this.instId = instId;\n this.ws = new WebSocket(url);\n this.pendingSub = [];\n // this.ws.\n this.ws.addEventListener('open', () => {\n this.connected = true;\n console.info(formatTime(Date.now()), '✅ WS connected');\n while (this.pendingSub.length > 0) {\n const msg = this.pendingSub.shift();\n if (msg) {\n this.ws.send(msg);\n console.info(formatTime(Date.now()), `📩 Sent subscribe for ${msg}`);\n }\n }\n });\n this.ws.addEventListener('message', (raw) => this.handleMessage(raw));\n this.subscriptions = new Set();\n this.handlers = {}; // key: channel, value: callback\n }\n\n // 处理消息\n handleMessage(raw: any) {\n const msg = JSON.parse(raw.data);\n if (msg.arg?.channel) {\n const channelId = encodePath(msg.arg.channel, msg.arg.instId);\n const data = msg.data?.[0];\n if (data && this.handlers[channelId]) {\n this.handlers[channelId](data, msg.arg);\n }\n } else if (msg.event) {\n console.info('Event:', msg);\n }\n }\n\n // 调用订阅\n subscribe(channel: string, instId?: string, handler?: Function) {\n const channelId = encodePath(channel, instId);\n if (this.subscriptions.has(channelId)) {\n console.info(formatTime(Date.now()), `⚠️ Already subscribed: ${channelId}`);\n return;\n }\n\n const subMsg = {\n op: 'subscribe',\n args: [{ channel, instId }],\n };\n\n if (this.connected) {\n this.ws.send(JSON.stringify(subMsg));\n console.info(formatTime(Date.now()), `📩 Sent subscribe for ${channelId}`);\n } else {\n this.pendingSub.push(JSON.stringify(subMsg));\n console.info(formatTime(Date.now()), `📩 add subscribe for ${channelId} to pending list`);\n }\n this.subscriptions.add(channelId);\n if (handler) {\n this.handlers[channelId] = handler;\n }\n }\n\n // 取消订阅\n unsubscribe(channel: string, instId?: string) {\n const channelId = encodePath(channel, instId);\n if (!this.subscriptions.has(channelId)) return;\n\n const unSubMsg = {\n op: 'unsubscribe',\n args: [{ channel, instId }],\n };\n\n this.ws.send(JSON.stringify(unSubMsg));\n this.subscriptions.delete(channelId);\n delete this.handlers[channelId];\n console.info(`📩 Sent unsubscribe for ${channelId}`);\n }\n}\n\nexport const okxBusinessWsClient = new OKXWsClient('wss://wspap.okx.com:8443/ws/v5/business');\n"]}
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@yuants/vendor-okx",
3
- "version": "0.16.9",
3
+ "version": "0.17.1",
4
+ "bin": "lib/cli.js",
4
5
  "files": [
5
- "dist/extension.bundle.js"
6
+ "dist",
7
+ "lib",
8
+ "temp"
6
9
  ],
7
10
  "dependencies": {
8
11
  "@yuants/protocol": "0.37.2",
@@ -18,7 +21,8 @@
18
21
  "@yuants/data-quote": "0.2.8",
19
22
  "@yuants/secret": "0.1.8",
20
23
  "rxjs": "~7.5.6",
21
- "crypto-js": "^4.2.0"
24
+ "crypto-js": "^4.2.0",
25
+ "ws": "~8.8.1"
22
26
  },
23
27
  "devDependencies": {
24
28
  "@microsoft/api-extractor": "~7.30.0",
@@ -30,7 +34,8 @@
30
34
  "@yuants/extension": "0.2.20",
31
35
  "@yuants/tool-kit": "0.1.10",
32
36
  "typescript": "~4.7.4",
33
- "ts-node": "~10.9.2"
37
+ "ts-node": "~10.9.2",
38
+ "@types/ws": "~8.5.3"
34
39
  },
35
40
  "publishConfig": {
36
41
  "registry": "https://registry.npmjs.org",
package/temp/image-tag ADDED
@@ -0,0 +1 @@
1
+ sha-8e0b6ef6a5e54de9f49b72355c2845da5cb055a5
@@ -0,0 +1,42 @@
1
+ {
2
+ "apps/vendor-okx/CHANGELOG.json": "065eafb1c1ec13c2d594c989bc205c94a874e9ce",
3
+ "apps/vendor-okx/CHANGELOG.md": "1d22611d9bf572cbd8f0f7f901dcb555b4a14192",
4
+ "apps/vendor-okx/README.md": "ac3d1f6c4c8d73066664699b0bb1b01db02e67a2",
5
+ "apps/vendor-okx/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
6
+ "apps/vendor-okx/build/Dockerfile": "e625b9593e496c343297c9ce133d6cc4be9617a7",
7
+ "apps/vendor-okx/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
8
+ "apps/vendor-okx/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
9
+ "apps/vendor-okx/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
10
+ "apps/vendor-okx/etc/vendor-okx.api.md": "92c54ccd547d2ad81ca6088158ca193e85c208df",
11
+ "apps/vendor-okx/package.json": "38623ab0fceb6799e6363732a5669cb9dd647648",
12
+ "apps/vendor-okx/src/account.ts": "ee25dbdc249b056856d64d3a67e654d8aa2dc53b",
13
+ "apps/vendor-okx/src/api.ts": "0433a359ec1fb84c866c1875b630cbb861696533",
14
+ "apps/vendor-okx/src/cli.ts": "9bf6b5559a6c6f33da20e74cc6c5d702c60ec891",
15
+ "apps/vendor-okx/src/cluster.ts": "9971d8d5e6af16e09d2d1fe5e9f05ccee87281e8",
16
+ "apps/vendor-okx/src/extension.ts": "e5c9bc791d3c4beade4c8a1854d1351ba3ddd3aa",
17
+ "apps/vendor-okx/src/index.ts": "6c9f8e299d58c3acdcf99d75f3173abba085f385",
18
+ "apps/vendor-okx/src/interest_rate.ts": "da173624ffed4cb083d797328174fe717809769c",
19
+ "apps/vendor-okx/src/legacy_index.ts": "19f9e4af4b6b8ae846e0800b1bd52d5eeaa8a2ce",
20
+ "apps/vendor-okx/src/logger.ts": "d25d427e74f46819a601e0cb17d5358b22c8db7b",
21
+ "apps/vendor-okx/src/ohlc.ts": "ffbe2feadd43befb925984fdc704d00527717e92",
22
+ "apps/vendor-okx/src/order.ts": "09509ae5af4b212cc1c99c55c436b3b0ce8bda33",
23
+ "apps/vendor-okx/src/product.ts": "a2e7feb86bc01fe3b1af6dcb9a9ebfba6be91434",
24
+ "apps/vendor-okx/src/quote.ts": "b8dd019e6cceb50e486a9d41e54385bda4e21ab0",
25
+ "apps/vendor-okx/src/websocket.ts": "7a22838b75247cdc3da90c8601100b6e8b34a350",
26
+ "apps/vendor-okx/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
27
+ "apps/vendor-okx/.rush/temp/shrinkwrap-deps.json": "87df045a10e829fd62d50013da30fd929442d54c",
28
+ "libraries/protocol/temp/package-deps.json": "d326f24867d9ae3fef16ff84ba537eabb7c8adf0",
29
+ "libraries/transfer/temp/package-deps.json": "cb2786055e5e79cd7d9d0f5787e300ca1c0bf002",
30
+ "libraries/data-account/temp/package-deps.json": "7fcf0ee1dd95c391d26c35e9c380a0fe3636c004",
31
+ "libraries/data-order/temp/package-deps.json": "58c4daa9bd7c6420bbf92efd003aa311ade858ae",
32
+ "libraries/utils/temp/package-deps.json": "c747617da1c0a40843603c62a7477da641ff0aef",
33
+ "libraries/sql/temp/package-deps.json": "1cb2248873d01ed732e8473f7b242a41f987fdd7",
34
+ "libraries/data-series/temp/package-deps.json": "3ba9330800ae3952ed7ba430526596a24d1e8eb7",
35
+ "libraries/data-product/temp/package-deps.json": "634e636d948295079b02dbeffb84f6d52872fda8",
36
+ "libraries/data-ohlc/temp/package-deps.json": "f05db3bced2139edafc9a3d2c647d0987f974ce7",
37
+ "libraries/data-interest-rate/temp/package-deps.json": "420702140b635d7fbbd0524108a827b12efde639",
38
+ "libraries/data-quote/temp/package-deps.json": "477aa425b15f7308c292c4d5d4d44e42e69765a3",
39
+ "libraries/secret/temp/package-deps.json": "892d858510fdede82540567f298604c7495d5793",
40
+ "libraries/extension/temp/package-deps.json": "96816518ae9dc050cafe0b8fbce95cbb59d06ee6",
41
+ "tools/toolkit/temp/package-deps.json": "eb0447c467da3a90db0913ed01e42ec0de840234"
42
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "metadata": {
3
+ "toolPackage": "@microsoft/api-extractor",
4
+ "toolVersion": "7.30.1",
5
+ "schemaVersion": 1009,
6
+ "oldestForwardsCompatibleVersion": 1001,
7
+ "tsdocConfig": {
8
+ "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
9
+ "noStandardTags": true,
10
+ "tagDefinitions": [
11
+ {
12
+ "tagName": "@alpha",
13
+ "syntaxKind": "modifier"
14
+ },
15
+ {
16
+ "tagName": "@beta",
17
+ "syntaxKind": "modifier"
18
+ },
19
+ {
20
+ "tagName": "@defaultValue",
21
+ "syntaxKind": "block"
22
+ },
23
+ {
24
+ "tagName": "@decorator",
25
+ "syntaxKind": "block",
26
+ "allowMultiple": true
27
+ },
28
+ {
29
+ "tagName": "@deprecated",
30
+ "syntaxKind": "block"
31
+ },
32
+ {
33
+ "tagName": "@eventProperty",
34
+ "syntaxKind": "modifier"
35
+ },
36
+ {
37
+ "tagName": "@example",
38
+ "syntaxKind": "block",
39
+ "allowMultiple": true
40
+ },
41
+ {
42
+ "tagName": "@experimental",
43
+ "syntaxKind": "modifier"
44
+ },
45
+ {
46
+ "tagName": "@inheritDoc",
47
+ "syntaxKind": "inline"
48
+ },
49
+ {
50
+ "tagName": "@internal",
51
+ "syntaxKind": "modifier"
52
+ },
53
+ {
54
+ "tagName": "@label",
55
+ "syntaxKind": "inline"
56
+ },
57
+ {
58
+ "tagName": "@link",
59
+ "syntaxKind": "inline",
60
+ "allowMultiple": true
61
+ },
62
+ {
63
+ "tagName": "@override",
64
+ "syntaxKind": "modifier"
65
+ },
66
+ {
67
+ "tagName": "@packageDocumentation",
68
+ "syntaxKind": "modifier"
69
+ },
70
+ {
71
+ "tagName": "@param",
72
+ "syntaxKind": "block",
73
+ "allowMultiple": true
74
+ },
75
+ {
76
+ "tagName": "@privateRemarks",
77
+ "syntaxKind": "block"
78
+ },
79
+ {
80
+ "tagName": "@public",
81
+ "syntaxKind": "modifier"
82
+ },
83
+ {
84
+ "tagName": "@readonly",
85
+ "syntaxKind": "modifier"
86
+ },
87
+ {
88
+ "tagName": "@remarks",
89
+ "syntaxKind": "block"
90
+ },
91
+ {
92
+ "tagName": "@returns",
93
+ "syntaxKind": "block"
94
+ },
95
+ {
96
+ "tagName": "@sealed",
97
+ "syntaxKind": "modifier"
98
+ },
99
+ {
100
+ "tagName": "@see",
101
+ "syntaxKind": "block"
102
+ },
103
+ {
104
+ "tagName": "@throws",
105
+ "syntaxKind": "block",
106
+ "allowMultiple": true
107
+ },
108
+ {
109
+ "tagName": "@typeParam",
110
+ "syntaxKind": "block",
111
+ "allowMultiple": true
112
+ },
113
+ {
114
+ "tagName": "@virtual",
115
+ "syntaxKind": "modifier"
116
+ },
117
+ {
118
+ "tagName": "@betaDocumentation",
119
+ "syntaxKind": "modifier"
120
+ },
121
+ {
122
+ "tagName": "@internalRemarks",
123
+ "syntaxKind": "block"
124
+ },
125
+ {
126
+ "tagName": "@preapproved",
127
+ "syntaxKind": "modifier"
128
+ }
129
+ ],
130
+ "supportForTags": {
131
+ "@alpha": true,
132
+ "@beta": true,
133
+ "@defaultValue": true,
134
+ "@decorator": true,
135
+ "@deprecated": true,
136
+ "@eventProperty": true,
137
+ "@example": true,
138
+ "@experimental": true,
139
+ "@inheritDoc": true,
140
+ "@internal": true,
141
+ "@label": true,
142
+ "@link": true,
143
+ "@override": true,
144
+ "@packageDocumentation": true,
145
+ "@param": true,
146
+ "@privateRemarks": true,
147
+ "@public": true,
148
+ "@readonly": true,
149
+ "@remarks": true,
150
+ "@returns": true,
151
+ "@sealed": true,
152
+ "@see": true,
153
+ "@throws": true,
154
+ "@typeParam": true,
155
+ "@virtual": true,
156
+ "@betaDocumentation": true,
157
+ "@internalRemarks": true,
158
+ "@preapproved": true
159
+ },
160
+ "reportUnsupportedHtmlElements": false
161
+ }
162
+ },
163
+ "kind": "Package",
164
+ "canonicalReference": "@yuants/vendor-okx!",
165
+ "docComment": "",
166
+ "name": "@yuants/vendor-okx",
167
+ "preserveMemberOrder": false,
168
+ "members": [
169
+ {
170
+ "kind": "EntryPoint",
171
+ "canonicalReference": "@yuants/vendor-okx!",
172
+ "name": "",
173
+ "preserveMemberOrder": false,
174
+ "members": []
175
+ }
176
+ ]
177
+ }
@@ -0,0 +1,9 @@
1
+ ## API Report File for "@yuants/vendor-okx"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ // (No @packageDocumentation comment for this package)
8
+
9
+ ```