@imtbl/sdk 0.22.0 → 0.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -838,11 +838,6 @@ type CreateListingRequestBody = {
838
838
  start_at: string;
839
839
  };
840
840
 
841
- type FulfillmentDataRequest = {
842
- order_id: string;
843
- fees: Array<Fee$1>;
844
- };
845
-
846
841
  /**
847
842
  * The chain details
848
843
  */
@@ -907,11 +902,16 @@ type Order$1 = {
907
902
  updated_at: string;
908
903
  };
909
904
 
910
- type FulfillmentDataResult = {
905
+ type FulfillableOrder = {
911
906
  extra_data: string;
912
907
  order: Order$1;
913
908
  };
914
909
 
910
+ type FulfillmentDataRequest = {
911
+ order_id: string;
912
+ fees: Array<Fee$1>;
913
+ };
914
+
915
915
  type ListingResult$1 = {
916
916
  result: Order$1;
917
917
  };
@@ -997,6 +997,17 @@ type TradeResult$1 = {
997
997
  result: Trade$1;
998
998
  };
999
999
 
1000
+ type UnfulfillableOrder = {
1001
+ /**
1002
+ * OrderID for the requested but unfulfillable order
1003
+ */
1004
+ order_id: string;
1005
+ /**
1006
+ * Nullable string containing error reason if the signing is unsuccessful for the order
1007
+ */
1008
+ reason: string;
1009
+ };
1010
+
1000
1011
  declare class OrdersService {
1001
1012
  readonly httpRequest: BaseHttpRequest;
1002
1013
  constructor(httpRequest: BaseHttpRequest);
@@ -1074,7 +1085,10 @@ declare class OrdersService {
1074
1085
  chainName: ChainName;
1075
1086
  requestBody: Array<FulfillmentDataRequest>;
1076
1087
  }): CancelablePromise<{
1077
- result: Array<FulfillmentDataResult>;
1088
+ result: {
1089
+ fulfillable_orders: Array<FulfillableOrder>;
1090
+ unfulfillable_orders: Array<UnfulfillableOrder>;
1091
+ };
1078
1092
  }>;
1079
1093
  /**
1080
1094
  * List all trades
package/dist/orderbook.js CHANGED
@@ -1324,11 +1324,14 @@ class Orderbook {
1324
1324
  })),
1325
1325
  },
1326
1326
  ]);
1327
- if (fulfillmentDataRes.result.length !== 1) {
1328
- throw new Error('unexpected fulfillment data result length');
1327
+ if (fulfillmentDataRes.result.unfulfillable_orders?.length > 0) {
1328
+ throw new Error(`Unable to prepare fulfillment date: ${fulfillmentDataRes.result.unfulfillable_orders[0].reason}`);
1329
1329
  }
1330
- const extraData = fulfillmentDataRes.result[0].extra_data;
1331
- const orderResult = fulfillmentDataRes.result[0].order;
1330
+ else if (fulfillmentDataRes.result.fulfillable_orders?.length !== 1) {
1331
+ throw new Error('unexpected fulfillable order result length');
1332
+ }
1333
+ const extraData = fulfillmentDataRes.result.fulfillable_orders[0].extra_data;
1334
+ const orderResult = fulfillmentDataRes.result.fulfillable_orders[0].order;
1332
1335
  if (orderResult.status !== OrderStatus.ACTIVE) {
1333
1336
  throw new Error(`Cannot fulfil order that is not active. Current status: ${orderResult.status}`);
1334
1337
  }
package/dist/passport.js CHANGED
@@ -1785,7 +1785,7 @@ class MultiRollupApiClients {
1785
1785
  }
1786
1786
 
1787
1787
  // eslint-disable-next-line @typescript-eslint/naming-convention
1788
- const defaultHeaders = { 'x-sdk-version': 'ts-immutable-sdk-0.22.0' };
1788
+ const defaultHeaders = { 'x-sdk-version': 'ts-immutable-sdk-0.22.2' };
1789
1789
  const createConfig = ({ basePath, headers, }) => {
1790
1790
  if (!basePath.trim()) {
1791
1791
  throw Error('basePath can not be empty');
@@ -1841,7 +1841,7 @@ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress,
1841
1841
  chainID,
1842
1842
  coreContractAddress,
1843
1843
  registrationContractAddress,
1844
- sdkVersion: 'ts-immutable-sdk-0.22.0',
1844
+ sdkVersion: 'ts-immutable-sdk-0.22.2',
1845
1845
  });
1846
1846
  /**
1847
1847
  * Sets `sdkVersion` at the time of build
@@ -6394,6 +6394,22 @@ class DeviceCredentialsManager {
6394
6394
  }
6395
6395
  }
6396
6396
 
6397
+ function isIdTokenExpired(idToken) {
6398
+ if (!idToken) {
6399
+ return false;
6400
+ }
6401
+ const decodedToken = jwt_decode(idToken);
6402
+ const now = Math.floor(Date.now() / 1000);
6403
+ return decodedToken.exp < now;
6404
+ }
6405
+ function isTokenExpired(oidcUser) {
6406
+ const { id_token: idToken, expired } = oidcUser;
6407
+ if (expired) {
6408
+ return true;
6409
+ }
6410
+ return isIdTokenExpired(idToken);
6411
+ }
6412
+
6397
6413
  const formUrlEncodedHeader = {
6398
6414
  headers: {
6399
6415
  'Content-Type': 'application/x-www-form-urlencoded',
@@ -6671,23 +6687,30 @@ class AuthManager {
6671
6687
  }, PassportErrorType.LOGOUT_ERROR);
6672
6688
  }
6673
6689
  async loginSilent() {
6674
- return withPassportError(async () => {
6675
- const existedUser = await this.getUser();
6676
- if (!existedUser) {
6677
- return null;
6678
- }
6679
- const oidcUser = await this.userManager.signinSilent();
6680
- if (!oidcUser) {
6681
- return null;
6682
- }
6690
+ return withPassportError(async () => this.getUser(), PassportErrorType.SILENT_LOGIN_ERROR);
6691
+ }
6692
+ async getWebUser() {
6693
+ const oidcUser = await this.userManager.getUser();
6694
+ if (!oidcUser) {
6695
+ return null;
6696
+ }
6697
+ const tokenExpired = isTokenExpired(oidcUser);
6698
+ if (!tokenExpired) {
6683
6699
  return AuthManager.mapOidcUserToDomainModel(oidcUser);
6684
- }, PassportErrorType.SILENT_LOGIN_ERROR);
6700
+ }
6701
+ if (oidcUser.refresh_token) {
6702
+ const newOidcUser = await this.userManager.signinSilent();
6703
+ if (newOidcUser) {
6704
+ return AuthManager.mapOidcUserToDomainModel(newOidcUser);
6705
+ }
6706
+ }
6707
+ return null;
6685
6708
  }
6686
6709
  async getUser() {
6687
6710
  return withPassportError(async () => {
6688
- const oidcUser = await this.userManager.getUser();
6689
- if (oidcUser) {
6690
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
6711
+ const user = await this.getWebUser();
6712
+ if (user) {
6713
+ return user;
6691
6714
  }
6692
6715
  const deviceToken = this.deviceCredentialsManager.getCredentials();
6693
6716
  if (deviceToken) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@imtbl/sdk",
3
3
  "description": "Immutable Unified SDK",
4
- "version": "0.22.0",
4
+ "version": "0.22.2",
5
5
  "author": "Immutable",
6
6
  "browser": "./dist/index.browser.js",
7
7
  "bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
@@ -24,6 +24,7 @@
24
24
  "bn.js": "^5.2.1",
25
25
  "enc-utils": "^3.0.0",
26
26
  "ethers": "^5.7.2",
27
+ "jwt-decode": "^3.1.2",
27
28
  "magic-sdk": "^13.3.1",
28
29
  "oidc-client-ts": "^2.2.1"
29
30
  },