@yuants/vendor-huobi 0.18.0 → 0.18.2

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.
@@ -107,5 +107,8 @@ provideOHLCService(terminal, {
107
107
  product_id_prefix: 'HTX/SPOT/',
108
108
  duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
109
109
  direction: 'backward',
110
- }, fetchSpotOHLCPageBackward);
110
+ }, fetchSpotOHLCPageBackward, {
111
+ egress_token_capacity: 4500,
112
+ egress_token_refill_interval: 300000,
113
+ });
111
114
  //# sourceMappingURL=ohlc-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n);\n"]}
1
+ {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n {\n egress_token_capacity: 4500,\n egress_token_refill_interval: 300_000,\n },\n);\n"]}
@@ -109,5 +109,8 @@ const fetchOHLCPageBackward = async (req) => {
109
109
  product_id_prefix: 'HTX/SPOT/',
110
110
  duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
111
111
  direction: 'backward',
112
- }, fetchSpotOHLCPageBackward);
112
+ }, fetchSpotOHLCPageBackward, {
113
+ egress_token_capacity: 4500,
114
+ egress_token_refill_interval: 300000,
115
+ });
113
116
  //# sourceMappingURL=ohlc-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n);\n"]}
1
+ {"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n {\n egress_token_capacity: 4500,\n egress_token_refill_interval: 300_000,\n },\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-huobi",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "main": "lib/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -8,19 +8,19 @@
8
8
  "temp"
9
9
  ],
10
10
  "dependencies": {
11
- "@yuants/protocol": "0.53.3",
12
- "@yuants/data-account": "0.11.0",
13
- "@yuants/data-order": "0.7.1",
14
- "@yuants/data-ohlc": "0.4.23",
15
- "@yuants/transfer": "0.2.40",
16
- "@yuants/utils": "0.15.0",
17
- "@yuants/cache": "0.3.4",
18
- "@yuants/sql": "0.9.31",
19
- "@yuants/data-product": "0.5.1",
20
- "@yuants/data-series": "0.3.53",
21
- "@yuants/data-interest-rate": "0.1.49",
22
- "@yuants/data-quote": "0.4.0",
23
- "@yuants/exchange": "0.8.1",
11
+ "@yuants/protocol": "0.53.5",
12
+ "@yuants/data-account": "0.11.2",
13
+ "@yuants/data-order": "0.7.3",
14
+ "@yuants/data-ohlc": "0.5.1",
15
+ "@yuants/transfer": "0.2.42",
16
+ "@yuants/utils": "0.17.0",
17
+ "@yuants/cache": "0.3.6",
18
+ "@yuants/sql": "0.9.33",
19
+ "@yuants/data-product": "0.5.3",
20
+ "@yuants/data-series": "0.3.55",
21
+ "@yuants/data-interest-rate": "0.2.1",
22
+ "@yuants/data-quote": "0.4.2",
23
+ "@yuants/exchange": "0.8.3",
24
24
  "rxjs": "~7.5.6"
25
25
  },
26
26
  "devDependencies": {
@@ -30,7 +30,7 @@
30
30
  "@rushstack/heft-node-rig": "~1.10.7",
31
31
  "@types/heft-jest": "1.0.3",
32
32
  "@types/node": "22",
33
- "@yuants/extension": "0.2.32",
33
+ "@yuants/extension": "0.2.34",
34
34
  "@yuants/tool-kit": "0.2.1",
35
35
  "typescript": "~4.7.4"
36
36
  },
@@ -1,13 +1,13 @@
1
1
  {
2
- "apps/vendor-huobi/CHANGELOG.json": "cc449b1206f6dd74c056ac5ff603ddb091b2ff99",
3
- "apps/vendor-huobi/CHANGELOG.md": "8580b1156a37a71ee722386e8da4bc529910ecf2",
2
+ "apps/vendor-huobi/CHANGELOG.json": "d73b95704681b5e91682c4304dcf9db81c5fcdb7",
3
+ "apps/vendor-huobi/CHANGELOG.md": "357a327c939469b5c1c8aa79534c8dc95d1d1aac",
4
4
  "apps/vendor-huobi/README.md": "d7bf0149513114eab5500a6b5c9e7cba10565572",
5
5
  "apps/vendor-huobi/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
6
6
  "apps/vendor-huobi/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
7
7
  "apps/vendor-huobi/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
8
8
  "apps/vendor-huobi/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
9
9
  "apps/vendor-huobi/etc/vendor-huobi.api.md": "dc8cbf2a044a227b30a4ee9701b0c97328244724",
10
- "apps/vendor-huobi/package.json": "aed15e4e773a5b3594db4ee19d52ebeb17a29001",
10
+ "apps/vendor-huobi/package.json": "8b59c9a85a4c0d637466ae1d77f3bec2c40d1b5c",
11
11
  "apps/vendor-huobi/src/__archived/account-info.ts": "5c325d3bb8839476c11f25693326ce05f3321ebd",
12
12
  "apps/vendor-huobi/src/__archived/api.ts": "8366151dc881b177d0478fb328a601a11e33cd35",
13
13
  "apps/vendor-huobi/src/__archived/transfer.ts": "fd299ad82ff31344460967f2a938b8f36c879259",
@@ -21,7 +21,7 @@
21
21
  "apps/vendor-huobi/src/services/interest-rate-service.ts": "3180227cd8fe336e187ad7a90bf3ce1bb7dfc7f7",
22
22
  "apps/vendor-huobi/src/services/market-data/interest_rate.ts": "79aa362f9fa90e612f9813d0b45d357b96189f3e",
23
23
  "apps/vendor-huobi/src/services/market-data/quote.ts": "2f5883a95b11cf19c1a9a595567f9369b360cccf",
24
- "apps/vendor-huobi/src/services/ohlc-service.ts": "b1588e4a3c754b8dd418017809b33adc03e34c5f",
24
+ "apps/vendor-huobi/src/services/ohlc-service.ts": "914f75705e0ad396b537e4b55334419206526160",
25
25
  "apps/vendor-huobi/src/services/orders/listOrders.ts": "1cf4621727fb290f8e5fd1439765fd73387bda7a",
26
26
  "apps/vendor-huobi/src/services/orders/submitOrder.ts": "c6b0625d4922d5188ef042893865e029f5123f24",
27
27
  "apps/vendor-huobi/src/services/product.ts": "096feb6e1348910242e814ca45848afa3b5bff98",
@@ -29,19 +29,19 @@
29
29
  "apps/vendor-huobi/src/services/uid.ts": "b71c27a6a0debdd9365dea35306f4763327aca2f",
30
30
  "apps/vendor-huobi/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
31
31
  "apps/vendor-huobi/.rush/temp/shrinkwrap-deps.json": "237a816d6e825b5bd2a0fc742f5d055c19e37d3d",
32
- "libraries/protocol/temp/package-deps.json": "c94931cb0eab7180d90a06d740c1a97c0ac0c6b6",
33
- "libraries/data-account/temp/package-deps.json": "d49586cd2fc2d6d025e585e5a5dd04d37c41263c",
34
- "libraries/data-order/temp/package-deps.json": "8aa3e27ff80629d417bfe920e85d8525fbb52f42",
35
- "libraries/data-ohlc/temp/package-deps.json": "8415ee90c49d7e84faaa2565cc1122fdacf73dab",
36
- "libraries/transfer/temp/package-deps.json": "7b0db8291734d10d4f1d9c2c25d9e3918cabc79e",
37
- "libraries/utils/temp/package-deps.json": "7f1eab07acae68df931b001594a522f050ace396",
38
- "libraries/cache/temp/package-deps.json": "e1f94620bc6245add32a4f9d379ed2901129d818",
39
- "libraries/sql/temp/package-deps.json": "041074e0102f9a01820c0fddcf82b9eaee226c79",
40
- "libraries/data-product/temp/package-deps.json": "899bba8ace3f04b2035488ff9059e40732ef1d97",
41
- "libraries/data-series/temp/package-deps.json": "a94e2f373c448a6205ee6c47e41d9283a76ee352",
42
- "libraries/data-interest-rate/temp/package-deps.json": "5a1011b097b18b96c2d8c932d874f69472621efd",
43
- "libraries/data-quote/temp/package-deps.json": "c2f009f818a503342bef588da21c9abd52beea00",
44
- "libraries/exchange/temp/package-deps.json": "0f0549ddf97292ceadb8c3cbcc8799e31e7a0901",
45
- "libraries/extension/temp/package-deps.json": "3e0a81b0c863c2daf342dfaf284b8fd7d18c8562",
32
+ "libraries/protocol/temp/package-deps.json": "359ac43a7382bafa1f91541e084256baec86d40b",
33
+ "libraries/data-account/temp/package-deps.json": "a94782e226c47a0f5198a5cca619ae7815055f4a",
34
+ "libraries/data-order/temp/package-deps.json": "e89dd8f11cdbe84eb8bdf474105abccdf51abfaa",
35
+ "libraries/data-ohlc/temp/package-deps.json": "919692801e80ce34e9af7470712ac4d1c0086af7",
36
+ "libraries/transfer/temp/package-deps.json": "266da813de0fc7b8de0acb4f1a561bd5cab7f294",
37
+ "libraries/utils/temp/package-deps.json": "acd039ba8f5f93e664764ad2c8474878bd105c3b",
38
+ "libraries/cache/temp/package-deps.json": "6f7f290f9a9c2e42e937d8ce3b55a6b541d2e835",
39
+ "libraries/sql/temp/package-deps.json": "43f7034c83d7ac4b6c4224b8e916ac39fd78057d",
40
+ "libraries/data-product/temp/package-deps.json": "00c23f21d7977f38a942ed06f4812e5ddc2b6248",
41
+ "libraries/data-series/temp/package-deps.json": "ba6b4e5b9beec9dbe54fcdc12820d8af70356d50",
42
+ "libraries/data-interest-rate/temp/package-deps.json": "5f955d9b9c04936964ba20a37d5e00816fb33f67",
43
+ "libraries/data-quote/temp/package-deps.json": "6ee7c2a4c28dd7947039fd9561ff045400848bde",
44
+ "libraries/exchange/temp/package-deps.json": "a254260f066adc3e196d020f7eae7354db045404",
45
+ "libraries/extension/temp/package-deps.json": "89c372a6eab7dfe766edc0b102492364aa8684fe",
46
46
  "tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
47
47
  }