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