@mocanetwork/airkit 1.1.0 → 1.2.0-beta.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.
@@ -118,6 +118,8 @@ const AirAuthMessageTypes = {
118
118
  SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
119
119
  CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
120
120
  CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
121
+ GET_PARTNER_ACCESS_TOKEN_REQUEST: "air_auth_get_partner_access_token_request",
122
+ GET_PARTNER_ACCESS_TOKEN_RESPONSE: "air_auth_get_partner_access_token_response",
121
123
  LOGOUT_REQUEST: "air_auth_logout_request",
122
124
  LOGOUT_RESPONSE: "air_auth_logout_response",
123
125
  RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
@@ -143,7 +145,12 @@ const AirMessageTypes = {
143
145
  EXECUTE_ACTION_RESPONSE: "air_execute_action_response",
144
146
  REVOKE_PERMISSIONS_REQUEST: "air_revoke_permissions_request",
145
147
  REVOKE_PERMISSIONS_RESPONSE: "air_revoke_permissions_response",
148
+ LIST_ALL_SESSION_KEY_SCOPES_REQUEST: "air_list_all_session_key_scopes_request",
149
+ LIST_ALL_SESSION_KEY_SCOPES_RESPONSE: "air_list_all_session_key_scopes_response",
146
150
  WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request",
151
+ OPEN_WINDOW_REQUEST: "air_open_window_request",
152
+ OPEN_WINDOW_RESPONSE: "air_open_window_response",
153
+ WINDOW_CLOSED: "air_window_closed",
147
154
  IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
148
155
  IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
149
156
  LOGOUT_REQUEST: "air_logout_request",
@@ -171,6 +178,16 @@ class BaseError extends Error {
171
178
  };
172
179
  }
173
180
  }
181
+ function ensureError(value) {
182
+ if (value instanceof Error) return value;
183
+ let stringified = "[Unable to stringify the thrown value]";
184
+ try {
185
+ stringified = JSON.stringify(value);
186
+ } catch {
187
+ // ignoring failed stringify
188
+ }
189
+ return new Error(`This value was not thrown as type Error: ${stringified}`);
190
+ }
174
191
 
175
192
  class AirServiceError extends BaseError {
176
193
  static from(error) {
@@ -1374,9 +1391,11 @@ const ACCOUNT_MESSAGES = [
1374
1391
  AirMessageTypes.EXECUTE_ACTION_RESPONSE,
1375
1392
  AirMessageTypes.REVOKE_PERMISSIONS_RESPONSE,
1376
1393
  AirMessageTypes.GRANT_PERMISSIONS_RESPONSE,
1394
+ AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE,
1377
1395
  AirMessageTypes.WALLET_INITIALIZED,
1378
1396
  AirMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST,
1379
1397
  AirMessageTypes.LOGOUT_RESPONSE,
1398
+ AirMessageTypes.OPEN_WINDOW_REQUEST,
1380
1399
  ];
1381
1400
  const AUTH_MESSAGES = [
1382
1401
  AirAuthMessageTypes.INITIALIZATION_RESPONSE,
@@ -1386,6 +1405,7 @@ const AUTH_MESSAGES = [
1386
1405
  AirAuthMessageTypes.LOGOUT_RESPONSE,
1387
1406
  AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
1388
1407
  AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
1408
+ AirAuthMessageTypes.GET_PARTNER_ACCESS_TOKEN_RESPONSE,
1389
1409
  AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
1390
1410
  ];
1391
1411
  class AirMessageService {
@@ -1599,6 +1619,12 @@ class AirMessageService {
1599
1619
  walletIframe.contentWindow.postMessage({ type: AirMessageTypes.GRANT_PERMISSIONS_REQUEST, payload }, origin);
1600
1620
  return response;
1601
1621
  }
1622
+ async sendListAllSessionKeyScopesRequest(walletIframe) {
1623
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE)));
1624
+ const { origin } = new URL(walletIframe.src);
1625
+ walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_REQUEST }, origin);
1626
+ return response;
1627
+ }
1602
1628
  onWalletInitialized() {
1603
1629
  return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
1604
1630
  }
@@ -1614,6 +1640,37 @@ class AirMessageService {
1614
1640
  walletIframe.contentWindow.postMessage({ type: AirMessageTypes.SETUP_MFA_REQUEST }, origin);
1615
1641
  return response;
1616
1642
  }
1643
+ sendOpenWindowSuccessResponse(walletIframe, windowId, port) {
1644
+ const { origin: walletOrigin } = new URL(walletIframe.src);
1645
+ walletIframe.contentWindow.postMessage({
1646
+ type: AirMessageTypes.OPEN_WINDOW_RESPONSE,
1647
+ payload: {
1648
+ success: true,
1649
+ windowId,
1650
+ },
1651
+ }, walletOrigin, [port]);
1652
+ }
1653
+ sendOpenWindowErrorResponse(walletIframe, windowId, error) {
1654
+ const { origin: walletOrigin } = new URL(walletIframe.src);
1655
+ walletIframe.contentWindow.postMessage({
1656
+ type: AirMessageTypes.OPEN_WINDOW_RESPONSE,
1657
+ payload: {
1658
+ success: false,
1659
+ windowId,
1660
+ errorName: "UNKNOWN_ERROR",
1661
+ errorMessage: error.message,
1662
+ },
1663
+ }, walletOrigin);
1664
+ }
1665
+ sendWindowClosed(walletIframe, windowId) {
1666
+ const { origin: walletOrigin } = new URL(walletIframe.src);
1667
+ walletIframe.contentWindow.postMessage({
1668
+ type: AirMessageTypes.WINDOW_CLOSED,
1669
+ payload: {
1670
+ windowId,
1671
+ },
1672
+ }, walletOrigin);
1673
+ }
1617
1674
  async sendClaimIdRequest(walletIframe, payload) {
1618
1675
  const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.CLAIM_ID_RESPONSE)));
1619
1676
  const { origin } = new URL(walletIframe.src);
@@ -1660,11 +1717,18 @@ class AirMessageService {
1660
1717
  this._providerMessage$ = new Subject();
1661
1718
  this._providerEvent$ = new Subject();
1662
1719
  }
1720
+ async sendGetPartnerAccessTokenRequest(authIframe) {
1721
+ const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.GET_PARTNER_ACCESS_TOKEN_RESPONSE)));
1722
+ const { origin } = new URL(authIframe.src);
1723
+ authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.GET_PARTNER_ACCESS_TOKEN_REQUEST }, origin);
1724
+ return response;
1725
+ }
1663
1726
  }
1664
1727
  var AirMessageService$1 = AirMessageService.instance;
1665
1728
 
1666
1729
  const BUILD_ENV = {
1667
1730
  PRODUCTION: "production",
1731
+ UAT: "uat",
1668
1732
  STAGING: "staging",
1669
1733
  DEVELOPMENT: "development",
1670
1734
  };
@@ -1675,6 +1739,11 @@ const AIR_URLS = {
1675
1739
  walletUrl: "http://localhost:8200",
1676
1740
  logLevel: "debug",
1677
1741
  },
1742
+ [BUILD_ENV.UAT]: {
1743
+ authUrl: "https://auth.uat.air3.com",
1744
+ walletUrl: "https://account.uat.air3.com",
1745
+ logLevel: "info",
1746
+ },
1678
1747
  [BUILD_ENV.STAGING]: {
1679
1748
  authUrl: "https://auth.staging.air3.com",
1680
1749
  walletUrl: "https://account.staging.air3.com",
@@ -1688,6 +1757,24 @@ const AIR_URLS = {
1688
1757
  };
1689
1758
  const isElement = (element) => element instanceof Element || element instanceof Document;
1690
1759
  const randomId = () => Math.random().toString(36).slice(2);
1760
+ const getWindowFeatures = (width, height) => {
1761
+ const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
1762
+ const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
1763
+ const w = window.innerWidth
1764
+ ? window.innerWidth
1765
+ : document.documentElement.clientWidth
1766
+ ? document.documentElement.clientWidth
1767
+ : window.screen.width;
1768
+ const h = window.innerHeight
1769
+ ? window.innerHeight
1770
+ : document.documentElement.clientHeight
1771
+ ? document.documentElement.clientHeight
1772
+ : window.screen.height;
1773
+ const systemZoom = 1; // No reliable estimate
1774
+ const left = Math.abs((w - width) / 2 / systemZoom + dualScreenLeft);
1775
+ const top = Math.abs((h - height) / 2 / systemZoom + dualScreenTop);
1776
+ return `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${height / systemZoom},width=${width / systemZoom},top=${top},left=${left}`;
1777
+ };
1691
1778
 
1692
1779
  var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
1693
1780
  class AirWalletProvider {
@@ -1844,7 +1931,145 @@ IframeController.defaultState = {
1844
1931
  isVisible: false,
1845
1932
  };
1846
1933
 
1847
- var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
1934
+ class WindowController {
1935
+ get messages$() {
1936
+ return this._messages$.asObservable();
1937
+ }
1938
+ constructor(windowUrl, windowId) {
1939
+ this._windowInstance = null;
1940
+ this._messageHandler = null;
1941
+ this._messages$ = new Subject();
1942
+ this.windowUrl = windowUrl;
1943
+ this.windowOrigin = new URL(windowUrl).origin;
1944
+ this.windowId = windowId;
1945
+ }
1946
+ get windowInstance() {
1947
+ return this._windowInstance;
1948
+ }
1949
+ openWindow() {
1950
+ if (this._windowInstance && !this._windowInstance.closed) {
1951
+ this._windowInstance.focus();
1952
+ return this._windowInstance;
1953
+ }
1954
+ const windowInstance = window.open(this.windowUrl, this.windowId, getWindowFeatures(400, 600));
1955
+ if (!windowInstance) {
1956
+ throw new Error("Failed to open window. Popup might be blocked by the browser.");
1957
+ }
1958
+ this._windowInstance = windowInstance;
1959
+ this._messageHandler = (ev) => {
1960
+ if (ev.source !== windowInstance ||
1961
+ ev.origin !== this.windowOrigin ||
1962
+ !ev.data ||
1963
+ !(ev.data instanceof Object)) {
1964
+ return;
1965
+ }
1966
+ this._messages$.next(ev);
1967
+ };
1968
+ window.addEventListener("message", this._messageHandler);
1969
+ const checkWindow = setInterval(() => {
1970
+ if (!this._windowInstance || this._windowInstance?.closed) {
1971
+ this.cleanup();
1972
+ clearInterval(checkWindow);
1973
+ }
1974
+ }, 500);
1975
+ return windowInstance;
1976
+ }
1977
+ postMessage(message, transfer) {
1978
+ if (!this._windowInstance)
1979
+ return;
1980
+ this._windowInstance.postMessage(message, this.windowOrigin, transfer);
1981
+ }
1982
+ onMessage(callback) {
1983
+ const listener = (ev) => {
1984
+ if (ev.source !== this._windowInstance)
1985
+ return;
1986
+ callback(ev);
1987
+ };
1988
+ window.addEventListener("message", listener);
1989
+ const close = () => window.removeEventListener("message", listener);
1990
+ this.onClose(close);
1991
+ return {
1992
+ close,
1993
+ };
1994
+ }
1995
+ cleanup() {
1996
+ if (this._windowInstance && !this._windowInstance.closed) {
1997
+ this._windowInstance.close();
1998
+ }
1999
+ if (this._messageHandler) {
2000
+ window.removeEventListener("message", this._messageHandler);
2001
+ this._messageHandler = null;
2002
+ }
2003
+ if (this._messages$ && !this._messages$.closed) {
2004
+ this._messages$.complete();
2005
+ }
2006
+ this._windowInstance = null;
2007
+ }
2008
+ onClose(callback) {
2009
+ return this._messages$.subscribe({
2010
+ complete: callback,
2011
+ });
2012
+ }
2013
+ }
2014
+
2015
+ class WindowService {
2016
+ constructor() {
2017
+ this.windowControllers = new Map();
2018
+ }
2019
+ static get instance() {
2020
+ return this._instance || (this._instance = new this());
2021
+ }
2022
+ async sendWindowInitializationRequest(windowId, payload, port) {
2023
+ const windowController = this.windowControllers.get(windowId);
2024
+ if (!windowController) {
2025
+ throw new Error("Window controller not found");
2026
+ }
2027
+ const windowInstance = windowController.windowInstance;
2028
+ if (!windowInstance) {
2029
+ throw new Error("Window instance not found");
2030
+ }
2031
+ const response = firstValueFrom(windowController.messages$.pipe(filter((event) => event.data.type === AirMessageTypes.INITIALIZATION_RESPONSE)));
2032
+ windowController.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, [port]);
2033
+ return (await response).data;
2034
+ }
2035
+ async openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging, port, }) {
2036
+ if (this.windowControllers.has(windowId)) {
2037
+ throw new Error("Window controller already exists");
2038
+ }
2039
+ const windowController = new WindowController(url, windowId);
2040
+ this.windowControllers.set(windowId, windowController);
2041
+ windowController.openWindow();
2042
+ windowController.onClose(() => {
2043
+ this.removeWindowController(windowId);
2044
+ });
2045
+ await new Promise((resolve, reject) => {
2046
+ windowController.onMessage(async (ev) => {
2047
+ if (ev.data === AirMessageTypes.SERVICE_STARTED) {
2048
+ const { payload } = await this.sendWindowInitializationRequest(windowId, {
2049
+ partnerId,
2050
+ enableLogging,
2051
+ }, port);
2052
+ if (payload.success === false) {
2053
+ reject(new AirServiceError(payload.errorName, payload.errorMessage));
2054
+ }
2055
+ else {
2056
+ resolve();
2057
+ }
2058
+ }
2059
+ });
2060
+ });
2061
+ return windowController;
2062
+ }
2063
+ getWindowController(windowId) {
2064
+ return this.windowControllers.get(windowId);
2065
+ }
2066
+ removeWindowController(windowId) {
2067
+ this.windowControllers.delete(windowId);
2068
+ }
2069
+ }
2070
+ var WindowService$1 = WindowService.instance;
2071
+
2072
+ var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_subscribeToWalletEvents, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
1848
2073
  class AirService {
1849
2074
  constructor({ partnerId }) {
1850
2075
  _AirService_instances.add(this);
@@ -2031,6 +2256,24 @@ class AirService {
2031
2256
  throw AirServiceError.from(error);
2032
2257
  }
2033
2258
  }
2259
+ /**
2260
+ * @experimental This method is experimental and will change in the future.
2261
+ */
2262
+ async listAllSessionKeyScopes() {
2263
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2264
+ throw new Error("Service is not initialized");
2265
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2266
+ try {
2267
+ const { payload } = await AirMessageService$1.sendListAllSessionKeyScopesRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
2268
+ if (payload.success === false) {
2269
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
2270
+ }
2271
+ return payload.sessionKeyScopes;
2272
+ }
2273
+ catch (error) {
2274
+ throw AirServiceError.from(error);
2275
+ }
2276
+ }
2034
2277
  /**
2035
2278
  * @experimental This method is experimental and will change in the future.
2036
2279
  */
@@ -2161,6 +2404,20 @@ class AirService {
2161
2404
  clearEventListeners() {
2162
2405
  __classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
2163
2406
  }
2407
+ async getPartnerAccessToken() {
2408
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2409
+ throw new Error("Service is not initialized");
2410
+ if (!this.isLoggedIn)
2411
+ throw new Error("No active session to get partner access token");
2412
+ const result = await AirMessageService$1.sendGetPartnerAccessTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2413
+ if (result.payload.success === false) {
2414
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2415
+ }
2416
+ if (!result.payload.partnerAccessToken) {
2417
+ throw new Error("Partner access token not found in response");
2418
+ }
2419
+ return result.payload.partnerAccessToken;
2420
+ }
2164
2421
  }
2165
2422
  _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_walletLoggedInResult = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet = async function _AirService_ensureWallet(option) {
2166
2423
  if (!this.isInitialized)
@@ -2199,23 +2456,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2199
2456
  try {
2200
2457
  __classPrivateFieldSet(this, _AirService_walletIframeController, new IframeController(walletUrl, `air-wallet-${randomId()}`), "f");
2201
2458
  __classPrivateFieldGet(this, _AirService_walletIframeController, "f").createIframe();
2202
- AirMessageService$1.messages$.subscribe(async (msg) => {
2203
- switch (msg.type) {
2204
- case AirMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST: {
2205
- const walletIframeController = __classPrivateFieldGet(this, _AirService_walletIframeController, "f");
2206
- walletIframeController.setIframeVisibility(msg.payload.visible);
2207
- walletIframeController.updateIframeState();
2208
- break;
2209
- }
2210
- case AirMessageTypes.WALLET_LOGIN_RESPONSE: {
2211
- if (msg.payload.success === true && !__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")) {
2212
- __classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
2213
- __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
2214
- }
2215
- break;
2216
- }
2217
- }
2218
- });
2459
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToWalletEvents).call(this);
2219
2460
  await new Promise((resolve, reject) => {
2220
2461
  const handleAuthMessage = async (ev) => {
2221
2462
  if (ev.origin !== walletIframeOrigin)
@@ -2254,6 +2495,43 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2254
2495
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2255
2496
  throw error;
2256
2497
  }
2498
+ }, _AirService_subscribeToWalletEvents = function _AirService_subscribeToWalletEvents() {
2499
+ AirMessageService$1.messages$.subscribe(async (msg) => {
2500
+ switch (msg.type) {
2501
+ case AirMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST: {
2502
+ const walletIframeController = __classPrivateFieldGet(this, _AirService_walletIframeController, "f");
2503
+ walletIframeController.setIframeVisibility(msg.payload.visible);
2504
+ walletIframeController.updateIframeState();
2505
+ break;
2506
+ }
2507
+ case AirMessageTypes.WALLET_LOGIN_RESPONSE: {
2508
+ if (msg.payload.success === true && !__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")) {
2509
+ __classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
2510
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
2511
+ }
2512
+ break;
2513
+ }
2514
+ case AirMessageTypes.OPEN_WINDOW_REQUEST: {
2515
+ try {
2516
+ const channel = new MessageChannel();
2517
+ const windowController = await WindowService$1.openAndInitializeWalletServiceWindow({
2518
+ url: msg.payload.url,
2519
+ windowId: msg.payload.windowId,
2520
+ partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
2521
+ enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
2522
+ port: channel.port1,
2523
+ });
2524
+ windowController.onClose(() => AirMessageService$1.sendWindowClosed(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, msg.payload.windowId));
2525
+ AirMessageService$1.sendOpenWindowSuccessResponse(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, msg.payload.windowId, channel.port2);
2526
+ }
2527
+ catch (err) {
2528
+ const error = ensureError(err);
2529
+ AirMessageService$1.sendOpenWindowErrorResponse(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, msg.payload.windowId, error);
2530
+ }
2531
+ break;
2532
+ }
2533
+ }
2534
+ });
2257
2535
  }, _AirService_triggerEventListeners = function _AirService_triggerEventListeners(data) {
2258
2536
  __classPrivateFieldGet(this, _AirService_airAuthListener, "f").forEach((listener) => {
2259
2537
  listener(data);