@mocanetwork/airkit 1.0.0 → 1.1.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.
- package/dist/airkit.cjs.js +400 -157
- package/dist/airkit.esm.js +390 -156
- package/dist/airkit.umd.js +400 -157
- package/dist/types/airService.d.ts +10 -7
- package/dist/types/airWalletProvider.d.ts +11 -3
- package/dist/types/common/air/error/codes.d.ts +138 -0
- package/dist/types/common/air/{error.d.ts → error/index.d.ts} +3 -2
- package/dist/types/common/air/error/types.d.ts +3 -0
- package/dist/types/common/provider/types.d.ts +6 -1
- package/dist/types/common/realm/messaging/auth.d.ts +42 -40
- package/dist/types/common/realm/messaging/provider.d.ts +21 -3
- package/dist/types/common/realm/messaging/types.d.ts +41 -50
- package/dist/types/common/realm/partner/config.d.ts +5 -12
- package/dist/types/common/realm/user/types.d.ts +7 -3
- package/dist/types/common/realm/wallet/index.d.ts +0 -2
- package/dist/types/common/utils.d.ts +2 -1
- package/dist/types/error.d.ts +46 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/interfaces.d.ts +7 -41
- package/dist/types/messageService.d.ts +8 -2
- package/package.json +1 -2
- package/dist/types/common/provider/error.d.ts +0 -16
- package/dist/types/common/realm/error/auth.d.ts +0 -1
- package/dist/types/common/realm/error/types.d.ts +0 -1
package/dist/airkit.cjs.js
CHANGED
|
@@ -104,6 +104,8 @@ const AirAuthMessageTypes = {
|
|
|
104
104
|
LOGIN_REQUEST: "air_auth_login_request",
|
|
105
105
|
LOGIN_RESPONSE: "air_auth_login_response",
|
|
106
106
|
LOGIN_WALLET_RESPONSE: "air_auth_login_wallet_response",
|
|
107
|
+
USER_INFO_REQUEST: "air_auth_user_info_request",
|
|
108
|
+
USER_INFO_RESPONSE: "air_auth_user_info_response",
|
|
107
109
|
PARTNER_USER_INFO_REQUEST: "air_auth_partner_user_info_request",
|
|
108
110
|
PARTNER_USER_INFO_RESPONSE: "air_auth_partner_user_info_response",
|
|
109
111
|
REFRESH_TOKEN_REQUEST: "air_auth_refresh_token_request",
|
|
@@ -116,8 +118,11 @@ const AirAuthMessageTypes = {
|
|
|
116
118
|
SETUP_WALLET_RESPONSE: "air_auth_setup_wallet_response",
|
|
117
119
|
SIGN_SIWE_MESSAGE_REQUEST: "air_auth_sign_siwe_message_request",
|
|
118
120
|
SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
|
|
121
|
+
CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
|
|
122
|
+
CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
|
|
119
123
|
LOGOUT_REQUEST: "air_auth_logout_request",
|
|
120
|
-
LOGOUT_RESPONSE: "air_auth_logout_response"
|
|
124
|
+
LOGOUT_RESPONSE: "air_auth_logout_response",
|
|
125
|
+
RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
|
|
121
126
|
};
|
|
122
127
|
|
|
123
128
|
const AirMessageTypes = {
|
|
@@ -126,6 +131,10 @@ const AirMessageTypes = {
|
|
|
126
131
|
INITIALIZATION_RESPONSE: "air_initialization_response",
|
|
127
132
|
INIT_AUTH_COMMUNICATION: "air_init_auth_communication",
|
|
128
133
|
WALLET_INITIALIZED: "air_wallet_initialized",
|
|
134
|
+
WALLET_LOGIN_REQUEST: "air_wallet_login_request",
|
|
135
|
+
WALLET_LOGIN_RESPONSE: "air_wallet_login_response",
|
|
136
|
+
SETUP_MFA_REQUEST: "air_setup_mfa_request",
|
|
137
|
+
SETUP_MFA_RESPONSE: "air_setup_mfa_response",
|
|
129
138
|
CLAIM_ID_REQUEST: "air_claim_id_request",
|
|
130
139
|
CLAIM_ID_RESPONSE: "air_claim_id_response",
|
|
131
140
|
DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request",
|
|
@@ -143,6 +152,152 @@ const AirMessageTypes = {
|
|
|
143
152
|
LOGOUT_RESPONSE: "air_logout_response"
|
|
144
153
|
};
|
|
145
154
|
|
|
155
|
+
class BaseError extends Error {
|
|
156
|
+
constructor(name, message, options = {}) {
|
|
157
|
+
const {
|
|
158
|
+
cause,
|
|
159
|
+
context
|
|
160
|
+
} = options;
|
|
161
|
+
super(message || name);
|
|
162
|
+
this.name = name;
|
|
163
|
+
this.stack = cause?.stack;
|
|
164
|
+
this.cause = cause;
|
|
165
|
+
this.context = context;
|
|
166
|
+
}
|
|
167
|
+
toJSON() {
|
|
168
|
+
return {
|
|
169
|
+
name: this.name,
|
|
170
|
+
message: this.message,
|
|
171
|
+
context: this.context,
|
|
172
|
+
cause: this.cause
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
class AirServiceError extends BaseError {
|
|
178
|
+
static from(error) {
|
|
179
|
+
if (error instanceof AirServiceError) {
|
|
180
|
+
return error;
|
|
181
|
+
}
|
|
182
|
+
else if (error instanceof Object && "message" in error) {
|
|
183
|
+
if (error.message === "User cancelled login") {
|
|
184
|
+
return new AirServiceError("USER_CANCELLED", error.message);
|
|
185
|
+
}
|
|
186
|
+
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
187
|
+
}
|
|
188
|
+
return new AirServiceError("UNKNOWN_ERROR");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
class ProviderRpcError extends Error {
|
|
192
|
+
constructor(message) {
|
|
193
|
+
super(message);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
class UserRejectedRequestError extends ProviderRpcError {
|
|
197
|
+
constructor() {
|
|
198
|
+
super(...arguments);
|
|
199
|
+
this.code = 4001;
|
|
200
|
+
this.name = "UserRejectedRequestError";
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
class UnauthorizedProviderError extends ProviderRpcError {
|
|
204
|
+
constructor() {
|
|
205
|
+
super(...arguments);
|
|
206
|
+
this.code = 4100;
|
|
207
|
+
this.name = "UnauthorizedProviderError";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
class UnsupportedProviderMethodError extends ProviderRpcError {
|
|
211
|
+
constructor() {
|
|
212
|
+
super(...arguments);
|
|
213
|
+
this.code = 4200;
|
|
214
|
+
this.name = "UnsupportedProviderMethodError";
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
class ProviderDisconnectedError extends ProviderRpcError {
|
|
218
|
+
constructor() {
|
|
219
|
+
super(...arguments);
|
|
220
|
+
this.code = 4900;
|
|
221
|
+
this.name = "ProviderDisconnectedError";
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
class ChainDisconnectedError extends ProviderRpcError {
|
|
225
|
+
constructor() {
|
|
226
|
+
super(...arguments);
|
|
227
|
+
this.code = 4901;
|
|
228
|
+
this.name = "ChainDisconnectedError";
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
class SwitchChainError extends ProviderRpcError {
|
|
232
|
+
constructor() {
|
|
233
|
+
super(...arguments);
|
|
234
|
+
this.code = 4902;
|
|
235
|
+
this.name = "SwitchChainError";
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
class InvalidRequestRpcError extends ProviderRpcError {
|
|
239
|
+
constructor() {
|
|
240
|
+
super(...arguments);
|
|
241
|
+
this.code = -32600;
|
|
242
|
+
this.name = "InvalidRequestRpcError";
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
class MethodNotFoundRpcError extends ProviderRpcError {
|
|
246
|
+
constructor() {
|
|
247
|
+
super(...arguments);
|
|
248
|
+
this.code = -32601;
|
|
249
|
+
this.name = "MethodNotFoundRpcError";
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
class InvalidParamsRpcError extends ProviderRpcError {
|
|
253
|
+
constructor() {
|
|
254
|
+
super(...arguments);
|
|
255
|
+
this.code = -32602;
|
|
256
|
+
this.name = "InvalidParamsRpcError";
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
class InternalRpcError extends ProviderRpcError {
|
|
260
|
+
constructor() {
|
|
261
|
+
super(...arguments);
|
|
262
|
+
this.code = -32603;
|
|
263
|
+
this.name = "InternalRpcError";
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function ensureProviderRpcError(value) {
|
|
267
|
+
if (value instanceof ProviderRpcError) {
|
|
268
|
+
return value;
|
|
269
|
+
}
|
|
270
|
+
if (typeof value === "object" &&
|
|
271
|
+
value !== null &&
|
|
272
|
+
"errorCode" in value &&
|
|
273
|
+
"errorMessage" in value) {
|
|
274
|
+
if (typeof value.errorCode === "number" && typeof value.errorMessage === "string") {
|
|
275
|
+
switch (value.errorCode) {
|
|
276
|
+
case 4001:
|
|
277
|
+
return new UserRejectedRequestError(value.errorMessage);
|
|
278
|
+
case 4100:
|
|
279
|
+
return new UnauthorizedProviderError(value.errorMessage);
|
|
280
|
+
case 4200:
|
|
281
|
+
return new UnsupportedProviderMethodError(value.errorMessage);
|
|
282
|
+
case 4900:
|
|
283
|
+
return new ProviderDisconnectedError(value.errorMessage);
|
|
284
|
+
case 4901:
|
|
285
|
+
return new ChainDisconnectedError(value.errorMessage);
|
|
286
|
+
case 4902:
|
|
287
|
+
return new SwitchChainError(value.errorMessage);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
let stringified = "[Unable to stringify the thrown value]";
|
|
292
|
+
try {
|
|
293
|
+
stringified = JSON.stringify(value);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// ignoring failed stringify
|
|
297
|
+
}
|
|
298
|
+
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
299
|
+
}
|
|
300
|
+
|
|
146
301
|
function isFunction(value) {
|
|
147
302
|
return typeof value === 'function';
|
|
148
303
|
}
|
|
@@ -870,50 +1025,11 @@ function filter(predicate, thisArg) {
|
|
|
870
1025
|
});
|
|
871
1026
|
}
|
|
872
1027
|
|
|
873
|
-
class BaseError extends Error {
|
|
874
|
-
constructor(name, message, options = {}) {
|
|
875
|
-
const {
|
|
876
|
-
cause,
|
|
877
|
-
context
|
|
878
|
-
} = options;
|
|
879
|
-
super(message || name);
|
|
880
|
-
this.name = name;
|
|
881
|
-
this.stack = cause?.stack;
|
|
882
|
-
this.cause = cause;
|
|
883
|
-
this.context = context;
|
|
884
|
-
}
|
|
885
|
-
toJSON() {
|
|
886
|
-
return {
|
|
887
|
-
name: this.name,
|
|
888
|
-
message: this.message,
|
|
889
|
-
context: this.context,
|
|
890
|
-
cause: this.cause
|
|
891
|
-
};
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
class AirServiceError extends BaseError {
|
|
896
|
-
static from(error) {
|
|
897
|
-
if (error instanceof AirServiceError) {
|
|
898
|
-
return error;
|
|
899
|
-
}
|
|
900
|
-
else if (error instanceof Object && "message" in error) {
|
|
901
|
-
if (error.message === "User cancelled login") {
|
|
902
|
-
return new AirServiceError("USER_CANCELLED", error.message);
|
|
903
|
-
}
|
|
904
|
-
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
905
|
-
}
|
|
906
|
-
return new AirServiceError("UNKNOWN_ERROR");
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
class RealmEmbedError extends AirServiceError {
|
|
910
|
-
}
|
|
911
|
-
|
|
912
1028
|
function getDefaultExportFromCjs (x) {
|
|
913
1029
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
914
1030
|
}
|
|
915
1031
|
|
|
916
|
-
var loglevel$
|
|
1032
|
+
var loglevel$1 = {exports: {}};
|
|
917
1033
|
|
|
918
1034
|
/*
|
|
919
1035
|
* loglevel - https://github.com/pimterry/loglevel
|
|
@@ -921,10 +1037,10 @@ var loglevel$2 = {exports: {}};
|
|
|
921
1037
|
* Copyright (c) 2013 Tim Perry
|
|
922
1038
|
* Licensed under the MIT license.
|
|
923
1039
|
*/
|
|
924
|
-
var loglevel
|
|
1040
|
+
var loglevel = loglevel$1.exports;
|
|
925
1041
|
var hasRequiredLoglevel;
|
|
926
1042
|
function requireLoglevel() {
|
|
927
|
-
if (hasRequiredLoglevel) return loglevel$
|
|
1043
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
928
1044
|
hasRequiredLoglevel = 1;
|
|
929
1045
|
(function (module) {
|
|
930
1046
|
(function (root, definition) {
|
|
@@ -934,7 +1050,7 @@ function requireLoglevel() {
|
|
|
934
1050
|
} else {
|
|
935
1051
|
root.log = definition();
|
|
936
1052
|
}
|
|
937
|
-
})(loglevel
|
|
1053
|
+
})(loglevel, function () {
|
|
938
1054
|
|
|
939
1055
|
// Slightly dubious tricks to cut down minimized file size
|
|
940
1056
|
var noop = function () {};
|
|
@@ -1233,24 +1349,27 @@ function requireLoglevel() {
|
|
|
1233
1349
|
defaultLogger['default'] = defaultLogger;
|
|
1234
1350
|
return defaultLogger;
|
|
1235
1351
|
});
|
|
1236
|
-
})(loglevel$
|
|
1237
|
-
return loglevel$
|
|
1352
|
+
})(loglevel$1);
|
|
1353
|
+
return loglevel$1.exports;
|
|
1238
1354
|
}
|
|
1239
1355
|
|
|
1240
1356
|
var loglevelExports = requireLoglevel();
|
|
1241
|
-
var
|
|
1357
|
+
var log$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
1242
1358
|
|
|
1243
|
-
var log =
|
|
1359
|
+
var log = log$1.getLogger("airkit");
|
|
1244
1360
|
|
|
1245
1361
|
var AirWalletProviderMessageTypes;
|
|
1246
1362
|
(function (AirWalletProviderMessageTypes) {
|
|
1247
1363
|
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1248
1364
|
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1365
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1249
1366
|
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1250
1367
|
|
|
1251
1368
|
const ACCOUNT_MESSAGES = [
|
|
1252
1369
|
AirMessageTypes.INITIALIZATION_RESPONSE,
|
|
1253
1370
|
AirMessageTypes.WALLET_INITIALIZED,
|
|
1371
|
+
AirMessageTypes.WALLET_LOGIN_RESPONSE,
|
|
1372
|
+
AirMessageTypes.SETUP_MFA_RESPONSE,
|
|
1254
1373
|
AirMessageTypes.CLAIM_ID_RESPONSE,
|
|
1255
1374
|
AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE,
|
|
1256
1375
|
AirMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE,
|
|
@@ -1268,6 +1387,7 @@ const AUTH_MESSAGES = [
|
|
|
1268
1387
|
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
1269
1388
|
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
1270
1389
|
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
1390
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
1271
1391
|
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
1272
1392
|
];
|
|
1273
1393
|
class AirMessageService {
|
|
@@ -1291,6 +1411,9 @@ class AirMessageService {
|
|
|
1291
1411
|
get providerMessage$() {
|
|
1292
1412
|
return this._providerMessage$.asObservable();
|
|
1293
1413
|
}
|
|
1414
|
+
get providerEvent$() {
|
|
1415
|
+
return this._providerEvent$.asObservable();
|
|
1416
|
+
}
|
|
1294
1417
|
async openAuthObservables({ authIframeOrigin }) {
|
|
1295
1418
|
this.closeAuthObservables();
|
|
1296
1419
|
this.setupAuthObservables();
|
|
@@ -1331,13 +1454,16 @@ class AirMessageService {
|
|
|
1331
1454
|
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1332
1455
|
this._providerMessage$.next(ev.data);
|
|
1333
1456
|
}
|
|
1457
|
+
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1458
|
+
this._providerEvent$.next(ev.data);
|
|
1459
|
+
}
|
|
1334
1460
|
};
|
|
1335
1461
|
window.addEventListener("message", handleWalletMessage);
|
|
1336
1462
|
this.closeWalletMessageListeners = () => {
|
|
1337
1463
|
window.removeEventListener("message", handleWalletMessage);
|
|
1338
1464
|
};
|
|
1339
1465
|
}
|
|
1340
|
-
setupIframeCommunication(authIframe, walletIframe) {
|
|
1466
|
+
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1341
1467
|
const channel = new MessageChannel();
|
|
1342
1468
|
const authOrigin = new URL(authIframe.src).origin;
|
|
1343
1469
|
authIframe.contentWindow.postMessage({
|
|
@@ -1346,6 +1472,9 @@ class AirMessageService {
|
|
|
1346
1472
|
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1347
1473
|
walletIframe.contentWindow.postMessage({
|
|
1348
1474
|
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1475
|
+
payload: {
|
|
1476
|
+
skipWalletLogin,
|
|
1477
|
+
},
|
|
1349
1478
|
}, walletOrigin, [channel.port2]);
|
|
1350
1479
|
}
|
|
1351
1480
|
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
@@ -1359,7 +1488,7 @@ class AirMessageService {
|
|
|
1359
1488
|
}, origin);
|
|
1360
1489
|
const result = await response;
|
|
1361
1490
|
if (result.payload.success === false) {
|
|
1362
|
-
throw new
|
|
1491
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1363
1492
|
}
|
|
1364
1493
|
return result.payload.sessionData;
|
|
1365
1494
|
}
|
|
@@ -1380,7 +1509,7 @@ class AirMessageService {
|
|
|
1380
1509
|
}, origin);
|
|
1381
1510
|
const result = await response;
|
|
1382
1511
|
if (result.payload.success === false) {
|
|
1383
|
-
throw new
|
|
1512
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1384
1513
|
}
|
|
1385
1514
|
return result.payload.txHash;
|
|
1386
1515
|
}
|
|
@@ -1395,7 +1524,7 @@ class AirMessageService {
|
|
|
1395
1524
|
}, origin);
|
|
1396
1525
|
const result = await response;
|
|
1397
1526
|
if (result.payload.success === false) {
|
|
1398
|
-
throw new
|
|
1527
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1399
1528
|
}
|
|
1400
1529
|
return result.payload.txHash;
|
|
1401
1530
|
}
|
|
@@ -1439,6 +1568,10 @@ class AirMessageService {
|
|
|
1439
1568
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1440
1569
|
return response;
|
|
1441
1570
|
}
|
|
1571
|
+
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1572
|
+
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1573
|
+
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1574
|
+
}
|
|
1442
1575
|
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1443
1576
|
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1444
1577
|
const { origin } = new URL(authIframe.src);
|
|
@@ -1451,6 +1584,17 @@ class AirMessageService {
|
|
|
1451
1584
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1452
1585
|
return response;
|
|
1453
1586
|
}
|
|
1587
|
+
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1588
|
+
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1589
|
+
const { origin } = new URL(authIframe.src);
|
|
1590
|
+
authIframe.contentWindow.postMessage({
|
|
1591
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1592
|
+
payload: {
|
|
1593
|
+
targetPartnerUrl,
|
|
1594
|
+
},
|
|
1595
|
+
}, origin);
|
|
1596
|
+
return response;
|
|
1597
|
+
}
|
|
1454
1598
|
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1455
1599
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1456
1600
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1460,6 +1604,18 @@ class AirMessageService {
|
|
|
1460
1604
|
onWalletInitialized() {
|
|
1461
1605
|
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
|
|
1462
1606
|
}
|
|
1607
|
+
sendWalletLoginRequest(walletIframe) {
|
|
1608
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
1609
|
+
const { origin } = new URL(walletIframe.src);
|
|
1610
|
+
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.WALLET_LOGIN_REQUEST }, origin);
|
|
1611
|
+
return response;
|
|
1612
|
+
}
|
|
1613
|
+
async sendSetupMfaRequest(walletIframe) {
|
|
1614
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.SETUP_MFA_RESPONSE)));
|
|
1615
|
+
const { origin } = new URL(walletIframe.src);
|
|
1616
|
+
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.SETUP_MFA_REQUEST }, origin);
|
|
1617
|
+
return response;
|
|
1618
|
+
}
|
|
1463
1619
|
async sendClaimIdRequest(walletIframe, payload) {
|
|
1464
1620
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.CLAIM_ID_RESPONSE)));
|
|
1465
1621
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1491,6 +1647,8 @@ class AirMessageService {
|
|
|
1491
1647
|
closeWalletObservables() {
|
|
1492
1648
|
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1493
1649
|
this._providerMessage$.complete();
|
|
1650
|
+
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1651
|
+
this._providerEvent$.complete();
|
|
1494
1652
|
if (this.closeWalletMessageListeners)
|
|
1495
1653
|
this.closeWalletMessageListeners();
|
|
1496
1654
|
}
|
|
@@ -1502,38 +1660,11 @@ class AirMessageService {
|
|
|
1502
1660
|
}
|
|
1503
1661
|
setupWalletObservables() {
|
|
1504
1662
|
this._providerMessage$ = new Subject();
|
|
1663
|
+
this._providerEvent$ = new Subject();
|
|
1505
1664
|
}
|
|
1506
1665
|
}
|
|
1507
1666
|
var AirMessageService$1 = AirMessageService.instance;
|
|
1508
1667
|
|
|
1509
|
-
class ProviderRpcError extends Error {
|
|
1510
|
-
constructor(message, code, data) {
|
|
1511
|
-
super(message);
|
|
1512
|
-
this.code = code;
|
|
1513
|
-
this.data = data;
|
|
1514
|
-
}
|
|
1515
|
-
}
|
|
1516
|
-
new ProviderRpcError("Invalid JSON", -32700);
|
|
1517
|
-
const ProviderRpcInvalidRequestError = new ProviderRpcError("Invalid request", -32600);
|
|
1518
|
-
const ProviderRpcMethodNotFoundError = new ProviderRpcError("Method not found", -32601);
|
|
1519
|
-
const ProviderRpcInvalidParamsError = new ProviderRpcError("Invalid params", -32602);
|
|
1520
|
-
new ProviderRpcError("Internal error", -32603);
|
|
1521
|
-
new ProviderRpcError("User rejected request", 4001);
|
|
1522
|
-
new ProviderRpcError("Unauthorized", 4100);
|
|
1523
|
-
new ProviderRpcError("Unsupported method", 4200);
|
|
1524
|
-
new ProviderRpcError("Disconnected", 4900);
|
|
1525
|
-
new ProviderRpcError("Chain Disconnected", 4901);
|
|
1526
|
-
function ensureProviderRpcError(value) {
|
|
1527
|
-
if (value instanceof ProviderRpcError) return value;
|
|
1528
|
-
let stringified = "[Unable to stringify the thrown value]";
|
|
1529
|
-
try {
|
|
1530
|
-
stringified = JSON.stringify(value);
|
|
1531
|
-
} catch {
|
|
1532
|
-
// ignoring failed stringify
|
|
1533
|
-
}
|
|
1534
|
-
return new ProviderRpcError(`This value was not thrown as type ProviderRpcError: ${stringified}`, -32603);
|
|
1535
|
-
}
|
|
1536
|
-
|
|
1537
1668
|
const BUILD_ENV = {
|
|
1538
1669
|
PRODUCTION: "production",
|
|
1539
1670
|
STAGING: "staging",
|
|
@@ -1544,66 +1675,113 @@ const AIR_URLS = {
|
|
|
1544
1675
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
1545
1676
|
authUrl: "http://localhost:8100",
|
|
1546
1677
|
walletUrl: "http://localhost:8200",
|
|
1547
|
-
legacyWalletUrl: "https://localhost:4050",
|
|
1548
1678
|
logLevel: "debug",
|
|
1549
1679
|
},
|
|
1550
1680
|
[BUILD_ENV.STAGING]: {
|
|
1551
1681
|
authUrl: "https://auth.staging.air3.com",
|
|
1552
1682
|
walletUrl: "https://account.staging.air3.com",
|
|
1553
|
-
legacyWalletUrl: "https://account.staging.realmnetwork.io",
|
|
1554
1683
|
logLevel: "info",
|
|
1555
1684
|
},
|
|
1556
1685
|
[BUILD_ENV.PRODUCTION]: {
|
|
1557
1686
|
authUrl: "https://auth.air3.com",
|
|
1558
1687
|
walletUrl: "https://account.air3.com",
|
|
1559
|
-
legacyWalletUrl: "https://account.realmnetwork.io",
|
|
1560
1688
|
logLevel: "error",
|
|
1561
1689
|
},
|
|
1562
1690
|
};
|
|
1563
1691
|
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1564
1692
|
const randomId = () => Math.random().toString(36).slice(2);
|
|
1565
1693
|
|
|
1566
|
-
var
|
|
1694
|
+
var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1567
1695
|
class AirWalletProvider {
|
|
1568
|
-
constructor(
|
|
1569
|
-
|
|
1570
|
-
|
|
1696
|
+
constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }) {
|
|
1697
|
+
_AirWalletProvider_instances.add(this);
|
|
1698
|
+
_AirWalletProvider_isLoggedIn.set(this, undefined);
|
|
1699
|
+
_AirWalletProvider_ensureWallet.set(this, undefined);
|
|
1700
|
+
_AirWalletProvider_getWalletIframeController.set(this, undefined);
|
|
1701
|
+
_AirWalletProvider_eventListeners.set(this, undefined);
|
|
1702
|
+
this.startEventMessageListening = () => {
|
|
1703
|
+
AirMessageService$1.providerEvent$.subscribe((message) => {
|
|
1704
|
+
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1705
|
+
});
|
|
1706
|
+
};
|
|
1707
|
+
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1708
|
+
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1709
|
+
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1710
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1711
|
+
connect: [],
|
|
1712
|
+
disconnect: [],
|
|
1713
|
+
accountsChanged: [],
|
|
1714
|
+
chainChanged: [],
|
|
1715
|
+
message: [],
|
|
1716
|
+
}, "f");
|
|
1571
1717
|
}
|
|
1572
1718
|
async request(request) {
|
|
1573
1719
|
// Check if the request is valid
|
|
1574
1720
|
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
|
1575
|
-
throw
|
|
1721
|
+
throw new InvalidRequestRpcError("Invalid request");
|
|
1576
1722
|
}
|
|
1577
1723
|
const { method, params } = request;
|
|
1578
1724
|
// Check if the method is valid
|
|
1579
1725
|
if (typeof method !== "string" || method.length === 0) {
|
|
1580
|
-
throw
|
|
1726
|
+
throw new MethodNotFoundRpcError("Invalid method");
|
|
1581
1727
|
}
|
|
1582
1728
|
// Check if the params are valid
|
|
1583
1729
|
if (params !== undefined &&
|
|
1584
1730
|
!Array.isArray(params) &&
|
|
1585
1731
|
(typeof params !== "object" || params === null)) {
|
|
1586
|
-
throw
|
|
1732
|
+
throw new InvalidParamsRpcError("Invalid params");
|
|
1733
|
+
}
|
|
1734
|
+
// Check if the user is logged in
|
|
1735
|
+
if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
|
|
1736
|
+
throw new UnauthorizedProviderError("User is not logged in");
|
|
1737
|
+
}
|
|
1738
|
+
try {
|
|
1739
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
|
|
1740
|
+
}
|
|
1741
|
+
catch (error) {
|
|
1742
|
+
throw ensureProviderRpcError(error);
|
|
1587
1743
|
}
|
|
1588
1744
|
const requestId = randomId();
|
|
1589
|
-
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this,
|
|
1745
|
+
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_getWalletIframeController, "f").call(this).iframeElement, {
|
|
1590
1746
|
requestId,
|
|
1591
1747
|
...request,
|
|
1592
1748
|
});
|
|
1593
1749
|
if (!response.success) {
|
|
1594
|
-
|
|
1595
|
-
throw error;
|
|
1750
|
+
throw ensureProviderRpcError(response.payload);
|
|
1596
1751
|
}
|
|
1597
1752
|
return response.payload.response;
|
|
1598
1753
|
}
|
|
1599
1754
|
on(eventName, listener) {
|
|
1600
|
-
|
|
1755
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1756
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].push(listener);
|
|
1601
1757
|
}
|
|
1602
1758
|
removeListener(eventName, listener) {
|
|
1603
|
-
|
|
1759
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1760
|
+
const index = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].indexOf(listener);
|
|
1761
|
+
if (index >= 0) {
|
|
1762
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].splice(index, 1);
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
removeAllListeners() {
|
|
1766
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1767
|
+
connect: [],
|
|
1768
|
+
disconnect: [],
|
|
1769
|
+
accountsChanged: [],
|
|
1770
|
+
chainChanged: [],
|
|
1771
|
+
message: [],
|
|
1772
|
+
}, "f");
|
|
1604
1773
|
}
|
|
1605
1774
|
}
|
|
1606
|
-
|
|
1775
|
+
_AirWalletProvider_isLoggedIn = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_getWalletIframeController = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
|
|
1776
|
+
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1777
|
+
try {
|
|
1778
|
+
return listener(...args);
|
|
1779
|
+
}
|
|
1780
|
+
catch (error) {
|
|
1781
|
+
log$1.error(error);
|
|
1782
|
+
}
|
|
1783
|
+
});
|
|
1784
|
+
};
|
|
1607
1785
|
|
|
1608
1786
|
class IframeController {
|
|
1609
1787
|
constructor(iframeUrl, iframeId, state) {
|
|
@@ -1668,9 +1846,8 @@ IframeController.defaultState = {
|
|
|
1668
1846
|
isVisible: false,
|
|
1669
1847
|
};
|
|
1670
1848
|
|
|
1671
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization,
|
|
1849
|
+
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;
|
|
1672
1850
|
class AirService {
|
|
1673
|
-
// #walletRehydrationState: AirRehydrationResult;
|
|
1674
1851
|
constructor({ partnerId }) {
|
|
1675
1852
|
_AirService_instances.add(this);
|
|
1676
1853
|
_AirService_loginResult.set(this, undefined);
|
|
@@ -1683,9 +1860,14 @@ class AirService {
|
|
|
1683
1860
|
_AirService_airAuthListener.set(this, []);
|
|
1684
1861
|
_AirService_walletIframeController.set(this, undefined);
|
|
1685
1862
|
_AirService_walletInitialization.set(this, undefined);
|
|
1686
|
-
|
|
1863
|
+
_AirService_walletLoggedInResult.set(this, undefined);
|
|
1687
1864
|
_AirService_airWalletProvider.set(this, undefined);
|
|
1688
1865
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
1866
|
+
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
1867
|
+
isLoggedIn: () => this.isLoggedIn,
|
|
1868
|
+
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
1869
|
+
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
1870
|
+
}), "f");
|
|
1689
1871
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
1690
1872
|
}
|
|
1691
1873
|
get buildEnv() {
|
|
@@ -1698,7 +1880,15 @@ class AirService {
|
|
|
1698
1880
|
return !!__classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
1699
1881
|
}
|
|
1700
1882
|
get isWalletInitialized() {
|
|
1701
|
-
return __classPrivateFieldGet(this,
|
|
1883
|
+
return !!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1884
|
+
}
|
|
1885
|
+
get provider() {
|
|
1886
|
+
const provider = __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
1887
|
+
return {
|
|
1888
|
+
request: provider.request.bind(provider),
|
|
1889
|
+
on: provider.on.bind(provider),
|
|
1890
|
+
removeListener: provider.removeListener.bind(provider),
|
|
1891
|
+
};
|
|
1702
1892
|
}
|
|
1703
1893
|
async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
|
|
1704
1894
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
@@ -1726,7 +1916,7 @@ class AirService {
|
|
|
1726
1916
|
}
|
|
1727
1917
|
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
1728
1918
|
try {
|
|
1729
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1919
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
1730
1920
|
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
1731
1921
|
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
1732
1922
|
payload: {
|
|
@@ -1761,6 +1951,7 @@ class AirService {
|
|
|
1761
1951
|
const { payload } = await AirMessageService$1.sendAuthInitializationRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, {
|
|
1762
1952
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
1763
1953
|
skipRehydration,
|
|
1954
|
+
partnerDAppUrl: window.location.href,
|
|
1764
1955
|
});
|
|
1765
1956
|
if (payload.success === true) {
|
|
1766
1957
|
resolve(payload);
|
|
@@ -1788,11 +1979,6 @@ class AirService {
|
|
|
1788
1979
|
}
|
|
1789
1980
|
return null;
|
|
1790
1981
|
}
|
|
1791
|
-
async cleanUp() {
|
|
1792
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1793
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
1794
|
-
this.clearEventListeners();
|
|
1795
|
-
}
|
|
1796
1982
|
async login(options) {
|
|
1797
1983
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
1798
1984
|
throw new Error("Service is not initialized");
|
|
@@ -1897,25 +2083,18 @@ class AirService {
|
|
|
1897
2083
|
throw AirServiceError.from(error);
|
|
1898
2084
|
}
|
|
1899
2085
|
}
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
throw new Error("Service is not initialized");
|
|
1903
|
-
if (!this.isLoggedIn)
|
|
1904
|
-
throw new Error("No active session to logout");
|
|
1905
|
-
// Clear up wallet
|
|
1906
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1907
|
-
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
1908
|
-
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
1909
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
1910
|
-
}
|
|
1911
|
-
async getProvider() {
|
|
1912
|
-
if (!this.isLoggedIn)
|
|
1913
|
-
return null;
|
|
1914
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1915
|
-
return __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
2086
|
+
getProvider() {
|
|
2087
|
+
return this.provider;
|
|
1916
2088
|
}
|
|
1917
2089
|
async preloadWallet() {
|
|
1918
|
-
|
|
2090
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2091
|
+
}
|
|
2092
|
+
async setupOrUpdateMfa() {
|
|
2093
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2094
|
+
const result = await AirMessageService$1.sendSetupMfaRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2095
|
+
if (result.payload.success === false) {
|
|
2096
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2097
|
+
}
|
|
1919
2098
|
}
|
|
1920
2099
|
async claimAirId(options) {
|
|
1921
2100
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
@@ -1940,9 +2119,39 @@ class AirService {
|
|
|
1940
2119
|
id: info.payload.user.id,
|
|
1941
2120
|
abstractAccountAddress: info.payload.user.abstractAccountAddress,
|
|
1942
2121
|
email: info.payload.user.email,
|
|
2122
|
+
isMFASetup: info.payload.user.isMFASetup,
|
|
1943
2123
|
},
|
|
1944
2124
|
};
|
|
1945
2125
|
}
|
|
2126
|
+
async goToPartner(partnerUrl) {
|
|
2127
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2128
|
+
throw new Error("Service is not initialized");
|
|
2129
|
+
if (!this.isLoggedIn)
|
|
2130
|
+
throw new Error("No active session to generate token");
|
|
2131
|
+
const result = await AirMessageService$1.sendCrossPartnerTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, partnerUrl);
|
|
2132
|
+
if (result.payload.success === false) {
|
|
2133
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2134
|
+
}
|
|
2135
|
+
return {
|
|
2136
|
+
urlWithToken: result.payload.urlWithToken,
|
|
2137
|
+
};
|
|
2138
|
+
}
|
|
2139
|
+
async logout() {
|
|
2140
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2141
|
+
throw new Error("Service is not initialized");
|
|
2142
|
+
if (!this.isLoggedIn)
|
|
2143
|
+
throw new Error("No active session to logout");
|
|
2144
|
+
// Clear up wallet
|
|
2145
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2146
|
+
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2147
|
+
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2148
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2149
|
+
}
|
|
2150
|
+
async cleanUp() {
|
|
2151
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2152
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
2153
|
+
this.clearEventListeners();
|
|
2154
|
+
}
|
|
1946
2155
|
on(listener) {
|
|
1947
2156
|
if (__classPrivateFieldGet(this, _AirService_airAuthListener, "f").indexOf(listener) < 0)
|
|
1948
2157
|
__classPrivateFieldGet(this, _AirService_airAuthListener, "f").push(listener);
|
|
@@ -1954,35 +2163,37 @@ class AirService {
|
|
|
1954
2163
|
clearEventListeners() {
|
|
1955
2164
|
__classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
|
|
1956
2165
|
}
|
|
1957
|
-
// This is for internal use only
|
|
1958
|
-
// @ts-expect-error for unused function
|
|
1959
|
-
async _showWalletWidget() {
|
|
1960
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1961
|
-
// return (this.#realmEmbed as any)._showWalletWidget();
|
|
1962
|
-
log.info("_showWalletWidget");
|
|
1963
|
-
return null;
|
|
1964
|
-
}
|
|
1965
2166
|
}
|
|
1966
|
-
_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(),
|
|
2167
|
+
_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) {
|
|
1967
2168
|
if (!this.isInitialized)
|
|
1968
2169
|
throw new Error("Service not initialized");
|
|
1969
|
-
if (!
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
2170
|
+
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
2171
|
+
throw new Error("User not logged in");
|
|
2172
|
+
if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2173
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
|
|
2174
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2175
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2176
|
+
try {
|
|
2177
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
|
|
2178
|
+
if (option?.skipWalletLogin || result.isWalletLoggedIn) {
|
|
2179
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, result);
|
|
1978
2180
|
}
|
|
1979
2181
|
}
|
|
1980
|
-
|
|
1981
|
-
|
|
2182
|
+
catch (error) {
|
|
2183
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
|
|
2184
|
+
log.error("Error initializing wallet", error);
|
|
2185
|
+
throw error;
|
|
2186
|
+
}
|
|
2187
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2188
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2189
|
+
const walletLoginResult = await AirMessageService$1.sendWalletLoginRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2190
|
+
if (walletLoginResult.payload.success !== true) {
|
|
2191
|
+
throw new AirServiceError(walletLoginResult.payload.errorName, walletLoginResult.payload.errorMessage);
|
|
1982
2192
|
}
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
2193
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletLoginResult.payload);
|
|
2194
|
+
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
2195
|
+
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2196
|
+
throw new Error("Already initializing");
|
|
1986
2197
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
1987
2198
|
log.info(walletUrl, "url loaded");
|
|
1988
2199
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
@@ -1998,6 +2209,13 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
1998
2209
|
walletIframeController.updateIframeState();
|
|
1999
2210
|
break;
|
|
2000
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
|
+
}
|
|
2001
2219
|
}
|
|
2002
2220
|
});
|
|
2003
2221
|
await new Promise((resolve, reject) => {
|
|
@@ -2020,18 +2238,18 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2020
2238
|
};
|
|
2021
2239
|
window.addEventListener("message", handleAuthMessage);
|
|
2022
2240
|
});
|
|
2241
|
+
__classPrivateFieldGet(this, _AirService_airWalletProvider, "f").startEventMessageListening();
|
|
2023
2242
|
const walletInitPromise = AirMessageService$1.onWalletInitialized();
|
|
2024
|
-
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2243
|
+
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, option?.skipWalletLogin ?? false);
|
|
2025
2244
|
const walletInitResult = await walletInitPromise;
|
|
2026
2245
|
if (walletInitResult.payload.success !== true) {
|
|
2027
2246
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
2028
2247
|
}
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
}
|
|
2033
|
-
|
|
2034
|
-
return result;
|
|
2248
|
+
if (!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f") && walletInitResult.payload.isWalletLoggedIn) {
|
|
2249
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload), "f");
|
|
2250
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2251
|
+
}
|
|
2252
|
+
return walletInitResult.payload;
|
|
2035
2253
|
}
|
|
2036
2254
|
catch (error) {
|
|
2037
2255
|
log.error("Error initializing wallet", error);
|
|
@@ -2062,6 +2280,18 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2062
2280
|
id: payload.id,
|
|
2063
2281
|
abstractAccountAddress: payload.abstractAccountAddress,
|
|
2064
2282
|
token: payload.partnerAccessToken,
|
|
2283
|
+
isMFASetup: payload.isMFASetup,
|
|
2284
|
+
};
|
|
2285
|
+
}, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
|
|
2286
|
+
if ("isWalletLoggedIn" in payload && !payload.isWalletLoggedIn) {
|
|
2287
|
+
return {
|
|
2288
|
+
abstractAccountAddress: null,
|
|
2289
|
+
isMFASetup: __classPrivateFieldGet(this, _AirService_loginResult, "f")?.isMFASetup ?? false,
|
|
2290
|
+
};
|
|
2291
|
+
}
|
|
2292
|
+
return {
|
|
2293
|
+
abstractAccountAddress: payload.addresses.aa,
|
|
2294
|
+
isMFASetup: payload.isMFASetup,
|
|
2065
2295
|
};
|
|
2066
2296
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2067
2297
|
// Logout auth session
|
|
@@ -2085,14 +2315,27 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2085
2315
|
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").destroy();
|
|
2086
2316
|
__classPrivateFieldSet(this, _AirService_walletIframeController, undefined, "f");
|
|
2087
2317
|
}
|
|
2318
|
+
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2319
|
+
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2320
|
+
AirMessageService$1.sendResetAuthServiceWalletCommunication(authIframeElement);
|
|
2321
|
+
}
|
|
2088
2322
|
// Close the message service
|
|
2089
2323
|
AirMessageService$1.closeAirObservables();
|
|
2090
|
-
__classPrivateFieldSet(this,
|
|
2091
|
-
__classPrivateFieldSet(this,
|
|
2324
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2325
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2092
2326
|
};
|
|
2093
2327
|
|
|
2094
2328
|
exports.AirService = AirService;
|
|
2095
2329
|
exports.AirServiceError = AirServiceError;
|
|
2096
|
-
exports.AirWalletProvider = AirWalletProvider;
|
|
2097
2330
|
exports.BUILD_ENV = BUILD_ENV;
|
|
2098
|
-
exports.
|
|
2331
|
+
exports.ChainDisconnectedError = ChainDisconnectedError;
|
|
2332
|
+
exports.InternalRpcError = InternalRpcError;
|
|
2333
|
+
exports.InvalidParamsRpcError = InvalidParamsRpcError;
|
|
2334
|
+
exports.InvalidRequestRpcError = InvalidRequestRpcError;
|
|
2335
|
+
exports.MethodNotFoundRpcError = MethodNotFoundRpcError;
|
|
2336
|
+
exports.ProviderDisconnectedError = ProviderDisconnectedError;
|
|
2337
|
+
exports.SwitchChainError = SwitchChainError;
|
|
2338
|
+
exports.UnauthorizedProviderError = UnauthorizedProviderError;
|
|
2339
|
+
exports.UnsupportedProviderMethodError = UnsupportedProviderMethodError;
|
|
2340
|
+
exports.UserRejectedRequestError = UserRejectedRequestError;
|
|
2341
|
+
exports.ensureProviderRpcError = ensureProviderRpcError;
|