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