@lifi/perps-sdk 1.5.4 → 1.5.6
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/dist/cjs/registry/assetRegistry.d.ts +1 -1
- package/dist/cjs/registry/assetRegistry.d.ts.map +1 -1
- package/dist/cjs/registry/assetRegistry.js +2 -2
- package/dist/cjs/registry/assetRegistry.js.map +1 -1
- package/dist/cjs/registry/marketRegistry.d.ts +1 -1
- package/dist/cjs/registry/marketRegistry.d.ts.map +1 -1
- package/dist/cjs/registry/marketRegistry.js +2 -2
- package/dist/cjs/registry/marketRegistry.js.map +1 -1
- package/dist/cjs/registry/referenceDataRegistry.d.ts +1 -3
- package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -1
- package/dist/cjs/registry/referenceDataRegistry.js +3 -14
- package/dist/cjs/registry/referenceDataRegistry.js.map +1 -1
- package/dist/cjs/services/getMarket.d.ts.map +1 -1
- package/dist/cjs/services/getMarket.js +9 -1
- package/dist/cjs/services/getMarket.js.map +1 -1
- package/dist/cjs/transport/fetchWithRetry.d.ts +1 -0
- package/dist/cjs/transport/fetchWithRetry.d.ts.map +1 -1
- package/dist/cjs/transport/fetchWithRetry.js +8 -1
- package/dist/cjs/transport/fetchWithRetry.js.map +1 -1
- package/dist/cjs/transport/request.d.ts.map +1 -1
- package/dist/cjs/transport/request.js +3 -0
- package/dist/cjs/transport/request.js.map +1 -1
- package/dist/cjs/utils/accountSummary.d.ts.map +1 -1
- package/dist/cjs/utils/accountSummary.js +2 -1
- package/dist/cjs/utils/accountSummary.js.map +1 -1
- package/dist/cjs/utils/calculations.d.ts +1 -1
- package/dist/cjs/utils/calculations.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.js +7 -1
- package/dist/cjs/utils/calculations.js.map +1 -1
- package/dist/cjs/utils/sleep.d.ts +1 -1
- package/dist/cjs/utils/sleep.d.ts.map +1 -1
- package/dist/cjs/utils/sleep.js +16 -1
- package/dist/cjs/utils/sleep.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/websocket/ReconnectingWebSocket.d.ts.map +1 -1
- package/dist/cjs/websocket/ReconnectingWebSocket.js +4 -0
- package/dist/cjs/websocket/ReconnectingWebSocket.js.map +1 -1
- package/dist/cjs/websocket/WsProviderBase.d.ts.map +1 -1
- package/dist/cjs/websocket/WsProviderBase.js +9 -1
- package/dist/cjs/websocket/WsProviderBase.js.map +1 -1
- package/dist/esm/registry/assetRegistry.d.ts +1 -1
- package/dist/esm/registry/assetRegistry.d.ts.map +1 -1
- package/dist/esm/registry/assetRegistry.js +2 -2
- package/dist/esm/registry/assetRegistry.js.map +1 -1
- package/dist/esm/registry/marketRegistry.d.ts +1 -1
- package/dist/esm/registry/marketRegistry.d.ts.map +1 -1
- package/dist/esm/registry/marketRegistry.js +2 -2
- package/dist/esm/registry/marketRegistry.js.map +1 -1
- package/dist/esm/registry/referenceDataRegistry.d.ts +5 -11
- package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -1
- package/dist/esm/registry/referenceDataRegistry.js +6 -23
- package/dist/esm/registry/referenceDataRegistry.js.map +1 -1
- package/dist/esm/services/getMarket.d.ts +4 -3
- package/dist/esm/services/getMarket.d.ts.map +1 -1
- package/dist/esm/services/getMarket.js +13 -4
- package/dist/esm/services/getMarket.js.map +1 -1
- package/dist/esm/transport/fetchWithRetry.d.ts +11 -1
- package/dist/esm/transport/fetchWithRetry.d.ts.map +1 -1
- package/dist/esm/transport/fetchWithRetry.js +17 -2
- package/dist/esm/transport/fetchWithRetry.js.map +1 -1
- package/dist/esm/transport/request.d.ts.map +1 -1
- package/dist/esm/transport/request.js +4 -1
- package/dist/esm/transport/request.js.map +1 -1
- package/dist/esm/utils/accountSummary.d.ts +7 -3
- package/dist/esm/utils/accountSummary.d.ts.map +1 -1
- package/dist/esm/utils/accountSummary.js +5 -1
- package/dist/esm/utils/accountSummary.js.map +1 -1
- package/dist/esm/utils/calculations.d.ts +5 -1
- package/dist/esm/utils/calculations.d.ts.map +1 -1
- package/dist/esm/utils/calculations.js +11 -1
- package/dist/esm/utils/calculations.js.map +1 -1
- package/dist/esm/utils/sleep.d.ts +3 -2
- package/dist/esm/utils/sleep.d.ts.map +1 -1
- package/dist/esm/utils/sleep.js +18 -2
- package/dist/esm/utils/sleep.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/websocket/ReconnectingWebSocket.d.ts +7 -4
- package/dist/esm/websocket/ReconnectingWebSocket.d.ts.map +1 -1
- package/dist/esm/websocket/ReconnectingWebSocket.js +11 -4
- package/dist/esm/websocket/ReconnectingWebSocket.js.map +1 -1
- package/dist/esm/websocket/WsProviderBase.d.ts.map +1 -1
- package/dist/esm/websocket/WsProviderBase.js +14 -1
- package/dist/esm/websocket/WsProviderBase.js.map +1 -1
- package/dist/esm/websocket/types.d.ts +3 -3
- package/dist/types/registry/assetRegistry.d.ts +1 -1
- package/dist/types/registry/assetRegistry.d.ts.map +1 -1
- package/dist/types/registry/marketRegistry.d.ts +1 -1
- package/dist/types/registry/marketRegistry.d.ts.map +1 -1
- package/dist/types/registry/referenceDataRegistry.d.ts +5 -11
- package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -1
- package/dist/types/services/getMarket.d.ts +4 -3
- package/dist/types/services/getMarket.d.ts.map +1 -1
- package/dist/types/transport/fetchWithRetry.d.ts +11 -1
- package/dist/types/transport/fetchWithRetry.d.ts.map +1 -1
- package/dist/types/transport/request.d.ts.map +1 -1
- package/dist/types/utils/accountSummary.d.ts +7 -3
- package/dist/types/utils/accountSummary.d.ts.map +1 -1
- package/dist/types/utils/calculations.d.ts +5 -1
- package/dist/types/utils/calculations.d.ts.map +1 -1
- package/dist/types/utils/sleep.d.ts +3 -2
- package/dist/types/utils/sleep.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/websocket/ReconnectingWebSocket.d.ts +7 -4
- package/dist/types/websocket/ReconnectingWebSocket.d.ts.map +1 -1
- package/dist/types/websocket/WsProviderBase.d.ts.map +1 -1
- package/dist/types/websocket/types.d.ts +3 -3
- package/package.json +1 -1
- package/src/registry/assetRegistry.ts +4 -6
- package/src/registry/marketRegistry.ts +4 -6
- package/src/registry/referenceDataRegistry.ts +8 -32
- package/src/services/getMarket.ts +16 -4
- package/src/transport/fetchWithRetry.ts +18 -2
- package/src/transport/request.ts +5 -1
- package/src/utils/accountSummary.ts +14 -4
- package/src/utils/calculations.ts +22 -9
- package/src/utils/sleep.ts +19 -3
- package/src/version.ts +1 -1
- package/src/websocket/ReconnectingWebSocket.ts +11 -4
- package/src/websocket/WsProviderBase.ts +14 -1
- package/src/websocket/types.ts +3 -3
|
@@ -13,7 +13,7 @@ export declare class AssetRegistry extends ReferenceDataRegistry<Asset> {
|
|
|
13
13
|
constructor(client: PerpsSDKClient, provider: string);
|
|
14
14
|
/** The most recently synced asset list. Empty before the first {@link sync}. */
|
|
15
15
|
get assets(): readonly Asset[];
|
|
16
|
-
protected fetchItems(
|
|
16
|
+
protected fetchItems(): Promise<Asset[]>;
|
|
17
17
|
protected keyOf(asset: Asset): string;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/assetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,qBAAqB,CAAC,KAAK,CAAC;gBACjD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;IAIpD,gFAAgF;IAChF,IAAI,MAAM,IAAI,SAAS,KAAK,EAAE,CAE7B;IAED,SAAS,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"assetRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/assetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,qBAAqB,CAAC,KAAK,CAAC;gBACjD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;IAIpD,gFAAgF;IAChF,IAAI,MAAM,IAAI,SAAS,KAAK,EAAE,CAE7B;IAED,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IASxC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;CAGtC;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,GACf,aAAa,CAYf"}
|
|
@@ -16,11 +16,11 @@ export class AssetRegistry extends ReferenceDataRegistry {
|
|
|
16
16
|
get assets() {
|
|
17
17
|
return this.items;
|
|
18
18
|
}
|
|
19
|
-
fetchItems(
|
|
19
|
+
fetchItems() {
|
|
20
20
|
const url = buildUrl(`${this.client.config.apiUrl}/assets`, {
|
|
21
21
|
provider: this.provider,
|
|
22
22
|
});
|
|
23
|
-
return request(this.client.config, url
|
|
23
|
+
return request(this.client.config, url).then((response) => response.assets);
|
|
24
24
|
}
|
|
25
25
|
keyOf(asset) {
|
|
26
26
|
return asset.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetRegistry.js","sourceRoot":"","sources":["../../../src/registry/assetRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,OAAO,aAAc,SAAQ,qBAA4B;IAC7D,YAAY,MAAsB,EAAE,QAAgB;QAClD,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAES,UAAU
|
|
1
|
+
{"version":3,"file":"assetRegistry.js","sourceRoot":"","sources":["../../../src/registry/assetRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,OAAO,aAAc,SAAQ,qBAA4B;IAC7D,YAAY,MAAsB,EAAE,QAAgB;QAClD,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAES,UAAU;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE;YAC1D,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;QACF,OAAO,OAAO,CAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAC1D,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAC9B,CAAA;IACH,CAAC;IAES,KAAK,CAAC,KAAY;QAC1B,OAAO,KAAK,CAAC,EAAE,CAAA;IACjB,CAAC;CACF;AAED,MAAM,UAAU,GAAG,IAAI,OAAO,EAA8C,CAAA;AAE5E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAsB,EACtB,QAAgB;IAEhB,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;QACtB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC9C,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -22,7 +22,7 @@ export declare class MarketRegistry extends ReferenceDataRegistry<Market> {
|
|
|
22
22
|
* @throws {PerpsError} `MarketNotFound`.
|
|
23
23
|
*/
|
|
24
24
|
require(marketId: string): Market;
|
|
25
|
-
protected fetchItems(
|
|
25
|
+
protected fetchItems(): Promise<Market[]>;
|
|
26
26
|
protected keyOf(market: Market): string;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/marketRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AAI/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,qBAAqB,CAAC,MAAM,CAAC;gBACnD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;IAIpD,iFAAiF;IACjF,IAAI,OAAO,IAAI,SAAS,MAAM,EAAE,CAE/B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAajC,SAAS,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"marketRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/marketRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AAI/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,qBAAqB,CAAC,MAAM,CAAC;gBACnD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;IAIpD,iFAAiF;IACjF,IAAI,OAAO,IAAI,SAAS,MAAM,EAAE,CAE/B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAajC,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASzC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGxC;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,GACf,cAAc,CAYhB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,aAM/C,CAAA"}
|
|
@@ -35,11 +35,11 @@ export class MarketRegistry extends ReferenceDataRegistry {
|
|
|
35
35
|
}
|
|
36
36
|
return market;
|
|
37
37
|
}
|
|
38
|
-
fetchItems(
|
|
38
|
+
fetchItems() {
|
|
39
39
|
const url = buildUrl(`${this.client.config.apiUrl}/markets`, {
|
|
40
40
|
provider: this.provider,
|
|
41
41
|
});
|
|
42
|
-
return request(this.client.config, url
|
|
42
|
+
return request(this.client.config, url).then((response) => response.markets);
|
|
43
43
|
}
|
|
44
44
|
keyOf(market) {
|
|
45
45
|
return market.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketRegistry.js","sourceRoot":"","sources":["../../../src/registry/marketRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,qBAA6B;IAC/D,YAAY,MAAsB,EAAE,QAAgB;QAClD,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,iFAAiF;IACjF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAC1B,cAAc,CAAC,cAAc,EAC7B,MAAM,IAAI,CAAC,QAAQ,+BAA+B,QAAQ,GAAG,CAC9D,CAAA;YACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC1B,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAES,UAAU
|
|
1
|
+
{"version":3,"file":"marketRegistry.js","sourceRoot":"","sources":["../../../src/registry/marketRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,qBAA6B;IAC/D,YAAY,MAAsB,EAAE,QAAgB;QAClD,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,iFAAiF;IACjF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAC1B,cAAc,CAAC,cAAc,EAC7B,MAAM,IAAI,CAAC,QAAQ,+BAA+B,QAAQ,GAAG,CAC9D,CAAA;YACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC1B,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAES,UAAU;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,EAAE;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;QACF,OAAO,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAC3D,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAC/B,CAAA;IACH,CAAC;IAES,KAAK,CAAC,MAAc;QAC5B,OAAO,MAAM,CAAC,EAAE,CAAA;IAClB,CAAC;CACF;AAED,MAAM,UAAU,GAAG,IAAI,OAAO,EAA+C,CAAA;AAE7E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAsB,EACtB,QAAgB;IAEhB,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;QACtB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/C,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAiB,EAAE,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;CAC9B,CAAC,CAAA"}
|
|
@@ -5,9 +5,8 @@ import type { PerpsSDKClient } from '../types/provider.js';
|
|
|
5
5
|
*
|
|
6
6
|
* NOT a cache: it holds no freshness policy of its own. Every {@link sync}
|
|
7
7
|
* refetches through the HTTP layer, whose `cache-control` headers decide
|
|
8
|
-
* whether the response comes from disk or the network. A lookup miss
|
|
9
|
-
*
|
|
10
|
-
* cache — the id may have listed after the cached snapshot.
|
|
8
|
+
* whether the response comes from disk or the network. A lookup miss warns
|
|
9
|
+
* once and returns `undefined`; the next {@link sync} reconciles the index.
|
|
11
10
|
*
|
|
12
11
|
* @internal
|
|
13
12
|
*/
|
|
@@ -19,10 +18,9 @@ export declare abstract class ReferenceDataRegistry<T> {
|
|
|
19
18
|
private current;
|
|
20
19
|
private inflight;
|
|
21
20
|
private warnedIds;
|
|
22
|
-
private refreshAfter;
|
|
23
21
|
protected constructor(client: PerpsSDKClient, provider: string, kind: string);
|
|
24
|
-
/** Fetch the provider's full list
|
|
25
|
-
protected abstract fetchItems(
|
|
22
|
+
/** Fetch the provider's full list through the HTTP layer. */
|
|
23
|
+
protected abstract fetchItems(): Promise<T[]>;
|
|
26
24
|
/** The item's primary key — what {@link get} is keyed by. */
|
|
27
25
|
protected abstract keyOf(item: T): string;
|
|
28
26
|
/**
|
|
@@ -33,12 +31,8 @@ export declare abstract class ReferenceDataRegistry<T> {
|
|
|
33
31
|
sync(): Promise<readonly T[]>;
|
|
34
32
|
/** The most recently synced list. Empty before the first {@link sync}. */
|
|
35
33
|
protected get items(): readonly T[];
|
|
36
|
-
/**
|
|
37
|
-
* O(1) lookup by primary key. A miss warns once per id and schedules the
|
|
38
|
-
* cooldown-gated, cache-bypassing background refetch.
|
|
39
|
-
*/
|
|
34
|
+
/** O(1) lookup by primary key. A miss warns once per id. */
|
|
40
35
|
get(id: string): T | undefined;
|
|
41
36
|
private load;
|
|
42
|
-
private scheduleRefresh;
|
|
43
37
|
}
|
|
44
38
|
//# sourceMappingURL=referenceDataRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referenceDataRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/referenceDataRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"referenceDataRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/referenceDataRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D;;;;;;;;;;GAUG;AACH,8BAAsB,qBAAqB,CAAC,CAAC;IAOzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,SAAS,CAAoB;IAErC,SAAS,aACY,MAAM,EAAE,cAAc,EAChC,QAAQ,EAAE,MAAM,EACR,IAAI,EAAE,MAAM;IAG/B,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAE7C,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAEzC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IAS7B,0EAA0E;IAC1E,SAAS,KAAK,KAAK,IAAI,SAAS,CAAC,EAAE,CAElC;IAED,4DAA4D;IAC5D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;YAYhB,IAAI;CAOnB"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
/** Minimum gap between unknown-id-triggered, HTTP-cache-bypassing refetches. */
|
|
2
|
-
const REFRESH_COOLDOWN_MS = 60_000;
|
|
3
1
|
/**
|
|
4
2
|
* Per-provider hash index over one of the provider's reference-data lists
|
|
5
3
|
* (`/markets`, `/assets`), keyed by the list's own primary key.
|
|
6
4
|
*
|
|
7
5
|
* NOT a cache: it holds no freshness policy of its own. Every {@link sync}
|
|
8
6
|
* refetches through the HTTP layer, whose `cache-control` headers decide
|
|
9
|
-
* whether the response comes from disk or the network. A lookup miss
|
|
10
|
-
*
|
|
11
|
-
* cache — the id may have listed after the cached snapshot.
|
|
7
|
+
* whether the response comes from disk or the network. A lookup miss warns
|
|
8
|
+
* once and returns `undefined`; the next {@link sync} reconciles the index.
|
|
12
9
|
*
|
|
13
10
|
* @internal
|
|
14
11
|
*/
|
|
@@ -20,7 +17,6 @@ export class ReferenceDataRegistry {
|
|
|
20
17
|
current = [];
|
|
21
18
|
inflight;
|
|
22
19
|
warnedIds = new Set();
|
|
23
|
-
refreshAfter = 0;
|
|
24
20
|
constructor(client, provider, kind) {
|
|
25
21
|
this.client = client;
|
|
26
22
|
this.provider = provider;
|
|
@@ -33,7 +29,7 @@ export class ReferenceDataRegistry {
|
|
|
33
29
|
*/
|
|
34
30
|
sync() {
|
|
35
31
|
if (!this.inflight) {
|
|
36
|
-
this.inflight = this.load(
|
|
32
|
+
this.inflight = this.load().finally(() => {
|
|
37
33
|
this.inflight = undefined;
|
|
38
34
|
});
|
|
39
35
|
}
|
|
@@ -43,10 +39,7 @@ export class ReferenceDataRegistry {
|
|
|
43
39
|
get items() {
|
|
44
40
|
return this.current;
|
|
45
41
|
}
|
|
46
|
-
/**
|
|
47
|
-
* O(1) lookup by primary key. A miss warns once per id and schedules the
|
|
48
|
-
* cooldown-gated, cache-bypassing background refetch.
|
|
49
|
-
*/
|
|
42
|
+
/** O(1) lookup by primary key. A miss warns once per id. */
|
|
50
43
|
get(id) {
|
|
51
44
|
const item = this.index.get(id);
|
|
52
45
|
if (item !== undefined) {
|
|
@@ -56,24 +49,14 @@ export class ReferenceDataRegistry {
|
|
|
56
49
|
this.warnedIds.add(id);
|
|
57
50
|
console.warn(`[${this.provider}] unknown ${this.kind} id '${id}'`);
|
|
58
51
|
}
|
|
59
|
-
this.scheduleRefresh();
|
|
60
52
|
return undefined;
|
|
61
53
|
}
|
|
62
|
-
async load(
|
|
63
|
-
const items = await this.fetchItems(
|
|
54
|
+
async load() {
|
|
55
|
+
const items = await this.fetchItems();
|
|
64
56
|
this.index = new Map(items.map((item) => [this.keyOf(item), item]));
|
|
65
57
|
this.current = items;
|
|
66
58
|
this.warnedIds.clear();
|
|
67
59
|
return items;
|
|
68
60
|
}
|
|
69
|
-
scheduleRefresh() {
|
|
70
|
-
const now = Date.now();
|
|
71
|
-
if (now < this.refreshAfter) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
// Set before any await so concurrent misses cannot trigger a refetch storm.
|
|
75
|
-
this.refreshAfter = now + REFRESH_COOLDOWN_MS;
|
|
76
|
-
this.load(true).catch((error) => console.error(`[${this.provider}] ${this.kind} registry refresh failed`, error));
|
|
77
|
-
}
|
|
78
61
|
}
|
|
79
62
|
//# sourceMappingURL=referenceDataRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referenceDataRegistry.js","sourceRoot":"","sources":["../../../src/registry/referenceDataRegistry.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"referenceDataRegistry.js","sourceRoot":"","sources":["../../../src/registry/referenceDataRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,qBAAqB;IAOpB;IACV;IACQ;IARX,KAAK,GAAG,IAAI,GAAG,EAAa,CAAA;IAC5B,OAAO,GAAiB,EAAE,CAAA;IAC1B,QAAQ,CAAmC;IAC3C,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IAErC,YACqB,MAAsB,EAChC,QAAgB,EACR,IAAY;QAFV,WAAM,GAAN,MAAM,CAAgB;QAChC,aAAQ,GAAR,QAAQ,CAAQ;QACR,SAAI,GAAJ,IAAI,CAAQ;IAC5B,CAAC;IAQJ;;;;OAIG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;YAC3B,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,0EAA0E;IAC1E,IAAc,KAAK;QACjB,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,4DAA4D;IAC5D,GAAG,CAAC,EAAU;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,IAAI,QAAQ,EAAE,GAAG,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
|
|
@@ -18,10 +18,11 @@ export interface GetMarketParams {
|
|
|
18
18
|
/**
|
|
19
19
|
* Get a specific market by its opaque marketId. Requests the single market
|
|
20
20
|
* from the backend `/markets` route (filtered by `marketIds`) and returns the
|
|
21
|
-
* first match;
|
|
22
|
-
*
|
|
21
|
+
* first match; throws a `MarketNotFound` {@link PerpsError} both when the
|
|
22
|
+
* backend responds 404 and when it responds 200 with an empty list, matching
|
|
23
|
+
* `MarketRegistry.require`'s miss behaviour.
|
|
23
24
|
*
|
|
24
|
-
* @throws {PerpsError} On backend (e.g. 404), network, or parsing errors.
|
|
25
|
+
* @throws {PerpsError} On backend (e.g. 404 or empty match), network, or parsing errors.
|
|
25
26
|
* @example
|
|
26
27
|
* ```ts
|
|
27
28
|
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMarket.d.ts","sourceRoot":"","sources":["../../../src/services/getMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"getMarket.d.ts","sourceRoot":"","sources":["../../../src/services/getMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAA;AAIhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
2
|
+
import { PerpsError } from '../errors/PerpsError.js';
|
|
1
3
|
import { buildUrl, request } from '../transport/request.js';
|
|
2
4
|
/**
|
|
3
5
|
* Get a specific market by its opaque marketId. Requests the single market
|
|
4
6
|
* from the backend `/markets` route (filtered by `marketIds`) and returns the
|
|
5
|
-
* first match;
|
|
6
|
-
*
|
|
7
|
+
* first match; throws a `MarketNotFound` {@link PerpsError} both when the
|
|
8
|
+
* backend responds 404 and when it responds 200 with an empty list, matching
|
|
9
|
+
* `MarketRegistry.require`'s miss behaviour.
|
|
7
10
|
*
|
|
8
|
-
* @throws {PerpsError} On backend (e.g. 404), network, or parsing errors.
|
|
11
|
+
* @throws {PerpsError} On backend (e.g. 404 or empty match), network, or parsing errors.
|
|
9
12
|
* @example
|
|
10
13
|
* ```ts
|
|
11
14
|
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
@@ -20,6 +23,12 @@ export async function getMarket(client, params, options) {
|
|
|
20
23
|
marketIds: params.marketId,
|
|
21
24
|
});
|
|
22
25
|
const { markets } = await request(client.config, url, {}, options);
|
|
23
|
-
|
|
26
|
+
const market = markets[0];
|
|
27
|
+
if (market === undefined) {
|
|
28
|
+
const error = new PerpsError(PerpsErrorCode.MarketNotFound, `No ${params.provider} market found for marketId '${params.marketId}'`);
|
|
29
|
+
error.tool = params.provider;
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
return market;
|
|
24
33
|
}
|
|
25
34
|
//# sourceMappingURL=getMarket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMarket.js","sourceRoot":"","sources":["../../../src/services/getMarket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAmB3D
|
|
1
|
+
{"version":3,"file":"getMarket.js","sourceRoot":"","sources":["../../../src/services/getMarket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAmB3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAsB,EACtB,MAAuB,EACvB,OAA2B;IAE3B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,EAAE;QACtD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,QAAQ;KAC3B,CAAC,CAAA;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAC/B,MAAM,CAAC,MAAM,EACb,GAAG,EACH,EAAE,EACF,OAAO,CACR,CAAA;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAC1B,cAAc,CAAC,cAAc,EAC7B,MAAM,MAAM,CAAC,QAAQ,+BAA+B,MAAM,CAAC,QAAQ,GAAG,CACvE,CAAA;QACD,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC5B,MAAM,KAAK,CAAA;IACb,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -9,12 +9,22 @@ export interface FetchWithRetryOptions {
|
|
|
9
9
|
fetchImpl?: typeof fetch;
|
|
10
10
|
signal?: AbortSignal;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* True when `error` is an `AbortSignal` cancellation (the native `fetch` abort
|
|
14
|
+
* rejection) rather than a genuine network failure. An abort is a deliberate
|
|
15
|
+
* caller action, so it is rethrown untouched instead of being retried.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function isAbortError(error: unknown): boolean;
|
|
12
20
|
/**
|
|
13
21
|
* Wrap `fetch` with policy-driven retry. Honors `Retry-After` (when present
|
|
14
22
|
* and `respectRetryAfter` is true), otherwise falls back to exponential
|
|
15
23
|
* backoff with full jitter, capped by `maxDelayMs`. Network errors (thrown
|
|
16
24
|
* `fetch` rejections) are treated as `retry-network` — same retry budget as
|
|
17
|
-
* 5xx.
|
|
25
|
+
* 5xx. Aborts (a pre-aborted signal, a mid-flight abort rejection, or a signal
|
|
26
|
+
* that fires during a between-retries backoff) reject with the abort reason
|
|
27
|
+
* without any further attempt.
|
|
18
28
|
*
|
|
19
29
|
* @public
|
|
20
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithRetry.d.ts","sourceRoot":"","sources":["../../../src/transport/fetchWithRetry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,kBAAkB,CAAA;AAEhF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"fetchWithRetry.d.ts","sourceRoot":"","sources":["../../../src/transport/fetchWithRetry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,kBAAkB,CAAA;AAEhF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CA4DnB"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { sleep } from '../utils/sleep.js';
|
|
2
|
+
/**
|
|
3
|
+
* True when `error` is an `AbortSignal` cancellation (the native `fetch` abort
|
|
4
|
+
* rejection) rather than a genuine network failure. An abort is a deliberate
|
|
5
|
+
* caller action, so it is rethrown untouched instead of being retried.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export function isAbortError(error) {
|
|
10
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
11
|
+
}
|
|
2
12
|
/**
|
|
3
13
|
* Wrap `fetch` with policy-driven retry. Honors `Retry-After` (when present
|
|
4
14
|
* and `respectRetryAfter` is true), otherwise falls back to exponential
|
|
5
15
|
* backoff with full jitter, capped by `maxDelayMs`. Network errors (thrown
|
|
6
16
|
* `fetch` rejections) are treated as `retry-network` — same retry budget as
|
|
7
|
-
* 5xx.
|
|
17
|
+
* 5xx. Aborts (a pre-aborted signal, a mid-flight abort rejection, or a signal
|
|
18
|
+
* that fires during a between-retries backoff) reject with the abort reason
|
|
19
|
+
* without any further attempt.
|
|
8
20
|
*
|
|
9
21
|
* @public
|
|
10
22
|
*/
|
|
@@ -22,6 +34,9 @@ export async function fetchWithRetry(input, init, options) {
|
|
|
22
34
|
response = await fetchImpl(input, mergedInit);
|
|
23
35
|
}
|
|
24
36
|
catch (error) {
|
|
37
|
+
if (isAbortError(error)) {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
25
40
|
networkError = error;
|
|
26
41
|
}
|
|
27
42
|
if (response?.ok) {
|
|
@@ -54,7 +69,7 @@ export async function fetchWithRetry(input, init, options) {
|
|
|
54
69
|
}
|
|
55
70
|
const delayMs = computeDelay(policy, attempt, response);
|
|
56
71
|
if (delayMs > 0) {
|
|
57
|
-
await sleep(delayMs);
|
|
72
|
+
await sleep(delayMs, signal);
|
|
58
73
|
}
|
|
59
74
|
attempt++;
|
|
60
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithRetry.js","sourceRoot":"","sources":["../../../src/transport/fetchWithRetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAczC
|
|
1
|
+
{"version":3,"file":"fetchWithRetry.js","sourceRoot":"","sources":["../../../src/transport/fetchWithRetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/transport/request.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,kBAAkB,CAAA;AAEzB;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,+EAA+E;IAC/E,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,EAC5B,UAAU,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/transport/request.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,kBAAkB,CAAA;AAEzB;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,+EAA+E;IAC/E,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,EAC5B,UAAU,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAuEZ;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC5D,MAAM,CAWR"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
2
2
|
import { PerpsError } from '../errors/PerpsError.js';
|
|
3
3
|
import { version } from '../version.js';
|
|
4
|
-
import { fetchWithRetry } from './fetchWithRetry.js';
|
|
4
|
+
import { fetchWithRetry, isAbortError } from './fetchWithRetry.js';
|
|
5
5
|
import { LIFI_REQUEST_KEY, LIFI_RETRY_DEFAULTS, resolveRetryPolicy, } from './retryPolicy.js';
|
|
6
6
|
/**
|
|
7
7
|
* Internal HTTP helper: applies SDK headers, retry policy, and the request
|
|
@@ -61,6 +61,9 @@ export async function request(config, url, options = {}, sdkOptions) {
|
|
|
61
61
|
if (error instanceof PerpsError) {
|
|
62
62
|
throw error;
|
|
63
63
|
}
|
|
64
|
+
if (isAbortError(error)) {
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
64
67
|
throw new PerpsError(PerpsErrorCode.ServerError, error instanceof Error ? error.message : 'Request failed');
|
|
65
68
|
}
|
|
66
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/transport/request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/transport/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@ import type { AccountResponse, AccountSummary, Position } from '@lifi/perps-type
|
|
|
4
4
|
* positions' locked margin and unrealized PnL:
|
|
5
5
|
*
|
|
6
6
|
* - `'free'` — free collateral only; locked margin and unrealized PnL are
|
|
7
|
-
* both carried by the positions.
|
|
7
|
+
* both carried by the positions. Available margin is the free collateral
|
|
8
|
+
* as-is; unrealized PnL is not counted toward it.
|
|
8
9
|
* - `'gross'` — locked margin included, unrealized PnL carried by the
|
|
9
|
-
* positions (e.g. spot holdings backing a unified account).
|
|
10
|
+
* positions (e.g. spot holdings backing a unified account). The venue
|
|
11
|
+
* counts unrealized PnL toward buying power, so it is added to available
|
|
12
|
+
* margin on top of the gross collateral.
|
|
10
13
|
* - `'equity'` — total equity: locked margin AND unrealized PnL included
|
|
11
|
-
* (e.g. a venue-reported account value).
|
|
14
|
+
* (e.g. a venue-reported account value). Unrealized PnL is thus already
|
|
15
|
+
* counted toward available margin.
|
|
12
16
|
*
|
|
13
17
|
* @public
|
|
14
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../../src/utils/accountSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAM1B
|
|
1
|
+
{"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../../src/utils/accountSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE7D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,EAAE,mBAAmB,GAC7B,cAAc,CA4BhB"}
|
|
@@ -19,9 +19,13 @@ export function summarizeAccount(account, positions, semantics) {
|
|
|
19
19
|
const balances = sumValueUsd(account.balances);
|
|
20
20
|
const grossCollateral = semantics === 'free' ? collateral + marginUsed : collateral;
|
|
21
21
|
const equity = semantics === 'equity' ? grossCollateral : grossCollateral + unrealizedPnl;
|
|
22
|
+
// Buying power is equity net of locked margin, so unrealized PnL counts
|
|
23
|
+
// toward it. The `'free'` rows exclude uPnL from available margin, holding
|
|
24
|
+
// it purely as free collateral.
|
|
25
|
+
const availableMargin = semantics === 'free' ? grossCollateral - marginUsed : equity - marginUsed;
|
|
22
26
|
return {
|
|
23
27
|
portfolioValue: (balances + equity).toString(),
|
|
24
|
-
availableMargin:
|
|
28
|
+
availableMargin: availableMargin.toString(),
|
|
25
29
|
marginUsed: marginUsed.toString(),
|
|
26
30
|
unrealizedPnl: unrealizedPnl.toString(),
|
|
27
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountSummary.js","sourceRoot":"","sources":["../../../src/utils/accountSummary.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,GAAG,CAAC,QAAqC,EAAU,EAAE,CACpE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"accountSummary.js","sourceRoot":"","sources":["../../../src/utils/accountSummary.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,GAAG,CAAC,QAAqC,EAAU,EAAE,CACpE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;AAqBjE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAwB,EACxB,SAAqB,EACrB,SAA8B;IAE9B,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,UAAU,IAAI,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QACzC,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAE9C,MAAM,eAAe,GACnB,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAC7D,MAAM,MAAM,GACV,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,GAAG,aAAa,CAAA;IAE5E,wEAAwE;IACxE,2EAA2E;IAC3E,gCAAgC;IAChC,MAAM,eAAe,GACnB,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAA;IAE3E,OAAO;QACL,cAAc,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE;QAC9C,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;QAC3C,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;QACjC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;KACxC,CAAA;AACH,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* of the perps SDK would need. All parameters are required — no default
|
|
6
6
|
* values for critical financial parameters.
|
|
7
7
|
*/
|
|
8
|
-
import type
|
|
8
|
+
import { type FeeTier, type Market, type MarketContext, type OrderbookLevel, type Quote, type QuoteSide, type TradeType } from '@lifi/perps-types';
|
|
9
9
|
/**
|
|
10
10
|
* Calculate position size in asset units from margin.
|
|
11
11
|
*
|
|
@@ -193,6 +193,8 @@ interface BookWalk {
|
|
|
193
193
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
194
194
|
* returning the best obtainable fill.
|
|
195
195
|
*
|
|
196
|
+
* @throws {PerpsError} `ValidationError` when a level's `price` or `size`
|
|
197
|
+
* does not parse to a finite number.
|
|
196
198
|
* @public
|
|
197
199
|
*/
|
|
198
200
|
export declare function walkOrderbook(levels: OrderbookLevel[], sizeUsd: number): BookWalk;
|
|
@@ -218,6 +220,8 @@ interface BuildQuoteInput {
|
|
|
218
220
|
* versus mark, applies the base taker fee on the filled notional, and carries
|
|
219
221
|
* the market's `funding` (`null` for spot, which has none).
|
|
220
222
|
*
|
|
223
|
+
* @throws {PerpsError} `ValidationError` when a book level does not parse to
|
|
224
|
+
* a finite number — see {@link walkOrderbook}.
|
|
221
225
|
* @public
|
|
222
226
|
*/
|
|
223
227
|
export declare function buildQuote(input: BuildQuoteInput): Quote;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* of the perps SDK would need. All parameters are required — no default
|
|
6
6
|
* values for critical financial parameters.
|
|
7
7
|
*/
|
|
8
|
+
import { PerpsErrorCode, } from '@lifi/perps-types';
|
|
9
|
+
import { PerpsError } from '../errors/PerpsError.js';
|
|
8
10
|
/**
|
|
9
11
|
* Calculate position size in asset units from margin.
|
|
10
12
|
*
|
|
@@ -227,6 +229,8 @@ export function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
|
227
229
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
228
230
|
* returning the best obtainable fill.
|
|
229
231
|
*
|
|
232
|
+
* @throws {PerpsError} `ValidationError` when a level's `price` or `size`
|
|
233
|
+
* does not parse to a finite number.
|
|
230
234
|
* @public
|
|
231
235
|
*/
|
|
232
236
|
export function walkOrderbook(levels, sizeUsd) {
|
|
@@ -238,7 +242,11 @@ export function walkOrderbook(levels, sizeUsd) {
|
|
|
238
242
|
break;
|
|
239
243
|
}
|
|
240
244
|
const price = Number.parseFloat(level.price);
|
|
241
|
-
const
|
|
245
|
+
const size = Number.parseFloat(level.size);
|
|
246
|
+
if (!Number.isFinite(price) || !Number.isFinite(size)) {
|
|
247
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
248
|
+
}
|
|
249
|
+
const levelNotional = size * price;
|
|
242
250
|
const take = Math.min(remaining, levelNotional);
|
|
243
251
|
filledNotional += take;
|
|
244
252
|
baseSize += take / price;
|
|
@@ -258,6 +266,8 @@ export function walkOrderbook(levels, sizeUsd) {
|
|
|
258
266
|
* versus mark, applies the base taker fee on the filled notional, and carries
|
|
259
267
|
* the market's `funding` (`null` for spot, which has none).
|
|
260
268
|
*
|
|
269
|
+
* @throws {PerpsError} `ValidationError` when a book level does not parse to
|
|
270
|
+
* a finite number — see {@link walkOrderbook}.
|
|
261
271
|
* @public
|
|
262
272
|
*/
|
|
263
273
|
export function buildQuote(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resolve after `ms` milliseconds
|
|
2
|
+
* Resolve after `ms` milliseconds, or reject with the signal's abort reason if
|
|
3
|
+
* `signal` aborts first. Without a `signal` it always resolves.
|
|
3
4
|
*
|
|
4
5
|
* @internal
|
|
5
6
|
*/
|
|
6
|
-
export declare const sleep: (ms: number) => Promise<void>;
|
|
7
|
+
export declare const sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
7
8
|
//# sourceMappingURL=sleep.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAgBjE,CAAA"}
|