@lightconexyz/lightcone-sdk 0.5.1 → 0.6.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.
- package/README.md +35 -5
- package/dist/client.d.ts +30 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +38 -0
- package/dist/client.js.map +1 -1
- package/dist/domain/admin/client.d.ts +10 -1
- package/dist/domain/admin/client.d.ts.map +1 -1
- package/dist/domain/admin/client.js +51 -0
- package/dist/domain/admin/client.js.map +1 -1
- package/dist/domain/admin/wire.d.ts +267 -7
- package/dist/domain/admin/wire.d.ts.map +1 -1
- package/dist/domain/admin/wire.js.map +1 -1
- package/dist/domain/faucet.d.ts +25 -0
- package/dist/domain/faucet.d.ts.map +1 -0
- package/dist/domain/faucet.js +3 -0
- package/dist/domain/faucet.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -1
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/market/client.d.ts +23 -2
- package/dist/domain/market/client.d.ts.map +1 -1
- package/dist/domain/market/client.js +30 -0
- package/dist/domain/market/client.js.map +1 -1
- package/dist/domain/market/convert.d.ts +10 -0
- package/dist/domain/market/convert.d.ts.map +1 -1
- package/dist/domain/market/convert.js +43 -4
- package/dist/domain/market/convert.js.map +1 -1
- package/dist/domain/market/icon.d.ts +17 -0
- package/dist/domain/market/icon.d.ts.map +1 -0
- package/dist/domain/market/icon.js +25 -0
- package/dist/domain/market/icon.js.map +1 -0
- package/dist/domain/market/index.d.ts +13 -4
- package/dist/domain/market/index.d.ts.map +1 -1
- package/dist/domain/market/index.js +3 -1
- package/dist/domain/market/index.js.map +1 -1
- package/dist/domain/market/outcome.d.ts +3 -1
- package/dist/domain/market/outcome.d.ts.map +1 -1
- package/dist/domain/market/outcome.js +7 -7
- package/dist/domain/market/outcome.js.map +1 -1
- package/dist/domain/market/tokens.d.ts +53 -3
- package/dist/domain/market/tokens.d.ts.map +1 -1
- package/dist/domain/market/tokens.js +99 -8
- package/dist/domain/market/tokens.js.map +1 -1
- package/dist/domain/market/wire.d.ts +46 -8
- package/dist/domain/market/wire.d.ts.map +1 -1
- package/dist/domain/market/wire.js.map +1 -1
- package/dist/domain/metrics/client.d.ts +66 -0
- package/dist/domain/metrics/client.d.ts.map +1 -0
- package/dist/domain/metrics/client.js +124 -0
- package/dist/domain/metrics/client.js.map +1 -0
- package/dist/domain/metrics/index.d.ts +3 -0
- package/dist/domain/metrics/index.d.ts.map +1 -0
- package/dist/domain/metrics/index.js +19 -0
- package/dist/domain/metrics/index.js.map +1 -0
- package/dist/domain/metrics/wire.d.ts +342 -0
- package/dist/domain/metrics/wire.d.ts.map +1 -0
- package/dist/domain/metrics/wire.js +3 -0
- package/dist/domain/metrics/wire.js.map +1 -0
- package/dist/domain/notification/client.d.ts +6 -0
- package/dist/domain/notification/client.d.ts.map +1 -1
- package/dist/domain/notification/client.js +10 -0
- package/dist/domain/notification/client.js.map +1 -1
- package/dist/domain/notification/index.d.ts +3 -1
- package/dist/domain/notification/index.d.ts.map +1 -1
- package/dist/domain/notification/index.js.map +1 -1
- package/dist/domain/order/client.d.ts +28 -2
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +76 -16
- package/dist/domain/order/client.js.map +1 -1
- package/dist/domain/order/convert.d.ts +5 -5
- package/dist/domain/order/convert.d.ts.map +1 -1
- package/dist/domain/order/convert.js +1 -1
- package/dist/domain/order/convert.js.map +1 -1
- package/dist/domain/order/index.d.ts +1 -1
- package/dist/domain/order/index.d.ts.map +1 -1
- package/dist/domain/order/index.js.map +1 -1
- package/dist/domain/order/state.d.ts +9 -7
- package/dist/domain/order/state.d.ts.map +1 -1
- package/dist/domain/order/state.js +81 -28
- package/dist/domain/order/state.js.map +1 -1
- package/dist/domain/orderbook/index.d.ts +1 -1
- package/dist/domain/orderbook/index.d.ts.map +1 -1
- package/dist/domain/orderbook/index.js +3 -8
- package/dist/domain/orderbook/index.js.map +1 -1
- package/dist/domain/orderbook/state.d.ts +44 -2
- package/dist/domain/orderbook/state.d.ts.map +1 -1
- package/dist/domain/orderbook/state.js +67 -4
- package/dist/domain/orderbook/state.js.map +1 -1
- package/dist/domain/orderbook/wire.d.ts +1 -0
- package/dist/domain/orderbook/wire.d.ts.map +1 -1
- package/dist/domain/orderbook/wire.js.map +1 -1
- package/dist/domain/position/client.d.ts +55 -0
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +71 -0
- package/dist/domain/position/client.js.map +1 -1
- package/dist/domain/position/index.d.ts +3 -2
- package/dist/domain/position/index.d.ts.map +1 -1
- package/dist/domain/position/index.js.map +1 -1
- package/dist/domain/price_history/client.d.ts +12 -1
- package/dist/domain/price_history/client.d.ts.map +1 -1
- package/dist/domain/price_history/client.js +14 -0
- package/dist/domain/price_history/client.js.map +1 -1
- package/dist/domain/price_history/wire.d.ts +27 -0
- package/dist/domain/price_history/wire.d.ts.map +1 -1
- package/dist/domain/price_history/wire.js.map +1 -1
- package/dist/domain/referral/client.d.ts +6 -0
- package/dist/domain/referral/client.d.ts.map +1 -1
- package/dist/domain/referral/client.js +22 -9
- package/dist/domain/referral/client.js.map +1 -1
- package/dist/domain/trade/convert.d.ts.map +1 -1
- package/dist/domain/trade/convert.js +5 -1
- package/dist/domain/trade/convert.js.map +1 -1
- package/dist/domain/trade/index.d.ts +4 -0
- package/dist/domain/trade/index.d.ts.map +1 -1
- package/dist/domain/trade/index.js.map +1 -1
- package/dist/domain/trade/state.d.ts +7 -0
- package/dist/domain/trade/state.d.ts.map +1 -1
- package/dist/domain/trade/state.js +36 -1
- package/dist/domain/trade/state.js.map +1 -1
- package/dist/domain/trade/wire.d.ts +3 -0
- package/dist/domain/trade/wire.d.ts.map +1 -1
- package/dist/domain/trade/wire.js.map +1 -1
- package/dist/http/client.d.ts +9 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +24 -9
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +13 -5
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js +5 -3
- package/dist/prelude.js.map +1 -1
- package/dist/shared/fmt/decimal.js +4 -4
- package/dist/shared/fmt/decimal.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +2 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/types.d.ts +5 -2
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +21 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/ws/index.d.ts +12 -1
- package/dist/ws/index.d.ts.map +1 -1
- package/dist/ws/index.js +20 -0
- package/dist/ws/index.js.map +1 -1
- package/dist/ws/subscriptions.d.ts +6 -0
- package/dist/ws/subscriptions.d.ts.map +1 -1
- package/dist/ws/subscriptions.js +4 -0
- package/dist/ws/subscriptions.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Resolution } from "../../shared";
|
|
2
2
|
import { type LightconeHttp } from "../../http";
|
|
3
|
-
import type { DepositTokenPriceHistoryResponse, OrderbookPriceHistoryResponse } from "./wire";
|
|
3
|
+
import type { DepositAssetPricesSnapshotResponse, DepositTokenPriceHistoryResponse, OrderbookPriceHistoryResponse } from "./wire";
|
|
4
4
|
interface ClientContext {
|
|
5
5
|
http: LightconeHttp;
|
|
6
6
|
}
|
|
@@ -26,6 +26,17 @@ export declare class PriceHistoryClient {
|
|
|
26
26
|
get(orderbookId: string, query?: OrderbookPriceHistoryQuery): Promise<OrderbookPriceHistoryResponse>;
|
|
27
27
|
getDepositAsset(depositAsset: string, resolution?: Resolution, from?: number, to?: number, cursor?: number, limit?: number): Promise<DepositTokenPriceHistoryResponse>;
|
|
28
28
|
getDepositAsset(depositAsset: string, query?: DepositPriceHistoryQuery): Promise<DepositTokenPriceHistoryResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* Snapshot of current prices for every active mint in `global_deposit_tokens`.
|
|
31
|
+
*
|
|
32
|
+
* No params. Returns a map of mint -> price (Decimal-as-string). The
|
|
33
|
+
* backend prefers the live tick from `deposit_token_prices` and falls
|
|
34
|
+
* back to the most recent 1m candle close. Assets with neither are
|
|
35
|
+
* silently absent.
|
|
36
|
+
*
|
|
37
|
+
* For live updates, subscribe via `subscribeDepositAssetPrice` per asset.
|
|
38
|
+
*/
|
|
39
|
+
getDepositAssetPricesSnapshot(): Promise<DepositAssetPricesSnapshotResponse>;
|
|
29
40
|
getLineData(orderbookId: string, resolution?: Resolution, from?: number, to?: number, cursor?: number, limit?: number): Promise<{
|
|
30
41
|
time: number;
|
|
31
42
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC;IAEnC,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,6BAA6B,CAAC;IAkCnC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gCAAgC,CAAC;IAEtC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC;IAEnC,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,6BAA6B,CAAC;IAkCnC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gCAAgC,CAAC;IAEtC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAsC5C;;;;;;;;;OASG;IACG,6BAA6B,IAAI,OAAO,CAAC,kCAAkC,CAAC;IAK5E,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,UAA+B,EAC3C,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAc9C"}
|
|
@@ -55,6 +55,20 @@ class PriceHistoryClient {
|
|
|
55
55
|
const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;
|
|
56
56
|
return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Snapshot of current prices for every active mint in `global_deposit_tokens`.
|
|
60
|
+
*
|
|
61
|
+
* No params. Returns a map of mint -> price (Decimal-as-string). The
|
|
62
|
+
* backend prefers the live tick from `deposit_token_prices` and falls
|
|
63
|
+
* back to the most recent 1m candle close. Assets with neither are
|
|
64
|
+
* silently absent.
|
|
65
|
+
*
|
|
66
|
+
* For live updates, subscribe via `subscribeDepositAssetPrice` per asset.
|
|
67
|
+
*/
|
|
68
|
+
async getDepositAssetPricesSnapshot() {
|
|
69
|
+
const url = `${this.client.http.baseUrl()}/api/deposit-asset-prices-snapshot`;
|
|
70
|
+
return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
71
|
+
}
|
|
58
72
|
async getLineData(orderbookId, resolution = shared_1.Resolution.Minute1, from, to, cursor, limit) {
|
|
59
73
|
const response = await this.get(orderbookId, {
|
|
60
74
|
resolution,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { SdkError } from \"../../error\";\nimport { Resolution } from \"../../shared\";\nimport { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type {\n DepositTokenPriceHistoryResponse,\n OrderbookPriceHistoryResponse,\n PriceCandle,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport interface OrderbookPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n includeOhlcv?: boolean;\n}\n\nexport interface DepositPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n}\n\nexport class PriceHistoryClient {\n constructor(private readonly client: ClientContext) {}\n\n async get(\n orderbookId: string,\n resolution?: Resolution,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse>;\n\n async get(\n orderbookId: string,\n query?: OrderbookPriceHistoryQuery\n ): Promise<OrderbookPriceHistoryResponse>;\n\n // `from`/`to` are Unix timestamps in milliseconds.\n async get(\n orderbookId: string,\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse> {\n const query = normalizeOrderbookPriceHistoryQuery(resolutionOrQuery, from, to);\n const params = new URLSearchParams({\n orderbook_id: orderbookId,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n if (query.includeOhlcv !== undefined) {\n params.set(\"include_ohlcv\", String(query.includeOhlcv));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<OrderbookPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getDepositAsset(\n depositAsset: string,\n resolution?: Resolution,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n query?: DepositPriceHistoryQuery\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse> {\n const query = normalizeDepositPriceHistoryQuery(\n resolutionOrQuery,\n from,\n to,\n cursor,\n limit\n );\n const params = new URLSearchParams({\n deposit_asset: depositAsset,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<DepositTokenPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getLineData(\n orderbookId: string,\n resolution: Resolution = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<{ time: number; value: string }[]> {\n const response = await this.get(orderbookId, {\n resolution,\n from,\n to,\n cursor,\n limit,\n includeOhlcv: false,\n });\n return response.prices.map((c: PriceCandle) => ({\n time: c.t,\n value: c.m ?? \"\",\n }));\n }\n}\n\nfunction normalizeOrderbookPriceHistoryQuery(\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery,\n from?: number,\n to?: number\n): Required<Pick<OrderbookPriceHistoryQuery, \"resolution\">> & Omit<OrderbookPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n includeOhlcv: resolutionOrQuery.includeOhlcv,\n };\n}\n\nfunction normalizeDepositPriceHistoryQuery(\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n): Required<Pick<DepositPriceHistoryQuery, \"resolution\">> & Omit<DepositPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n cursor,\n limit,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n };\n}\n\nfunction ensureUnixMilliseconds(name: string, value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n throw SdkError.validation(`${name} must be a non-negative Unix timestamp in milliseconds`);\n }\n if (value < 10_000_000_000) {\n throw SdkError.validation(`${name} must be a Unix timestamp in milliseconds, not seconds`);\n }\n return value;\n}\n\nfunction ensurePageLimit(value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 1 || value > 1_000) {\n throw SdkError.validation(\"limit must be an integer between 1 and 1000\");\n }\n return value;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { SdkError } from \"../../error\";\nimport { Resolution } from \"../../shared\";\nimport { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type {\n DepositAssetPricesSnapshotResponse,\n DepositTokenPriceHistoryResponse,\n OrderbookPriceHistoryResponse,\n PriceCandle,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport interface OrderbookPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n includeOhlcv?: boolean;\n}\n\nexport interface DepositPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n}\n\nexport class PriceHistoryClient {\n constructor(private readonly client: ClientContext) {}\n\n async get(\n orderbookId: string,\n resolution?: Resolution,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse>;\n\n async get(\n orderbookId: string,\n query?: OrderbookPriceHistoryQuery\n ): Promise<OrderbookPriceHistoryResponse>;\n\n // `from`/`to` are Unix timestamps in milliseconds.\n async get(\n orderbookId: string,\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse> {\n const query = normalizeOrderbookPriceHistoryQuery(resolutionOrQuery, from, to);\n const params = new URLSearchParams({\n orderbook_id: orderbookId,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n if (query.includeOhlcv !== undefined) {\n params.set(\"include_ohlcv\", String(query.includeOhlcv));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<OrderbookPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getDepositAsset(\n depositAsset: string,\n resolution?: Resolution,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n query?: DepositPriceHistoryQuery\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse> {\n const query = normalizeDepositPriceHistoryQuery(\n resolutionOrQuery,\n from,\n to,\n cursor,\n limit\n );\n const params = new URLSearchParams({\n deposit_asset: depositAsset,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<DepositTokenPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Snapshot of current prices for every active mint in `global_deposit_tokens`.\n *\n * No params. Returns a map of mint -> price (Decimal-as-string). The\n * backend prefers the live tick from `deposit_token_prices` and falls\n * back to the most recent 1m candle close. Assets with neither are\n * silently absent.\n *\n * For live updates, subscribe via `subscribeDepositAssetPrice` per asset.\n */\n async getDepositAssetPricesSnapshot(): Promise<DepositAssetPricesSnapshotResponse> {\n const url = `${this.client.http.baseUrl()}/api/deposit-asset-prices-snapshot`;\n return this.client.http.get<DepositAssetPricesSnapshotResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getLineData(\n orderbookId: string,\n resolution: Resolution = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<{ time: number; value: string }[]> {\n const response = await this.get(orderbookId, {\n resolution,\n from,\n to,\n cursor,\n limit,\n includeOhlcv: false,\n });\n return response.prices.map((c: PriceCandle) => ({\n time: c.t,\n value: c.m ?? \"\",\n }));\n }\n}\n\nfunction normalizeOrderbookPriceHistoryQuery(\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery,\n from?: number,\n to?: number\n): Required<Pick<OrderbookPriceHistoryQuery, \"resolution\">> & Omit<OrderbookPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n includeOhlcv: resolutionOrQuery.includeOhlcv,\n };\n}\n\nfunction normalizeDepositPriceHistoryQuery(\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n): Required<Pick<DepositPriceHistoryQuery, \"resolution\">> & Omit<DepositPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n cursor,\n limit,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n };\n}\n\nfunction ensureUnixMilliseconds(name: string, value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n throw SdkError.validation(`${name} must be a non-negative Unix timestamp in milliseconds`);\n }\n if (value < 10_000_000_000) {\n throw SdkError.validation(`${name} must be a Unix timestamp in milliseconds, not seconds`);\n }\n return value;\n}\n\nfunction ensurePageLimit(value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 1 || value > 1_000) {\n throw SdkError.validation(\"limit must be an integer between 1 and 1000\");\n }\n return value;\n}\n"]}
|
|
@@ -50,18 +50,21 @@ export interface DepositTokenCandle {
|
|
|
50
50
|
tc: number;
|
|
51
51
|
c: string;
|
|
52
52
|
}
|
|
53
|
+
/** Initial batch of historical candles sent on subscription. */
|
|
53
54
|
export interface DepositPriceSnapshot {
|
|
54
55
|
event_type: "snapshot";
|
|
55
56
|
deposit_asset: string;
|
|
56
57
|
resolution: Resolution;
|
|
57
58
|
prices: DepositTokenCandle[];
|
|
58
59
|
}
|
|
60
|
+
/** Real-time spot price tick, broadcast to all resolutions. */
|
|
59
61
|
export interface DepositPriceTick {
|
|
60
62
|
event_type: "price";
|
|
61
63
|
deposit_asset: string;
|
|
62
64
|
price: string;
|
|
63
65
|
event_time: number;
|
|
64
66
|
}
|
|
67
|
+
/** A single candle update for a specific resolution (e.g. a 1m candle closed). */
|
|
65
68
|
export interface DepositPriceCandleUpdate {
|
|
66
69
|
event_type: "candle";
|
|
67
70
|
deposit_asset: string;
|
|
@@ -96,5 +99,29 @@ export interface DepositTokenPriceHistoryResponse {
|
|
|
96
99
|
next_cursor: number | null;
|
|
97
100
|
has_more: boolean;
|
|
98
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* REST response for `GET /api/deposit-asset-prices-snapshot`.
|
|
104
|
+
*
|
|
105
|
+
* Map of mint -> latest price (Decimal-as-string). Covers every active mint
|
|
106
|
+
* in `global_deposit_tokens` with a row in `deposit_token_prices` (live tick)
|
|
107
|
+
* or a recent 1m candle close (fallback). Mints with neither are absent.
|
|
108
|
+
*/
|
|
109
|
+
export interface DepositAssetPricesSnapshotResponse {
|
|
110
|
+
prices: Record<string, string>;
|
|
111
|
+
}
|
|
112
|
+
/** Snapshot payload sent on subscribe to `deposit_asset_price` for one asset. */
|
|
113
|
+
export interface DepositAssetPriceSnapshot {
|
|
114
|
+
event_type: "snapshot";
|
|
115
|
+
deposit_asset: string;
|
|
116
|
+
price: string;
|
|
117
|
+
}
|
|
118
|
+
/** Live price tick for one deposit asset. */
|
|
119
|
+
export interface DepositAssetPriceTick {
|
|
120
|
+
event_type: "price";
|
|
121
|
+
deposit_asset: string;
|
|
122
|
+
price: string;
|
|
123
|
+
event_time: number;
|
|
124
|
+
}
|
|
125
|
+
export type DepositAssetPriceEvent = DepositAssetPriceSnapshot | DepositAssetPriceTick;
|
|
99
126
|
export {};
|
|
100
127
|
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GACpB,CAAC;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,oBAAoB,CAAC,GACnD,CAAC;IAAE,UAAU,EAAE,QAAQ,CAAA;CAAE,GAAG,kBAAkB,CAAC,GAC/C,CAAC;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,qBAAqB,CAAC,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,QAAQ,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,wBAAwB,CAAC;AAE7B,UAAU,iCAAiC,CAAC,OAAO,SAAS,WAAW;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,GAAG;IAAE,aAAa,EAAE,KAAK,CAAA;CAAE,CAAC,GACnF,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,GAAG;IAAE,aAAa,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAEpF,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,CAAC;AAErE,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAC9B,yBAAyB,GACzB,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Resolution } from \"../../shared\";\n\nexport interface MidpointPriceCandle {\n t: number;\n m: string | null;\n}\n\nexport interface OhlcvPriceCandle extends MidpointPriceCandle {\n o: string | null;\n h: string | null;\n l: string | null;\n c: string | null;\n v: string;\n bb: string | null;\n ba: string | null;\n}\n\nexport type PriceCandle = MidpointPriceCandle | OhlcvPriceCandle;\n\nexport interface PriceHistorySnapshot {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n prices: PriceCandle[];\n last_timestamp?: number;\n server_time?: number;\n include_ohlcv?: boolean;\n}\n\nexport interface PriceHistoryUpdate {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n t: number;\n m?: string;\n o?: string;\n h?: string;\n l?: string;\n c?: string;\n v?: string;\n bb?: string;\n ba?: string;\n}\n\nexport interface PriceHistoryHeartbeat {\n server_time: number;\n last_processed?: number;\n}\n\nexport type PriceHistory =\n | ({ event_type: \"snapshot\" } & PriceHistorySnapshot)\n | ({ event_type: \"update\" } & PriceHistoryUpdate)\n | ({ event_type: \"heartbeat\" } & PriceHistoryHeartbeat);\n\nexport interface DepositTokenCandle {\n t: number;\n tc: number;\n c: string;\n}\n\nexport interface DepositPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n}\n\nexport interface DepositPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\nexport interface DepositPriceCandleUpdate {\n event_type: \"candle\";\n deposit_asset: string;\n resolution: Resolution;\n t: number;\n tc: number;\n c: string;\n}\n\nexport type DepositPrice =\n | DepositPriceSnapshot\n | DepositPriceTick\n | DepositPriceCandleUpdate;\n\ninterface OrderbookPriceHistoryResponseBase<TCandle extends PriceCandle> {\n orderbook_id: string;\n resolution: Resolution;\n prices: TCandle[];\n next_cursor: number | null;\n has_more: boolean;\n decimals: { price: number; volume: number };\n}\n\nexport type OrderbookPriceHistoryResponse =\n | (OrderbookPriceHistoryResponseBase<MidpointPriceCandle> & { include_ohlcv: false })\n | (OrderbookPriceHistoryResponseBase<OhlcvPriceCandle> & { include_ohlcv: true });\n\nexport type PriceHistoryRestResponse = OrderbookPriceHistoryResponse;\n\nexport interface DepositTokenPriceHistoryResponse {\n deposit_asset: string;\n binance_symbol: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n next_cursor: number | null;\n has_more: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Resolution } from \"../../shared\";\n\nexport interface MidpointPriceCandle {\n t: number;\n m: string | null;\n}\n\nexport interface OhlcvPriceCandle extends MidpointPriceCandle {\n o: string | null;\n h: string | null;\n l: string | null;\n c: string | null;\n v: string;\n bb: string | null;\n ba: string | null;\n}\n\nexport type PriceCandle = MidpointPriceCandle | OhlcvPriceCandle;\n\nexport interface PriceHistorySnapshot {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n prices: PriceCandle[];\n last_timestamp?: number;\n server_time?: number;\n include_ohlcv?: boolean;\n}\n\nexport interface PriceHistoryUpdate {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n t: number;\n m?: string;\n o?: string;\n h?: string;\n l?: string;\n c?: string;\n v?: string;\n bb?: string;\n ba?: string;\n}\n\nexport interface PriceHistoryHeartbeat {\n server_time: number;\n last_processed?: number;\n}\n\nexport type PriceHistory =\n | ({ event_type: \"snapshot\" } & PriceHistorySnapshot)\n | ({ event_type: \"update\" } & PriceHistoryUpdate)\n | ({ event_type: \"heartbeat\" } & PriceHistoryHeartbeat);\n\nexport interface DepositTokenCandle {\n t: number;\n tc: number;\n c: string;\n}\n\n/** Initial batch of historical candles sent on subscription. */\nexport interface DepositPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n}\n\n/** Real-time spot price tick, broadcast to all resolutions. */\nexport interface DepositPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\n/** A single candle update for a specific resolution (e.g. a 1m candle closed). */\nexport interface DepositPriceCandleUpdate {\n event_type: \"candle\";\n deposit_asset: string;\n resolution: Resolution;\n t: number;\n tc: number;\n c: string;\n}\n\nexport type DepositPrice =\n | DepositPriceSnapshot\n | DepositPriceTick\n | DepositPriceCandleUpdate;\n\ninterface OrderbookPriceHistoryResponseBase<TCandle extends PriceCandle> {\n orderbook_id: string;\n resolution: Resolution;\n prices: TCandle[];\n next_cursor: number | null;\n has_more: boolean;\n decimals: { price: number; volume: number };\n}\n\nexport type OrderbookPriceHistoryResponse =\n | (OrderbookPriceHistoryResponseBase<MidpointPriceCandle> & { include_ohlcv: false })\n | (OrderbookPriceHistoryResponseBase<OhlcvPriceCandle> & { include_ohlcv: true });\n\nexport type PriceHistoryRestResponse = OrderbookPriceHistoryResponse;\n\nexport interface DepositTokenPriceHistoryResponse {\n deposit_asset: string;\n binance_symbol: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n next_cursor: number | null;\n has_more: boolean;\n}\n\n/**\n * REST response for `GET /api/deposit-asset-prices-snapshot`.\n *\n * Map of mint -> latest price (Decimal-as-string). Covers every active mint\n * in `global_deposit_tokens` with a row in `deposit_token_prices` (live tick)\n * or a recent 1m candle close (fallback). Mints with neither are absent.\n */\nexport interface DepositAssetPricesSnapshotResponse {\n prices: Record<string, string>;\n}\n\n/** Snapshot payload sent on subscribe to `deposit_asset_price` for one asset. */\nexport interface DepositAssetPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n price: string;\n}\n\n/** Live price tick for one deposit asset. */\nexport interface DepositAssetPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\nexport type DepositAssetPriceEvent =\n | DepositAssetPriceSnapshot\n | DepositAssetPriceTick;\n"]}
|
|
@@ -7,6 +7,12 @@ export declare class Referrals {
|
|
|
7
7
|
private readonly client;
|
|
8
8
|
constructor(client: ClientContext);
|
|
9
9
|
getStatus(): Promise<ReferralStatus>;
|
|
10
|
+
/**
|
|
11
|
+
* Same as {@link getStatus}, but uses the supplied `authToken` for this
|
|
12
|
+
* call instead of the SDK's process-wide cookie store. For server-side
|
|
13
|
+
* cookie forwarding (SSR / route handlers).
|
|
14
|
+
*/
|
|
15
|
+
getStatusWithAuth(authToken: string): Promise<ReferralStatus>;
|
|
10
16
|
redeem(code: string): Promise<RedeemResult>;
|
|
11
17
|
}
|
|
12
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG5D,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG5D,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAM1C;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAclD"}
|
|
@@ -10,15 +10,17 @@ class Referrals {
|
|
|
10
10
|
async getStatus() {
|
|
11
11
|
const url = `${this.client.http.baseUrl()}/api/referral/status`;
|
|
12
12
|
const response = await this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
13
|
+
return referralStatusFromWire(response);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Same as {@link getStatus}, but uses the supplied `authToken` for this
|
|
17
|
+
* call instead of the SDK's process-wide cookie store. For server-side
|
|
18
|
+
* cookie forwarding (SSR / route handlers).
|
|
19
|
+
*/
|
|
20
|
+
async getStatusWithAuth(authToken) {
|
|
21
|
+
const url = `${this.client.http.baseUrl()}/api/referral/status`;
|
|
22
|
+
const response = await this.client.http.getWithAuth(url, http_1.RetryPolicy.Idempotent, authToken);
|
|
23
|
+
return referralStatusFromWire(response);
|
|
22
24
|
}
|
|
23
25
|
async redeem(code) {
|
|
24
26
|
const url = `${this.client.http.baseUrl()}/api/referral/redeem`;
|
|
@@ -31,4 +33,15 @@ class Referrals {
|
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
exports.Referrals = Referrals;
|
|
36
|
+
function referralStatusFromWire(response) {
|
|
37
|
+
return {
|
|
38
|
+
isBeta: response.is_beta,
|
|
39
|
+
source: response.source,
|
|
40
|
+
referralCodes: response.referral_codes.map((code) => ({
|
|
41
|
+
code: code.code,
|
|
42
|
+
maxUses: code.max_uses,
|
|
43
|
+
useCount: code.use_count,
|
|
44
|
+
})),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
34
47
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAQ7D,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAQ7D,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;QACjG,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CACjD,GAAG,EACH,kBAAW,CAAC,UAAU,EACtB,SAAS,CACV,CAAC;QACF,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,IAAI,GAAkB,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1C,GAAG,EACH,IAAI,EACJ,kBAAW,CAAC,IAAI,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,QAAQ,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;CACF;AAtCD,8BAsCC;AAED,SAAS,sBAAsB,CAAC,QAAgC;IAC9D,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,OAAO;QACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC","sourcesContent":["import { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type { RedeemResult, ReferralStatus } from \"./index\";\nimport type { RedeemRequest, RedeemResponse, ReferralStatusResponse } from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport class Referrals {\n constructor(private readonly client: ClientContext) {}\n\n async getStatus(): Promise<ReferralStatus> {\n const url = `${this.client.http.baseUrl()}/api/referral/status`;\n const response = await this.client.http.get<ReferralStatusResponse>(url, RetryPolicy.Idempotent);\n return referralStatusFromWire(response);\n }\n\n /**\n * Same as {@link getStatus}, but uses the supplied `authToken` for this\n * call instead of the SDK's process-wide cookie store. For server-side\n * cookie forwarding (SSR / route handlers).\n */\n async getStatusWithAuth(authToken: string): Promise<ReferralStatus> {\n const url = `${this.client.http.baseUrl()}/api/referral/status`;\n const response = await this.client.http.getWithAuth<ReferralStatusResponse>(\n url,\n RetryPolicy.Idempotent,\n authToken,\n );\n return referralStatusFromWire(response);\n }\n\n async redeem(code: string): Promise<RedeemResult> {\n const url = `${this.client.http.baseUrl()}/api/referral/redeem`;\n const body: RedeemRequest = { code };\n const response = await this.client.http.post<RedeemResponse, RedeemRequest>(\n url,\n body,\n RetryPolicy.None\n );\n\n return {\n success: response.success,\n isBeta: response.is_beta,\n };\n }\n}\n\nfunction referralStatusFromWire(response: ReferralStatusResponse): ReferralStatus {\n return {\n isBeta: response.is_beta,\n source: response.source,\n referralCodes: response.referral_codes.map((code) => ({\n code: code.code,\n maxUses: code.max_uses,\n useCount: code.use_count,\n })),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAW9D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,CAWlD"}
|
|
@@ -5,21 +5,25 @@ exports.tradeFromWs = tradeFromWs;
|
|
|
5
5
|
function tradeFromResponse(source) {
|
|
6
6
|
return {
|
|
7
7
|
orderbookId: source.orderbook_id,
|
|
8
|
-
tradeId:
|
|
8
|
+
tradeId: source.trade_id,
|
|
9
|
+
cursorId: source.id,
|
|
9
10
|
timestamp: new Date(source.executed_at),
|
|
10
11
|
price: source.price,
|
|
11
12
|
size: source.size,
|
|
12
13
|
side: source.side,
|
|
14
|
+
sequence: 0,
|
|
13
15
|
};
|
|
14
16
|
}
|
|
15
17
|
function tradeFromWs(source) {
|
|
16
18
|
return {
|
|
17
19
|
orderbookId: source.orderbook_id,
|
|
18
20
|
tradeId: source.trade_id,
|
|
21
|
+
cursorId: undefined,
|
|
19
22
|
timestamp: new Date(source.timestamp),
|
|
20
23
|
price: source.price,
|
|
21
24
|
size: source.size,
|
|
22
25
|
side: source.side,
|
|
26
|
+
sequence: source.sequence,
|
|
23
27
|
};
|
|
24
28
|
}
|
|
25
29
|
//# sourceMappingURL=convert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/domain/trade/convert.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/domain/trade/convert.ts"],"names":[],"mappings":";;AAGA,8CAWC;AAED,kCAWC;AAxBD,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,MAAe;IACzC,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC","sourcesContent":["import type { Trade } from \"./index\";\nimport type { TradeResponse, WsTrade } from \"./wire\";\n\nexport function tradeFromResponse(source: TradeResponse): Trade {\n return {\n orderbookId: source.orderbook_id,\n tradeId: source.trade_id,\n cursorId: source.id,\n timestamp: new Date(source.executed_at),\n price: source.price,\n size: source.size,\n side: source.side,\n sequence: 0,\n };\n}\n\nexport function tradeFromWs(source: WsTrade): Trade {\n return {\n orderbookId: source.orderbook_id,\n tradeId: source.trade_id,\n cursorId: undefined,\n timestamp: new Date(source.timestamp),\n price: source.price,\n size: source.size,\n side: source.side,\n sequence: source.sequence,\n };\n}\n"]}
|
|
@@ -6,10 +6,14 @@ export { tradeFromResponse, tradeFromWs } from "./convert";
|
|
|
6
6
|
export interface Trade {
|
|
7
7
|
orderbookId: OrderBookId;
|
|
8
8
|
tradeId: string;
|
|
9
|
+
/** Numeric REST row id used for cursor pagination. Undefined on WS trades. */
|
|
10
|
+
cursorId?: number;
|
|
9
11
|
timestamp: Date;
|
|
10
12
|
price: string;
|
|
11
13
|
size: string;
|
|
12
14
|
side: Side;
|
|
15
|
+
/** Monotonic sequence number per orderbook for ordering guarantees. 0 for REST trades. */
|
|
16
|
+
sequence: number;
|
|
13
17
|
}
|
|
14
18
|
export interface TradesPage {
|
|
15
19
|
trades: Trade[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtD,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtD,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/trade/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,qCAA2D;AAAlD,4GAAA,iBAAiB,OAAA;AAAE,sGAAA,WAAW,OAAA","sourcesContent":["import type { OrderBookId, Side } from \"../../shared\";\n\nexport * from \"./client\";\nexport * from \"./wire\";\nexport * from \"./state\";\nexport { tradeFromResponse, tradeFromWs } from \"./convert\";\n\nexport interface Trade {\n orderbookId: OrderBookId;\n tradeId: string;\n timestamp: Date;\n price: string;\n size: string;\n side: Side;\n}\n\nexport interface TradesPage {\n trades: Trade[];\n nextCursor?: number;\n hasMore: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/trade/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,qCAA2D;AAAlD,4GAAA,iBAAiB,OAAA;AAAE,sGAAA,WAAW,OAAA","sourcesContent":["import type { OrderBookId, Side } from \"../../shared\";\n\nexport * from \"./client\";\nexport * from \"./wire\";\nexport * from \"./state\";\nexport { tradeFromResponse, tradeFromWs } from \"./convert\";\n\nexport interface Trade {\n orderbookId: OrderBookId;\n tradeId: string;\n /** Numeric REST row id used for cursor pagination. Undefined on WS trades. */\n cursorId?: number;\n timestamp: Date;\n price: string;\n size: string;\n side: Side;\n /** Monotonic sequence number per orderbook for ordering guarantees. 0 for REST trades. */\n sequence: number;\n}\n\nexport interface TradesPage {\n trades: Trade[];\n nextCursor?: number;\n hasMore: boolean;\n}\n"]}
|
|
@@ -5,6 +5,13 @@ export declare class TradeHistory {
|
|
|
5
5
|
private readonly maxSize;
|
|
6
6
|
private readonly buffer;
|
|
7
7
|
constructor(orderbookId: OrderBookId, maxSize: number);
|
|
8
|
+
/**
|
|
9
|
+
* Insert a trade in descending sequence order.
|
|
10
|
+
*
|
|
11
|
+
* Trades with `sequence > 0` are placed at the correct position so the
|
|
12
|
+
* buffer stays sorted newest-first. Trades with `sequence === 0` (REST)
|
|
13
|
+
* are prepended.
|
|
14
|
+
*/
|
|
8
15
|
push(trade: Trade): void;
|
|
9
16
|
replace(trades: Trade[]): void;
|
|
10
17
|
trades(): readonly Trade[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,qBAAa,YAAY;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;IAMrD,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,qBAAa,YAAY;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;IAMrD;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoCxB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAK9B,MAAM,IAAI,SAAS,KAAK,EAAE;IAI1B,MAAM,IAAI,KAAK,GAAG,SAAS;IAI3B,KAAK,IAAI,IAAI;IAIb,GAAG,IAAI,MAAM;IAIb,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -10,9 +10,44 @@ class TradeHistory {
|
|
|
10
10
|
this.maxSize = maxSize;
|
|
11
11
|
this.buffer = [];
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Insert a trade in descending sequence order.
|
|
15
|
+
*
|
|
16
|
+
* Trades with `sequence > 0` are placed at the correct position so the
|
|
17
|
+
* buffer stays sorted newest-first. Trades with `sequence === 0` (REST)
|
|
18
|
+
* are prepended.
|
|
19
|
+
*/
|
|
13
20
|
push(trade) {
|
|
14
|
-
|
|
21
|
+
// Treat a zero-capacity history as disabled.
|
|
22
|
+
if (this.maxSize === 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (trade.sequence === 0) {
|
|
26
|
+
// REST trades do not carry ordering metadata, so preserve the legacy
|
|
27
|
+
// "latest first" behavior and let normal capacity eviction apply.
|
|
28
|
+
this.buffer.unshift(trade);
|
|
29
|
+
if (this.buffer.length > this.maxSize) {
|
|
30
|
+
this.buffer.pop();
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Find the first retained trade that is older than the incoming sequence.
|
|
35
|
+
// Inserting there keeps the buffer sorted newest-first.
|
|
36
|
+
const position = this.buffer.findIndex((existing) => existing.sequence < trade.sequence);
|
|
37
|
+
if (this.buffer.length >= this.maxSize && position === -1) {
|
|
38
|
+
// The buffer is full and the new trade is older than everything we
|
|
39
|
+
// already keep, so dropping it preserves the newest retained window.
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (position === -1) {
|
|
43
|
+
this.buffer.push(trade);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.buffer.splice(position, 0, trade);
|
|
47
|
+
}
|
|
15
48
|
if (this.buffer.length > this.maxSize) {
|
|
49
|
+
// The new trade landed inside the retained window, so evict the oldest
|
|
50
|
+
// trade at the tail to restore capacity.
|
|
16
51
|
this.buffer.pop();
|
|
17
52
|
}
|
|
18
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/domain/trade/state.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IACd,WAAW,CAAc;IACjB,OAAO,CAAS;IAChB,MAAM,CAAU;IAEjC,YAAY,WAAwB,EAAE,OAAe;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,KAAY;QACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/domain/trade/state.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IACd,WAAW,CAAc;IACjB,OAAO,CAAS;IAChB,MAAM,CAAU;IAEjC,YAAY,WAAwB,EAAE,OAAe;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,KAAY;QACf,6CAA6C;QAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACzB,qEAAqE;YACrE,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,OAAO;QACT,CAAC;QACD,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACpC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CACjD,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1D,mEAAmE;YACnE,qEAAqE;YACrE,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,uEAAuE;YACvE,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAe;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AA9ED,oCA8EC","sourcesContent":["import type { OrderBookId } from \"../../shared\";\nimport type { Trade } from \"./index\";\n\nexport class TradeHistory {\n readonly orderbookId: OrderBookId;\n private readonly maxSize: number;\n private readonly buffer: Trade[];\n\n constructor(orderbookId: OrderBookId, maxSize: number) {\n this.orderbookId = orderbookId;\n this.maxSize = maxSize;\n this.buffer = [];\n }\n\n /**\n * Insert a trade in descending sequence order.\n *\n * Trades with `sequence > 0` are placed at the correct position so the\n * buffer stays sorted newest-first. Trades with `sequence === 0` (REST)\n * are prepended.\n */\n push(trade: Trade): void {\n // Treat a zero-capacity history as disabled.\n if (this.maxSize === 0) {\n return;\n }\n if (trade.sequence === 0) {\n // REST trades do not carry ordering metadata, so preserve the legacy\n // \"latest first\" behavior and let normal capacity eviction apply.\n this.buffer.unshift(trade);\n if (this.buffer.length > this.maxSize) {\n this.buffer.pop();\n }\n return;\n }\n // Find the first retained trade that is older than the incoming sequence.\n // Inserting there keeps the buffer sorted newest-first.\n const position = this.buffer.findIndex(\n (existing) => existing.sequence < trade.sequence,\n );\n if (this.buffer.length >= this.maxSize && position === -1) {\n // The buffer is full and the new trade is older than everything we\n // already keep, so dropping it preserves the newest retained window.\n return;\n }\n if (position === -1) {\n this.buffer.push(trade);\n } else {\n this.buffer.splice(position, 0, trade);\n }\n if (this.buffer.length > this.maxSize) {\n // The new trade landed inside the retained window, so evict the oldest\n // trade at the tail to restore capacity.\n this.buffer.pop();\n }\n }\n\n replace(trades: Trade[]): void {\n this.buffer.length = 0;\n this.buffer.push(...trades.slice(0, this.maxSize));\n }\n\n trades(): readonly Trade[] {\n return this.buffer;\n }\n\n latest(): Trade | undefined {\n return this.buffer[0];\n }\n\n clear(): void {\n this.buffer.length = 0;\n }\n\n len(): number {\n return this.buffer.length;\n }\n\n isEmpty(): boolean {\n return this.buffer.length === 0;\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { OrderBookId, Side } from "../../shared";
|
|
2
2
|
export interface TradeResponse {
|
|
3
3
|
id: number;
|
|
4
|
+
trade_id: string;
|
|
4
5
|
orderbook_id: OrderBookId;
|
|
5
6
|
taker_pubkey: string;
|
|
6
7
|
maker_pubkey: string;
|
|
@@ -30,5 +31,7 @@ export interface WsTrade {
|
|
|
30
31
|
price: string;
|
|
31
32
|
size: string;
|
|
32
33
|
side: Side;
|
|
34
|
+
/** Monotonic sequence number per orderbook for ordering guarantees. */
|
|
35
|
+
sequence: number;
|
|
33
36
|
}
|
|
34
37
|
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/trade/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Side } from \"../../shared\";\n\nexport interface TradeResponse {\n id: number;\n orderbook_id: OrderBookId;\n taker_pubkey: string;\n maker_pubkey: string;\n side: Side;\n size: string;\n price: string;\n taker_fee?: string;\n maker_fee?: string;\n executed_at: number;\n}\n\nexport interface TradesDecimals {\n price?: number;\n size?: number;\n fee?: number;\n}\n\nexport interface TradesResponse {\n orderbook_id: OrderBookId;\n trades: TradeResponse[];\n next_cursor?: number;\n has_more?: boolean;\n decimals?: TradesDecimals;\n}\n\nexport interface WsTrade {\n orderbook_id: OrderBookId;\n trade_id: string;\n timestamp: string;\n price: string;\n size: string;\n side: Side;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/trade/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Side } from \"../../shared\";\n\nexport interface TradeResponse {\n id: number;\n trade_id: string;\n orderbook_id: OrderBookId;\n taker_pubkey: string;\n maker_pubkey: string;\n side: Side;\n size: string;\n price: string;\n taker_fee?: string;\n maker_fee?: string;\n executed_at: number;\n}\n\nexport interface TradesDecimals {\n price?: number;\n size?: number;\n fee?: number;\n}\n\nexport interface TradesResponse {\n orderbook_id: OrderBookId;\n trades: TradeResponse[];\n next_cursor?: number;\n has_more?: boolean;\n decimals?: TradesDecimals;\n}\n\nexport interface WsTrade {\n orderbook_id: OrderBookId;\n trade_id: string;\n timestamp: string;\n price: string;\n size: string;\n side: Side;\n /** Monotonic sequence number per orderbook for ordering guarantees. */\n sequence: number;\n}\n"]}
|
package/dist/http/client.d.ts
CHANGED
|
@@ -12,6 +12,15 @@ export declare class LightconeHttp {
|
|
|
12
12
|
adminPost<T, B extends object>(url: string, body: B, retry: RetryPolicy): Promise<T>;
|
|
13
13
|
get<T>(url: string, retry: RetryPolicy): Promise<T>;
|
|
14
14
|
post<T, B extends object>(url: string, body: B, retry: RetryPolicy): Promise<T>;
|
|
15
|
+
/**
|
|
16
|
+
* GET with retry, using an explicit per-call `authToken` instead of the
|
|
17
|
+
* SDK's process-wide cookie store. Intended for server-side cookie
|
|
18
|
+
* forwarding (SSR / server functions) where the per-request browser cookie
|
|
19
|
+
* can't propagate to the shared client. In a browser context this is
|
|
20
|
+
* equivalent to {@link get} — the runtime is already attaching the cookie
|
|
21
|
+
* via `credentials: "include"`.
|
|
22
|
+
*/
|
|
23
|
+
getWithAuth<T>(url: string, retry: RetryPolicy, authToken: string): Promise<T>;
|
|
15
24
|
private requestWithRetry;
|
|
16
25
|
private shouldRetry;
|
|
17
26
|
private sendAndParse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAOlF,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,EAAE,MAAM;IAI3B,OAAO,IAAI,MAAM;IAIX,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,YAAY,IAAI,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjD,eAAe,IAAI,IAAI;IAIjB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAUxD,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAInD,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrF;;;;;;;OAOG;IACG,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAUtE,gBAAgB;YA8ChB,WAAW;YAoBX,YAAY;YAeZ,WAAW;IAgEzB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,cAAc;CAevB"}
|
package/dist/http/client.js
CHANGED
|
@@ -24,16 +24,27 @@ class LightconeHttp {
|
|
|
24
24
|
this.adminToken = undefined;
|
|
25
25
|
}
|
|
26
26
|
async adminGet(url, retry) {
|
|
27
|
-
return this.requestWithRetry("GET", url, undefined, retry, "adminCookie");
|
|
27
|
+
return this.requestWithRetry("GET", url, undefined, retry, { kind: "adminCookie" });
|
|
28
28
|
}
|
|
29
29
|
async adminPost(url, body, retry) {
|
|
30
|
-
return this.requestWithRetry("POST", url, body, retry, "adminCookie");
|
|
30
|
+
return this.requestWithRetry("POST", url, body, retry, { kind: "adminCookie" });
|
|
31
31
|
}
|
|
32
32
|
async get(url, retry) {
|
|
33
|
-
return this.requestWithRetry("GET", url, undefined, retry, "cookie");
|
|
33
|
+
return this.requestWithRetry("GET", url, undefined, retry, { kind: "cookie" });
|
|
34
34
|
}
|
|
35
35
|
async post(url, body, retry) {
|
|
36
|
-
return this.requestWithRetry("POST", url, body, retry, "cookie");
|
|
36
|
+
return this.requestWithRetry("POST", url, body, retry, { kind: "cookie" });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* GET with retry, using an explicit per-call `authToken` instead of the
|
|
40
|
+
* SDK's process-wide cookie store. Intended for server-side cookie
|
|
41
|
+
* forwarding (SSR / server functions) where the per-request browser cookie
|
|
42
|
+
* can't propagate to the shared client. In a browser context this is
|
|
43
|
+
* equivalent to {@link get} — the runtime is already attaching the cookie
|
|
44
|
+
* via `credentials: "include"`.
|
|
45
|
+
*/
|
|
46
|
+
async getWithAuth(url, retry, authToken) {
|
|
47
|
+
return this.requestWithRetry("GET", url, undefined, retry, { kind: "cookieOverride", token: authToken });
|
|
37
48
|
}
|
|
38
49
|
async requestWithRetry(method, url, body, policy, authMode) {
|
|
39
50
|
const config = (0, retry_1.retryConfigForPolicy)(policy);
|
|
@@ -77,11 +88,11 @@ class LightconeHttp {
|
|
|
77
88
|
return false;
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
|
-
async sendAndParse(method, url, body, authMode = "cookie") {
|
|
91
|
+
async sendAndParse(method, url, body, authMode = { kind: "cookie" }) {
|
|
81
92
|
const [apiResponse, requestId] = await this.sendRequest(method, url, body, authMode);
|
|
82
93
|
return parseApiResponse(apiResponse, requestId);
|
|
83
94
|
}
|
|
84
|
-
async sendRequest(method, url, body, authMode = "cookie") {
|
|
95
|
+
async sendRequest(method, url, body, authMode = { kind: "cookie" }) {
|
|
85
96
|
const requestId = generateRequestId();
|
|
86
97
|
const headers = {};
|
|
87
98
|
if (body) {
|
|
@@ -149,10 +160,14 @@ class LightconeHttp {
|
|
|
149
160
|
if (hasBrowserWindow()) {
|
|
150
161
|
return undefined;
|
|
151
162
|
}
|
|
152
|
-
|
|
153
|
-
|
|
163
|
+
switch (authMode.kind) {
|
|
164
|
+
case "adminCookie":
|
|
165
|
+
return this.adminToken ? `admin_token=${this.adminToken}` : undefined;
|
|
166
|
+
case "cookieOverride":
|
|
167
|
+
return `auth_token=${authMode.token}`;
|
|
168
|
+
case "cookie":
|
|
169
|
+
return this.authToken ? `auth_token=${this.authToken}` : undefined;
|
|
154
170
|
}
|
|
155
|
-
return this.authToken ? `auth_token=${this.authToken}` : undefined;
|
|
156
171
|
}
|
|
157
172
|
mapStatusError(statusCode, bodyText, headers) {
|
|
158
173
|
if (statusCode === 401) {
|