@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.esm.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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);
|