@lifi/perps-sdk-provider-ondo 12.0.0 → 14.0.0

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.
@@ -1,4 +1,5 @@
1
1
  import { PerpsError, type ResolvedRetryPolicy } from '@lifi/perps-sdk';
2
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
3
  import type { OndoPageInfo } from '../types/wire.js';
3
4
  export type ApiParams = Record<string, string | number | boolean>;
4
5
  export interface OndoPage<T> {
@@ -8,7 +9,7 @@ export interface OndoPage<T> {
8
9
  export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
9
10
  export declare class OndoApiError extends PerpsError {
10
11
  readonly errorCode: string | undefined;
11
- constructor(message: string, errorCode?: string);
12
+ constructor(message: string, errorCode?: string, code?: PerpsErrorCode);
12
13
  }
13
14
  export declare class OndoSessionExpiredError extends PerpsError {
14
15
  constructor(message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAGjE,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAGD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAS9D,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAIhD;AASD,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAGD,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAElB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAoBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAc9D,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAejB,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAgBP,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAyBf"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAIpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAGjE,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAGD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAS9D,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAGpC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,cAA+C;CAKxD;AASD,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAGD,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAElB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAc9D,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAejB,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAgBP,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAqCf"}
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OndoApiClient = exports.ONDO_RETRY_DEFAULTS = exports.OndoSessionExpiredError = exports.OndoApiError = void 0;
4
4
  const perps_sdk_1 = require("@lifi/perps-sdk");
5
5
  const perps_types_1 = require("@lifi/perps-types");
6
+ const ondoErrorCode_js_1 = require("./ondoErrorCode.js");
6
7
  class OndoApiError extends perps_sdk_1.PerpsError {
7
8
  errorCode;
8
- constructor(message, errorCode) {
9
- super(perps_types_1.PerpsErrorCode.ThirdPartyError, message);
9
+ constructor(message, errorCode, code = perps_types_1.PerpsErrorCode.ThirdPartyError) {
10
+ super(code, message);
10
11
  this.errorCode = errorCode;
11
12
  }
12
13
  }
@@ -119,8 +120,14 @@ class OndoApiClient {
119
120
  if (status === 401) {
120
121
  throw new OndoSessionExpiredError(`Ondo rejected the session token for ${path}`);
121
122
  }
123
+ if (isGenericResponse(data) && !data.success) {
124
+ const bodyCode = (0, ondoErrorCode_js_1.ondoErrorCodeFromBody)(data.error_code);
125
+ if (bodyCode !== undefined) {
126
+ throw new OndoApiError(`Ondo API error for ${path}: ${data.error_code} — ${data.error ?? 'no error message'}`, data.error_code, bodyCode);
127
+ }
128
+ }
122
129
  if (status < 200 || status >= 300) {
123
- throw new OndoApiError(`Ondo API request failed: ${status} — ${JSON.stringify(data).slice(0, 200)}`, isGenericResponse(data) ? data.error_code : undefined);
130
+ throw new OndoApiError(`Ondo API request failed: ${status} — ${JSON.stringify(data).slice(0, 200)}`, isGenericResponse(data) ? data.error_code : undefined, (0, perps_sdk_1.errorCodeFromStatus)(status, perps_types_1.PerpsErrorCode.ThirdPartyError));
124
131
  }
125
132
  if (!isGenericResponse(data)) {
126
133
  throw new OndoApiError(`Ondo API returned an unexpected body for ${path}: ${JSON.stringify(data).slice(0, 200)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":";;;AAAA,+CAMwB;AACxB,mDAAkD;AAGlD,yDAA0D;AAqB1D,MAAa,YAAa,SAAQ,sBAAU;IACjC,SAAS,CAAoB;IAEtC,YACE,OAAe,EACf,SAAkB,EAClB,OAAuB,4BAAc,CAAC,eAAe;QAErD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;CACF;AAXD,oCAWC;AASD,MAAa,uBAAwB,SAAQ,sBAAU;IACrD,YAAY,OAAe;QACzB,KAAK,CAAC,4BAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;CACF;AAJD,0DAIC;AAGY,QAAA,mBAAmB,GAAwB;IACtD,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QACD,IACE,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,EACvB,CAAC;YACD,OAAO,cAAc,CAAA;QACvB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAgBD,MAAM,iBAAiB,GAAG,CACxB,IAAa,EACyB,EAAE,CACxC,OAAO,IAAI,KAAK,QAAQ;IACxB,IAAI,KAAK,IAAI;IACb,OAAQ,IAA8B,CAAC,OAAO,KAAK,SAAS,CAAA;AAc9D,MAAa,aAAa;IACP,OAAO,CAAQ;IACf,MAAM,CAAyB;IAC/B,MAAM,CAAqB;IAC3B,SAAS,CAA0B;IAEpD,YAAY,OAAe,EAAE,OAA8B;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,2BAAmB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,OAA4B;QACrD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IAMD,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAA4B;QAE5B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAa,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAI,IAAoC,CAAC,QAAQ,CAAA;QAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAKD,KAAK,CAAC,IAAI,CACR,MAAsB,EACtB,IAAY,EACZ,OAIC;QAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAChD,MAAM;YACN,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,0BAAc;SACxD,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IAOD,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,IAAc,EACd,OAA+C;QAE/C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,0BAAc;SACvB,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEO,QAAQ,CAAC,IAAY,EAAE,MAAkB;QAC/C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAA;QACpC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAC9B,GAAG,CACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CACxE;aACA,IAAI,CAAC,GAAG,CAAC,CAAA;QACZ,OAAO,GAAG,GAAG,IAAI,EAAE,EAAE,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,OAOC;QAED,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;YAC1B,GAAG,OAAO,CAAC,OAAO;SACnB,CAAA;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,SAAS,EAAE,CAAA;QACvD,CAAC;QACD,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;QAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,0BAAc,EACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACnC,IAAI,EACJ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAC3E,CAAA;QACD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAClE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;IAC1C,CAAC;IAEO,MAAM,CAAI,IAAY,EAAE,MAAc,EAAE,IAAa;QAE3D,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,uBAAuB,CAC/B,uCAAuC,IAAI,EAAE,CAC9C,CAAA;QACH,CAAC;QACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAA,wCAAqB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,YAAY,CACpB,sBAAsB,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,KAAK,IAAI,kBAAkB,EAAE,EACtF,IAAI,CAAC,UAAU,EACf,QAAQ,CACT,CAAA;YACH,CAAC;QACH,CAAC;QACD,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClC,MAAM,IAAI,YAAY,CACpB,4BAA4B,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC5E,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACrD,IAAA,+BAAmB,EAAC,MAAM,EAAE,4BAAc,CAAC,eAAe,CAAC,CAC5D,CAAA;QACH,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,YAAY,CACpB,4CAA4C,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC1F,CAAA;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CACpB,sBAAsB,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,SAAS,MAAM,IAAI,CAAC,KAAK,IAAI,kBAAkB,EAAE,EACnG,IAAI,CAAC,UAAU,CAChB,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAW,CAAA;IACzB,CAAC;CACF;AArKD,sCAqKC"}
@@ -0,0 +1,3 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
+ export declare const ondoErrorCodeFromBody: (errorCode: string | undefined) => PerpsErrorCode | undefined;
3
+ //# sourceMappingURL=ondoErrorCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoErrorCode.d.ts","sourceRoot":"","sources":["../../../src/utils/ondoErrorCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYlD,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,GAAG,SAAS,KAC5B,cAAc,GAAG,SACwD,CAAA"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ondoErrorCodeFromBody = void 0;
4
+ const perps_types_1 = require("@lifi/perps-types");
5
+ const ONDO_BODY_ERROR_CODES = new Map([
6
+ ['insufficient_margin', perps_types_1.PerpsErrorCode.InsufficientMargin],
7
+ ['clientOrderID_collision', perps_types_1.PerpsErrorCode.NonceAlreadyUsed],
8
+ ]);
9
+ const ondoErrorCodeFromBody = (errorCode) => errorCode === undefined ? undefined : ONDO_BODY_ERROR_CODES.get(errorCode);
10
+ exports.ondoErrorCodeFromBody = ondoErrorCodeFromBody;
11
+ //# sourceMappingURL=ondoErrorCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoErrorCode.js","sourceRoot":"","sources":["../../../src/utils/ondoErrorCode.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAGlD,MAAM,qBAAqB,GAAwC,IAAI,GAAG,CAAC;IACzE,CAAC,qBAAqB,EAAE,4BAAc,CAAC,kBAAkB,CAAC;IAC1D,CAAC,yBAAyB,EAAE,4BAAc,CAAC,gBAAgB,CAAC;CAC7D,CAAC,CAAA;AAMK,MAAM,qBAAqB,GAAG,CACnC,SAA6B,EACD,EAAE,CAC9B,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAH/D,QAAA,qBAAqB,yBAG0C"}
@@ -1,4 +1,5 @@
1
1
  import { PerpsError, type ResolvedRetryPolicy } from '@lifi/perps-sdk';
2
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
3
  import type { OndoPageInfo } from '../types/wire.js';
3
4
  /** @internal */
4
5
  export type ApiParams = Record<string, string | number | boolean>;
@@ -18,7 +19,7 @@ export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
18
19
  */
19
20
  export declare class OndoApiError extends PerpsError {
20
21
  readonly errorCode: string | undefined;
21
- constructor(message: string, errorCode?: string);
22
+ constructor(message: string, errorCode?: string, code?: PerpsErrorCode);
22
23
  }
23
24
  /**
24
25
  * The Ondo session JWT was rejected (HTTP 401). Distinct from
@@ -52,7 +53,8 @@ export interface OndoRequestOptions {
52
53
  * the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
53
54
  * client unwraps `result` on success and throws {@link OndoApiError} (carrying
54
55
  * the wire `error_code`) otherwise. An HTTP 401 throws
55
- * {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
56
+ * {@link OndoSessionExpiredError} so callers can re-run the SIWE login, and an
57
+ * HTTP 429 carries `RateLimitExceeded`.
56
58
  * @public
57
59
  */
58
60
  export declare class OndoApiClient {
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAIhD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAWb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAyBf"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAGpC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,cAA+C;CAKxD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAWb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAqCf"}
@@ -1,5 +1,6 @@
1
- import { DISABLED_RETRY, fetchWithRetry, PerpsError, } from '@lifi/perps-sdk';
1
+ import { DISABLED_RETRY, errorCodeFromStatus, fetchWithRetry, PerpsError, } from '@lifi/perps-sdk';
2
2
  import { PerpsErrorCode } from '@lifi/perps-types';
3
+ import { ondoErrorCodeFromBody } from './ondoErrorCode.js';
3
4
  /**
4
5
  * Ondo request failure — a non-2xx HTTP status, a `success: false` envelope,
5
6
  * or a body that is not a `GenericResponse` envelope at all. `errorCode`
@@ -9,8 +10,8 @@ import { PerpsErrorCode } from '@lifi/perps-types';
9
10
  */
10
11
  export class OndoApiError extends PerpsError {
11
12
  errorCode;
12
- constructor(message, errorCode) {
13
- super(PerpsErrorCode.ThirdPartyError, message);
13
+ constructor(message, errorCode, code = PerpsErrorCode.ThirdPartyError) {
14
+ super(code, message);
14
15
  this.errorCode = errorCode;
15
16
  }
16
17
  }
@@ -56,7 +57,8 @@ const isGenericResponse = (data) => typeof data === 'object' &&
56
57
  * the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
57
58
  * client unwraps `result` on success and throws {@link OndoApiError} (carrying
58
59
  * the wire `error_code`) otherwise. An HTTP 401 throws
59
- * {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
60
+ * {@link OndoSessionExpiredError} so callers can re-run the SIWE login, and an
61
+ * HTTP 429 carries `RateLimitExceeded`.
60
62
  * @public
61
63
  */
62
64
  export class OndoApiClient {
@@ -149,11 +151,18 @@ export class OndoApiClient {
149
151
  return { status: response.status, data };
150
152
  }
151
153
  unwrap(path, status, data) {
154
+ // A 401 outranks any body code: only this branch evicts the stale JWT.
152
155
  if (status === 401) {
153
156
  throw new OndoSessionExpiredError(`Ondo rejected the session token for ${path}`);
154
157
  }
158
+ if (isGenericResponse(data) && !data.success) {
159
+ const bodyCode = ondoErrorCodeFromBody(data.error_code);
160
+ if (bodyCode !== undefined) {
161
+ throw new OndoApiError(`Ondo API error for ${path}: ${data.error_code} — ${data.error ?? 'no error message'}`, data.error_code, bodyCode);
162
+ }
163
+ }
155
164
  if (status < 200 || status >= 300) {
156
- throw new OndoApiError(`Ondo API request failed: ${status} — ${JSON.stringify(data).slice(0, 200)}`, isGenericResponse(data) ? data.error_code : undefined);
165
+ throw new OndoApiError(`Ondo API request failed: ${status} — ${JSON.stringify(data).slice(0, 200)}`, isGenericResponse(data) ? data.error_code : undefined, errorCodeFromStatus(status, PerpsErrorCode.ThirdPartyError));
157
166
  }
158
167
  if (!isGenericResponse(data)) {
159
168
  throw new OndoApiError(`Ondo API returned an unexpected body for ${path}: ${JSON.stringify(data).slice(0, 200)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
+ /**
3
+ * Maps an Ondo envelope `error_code` to the `PerpsErrorCode` it names. Returns
4
+ * `undefined` for every other code so the status-driven layer decides.
5
+ */
6
+ export declare const ondoErrorCodeFromBody: (errorCode: string | undefined) => PerpsErrorCode | undefined;
7
+ //# sourceMappingURL=ondoErrorCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoErrorCode.d.ts","sourceRoot":"","sources":["../../../src/utils/ondoErrorCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAQlD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,GAAG,SAAS,KAC5B,cAAc,GAAG,SACwD,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
+ /** Ondo envelope `error_code` values that name a rejection a `PerpsErrorCode` describes. */
3
+ const ONDO_BODY_ERROR_CODES = new Map([
4
+ ['insufficient_margin', PerpsErrorCode.InsufficientMargin],
5
+ ['clientOrderID_collision', PerpsErrorCode.NonceAlreadyUsed],
6
+ ]);
7
+ /**
8
+ * Maps an Ondo envelope `error_code` to the `PerpsErrorCode` it names. Returns
9
+ * `undefined` for every other code so the status-driven layer decides.
10
+ */
11
+ export const ondoErrorCodeFromBody = (errorCode) => errorCode === undefined ? undefined : ONDO_BODY_ERROR_CODES.get(errorCode);
12
+ //# sourceMappingURL=ondoErrorCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoErrorCode.js","sourceRoot":"","sources":["../../../src/utils/ondoErrorCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,4FAA4F;AAC5F,MAAM,qBAAqB,GAAwC,IAAI,GAAG,CAAC;IACzE,CAAC,qBAAqB,EAAE,cAAc,CAAC,kBAAkB,CAAC;IAC1D,CAAC,yBAAyB,EAAE,cAAc,CAAC,gBAAgB,CAAC;CAC7D,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,SAA6B,EACD,EAAE,CAC9B,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { PerpsError, type ResolvedRetryPolicy } from '@lifi/perps-sdk';
2
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
3
  import type { OndoPageInfo } from '../types/wire.js';
3
4
  /** @internal */
4
5
  export type ApiParams = Record<string, string | number | boolean>;
@@ -18,7 +19,7 @@ export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
18
19
  */
19
20
  export declare class OndoApiError extends PerpsError {
20
21
  readonly errorCode: string | undefined;
21
- constructor(message: string, errorCode?: string);
22
+ constructor(message: string, errorCode?: string, code?: PerpsErrorCode);
22
23
  }
23
24
  /**
24
25
  * The Ondo session JWT was rejected (HTTP 401). Distinct from
@@ -52,7 +53,8 @@ export interface OndoRequestOptions {
52
53
  * the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
53
54
  * client unwraps `result` on success and throws {@link OndoApiError} (carrying
54
55
  * the wire `error_code`) otherwise. An HTTP 401 throws
55
- * {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
56
+ * {@link OndoSessionExpiredError} so callers can re-run the SIWE login, and an
57
+ * HTTP 429 carries `RateLimitExceeded`.
56
58
  * @public
57
59
  */
58
60
  export declare class OndoApiClient {
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAIhD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAWb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAyBf"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAGpC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,cAA+C;CAKxD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,OAAO,CAAC,CAAC,CAAC;IAWb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAqCf"}
@@ -0,0 +1,7 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types';
2
+ /**
3
+ * Maps an Ondo envelope `error_code` to the `PerpsErrorCode` it names. Returns
4
+ * `undefined` for every other code so the status-driven layer decides.
5
+ */
6
+ export declare const ondoErrorCodeFromBody: (errorCode: string | undefined) => PerpsErrorCode | undefined;
7
+ //# sourceMappingURL=ondoErrorCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoErrorCode.d.ts","sourceRoot":"","sources":["../../../src/utils/ondoErrorCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAQlD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,GAAG,SAAS,KAC5B,cAAc,GAAG,SACwD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-ondo",
3
- "version": "12.0.0",
3
+ "version": "14.0.0",
4
4
  "description": "Ondo Perps provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -44,10 +44,10 @@
44
44
  "dependencies": {
45
45
  "big.js": "^7.0.1",
46
46
  "viem": "^2.55.18",
47
- "@lifi/perps-types": "^12.0.0"
47
+ "@lifi/perps-types": "^12.1.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@lifi/perps-sdk": "^11.0.0"
50
+ "@lifi/perps-sdk": "^12.1.0"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  DISABLED_RETRY,
3
+ errorCodeFromStatus,
3
4
  fetchWithRetry,
4
5
  PerpsError,
5
6
  type ResolvedRetryPolicy,
@@ -7,6 +8,7 @@ import {
7
8
  import { PerpsErrorCode } from '@lifi/perps-types'
8
9
  import type { OndoGenericResponse } from '../types/auth.js'
9
10
  import type { OndoPageInfo } from '../types/wire.js'
11
+ import { ondoErrorCodeFromBody } from './ondoErrorCode.js'
10
12
 
11
13
  /** @internal */
12
14
  export type ApiParams = Record<string, string | number | boolean>
@@ -30,8 +32,12 @@ export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'
30
32
  export class OndoApiError extends PerpsError {
31
33
  readonly errorCode: string | undefined
32
34
 
33
- constructor(message: string, errorCode?: string) {
34
- super(PerpsErrorCode.ThirdPartyError, message)
35
+ constructor(
36
+ message: string,
37
+ errorCode?: string,
38
+ code: PerpsErrorCode = PerpsErrorCode.ThirdPartyError
39
+ ) {
40
+ super(code, message)
35
41
  this.errorCode = errorCode
36
42
  }
37
43
  }
@@ -100,7 +106,8 @@ const isGenericResponse = (
100
106
  * the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
101
107
  * client unwraps `result` on success and throws {@link OndoApiError} (carrying
102
108
  * the wire `error_code`) otherwise. An HTTP 401 throws
103
- * {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
109
+ * {@link OndoSessionExpiredError} so callers can re-run the SIWE login, and an
110
+ * HTTP 429 carries `RateLimitExceeded`.
104
111
  * @public
105
112
  */
106
113
  export class OndoApiClient {
@@ -232,15 +239,27 @@ export class OndoApiClient {
232
239
  }
233
240
 
234
241
  private unwrap<T>(path: string, status: number, data: unknown): T {
242
+ // A 401 outranks any body code: only this branch evicts the stale JWT.
235
243
  if (status === 401) {
236
244
  throw new OndoSessionExpiredError(
237
245
  `Ondo rejected the session token for ${path}`
238
246
  )
239
247
  }
248
+ if (isGenericResponse(data) && !data.success) {
249
+ const bodyCode = ondoErrorCodeFromBody(data.error_code)
250
+ if (bodyCode !== undefined) {
251
+ throw new OndoApiError(
252
+ `Ondo API error for ${path}: ${data.error_code} — ${data.error ?? 'no error message'}`,
253
+ data.error_code,
254
+ bodyCode
255
+ )
256
+ }
257
+ }
240
258
  if (status < 200 || status >= 300) {
241
259
  throw new OndoApiError(
242
260
  `Ondo API request failed: ${status} — ${JSON.stringify(data).slice(0, 200)}`,
243
- isGenericResponse(data) ? data.error_code : undefined
261
+ isGenericResponse(data) ? data.error_code : undefined,
262
+ errorCodeFromStatus(status, PerpsErrorCode.ThirdPartyError)
244
263
  )
245
264
  }
246
265
  if (!isGenericResponse(data)) {
@@ -0,0 +1,16 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+
3
+ /** Ondo envelope `error_code` values that name a rejection a `PerpsErrorCode` describes. */
4
+ const ONDO_BODY_ERROR_CODES: ReadonlyMap<string, PerpsErrorCode> = new Map([
5
+ ['insufficient_margin', PerpsErrorCode.InsufficientMargin],
6
+ ['clientOrderID_collision', PerpsErrorCode.NonceAlreadyUsed],
7
+ ])
8
+
9
+ /**
10
+ * Maps an Ondo envelope `error_code` to the `PerpsErrorCode` it names. Returns
11
+ * `undefined` for every other code so the status-driven layer decides.
12
+ */
13
+ export const ondoErrorCodeFromBody = (
14
+ errorCode: string | undefined
15
+ ): PerpsErrorCode | undefined =>
16
+ errorCode === undefined ? undefined : ONDO_BODY_ERROR_CODES.get(errorCode)