@mocanetwork/airkit 1.3.0-beta.0 → 1.3.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 +1849 -1642
- package/dist/airkit.esm.js +1848 -1643
- package/dist/airkit.umd.js +1849 -1642
- package/dist/types/airService.d.ts +8 -25
- package/dist/types/airWalletProvider.d.ts +4 -10
- package/dist/types/authMessageService.d.ts +18 -0
- package/dist/types/common/air/error/codes.d.ts +16 -1
- package/dist/types/common/{realm → air}/messaging/auth.d.ts +42 -43
- package/dist/types/common/air/messaging/messageServiceBase.d.ts +35 -0
- package/dist/types/common/{realm → air}/messaging/provider.d.ts +2 -2
- package/dist/types/common/air/messaging/types.d.ts +16 -0
- package/dist/types/common/air/messaging/wallet.d.ts +101 -0
- package/dist/types/common/logging.d.ts +3 -0
- package/dist/types/common/provider/types.d.ts +105 -4
- package/dist/types/common/realm/partner/config.d.ts +3 -1
- package/dist/types/common/realm/smart-session/rule.d.ts +1 -1
- package/dist/types/common/realm/smart-session/types.d.ts +1 -1
- package/dist/types/common/realm/user/types.d.ts +10 -1
- package/dist/types/common/realm/wallet/index.d.ts +5 -0
- package/dist/types/common/types.d.ts +2 -0
- package/dist/types/common/utils.d.ts +10 -2
- package/dist/types/{windowController.d.ts → common/window/windowController.d.ts} +8 -3
- package/dist/types/error.d.ts +7 -1
- package/dist/types/interfaces.d.ts +0 -2
- package/dist/types/providerMessageService.d.ts +8 -0
- package/dist/types/utils.d.ts +2 -2
- package/dist/types/walletMessageService.d.ts +20 -0
- package/dist/types/windowService.d.ts +8 -3
- package/package.json +1 -1
- package/dist/types/common/realm/messaging/types.d.ts +0 -144
- package/dist/types/common/realm/smart-session/hex.d.ts +0 -1
- package/dist/types/loglevel.d.ts +0 -3
- package/dist/types/messageService.d.ts +0 -67
package/dist/airkit.cjs.js
CHANGED
|
@@ -41,7 +41,7 @@ function __values(o) {
|
|
|
41
41
|
if (m) return m.call(o);
|
|
42
42
|
if (o && typeof o.length === "number") return {
|
|
43
43
|
next: function () {
|
|
44
|
-
if (o && i >= o.length) o =
|
|
44
|
+
if (o && i >= o.length) o = void 0;
|
|
45
45
|
return {
|
|
46
46
|
value: o && o[i++],
|
|
47
47
|
done: !o
|
|
@@ -120,14 +120,16 @@ const AirAuthMessageTypes = {
|
|
|
120
120
|
SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
|
|
121
121
|
CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
|
|
122
122
|
CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
PARTNER_ACCESS_TOKEN_REQUEST: "air_auth_partner_access_token_request",
|
|
124
|
+
PARTNER_ACCESS_TOKEN_RESPONSE: "air_auth_partner_access_token_response",
|
|
125
|
+
CREDENTIAL_SALT_REQUEST: "air_auth_credential_salt_request",
|
|
126
|
+
CREDENTIAL_SALT_RESPONSE: "air_auth_credential_salt_response",
|
|
125
127
|
LOGOUT_REQUEST: "air_auth_logout_request",
|
|
126
128
|
LOGOUT_RESPONSE: "air_auth_logout_response",
|
|
127
129
|
RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
|
|
128
130
|
};
|
|
129
131
|
|
|
130
|
-
const
|
|
132
|
+
const AirWalletMessageTypes = {
|
|
131
133
|
SERVICE_STARTED: "air_service_started",
|
|
132
134
|
INITIALIZATION_REQUEST: "air_initialization_request",
|
|
133
135
|
INITIALIZATION_RESPONSE: "air_initialization_response",
|
|
@@ -135,23 +137,17 @@ const AirMessageTypes = {
|
|
|
135
137
|
WALLET_INITIALIZED: "air_wallet_initialized",
|
|
136
138
|
WALLET_LOGIN_REQUEST: "air_wallet_login_request",
|
|
137
139
|
WALLET_LOGIN_RESPONSE: "air_wallet_login_response",
|
|
138
|
-
|
|
139
|
-
|
|
140
|
+
SETUP_OR_UPDATE_MFA_REQUEST: "air_setup_mfa_request",
|
|
141
|
+
SETUP_OR_UPDATE_MFA_RESPONSE: "air_setup_mfa_response",
|
|
140
142
|
CLAIM_ID_REQUEST: "air_claim_id_request",
|
|
141
143
|
CLAIM_ID_RESPONSE: "air_claim_id_response",
|
|
142
144
|
DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request",
|
|
143
145
|
DEPLOY_SMART_ACCOUNT_RESPONSE: "air_deploy_smart_account_response",
|
|
144
|
-
GRANT_PERMISSIONS_REQUEST: "air_grant_permissions_request",
|
|
145
|
-
GRANT_PERMISSIONS_RESPONSE: "air_grant_permissions_response",
|
|
146
|
-
EXECUTE_ACTION_REQUEST: "air_execute_action_request",
|
|
147
|
-
EXECUTE_ACTION_RESPONSE: "air_execute_action_response",
|
|
148
|
-
REVOKE_PERMISSIONS_REQUEST: "air_revoke_permissions_request",
|
|
149
|
-
REVOKE_PERMISSIONS_RESPONSE: "air_revoke_permissions_response",
|
|
150
|
-
LIST_ALL_SESSION_KEY_SCOPES_REQUEST: "air_list_all_session_key_scopes_request",
|
|
151
|
-
LIST_ALL_SESSION_KEY_SCOPES_RESPONSE: "air_list_all_session_key_scopes_response",
|
|
152
146
|
WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request",
|
|
153
147
|
OPEN_WINDOW_REQUEST: "air_open_window_request",
|
|
154
148
|
OPEN_WINDOW_RESPONSE: "air_open_window_response",
|
|
149
|
+
OPEN_WINDOW_RETRY_REQUEST: "air_open_window_retry_request",
|
|
150
|
+
OPEN_WINDOW_RETRY_RESPONSE: "air_open_window_retry_response",
|
|
155
151
|
WINDOW_CLOSED: "air_window_closed",
|
|
156
152
|
IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
|
|
157
153
|
IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
|
|
@@ -191,6 +187,50 @@ function ensureError(value) {
|
|
|
191
187
|
return new Error(`This value was not thrown as type Error: ${stringified}`);
|
|
192
188
|
}
|
|
193
189
|
|
|
190
|
+
const BUILD_ENV = {
|
|
191
|
+
PRODUCTION: "production",
|
|
192
|
+
UAT: "uat",
|
|
193
|
+
STAGING: "staging",
|
|
194
|
+
DEVELOPMENT: "development",
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
const AIR_URLS = {
|
|
198
|
+
[BUILD_ENV.DEVELOPMENT]: {
|
|
199
|
+
authUrl: "http://localhost:8200/auth/",
|
|
200
|
+
walletUrl: "http://localhost:8200/wallet/",
|
|
201
|
+
},
|
|
202
|
+
[BUILD_ENV.UAT]: {
|
|
203
|
+
authUrl: "https://account.uat.air3.com/auth/",
|
|
204
|
+
walletUrl: "https://account.uat.air3.com/wallet/",
|
|
205
|
+
},
|
|
206
|
+
[BUILD_ENV.STAGING]: {
|
|
207
|
+
authUrl: "https://account.staging.air3.com/auth/",
|
|
208
|
+
walletUrl: "https://account.staging.air3.com/wallet/",
|
|
209
|
+
},
|
|
210
|
+
[BUILD_ENV.PRODUCTION]: {
|
|
211
|
+
authUrl: "https://account.air3.com/auth/",
|
|
212
|
+
walletUrl: "https://account.air3.com/wallet/",
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
216
|
+
const randomId = () => Math.random().toString(36).slice(2);
|
|
217
|
+
const extractErrorHash = (message) => {
|
|
218
|
+
if (!message)
|
|
219
|
+
return "";
|
|
220
|
+
// Format: "reason: 0x..."
|
|
221
|
+
if (message.includes("reason:")) {
|
|
222
|
+
return message.split("reason:")[1].trim();
|
|
223
|
+
}
|
|
224
|
+
// Format: "UserOperation reverted during simulation with reason: 0x..."
|
|
225
|
+
if (message.includes("with reason:")) {
|
|
226
|
+
const match = message.match(/with reason: (0x[a-fA-F0-9]+)/);
|
|
227
|
+
return match ? match[1].trim() : "";
|
|
228
|
+
}
|
|
229
|
+
// Look for any 0x pattern that could be a hash
|
|
230
|
+
const hexMatch = message.match(/(0x[a-fA-F0-9]{8,})/);
|
|
231
|
+
return hexMatch ? hexMatch[1].trim() : "";
|
|
232
|
+
};
|
|
233
|
+
|
|
194
234
|
class AirServiceError extends BaseError {
|
|
195
235
|
static from(error) {
|
|
196
236
|
if (error instanceof AirServiceError) {
|
|
@@ -208,6 +248,7 @@ class AirServiceError extends BaseError {
|
|
|
208
248
|
class ProviderRpcError extends Error {
|
|
209
249
|
constructor(message) {
|
|
210
250
|
super(message);
|
|
251
|
+
this.metaMessages = [];
|
|
211
252
|
}
|
|
212
253
|
}
|
|
213
254
|
class UserRejectedRequestError extends ProviderRpcError {
|
|
@@ -252,6 +293,17 @@ class SwitchChainError extends ProviderRpcError {
|
|
|
252
293
|
this.name = "SwitchChainError";
|
|
253
294
|
}
|
|
254
295
|
}
|
|
296
|
+
class TransactionRejectedRpcError extends ProviderRpcError {
|
|
297
|
+
constructor(message) {
|
|
298
|
+
// Remove the "Version: viem@x.x.x" suffix if present
|
|
299
|
+
const cleanMessage = message.replace(/\nVersion:.*$/, '');
|
|
300
|
+
super(cleanMessage);
|
|
301
|
+
this.code = -32003;
|
|
302
|
+
this.name = "TransactionRejectedRpcError";
|
|
303
|
+
// Parse the error hash from the message
|
|
304
|
+
this.metaMessages.push(extractErrorHash(cleanMessage));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
255
307
|
class InvalidRequestRpcError extends ProviderRpcError {
|
|
256
308
|
constructor() {
|
|
257
309
|
super(...arguments);
|
|
@@ -302,6 +354,8 @@ function ensureProviderRpcError(value) {
|
|
|
302
354
|
return new ChainDisconnectedError(value.errorMessage);
|
|
303
355
|
case 4902:
|
|
304
356
|
return new SwitchChainError(value.errorMessage);
|
|
357
|
+
case -32003:
|
|
358
|
+
return new TransactionRejectedRpcError(value.errorMessage);
|
|
305
359
|
}
|
|
306
360
|
}
|
|
307
361
|
}
|
|
@@ -315,1485 +369,1384 @@ function ensureProviderRpcError(value) {
|
|
|
315
369
|
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
316
370
|
}
|
|
317
371
|
|
|
318
|
-
function
|
|
319
|
-
|
|
372
|
+
function getDefaultExportFromCjs (x) {
|
|
373
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
320
374
|
}
|
|
321
375
|
|
|
322
|
-
|
|
323
|
-
var _super = function (instance) {
|
|
324
|
-
Error.call(instance);
|
|
325
|
-
instance.stack = new Error().stack;
|
|
326
|
-
};
|
|
327
|
-
var ctorFunc = createImpl(_super);
|
|
328
|
-
ctorFunc.prototype = Object.create(Error.prototype);
|
|
329
|
-
ctorFunc.prototype.constructor = ctorFunc;
|
|
330
|
-
return ctorFunc;
|
|
331
|
-
}
|
|
376
|
+
var loglevel$1 = {exports: {}};
|
|
332
377
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
378
|
+
/*
|
|
379
|
+
* loglevel - https://github.com/pimterry/loglevel
|
|
380
|
+
*
|
|
381
|
+
* Copyright (c) 2013 Tim Perry
|
|
382
|
+
* Licensed under the MIT license.
|
|
383
|
+
*/
|
|
384
|
+
var loglevel = loglevel$1.exports;
|
|
385
|
+
var hasRequiredLoglevel;
|
|
386
|
+
function requireLoglevel() {
|
|
387
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
388
|
+
hasRequiredLoglevel = 1;
|
|
389
|
+
(function (module) {
|
|
390
|
+
(function (root, definition) {
|
|
343
391
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
}
|
|
392
|
+
if (module.exports) {
|
|
393
|
+
module.exports = definition();
|
|
394
|
+
} else {
|
|
395
|
+
root.log = definition();
|
|
396
|
+
}
|
|
397
|
+
})(loglevel, function () {
|
|
350
398
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
this._parentage = null;
|
|
366
|
-
if (Array.isArray(_parentage)) {
|
|
399
|
+
// Slightly dubious tricks to cut down minimized file size
|
|
400
|
+
var noop = function () {};
|
|
401
|
+
var undefinedType = "undefined";
|
|
402
|
+
var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent);
|
|
403
|
+
var logMethods = ["trace", "debug", "info", "warn", "error"];
|
|
404
|
+
var _loggersByName = {};
|
|
405
|
+
var defaultLogger = null;
|
|
406
|
+
|
|
407
|
+
// Cross-browser bind equivalent that works at least back to IE6
|
|
408
|
+
function bindMethod(obj, methodName) {
|
|
409
|
+
var method = obj[methodName];
|
|
410
|
+
if (typeof method.bind === 'function') {
|
|
411
|
+
return method.bind(obj);
|
|
412
|
+
} else {
|
|
367
413
|
try {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
e_1 = {
|
|
374
|
-
error: e_1_1
|
|
414
|
+
return Function.prototype.bind.call(method, obj);
|
|
415
|
+
} catch (e) {
|
|
416
|
+
// Missing bind shim or IE8 + Modernizr, fallback to wrapping
|
|
417
|
+
return function () {
|
|
418
|
+
return Function.prototype.apply.apply(method, [obj, arguments]);
|
|
375
419
|
};
|
|
376
|
-
} finally {
|
|
377
|
-
try {
|
|
378
|
-
if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
|
|
379
|
-
} finally {
|
|
380
|
-
if (e_1) throw e_1.error;
|
|
381
|
-
}
|
|
382
420
|
}
|
|
383
|
-
} else {
|
|
384
|
-
_parentage.remove(this);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
var initialFinalizer = this.initialTeardown;
|
|
388
|
-
if (isFunction(initialFinalizer)) {
|
|
389
|
-
try {
|
|
390
|
-
initialFinalizer();
|
|
391
|
-
} catch (e) {
|
|
392
|
-
errors = e instanceof UnsubscriptionError ? e.errors : [e];
|
|
393
421
|
}
|
|
394
422
|
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
errors = errors !== null && errors !== void 0 ? errors : [];
|
|
405
|
-
if (err instanceof UnsubscriptionError) {
|
|
406
|
-
errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
|
|
407
|
-
} else {
|
|
408
|
-
errors.push(err);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
} catch (e_2_1) {
|
|
413
|
-
e_2 = {
|
|
414
|
-
error: e_2_1
|
|
415
|
-
};
|
|
416
|
-
} finally {
|
|
417
|
-
try {
|
|
418
|
-
if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
|
|
419
|
-
} finally {
|
|
420
|
-
if (e_2) throw e_2.error;
|
|
423
|
+
|
|
424
|
+
// Trace() doesn't print the message in IE, so for that case we need to wrap it
|
|
425
|
+
function traceForIE() {
|
|
426
|
+
if (console.log) {
|
|
427
|
+
if (console.log.apply) {
|
|
428
|
+
console.log.apply(console, arguments);
|
|
429
|
+
} else {
|
|
430
|
+
// In old IE, native console methods themselves don't have apply().
|
|
431
|
+
Function.prototype.apply.apply(console.log, [console, arguments]);
|
|
421
432
|
}
|
|
422
433
|
}
|
|
434
|
+
if (console.trace) console.trace();
|
|
423
435
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
if (
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
436
|
+
|
|
437
|
+
// Build the best logging method possible for this env
|
|
438
|
+
// Wherever possible we want to bind, not wrap, to preserve stack traces
|
|
439
|
+
function realMethod(methodName) {
|
|
440
|
+
if (methodName === 'debug') {
|
|
441
|
+
methodName = 'log';
|
|
442
|
+
}
|
|
443
|
+
if (typeof console === undefinedType) {
|
|
444
|
+
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
|
|
445
|
+
} else if (methodName === 'trace' && isIE) {
|
|
446
|
+
return traceForIE;
|
|
447
|
+
} else if (console[methodName] !== undefined) {
|
|
448
|
+
return bindMethod(console, methodName);
|
|
449
|
+
} else if (console.log !== undefined) {
|
|
450
|
+
return bindMethod(console, 'log');
|
|
451
|
+
} else {
|
|
452
|
+
return noop;
|
|
440
453
|
}
|
|
441
|
-
(this._finalizers = (_a = this._finalizers) !== null && _a !== undefined ? _a : []).push(teardown);
|
|
442
454
|
}
|
|
443
|
-
}
|
|
444
|
-
};
|
|
445
|
-
Subscription.prototype._hasParent = function (parent) {
|
|
446
|
-
var _parentage = this._parentage;
|
|
447
|
-
return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);
|
|
448
|
-
};
|
|
449
|
-
Subscription.prototype._addParent = function (parent) {
|
|
450
|
-
var _parentage = this._parentage;
|
|
451
|
-
this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
|
|
452
|
-
};
|
|
453
|
-
Subscription.prototype._removeParent = function (parent) {
|
|
454
|
-
var _parentage = this._parentage;
|
|
455
|
-
if (_parentage === parent) {
|
|
456
|
-
this._parentage = null;
|
|
457
|
-
} else if (Array.isArray(_parentage)) {
|
|
458
|
-
arrRemove(_parentage, parent);
|
|
459
|
-
}
|
|
460
|
-
};
|
|
461
|
-
Subscription.prototype.remove = function (teardown) {
|
|
462
|
-
var _finalizers = this._finalizers;
|
|
463
|
-
_finalizers && arrRemove(_finalizers, teardown);
|
|
464
|
-
if (teardown instanceof Subscription) {
|
|
465
|
-
teardown._removeParent(this);
|
|
466
|
-
}
|
|
467
|
-
};
|
|
468
|
-
Subscription.EMPTY = function () {
|
|
469
|
-
var empty = new Subscription();
|
|
470
|
-
empty.closed = true;
|
|
471
|
-
return empty;
|
|
472
|
-
}();
|
|
473
|
-
return Subscription;
|
|
474
|
-
}();
|
|
475
|
-
var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
|
|
476
|
-
function isSubscription(value) {
|
|
477
|
-
return value instanceof Subscription || value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);
|
|
478
|
-
}
|
|
479
|
-
function execFinalizer(finalizer) {
|
|
480
|
-
if (isFunction(finalizer)) {
|
|
481
|
-
finalizer();
|
|
482
|
-
} else {
|
|
483
|
-
finalizer.unsubscribe();
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
455
|
|
|
487
|
-
|
|
488
|
-
onUnhandledError: null,
|
|
489
|
-
onStoppedNotification: null,
|
|
490
|
-
Promise: undefined,
|
|
491
|
-
useDeprecatedSynchronousErrorHandling: false,
|
|
492
|
-
useDeprecatedNextContext: false
|
|
493
|
-
};
|
|
456
|
+
// These private functions always need `this` to be set properly
|
|
494
457
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
499
|
-
args[_i - 2] = arguments[_i];
|
|
500
|
-
}
|
|
501
|
-
return setTimeout.apply(undefined, __spreadArray([handler, timeout], __read(args)));
|
|
502
|
-
},
|
|
503
|
-
clearTimeout: function (handle) {
|
|
504
|
-
return (clearTimeout)(handle);
|
|
505
|
-
},
|
|
506
|
-
delegate: undefined
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
function reportUnhandledError(err) {
|
|
510
|
-
timeoutProvider.setTimeout(function () {
|
|
511
|
-
{
|
|
512
|
-
throw err;
|
|
513
|
-
}
|
|
514
|
-
});
|
|
515
|
-
}
|
|
458
|
+
function replaceLoggingMethods() {
|
|
459
|
+
/*jshint validthis:true */
|
|
460
|
+
var level = this.getLevel();
|
|
516
461
|
|
|
517
|
-
|
|
462
|
+
// Replace the actual methods.
|
|
463
|
+
for (var i = 0; i < logMethods.length; i++) {
|
|
464
|
+
var methodName = logMethods[i];
|
|
465
|
+
this[methodName] = i < level ? noop : this.methodFactory(methodName, level, this.name);
|
|
466
|
+
}
|
|
518
467
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
cb();
|
|
522
|
-
}
|
|
523
|
-
}
|
|
468
|
+
// Define log.log as an alias for log.debug
|
|
469
|
+
this.log = this.debug;
|
|
524
470
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
_this.isStopped = false;
|
|
530
|
-
if (destination) {
|
|
531
|
-
_this.destination = destination;
|
|
532
|
-
if (isSubscription(destination)) {
|
|
533
|
-
destination.add(_this);
|
|
534
|
-
}
|
|
535
|
-
} else {
|
|
536
|
-
_this.destination = EMPTY_OBSERVER;
|
|
537
|
-
}
|
|
538
|
-
return _this;
|
|
539
|
-
}
|
|
540
|
-
Subscriber.create = function (next, error, complete) {
|
|
541
|
-
return new SafeSubscriber(next, error, complete);
|
|
542
|
-
};
|
|
543
|
-
Subscriber.prototype.next = function (value) {
|
|
544
|
-
if (this.isStopped) ; else {
|
|
545
|
-
this._next(value);
|
|
546
|
-
}
|
|
547
|
-
};
|
|
548
|
-
Subscriber.prototype.error = function (err) {
|
|
549
|
-
if (this.isStopped) ; else {
|
|
550
|
-
this.isStopped = true;
|
|
551
|
-
this._error(err);
|
|
552
|
-
}
|
|
553
|
-
};
|
|
554
|
-
Subscriber.prototype.complete = function () {
|
|
555
|
-
if (this.isStopped) ; else {
|
|
556
|
-
this.isStopped = true;
|
|
557
|
-
this._complete();
|
|
558
|
-
}
|
|
559
|
-
};
|
|
560
|
-
Subscriber.prototype.unsubscribe = function () {
|
|
561
|
-
if (!this.closed) {
|
|
562
|
-
this.isStopped = true;
|
|
563
|
-
_super.prototype.unsubscribe.call(this);
|
|
564
|
-
this.destination = null;
|
|
565
|
-
}
|
|
566
|
-
};
|
|
567
|
-
Subscriber.prototype._next = function (value) {
|
|
568
|
-
this.destination.next(value);
|
|
569
|
-
};
|
|
570
|
-
Subscriber.prototype._error = function (err) {
|
|
571
|
-
try {
|
|
572
|
-
this.destination.error(err);
|
|
573
|
-
} finally {
|
|
574
|
-
this.unsubscribe();
|
|
575
|
-
}
|
|
576
|
-
};
|
|
577
|
-
Subscriber.prototype._complete = function () {
|
|
578
|
-
try {
|
|
579
|
-
this.destination.complete();
|
|
580
|
-
} finally {
|
|
581
|
-
this.unsubscribe();
|
|
582
|
-
}
|
|
583
|
-
};
|
|
584
|
-
return Subscriber;
|
|
585
|
-
}(Subscription);
|
|
586
|
-
var ConsumerObserver = function () {
|
|
587
|
-
function ConsumerObserver(partialObserver) {
|
|
588
|
-
this.partialObserver = partialObserver;
|
|
589
|
-
}
|
|
590
|
-
ConsumerObserver.prototype.next = function (value) {
|
|
591
|
-
var partialObserver = this.partialObserver;
|
|
592
|
-
if (partialObserver.next) {
|
|
593
|
-
try {
|
|
594
|
-
partialObserver.next(value);
|
|
595
|
-
} catch (error) {
|
|
596
|
-
handleUnhandledError(error);
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
};
|
|
600
|
-
ConsumerObserver.prototype.error = function (err) {
|
|
601
|
-
var partialObserver = this.partialObserver;
|
|
602
|
-
if (partialObserver.error) {
|
|
603
|
-
try {
|
|
604
|
-
partialObserver.error(err);
|
|
605
|
-
} catch (error) {
|
|
606
|
-
handleUnhandledError(error);
|
|
471
|
+
// Return any important warnings.
|
|
472
|
+
if (typeof console === undefinedType && level < this.levels.SILENT) {
|
|
473
|
+
return "No console available for logging";
|
|
474
|
+
}
|
|
607
475
|
}
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
handleUnhandledError(error);
|
|
476
|
+
|
|
477
|
+
// In old IE versions, the console isn't present until you first open it.
|
|
478
|
+
// We build realMethod() replacements here that regenerate logging methods
|
|
479
|
+
function enableLoggingWhenConsoleArrives(methodName) {
|
|
480
|
+
return function () {
|
|
481
|
+
if (typeof console !== undefinedType) {
|
|
482
|
+
replaceLoggingMethods.call(this);
|
|
483
|
+
this[methodName].apply(this, arguments);
|
|
484
|
+
}
|
|
485
|
+
};
|
|
619
486
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
function SafeSubscriber(observerOrNext, error, complete) {
|
|
627
|
-
var _this = _super.call(this) || this;
|
|
628
|
-
var partialObserver;
|
|
629
|
-
if (isFunction(observerOrNext) || !observerOrNext) {
|
|
630
|
-
partialObserver = {
|
|
631
|
-
next: observerOrNext !== null && observerOrNext !== undefined ? observerOrNext : undefined,
|
|
632
|
-
error: error !== null && error !== undefined ? error : undefined,
|
|
633
|
-
complete: complete !== null && complete !== undefined ? complete : undefined
|
|
634
|
-
};
|
|
635
|
-
} else {
|
|
636
|
-
{
|
|
637
|
-
partialObserver = observerOrNext;
|
|
487
|
+
|
|
488
|
+
// By default, we use closely bound real methods wherever possible, and
|
|
489
|
+
// otherwise we wait for a console to appear, and then try again.
|
|
490
|
+
function defaultMethodFactory(methodName, _level, _loggerName) {
|
|
491
|
+
/*jshint validthis:true */
|
|
492
|
+
return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);
|
|
638
493
|
}
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
494
|
+
function Logger(name, factory) {
|
|
495
|
+
// Private instance variables.
|
|
496
|
+
var self = this;
|
|
497
|
+
/**
|
|
498
|
+
* The level inherited from a parent logger (or a global default). We
|
|
499
|
+
* cache this here rather than delegating to the parent so that it stays
|
|
500
|
+
* in sync with the actual logging methods that we have installed (the
|
|
501
|
+
* parent could change levels but we might not have rebuilt the loggers
|
|
502
|
+
* in this child yet).
|
|
503
|
+
* @type {number}
|
|
504
|
+
*/
|
|
505
|
+
var inheritedLevel;
|
|
506
|
+
/**
|
|
507
|
+
* The default level for this logger, if any. If set, this overrides
|
|
508
|
+
* `inheritedLevel`.
|
|
509
|
+
* @type {number|null}
|
|
510
|
+
*/
|
|
511
|
+
var defaultLevel;
|
|
512
|
+
/**
|
|
513
|
+
* A user-specific level for this logger. If set, this overrides
|
|
514
|
+
* `defaultLevel`.
|
|
515
|
+
* @type {number|null}
|
|
516
|
+
*/
|
|
517
|
+
var userLevel;
|
|
518
|
+
var storageKey = "loglevel";
|
|
519
|
+
if (typeof name === "string") {
|
|
520
|
+
storageKey += ":" + name;
|
|
521
|
+
} else if (typeof name === "symbol") {
|
|
522
|
+
storageKey = undefined;
|
|
523
|
+
}
|
|
524
|
+
function persistLevelIfPossible(levelNum) {
|
|
525
|
+
var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
|
|
526
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
659
527
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
528
|
+
// Use localStorage if available
|
|
529
|
+
try {
|
|
530
|
+
window.localStorage[storageKey] = levelName;
|
|
531
|
+
return;
|
|
532
|
+
} catch (ignore) {}
|
|
663
533
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
534
|
+
// Use session cookie as fallback
|
|
535
|
+
try {
|
|
536
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";";
|
|
537
|
+
} catch (ignore) {}
|
|
538
|
+
}
|
|
539
|
+
function getPersistedLevel() {
|
|
540
|
+
var storedLevel;
|
|
541
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
542
|
+
try {
|
|
543
|
+
storedLevel = window.localStorage[storageKey];
|
|
544
|
+
} catch (ignore) {}
|
|
667
545
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
};
|
|
680
|
-
}
|
|
546
|
+
// Fallback to cookies if local storage gives us nothing
|
|
547
|
+
if (typeof storedLevel === undefinedType) {
|
|
548
|
+
try {
|
|
549
|
+
var cookie = window.document.cookie;
|
|
550
|
+
var cookieName = encodeURIComponent(storageKey);
|
|
551
|
+
var location = cookie.indexOf(cookieName + "=");
|
|
552
|
+
if (location !== -1) {
|
|
553
|
+
storedLevel = /^([^;]+)/.exec(cookie.slice(location + cookieName.length + 1))[1];
|
|
554
|
+
}
|
|
555
|
+
} catch (ignore) {}
|
|
556
|
+
}
|
|
681
557
|
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
558
|
+
// If the stored level is not valid, treat it as if nothing was stored.
|
|
559
|
+
if (self.levels[storedLevel] === undefined) {
|
|
560
|
+
storedLevel = undefined;
|
|
561
|
+
}
|
|
562
|
+
return storedLevel;
|
|
563
|
+
}
|
|
564
|
+
function clearPersistedLevel() {
|
|
565
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
566
|
+
|
|
567
|
+
// Use localStorage if available
|
|
568
|
+
try {
|
|
569
|
+
window.localStorage.removeItem(storageKey);
|
|
570
|
+
} catch (ignore) {}
|
|
571
|
+
|
|
572
|
+
// Use session cookie as fallback
|
|
573
|
+
try {
|
|
574
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
|
|
575
|
+
} catch (ignore) {}
|
|
576
|
+
}
|
|
577
|
+
function normalizeLevel(input) {
|
|
578
|
+
var level = input;
|
|
579
|
+
if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {
|
|
580
|
+
level = self.levels[level.toUpperCase()];
|
|
581
|
+
}
|
|
582
|
+
if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {
|
|
583
|
+
return level;
|
|
584
|
+
} else {
|
|
585
|
+
throw new TypeError("log.setLevel() called with invalid level: " + input);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/*
|
|
590
|
+
*
|
|
591
|
+
* Public logger API - see https://github.com/pimterry/loglevel for details
|
|
592
|
+
*
|
|
593
|
+
*/
|
|
594
|
+
|
|
595
|
+
self.name = name;
|
|
596
|
+
self.levels = {
|
|
597
|
+
"TRACE": 0,
|
|
598
|
+
"DEBUG": 1,
|
|
599
|
+
"INFO": 2,
|
|
600
|
+
"WARN": 3,
|
|
601
|
+
"ERROR": 4,
|
|
602
|
+
"SILENT": 5
|
|
603
|
+
};
|
|
604
|
+
self.methodFactory = factory || defaultMethodFactory;
|
|
605
|
+
self.getLevel = function () {
|
|
606
|
+
if (userLevel != null) {
|
|
607
|
+
return userLevel;
|
|
608
|
+
} else if (defaultLevel != null) {
|
|
609
|
+
return defaultLevel;
|
|
610
|
+
} else {
|
|
611
|
+
return inheritedLevel;
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
self.setLevel = function (level, persist) {
|
|
615
|
+
userLevel = normalizeLevel(level);
|
|
616
|
+
if (persist !== false) {
|
|
617
|
+
// defaults to true
|
|
618
|
+
persistLevelIfPossible(userLevel);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
// NOTE: in v2, this should call rebuild(), which updates children.
|
|
622
|
+
return replaceLoggingMethods.call(self);
|
|
623
|
+
};
|
|
624
|
+
self.setDefaultLevel = function (level) {
|
|
625
|
+
defaultLevel = normalizeLevel(level);
|
|
626
|
+
if (!getPersistedLevel()) {
|
|
627
|
+
self.setLevel(level, false);
|
|
628
|
+
}
|
|
629
|
+
};
|
|
630
|
+
self.resetLevel = function () {
|
|
631
|
+
userLevel = null;
|
|
632
|
+
clearPersistedLevel();
|
|
633
|
+
replaceLoggingMethods.call(self);
|
|
634
|
+
};
|
|
635
|
+
self.enableAll = function (persist) {
|
|
636
|
+
self.setLevel(self.levels.TRACE, persist);
|
|
637
|
+
};
|
|
638
|
+
self.disableAll = function (persist) {
|
|
639
|
+
self.setLevel(self.levels.SILENT, persist);
|
|
640
|
+
};
|
|
641
|
+
self.rebuild = function () {
|
|
642
|
+
if (defaultLogger !== self) {
|
|
643
|
+
inheritedLevel = normalizeLevel(defaultLogger.getLevel());
|
|
644
|
+
}
|
|
645
|
+
replaceLoggingMethods.call(self);
|
|
646
|
+
if (defaultLogger === self) {
|
|
647
|
+
for (var childName in _loggersByName) {
|
|
648
|
+
_loggersByName[childName].rebuild();
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
// Initialize all the internal levels.
|
|
654
|
+
inheritedLevel = normalizeLevel(defaultLogger ? defaultLogger.getLevel() : "WARN");
|
|
655
|
+
var initialLevel = getPersistedLevel();
|
|
656
|
+
if (initialLevel != null) {
|
|
657
|
+
userLevel = normalizeLevel(initialLevel);
|
|
658
|
+
}
|
|
659
|
+
replaceLoggingMethods.call(self);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/*
|
|
663
|
+
*
|
|
664
|
+
* Top-level API
|
|
665
|
+
*
|
|
666
|
+
*/
|
|
667
|
+
|
|
668
|
+
defaultLogger = new Logger();
|
|
669
|
+
defaultLogger.getLogger = function getLogger(name) {
|
|
670
|
+
if (typeof name !== "symbol" && typeof name !== "string" || name === "") {
|
|
671
|
+
throw new TypeError("You must supply a name when creating a logger.");
|
|
672
|
+
}
|
|
673
|
+
var logger = _loggersByName[name];
|
|
674
|
+
if (!logger) {
|
|
675
|
+
logger = _loggersByName[name] = new Logger(name, defaultLogger.methodFactory);
|
|
676
|
+
}
|
|
677
|
+
return logger;
|
|
678
|
+
};
|
|
679
|
+
|
|
680
|
+
// Grab the current global log variable in case of overwrite
|
|
681
|
+
var _log = typeof window !== undefinedType ? window.log : undefined;
|
|
682
|
+
defaultLogger.noConflict = function () {
|
|
683
|
+
if (typeof window !== undefinedType && window.log === defaultLogger) {
|
|
684
|
+
window.log = _log;
|
|
685
|
+
}
|
|
686
|
+
return defaultLogger;
|
|
687
|
+
};
|
|
688
|
+
defaultLogger.getLoggers = function getLoggers() {
|
|
689
|
+
return _loggersByName;
|
|
690
|
+
};
|
|
691
|
+
|
|
692
|
+
// ES6 default export, for compatibility
|
|
693
|
+
defaultLogger['default'] = defaultLogger;
|
|
694
|
+
return defaultLogger;
|
|
702
695
|
});
|
|
703
|
-
|
|
696
|
+
})(loglevel$1);
|
|
697
|
+
return loglevel$1.exports;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
var loglevelExports = requireLoglevel();
|
|
701
|
+
var log = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
702
|
+
|
|
703
|
+
function isFunction(value) {
|
|
704
|
+
return typeof value === 'function';
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
function createErrorClass(createImpl) {
|
|
708
|
+
var _super = function (instance) {
|
|
709
|
+
Error.call(instance);
|
|
710
|
+
instance.stack = new Error().stack;
|
|
704
711
|
};
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
712
|
+
var ctorFunc = createImpl(_super);
|
|
713
|
+
ctorFunc.prototype = Object.create(Error.prototype);
|
|
714
|
+
ctorFunc.prototype.constructor = ctorFunc;
|
|
715
|
+
return ctorFunc;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
var UnsubscriptionError = createErrorClass(function (_super) {
|
|
719
|
+
return function UnsubscriptionErrorImpl(errors) {
|
|
720
|
+
_super(this);
|
|
721
|
+
this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) {
|
|
722
|
+
return i + 1 + ") " + err.toString();
|
|
723
|
+
}).join('\n ') : '';
|
|
724
|
+
this.name = 'UnsubscriptionError';
|
|
725
|
+
this.errors = errors;
|
|
711
726
|
};
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
727
|
+
});
|
|
728
|
+
|
|
729
|
+
function arrRemove(arr, item) {
|
|
730
|
+
if (arr) {
|
|
731
|
+
var index = arr.indexOf(item);
|
|
732
|
+
0 <= index && arr.splice(index, 1);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
var Subscription = function () {
|
|
737
|
+
function Subscription(initialTeardown) {
|
|
738
|
+
this.initialTeardown = initialTeardown;
|
|
739
|
+
this.closed = false;
|
|
740
|
+
this._parentage = null;
|
|
741
|
+
this._finalizers = null;
|
|
742
|
+
}
|
|
743
|
+
Subscription.prototype.unsubscribe = function () {
|
|
744
|
+
var e_1, _a, e_2, _b;
|
|
745
|
+
var errors;
|
|
746
|
+
if (!this.closed) {
|
|
747
|
+
this.closed = true;
|
|
748
|
+
var _parentage = this._parentage;
|
|
749
|
+
if (_parentage) {
|
|
750
|
+
this._parentage = null;
|
|
751
|
+
if (Array.isArray(_parentage)) {
|
|
752
|
+
try {
|
|
753
|
+
for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
|
|
754
|
+
var parent_1 = _parentage_1_1.value;
|
|
755
|
+
parent_1.remove(this);
|
|
756
|
+
}
|
|
757
|
+
} catch (e_1_1) {
|
|
758
|
+
e_1 = {
|
|
759
|
+
error: e_1_1
|
|
760
|
+
};
|
|
761
|
+
} finally {
|
|
762
|
+
try {
|
|
763
|
+
if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
|
|
764
|
+
} finally {
|
|
765
|
+
if (e_1) throw e_1.error;
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
} else {
|
|
769
|
+
_parentage.remove(this);
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
var initialFinalizer = this.initialTeardown;
|
|
773
|
+
if (isFunction(initialFinalizer)) {
|
|
774
|
+
try {
|
|
775
|
+
initialFinalizer();
|
|
776
|
+
} catch (e) {
|
|
777
|
+
errors = e instanceof UnsubscriptionError ? e.errors : [e];
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
var _finalizers = this._finalizers;
|
|
781
|
+
if (_finalizers) {
|
|
782
|
+
this._finalizers = null;
|
|
783
|
+
try {
|
|
784
|
+
for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
|
|
785
|
+
var finalizer = _finalizers_1_1.value;
|
|
786
|
+
try {
|
|
787
|
+
execFinalizer(finalizer);
|
|
788
|
+
} catch (err) {
|
|
789
|
+
errors = errors !== null && errors !== void 0 ? errors : [];
|
|
790
|
+
if (err instanceof UnsubscriptionError) {
|
|
791
|
+
errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
|
|
792
|
+
} else {
|
|
793
|
+
errors.push(err);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
} catch (e_2_1) {
|
|
798
|
+
e_2 = {
|
|
799
|
+
error: e_2_1
|
|
800
|
+
};
|
|
801
|
+
} finally {
|
|
718
802
|
try {
|
|
719
|
-
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
subscriber.unsubscribe();
|
|
803
|
+
if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
|
|
804
|
+
} finally {
|
|
805
|
+
if (e_2) throw e_2.error;
|
|
723
806
|
}
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
}
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
if (errors) {
|
|
810
|
+
throw new UnsubscriptionError(errors);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
730
813
|
};
|
|
731
|
-
|
|
814
|
+
Subscription.prototype.add = function (teardown) {
|
|
732
815
|
var _a;
|
|
733
|
-
|
|
816
|
+
if (teardown && teardown !== this) {
|
|
817
|
+
if (this.closed) {
|
|
818
|
+
execFinalizer(teardown);
|
|
819
|
+
} else {
|
|
820
|
+
if (teardown instanceof Subscription) {
|
|
821
|
+
if (teardown.closed || teardown._hasParent(this)) {
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
teardown._addParent(this);
|
|
825
|
+
}
|
|
826
|
+
(this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
|
|
827
|
+
}
|
|
828
|
+
}
|
|
734
829
|
};
|
|
735
|
-
|
|
736
|
-
|
|
830
|
+
Subscription.prototype._hasParent = function (parent) {
|
|
831
|
+
var _parentage = this._parentage;
|
|
832
|
+
return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);
|
|
737
833
|
};
|
|
738
|
-
|
|
739
|
-
var
|
|
740
|
-
|
|
741
|
-
operations[_i] = arguments[_i];
|
|
742
|
-
}
|
|
743
|
-
return pipeFromArray(operations)(this);
|
|
834
|
+
Subscription.prototype._addParent = function (parent) {
|
|
835
|
+
var _parentage = this._parentage;
|
|
836
|
+
this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
|
|
744
837
|
};
|
|
745
|
-
|
|
746
|
-
var
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
}, function (err) {
|
|
753
|
-
return reject(err);
|
|
754
|
-
}, function () {
|
|
755
|
-
return resolve(value);
|
|
756
|
-
});
|
|
757
|
-
});
|
|
838
|
+
Subscription.prototype._removeParent = function (parent) {
|
|
839
|
+
var _parentage = this._parentage;
|
|
840
|
+
if (_parentage === parent) {
|
|
841
|
+
this._parentage = null;
|
|
842
|
+
} else if (Array.isArray(_parentage)) {
|
|
843
|
+
arrRemove(_parentage, parent);
|
|
844
|
+
}
|
|
758
845
|
};
|
|
759
|
-
|
|
760
|
-
|
|
846
|
+
Subscription.prototype.remove = function (teardown) {
|
|
847
|
+
var _finalizers = this._finalizers;
|
|
848
|
+
_finalizers && arrRemove(_finalizers, teardown);
|
|
849
|
+
if (teardown instanceof Subscription) {
|
|
850
|
+
teardown._removeParent(this);
|
|
851
|
+
}
|
|
761
852
|
};
|
|
762
|
-
|
|
853
|
+
Subscription.EMPTY = function () {
|
|
854
|
+
var empty = new Subscription();
|
|
855
|
+
empty.closed = true;
|
|
856
|
+
return empty;
|
|
857
|
+
}();
|
|
858
|
+
return Subscription;
|
|
763
859
|
}();
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
return
|
|
767
|
-
}
|
|
768
|
-
function isObserver(value) {
|
|
769
|
-
return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
|
|
860
|
+
var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
|
|
861
|
+
function isSubscription(value) {
|
|
862
|
+
return value instanceof Subscription || value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);
|
|
770
863
|
}
|
|
771
|
-
function
|
|
772
|
-
|
|
864
|
+
function execFinalizer(finalizer) {
|
|
865
|
+
if (isFunction(finalizer)) {
|
|
866
|
+
finalizer();
|
|
867
|
+
} else {
|
|
868
|
+
finalizer.unsubscribe();
|
|
869
|
+
}
|
|
773
870
|
}
|
|
774
871
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
return init(liftedSource, this);
|
|
784
|
-
} catch (err) {
|
|
785
|
-
this.error(err);
|
|
786
|
-
}
|
|
787
|
-
});
|
|
872
|
+
var config = {
|
|
873
|
+
Promise: undefined};
|
|
874
|
+
|
|
875
|
+
var timeoutProvider = {
|
|
876
|
+
setTimeout: function (handler, timeout) {
|
|
877
|
+
var args = [];
|
|
878
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
879
|
+
args[_i - 2] = arguments[_i];
|
|
788
880
|
}
|
|
789
|
-
|
|
790
|
-
}
|
|
881
|
+
return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
|
|
882
|
+
},
|
|
883
|
+
clearTimeout: function (handle) {
|
|
884
|
+
return (clearTimeout)(handle);
|
|
885
|
+
},
|
|
886
|
+
delegate: undefined
|
|
887
|
+
};
|
|
888
|
+
|
|
889
|
+
function reportUnhandledError(err) {
|
|
890
|
+
timeoutProvider.setTimeout(function () {
|
|
891
|
+
{
|
|
892
|
+
throw err;
|
|
893
|
+
}
|
|
894
|
+
});
|
|
791
895
|
}
|
|
792
896
|
|
|
793
|
-
function
|
|
794
|
-
|
|
897
|
+
function noop() {}
|
|
898
|
+
|
|
899
|
+
function errorContext(cb) {
|
|
900
|
+
{
|
|
901
|
+
cb();
|
|
902
|
+
}
|
|
795
903
|
}
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
_this
|
|
801
|
-
_this.
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
destination.error(err);
|
|
807
|
-
}
|
|
808
|
-
} : _super.prototype._next;
|
|
809
|
-
_this._error = onError ? function (err) {
|
|
810
|
-
try {
|
|
811
|
-
onError(err);
|
|
812
|
-
} catch (err) {
|
|
813
|
-
destination.error(err);
|
|
814
|
-
} finally {
|
|
815
|
-
this.unsubscribe();
|
|
816
|
-
}
|
|
817
|
-
} : _super.prototype._error;
|
|
818
|
-
_this._complete = onComplete ? function () {
|
|
819
|
-
try {
|
|
820
|
-
onComplete();
|
|
821
|
-
} catch (err) {
|
|
822
|
-
destination.error(err);
|
|
823
|
-
} finally {
|
|
824
|
-
this.unsubscribe();
|
|
904
|
+
|
|
905
|
+
var Subscriber = function (_super) {
|
|
906
|
+
__extends(Subscriber, _super);
|
|
907
|
+
function Subscriber(destination) {
|
|
908
|
+
var _this = _super.call(this) || this;
|
|
909
|
+
_this.isStopped = false;
|
|
910
|
+
if (destination) {
|
|
911
|
+
_this.destination = destination;
|
|
912
|
+
if (isSubscription(destination)) {
|
|
913
|
+
destination.add(_this);
|
|
825
914
|
}
|
|
826
|
-
}
|
|
915
|
+
} else {
|
|
916
|
+
_this.destination = EMPTY_OBSERVER;
|
|
917
|
+
}
|
|
827
918
|
return _this;
|
|
828
919
|
}
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
920
|
+
Subscriber.create = function (next, error, complete) {
|
|
921
|
+
return new SafeSubscriber(next, error, complete);
|
|
922
|
+
};
|
|
923
|
+
Subscriber.prototype.next = function (value) {
|
|
924
|
+
if (this.isStopped) ; else {
|
|
925
|
+
this._next(value);
|
|
926
|
+
}
|
|
927
|
+
};
|
|
928
|
+
Subscriber.prototype.error = function (err) {
|
|
929
|
+
if (this.isStopped) ; else {
|
|
930
|
+
this.isStopped = true;
|
|
931
|
+
this._error(err);
|
|
932
|
+
}
|
|
933
|
+
};
|
|
934
|
+
Subscriber.prototype.complete = function () {
|
|
935
|
+
if (this.isStopped) ; else {
|
|
936
|
+
this.isStopped = true;
|
|
937
|
+
this._complete();
|
|
938
|
+
}
|
|
939
|
+
};
|
|
940
|
+
Subscriber.prototype.unsubscribe = function () {
|
|
941
|
+
if (!this.closed) {
|
|
942
|
+
this.isStopped = true;
|
|
833
943
|
_super.prototype.unsubscribe.call(this);
|
|
834
|
-
|
|
944
|
+
this.destination = null;
|
|
835
945
|
}
|
|
836
946
|
};
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
var ObjectUnsubscribedError = createErrorClass(function (_super) {
|
|
841
|
-
return function ObjectUnsubscribedErrorImpl() {
|
|
842
|
-
_super(this);
|
|
843
|
-
this.name = 'ObjectUnsubscribedError';
|
|
844
|
-
this.message = 'object unsubscribed';
|
|
947
|
+
Subscriber.prototype._next = function (value) {
|
|
948
|
+
this.destination.next(value);
|
|
845
949
|
};
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
_this.closed = false;
|
|
853
|
-
_this.currentObservers = null;
|
|
854
|
-
_this.observers = [];
|
|
855
|
-
_this.isStopped = false;
|
|
856
|
-
_this.hasError = false;
|
|
857
|
-
_this.thrownError = null;
|
|
858
|
-
return _this;
|
|
859
|
-
}
|
|
860
|
-
Subject.prototype.lift = function (operator) {
|
|
861
|
-
var subject = new AnonymousSubject(this, this);
|
|
862
|
-
subject.operator = operator;
|
|
863
|
-
return subject;
|
|
950
|
+
Subscriber.prototype._error = function (err) {
|
|
951
|
+
try {
|
|
952
|
+
this.destination.error(err);
|
|
953
|
+
} finally {
|
|
954
|
+
this.unsubscribe();
|
|
955
|
+
}
|
|
864
956
|
};
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
957
|
+
Subscriber.prototype._complete = function () {
|
|
958
|
+
try {
|
|
959
|
+
this.destination.complete();
|
|
960
|
+
} finally {
|
|
961
|
+
this.unsubscribe();
|
|
868
962
|
}
|
|
869
963
|
};
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
}
|
|
884
|
-
} catch (e_1_1) {
|
|
885
|
-
e_1 = {
|
|
886
|
-
error: e_1_1
|
|
887
|
-
};
|
|
888
|
-
} finally {
|
|
889
|
-
try {
|
|
890
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
891
|
-
} finally {
|
|
892
|
-
if (e_1) throw e_1.error;
|
|
893
|
-
}
|
|
894
|
-
}
|
|
964
|
+
return Subscriber;
|
|
965
|
+
}(Subscription);
|
|
966
|
+
var ConsumerObserver = function () {
|
|
967
|
+
function ConsumerObserver(partialObserver) {
|
|
968
|
+
this.partialObserver = partialObserver;
|
|
969
|
+
}
|
|
970
|
+
ConsumerObserver.prototype.next = function (value) {
|
|
971
|
+
var partialObserver = this.partialObserver;
|
|
972
|
+
if (partialObserver.next) {
|
|
973
|
+
try {
|
|
974
|
+
partialObserver.next(value);
|
|
975
|
+
} catch (error) {
|
|
976
|
+
handleUnhandledError(error);
|
|
895
977
|
}
|
|
896
|
-
}
|
|
978
|
+
}
|
|
897
979
|
};
|
|
898
|
-
|
|
899
|
-
var
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
var observers = _this.observers;
|
|
906
|
-
while (observers.length) {
|
|
907
|
-
observers.shift().error(err);
|
|
908
|
-
}
|
|
980
|
+
ConsumerObserver.prototype.error = function (err) {
|
|
981
|
+
var partialObserver = this.partialObserver;
|
|
982
|
+
if (partialObserver.error) {
|
|
983
|
+
try {
|
|
984
|
+
partialObserver.error(err);
|
|
985
|
+
} catch (error) {
|
|
986
|
+
handleUnhandledError(error);
|
|
909
987
|
}
|
|
910
|
-
}
|
|
988
|
+
} else {
|
|
989
|
+
handleUnhandledError(err);
|
|
990
|
+
}
|
|
911
991
|
};
|
|
912
|
-
|
|
913
|
-
var
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
while (observers.length) {
|
|
920
|
-
observers.shift().complete();
|
|
921
|
-
}
|
|
992
|
+
ConsumerObserver.prototype.complete = function () {
|
|
993
|
+
var partialObserver = this.partialObserver;
|
|
994
|
+
if (partialObserver.complete) {
|
|
995
|
+
try {
|
|
996
|
+
partialObserver.complete();
|
|
997
|
+
} catch (error) {
|
|
998
|
+
handleUnhandledError(error);
|
|
922
999
|
}
|
|
923
|
-
});
|
|
924
|
-
};
|
|
925
|
-
Subject.prototype.unsubscribe = function () {
|
|
926
|
-
this.isStopped = this.closed = true;
|
|
927
|
-
this.observers = this.currentObservers = null;
|
|
928
|
-
};
|
|
929
|
-
Object.defineProperty(Subject.prototype, "observed", {
|
|
930
|
-
get: function () {
|
|
931
|
-
var _a;
|
|
932
|
-
return ((_a = this.observers) === null || _a === undefined ? undefined : _a.length) > 0;
|
|
933
|
-
},
|
|
934
|
-
enumerable: false,
|
|
935
|
-
configurable: true
|
|
936
|
-
});
|
|
937
|
-
Subject.prototype._trySubscribe = function (subscriber) {
|
|
938
|
-
this._throwIfClosed();
|
|
939
|
-
return _super.prototype._trySubscribe.call(this, subscriber);
|
|
940
|
-
};
|
|
941
|
-
Subject.prototype._subscribe = function (subscriber) {
|
|
942
|
-
this._throwIfClosed();
|
|
943
|
-
this._checkFinalizedStatuses(subscriber);
|
|
944
|
-
return this._innerSubscribe(subscriber);
|
|
945
|
-
};
|
|
946
|
-
Subject.prototype._innerSubscribe = function (subscriber) {
|
|
947
|
-
var _this = this;
|
|
948
|
-
var _a = this,
|
|
949
|
-
hasError = _a.hasError,
|
|
950
|
-
isStopped = _a.isStopped,
|
|
951
|
-
observers = _a.observers;
|
|
952
|
-
if (hasError || isStopped) {
|
|
953
|
-
return EMPTY_SUBSCRIPTION;
|
|
954
1000
|
}
|
|
955
|
-
this.currentObservers = null;
|
|
956
|
-
observers.push(subscriber);
|
|
957
|
-
return new Subscription(function () {
|
|
958
|
-
_this.currentObservers = null;
|
|
959
|
-
arrRemove(observers, subscriber);
|
|
960
|
-
});
|
|
961
1001
|
};
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
1002
|
+
return ConsumerObserver;
|
|
1003
|
+
}();
|
|
1004
|
+
var SafeSubscriber = function (_super) {
|
|
1005
|
+
__extends(SafeSubscriber, _super);
|
|
1006
|
+
function SafeSubscriber(observerOrNext, error, complete) {
|
|
1007
|
+
var _this = _super.call(this) || this;
|
|
1008
|
+
var partialObserver;
|
|
1009
|
+
if (isFunction(observerOrNext) || !observerOrNext) {
|
|
1010
|
+
partialObserver = {
|
|
1011
|
+
next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined,
|
|
1012
|
+
error: error !== null && error !== void 0 ? error : undefined,
|
|
1013
|
+
complete: complete !== null && complete !== void 0 ? complete : undefined
|
|
1014
|
+
};
|
|
1015
|
+
} else {
|
|
1016
|
+
{
|
|
1017
|
+
partialObserver = observerOrNext;
|
|
1018
|
+
}
|
|
971
1019
|
}
|
|
1020
|
+
_this.destination = new ConsumerObserver(partialObserver);
|
|
1021
|
+
return _this;
|
|
1022
|
+
}
|
|
1023
|
+
return SafeSubscriber;
|
|
1024
|
+
}(Subscriber);
|
|
1025
|
+
function handleUnhandledError(error) {
|
|
1026
|
+
{
|
|
1027
|
+
reportUnhandledError(error);
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
function defaultErrorHandler(err) {
|
|
1031
|
+
throw err;
|
|
1032
|
+
}
|
|
1033
|
+
var EMPTY_OBSERVER = {
|
|
1034
|
+
closed: true,
|
|
1035
|
+
next: noop,
|
|
1036
|
+
error: defaultErrorHandler,
|
|
1037
|
+
complete: noop
|
|
1038
|
+
};
|
|
1039
|
+
|
|
1040
|
+
var observable = function () {
|
|
1041
|
+
return typeof Symbol === 'function' && Symbol.observable || '@@observable';
|
|
1042
|
+
}();
|
|
1043
|
+
|
|
1044
|
+
function identity(x) {
|
|
1045
|
+
return x;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
function pipeFromArray(fns) {
|
|
1049
|
+
if (fns.length === 0) {
|
|
1050
|
+
return identity;
|
|
1051
|
+
}
|
|
1052
|
+
if (fns.length === 1) {
|
|
1053
|
+
return fns[0];
|
|
1054
|
+
}
|
|
1055
|
+
return function piped(input) {
|
|
1056
|
+
return fns.reduce(function (prev, fn) {
|
|
1057
|
+
return fn(prev);
|
|
1058
|
+
}, input);
|
|
972
1059
|
};
|
|
973
|
-
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
var Observable = function () {
|
|
1063
|
+
function Observable(subscribe) {
|
|
1064
|
+
if (subscribe) {
|
|
1065
|
+
this._subscribe = subscribe;
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
Observable.prototype.lift = function (operator) {
|
|
974
1069
|
var observable = new Observable();
|
|
975
1070
|
observable.source = this;
|
|
1071
|
+
observable.operator = operator;
|
|
976
1072
|
return observable;
|
|
977
1073
|
};
|
|
978
|
-
|
|
979
|
-
|
|
1074
|
+
Observable.prototype.subscribe = function (observerOrNext, error, complete) {
|
|
1075
|
+
var _this = this;
|
|
1076
|
+
var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
|
|
1077
|
+
errorContext(function () {
|
|
1078
|
+
var _a = _this,
|
|
1079
|
+
operator = _a.operator,
|
|
1080
|
+
source = _a.source;
|
|
1081
|
+
subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
|
|
1082
|
+
});
|
|
1083
|
+
return subscriber;
|
|
980
1084
|
};
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
_this.destination = destination;
|
|
988
|
-
_this.source = source;
|
|
989
|
-
return _this;
|
|
990
|
-
}
|
|
991
|
-
AnonymousSubject.prototype.next = function (value) {
|
|
992
|
-
var _a, _b;
|
|
993
|
-
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.next) === null || _b === undefined ? undefined : _b.call(_a, value);
|
|
1085
|
+
Observable.prototype._trySubscribe = function (sink) {
|
|
1086
|
+
try {
|
|
1087
|
+
return this._subscribe(sink);
|
|
1088
|
+
} catch (err) {
|
|
1089
|
+
sink.error(err);
|
|
1090
|
+
}
|
|
994
1091
|
};
|
|
995
|
-
|
|
996
|
-
var
|
|
997
|
-
|
|
1092
|
+
Observable.prototype.forEach = function (next, promiseCtor) {
|
|
1093
|
+
var _this = this;
|
|
1094
|
+
promiseCtor = getPromiseCtor(promiseCtor);
|
|
1095
|
+
return new promiseCtor(function (resolve, reject) {
|
|
1096
|
+
var subscriber = new SafeSubscriber({
|
|
1097
|
+
next: function (value) {
|
|
1098
|
+
try {
|
|
1099
|
+
next(value);
|
|
1100
|
+
} catch (err) {
|
|
1101
|
+
reject(err);
|
|
1102
|
+
subscriber.unsubscribe();
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
error: reject,
|
|
1106
|
+
complete: resolve
|
|
1107
|
+
});
|
|
1108
|
+
_this.subscribe(subscriber);
|
|
1109
|
+
});
|
|
998
1110
|
};
|
|
999
|
-
|
|
1000
|
-
var _a
|
|
1001
|
-
|
|
1111
|
+
Observable.prototype._subscribe = function (subscriber) {
|
|
1112
|
+
var _a;
|
|
1113
|
+
return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);
|
|
1002
1114
|
};
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
return (_b = (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber)) !== null && _b !== undefined ? _b : EMPTY_SUBSCRIPTION;
|
|
1115
|
+
Observable.prototype[observable] = function () {
|
|
1116
|
+
return this;
|
|
1006
1117
|
};
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
this.name = 'EmptyError';
|
|
1014
|
-
this.message = 'no elements in sequence';
|
|
1118
|
+
Observable.prototype.pipe = function () {
|
|
1119
|
+
var operations = [];
|
|
1120
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1121
|
+
operations[_i] = arguments[_i];
|
|
1122
|
+
}
|
|
1123
|
+
return pipeFromArray(operations)(this);
|
|
1015
1124
|
};
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
reject(new EmptyError());
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1125
|
+
Observable.prototype.toPromise = function (promiseCtor) {
|
|
1126
|
+
var _this = this;
|
|
1127
|
+
promiseCtor = getPromiseCtor(promiseCtor);
|
|
1128
|
+
return new promiseCtor(function (resolve, reject) {
|
|
1129
|
+
var value;
|
|
1130
|
+
_this.subscribe(function (x) {
|
|
1131
|
+
return value = x;
|
|
1132
|
+
}, function (err) {
|
|
1133
|
+
return reject(err);
|
|
1134
|
+
}, function () {
|
|
1135
|
+
return resolve(value);
|
|
1136
|
+
});
|
|
1031
1137
|
});
|
|
1032
|
-
|
|
1033
|
-
|
|
1138
|
+
};
|
|
1139
|
+
Observable.create = function (subscribe) {
|
|
1140
|
+
return new Observable(subscribe);
|
|
1141
|
+
};
|
|
1142
|
+
return Observable;
|
|
1143
|
+
}();
|
|
1144
|
+
function getPromiseCtor(promiseCtor) {
|
|
1145
|
+
var _a;
|
|
1146
|
+
return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;
|
|
1034
1147
|
}
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
return operate(function (source, subscriber) {
|
|
1038
|
-
var index = 0;
|
|
1039
|
-
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1040
|
-
return predicate.call(thisArg, value, index++) && subscriber.next(value);
|
|
1041
|
-
}));
|
|
1042
|
-
});
|
|
1148
|
+
function isObserver(value) {
|
|
1149
|
+
return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
|
|
1043
1150
|
}
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
1151
|
+
function isSubscriber(value) {
|
|
1152
|
+
return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);
|
|
1047
1153
|
}
|
|
1048
1154
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
1061
|
-
hasRequiredLoglevel = 1;
|
|
1062
|
-
(function (module) {
|
|
1063
|
-
(function (root, definition) {
|
|
1064
|
-
|
|
1065
|
-
if (module.exports) {
|
|
1066
|
-
module.exports = definition();
|
|
1067
|
-
} else {
|
|
1068
|
-
root.log = definition();
|
|
1069
|
-
}
|
|
1070
|
-
})(loglevel, function () {
|
|
1071
|
-
|
|
1072
|
-
// Slightly dubious tricks to cut down minimized file size
|
|
1073
|
-
var noop = function () {};
|
|
1074
|
-
var undefinedType = "undefined";
|
|
1075
|
-
var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent);
|
|
1076
|
-
var logMethods = ["trace", "debug", "info", "warn", "error"];
|
|
1077
|
-
var _loggersByName = {};
|
|
1078
|
-
var defaultLogger = null;
|
|
1079
|
-
|
|
1080
|
-
// Cross-browser bind equivalent that works at least back to IE6
|
|
1081
|
-
function bindMethod(obj, methodName) {
|
|
1082
|
-
var method = obj[methodName];
|
|
1083
|
-
if (typeof method.bind === 'function') {
|
|
1084
|
-
return method.bind(obj);
|
|
1085
|
-
} else {
|
|
1086
|
-
try {
|
|
1087
|
-
return Function.prototype.bind.call(method, obj);
|
|
1088
|
-
} catch (e) {
|
|
1089
|
-
// Missing bind shim or IE8 + Modernizr, fallback to wrapping
|
|
1090
|
-
return function () {
|
|
1091
|
-
return Function.prototype.apply.apply(method, [obj, arguments]);
|
|
1092
|
-
};
|
|
1093
|
-
}
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
|
|
1097
|
-
// Trace() doesn't print the message in IE, so for that case we need to wrap it
|
|
1098
|
-
function traceForIE() {
|
|
1099
|
-
if (console.log) {
|
|
1100
|
-
if (console.log.apply) {
|
|
1101
|
-
console.log.apply(console, arguments);
|
|
1102
|
-
} else {
|
|
1103
|
-
// In old IE, native console methods themselves don't have apply().
|
|
1104
|
-
Function.prototype.apply.apply(console.log, [console, arguments]);
|
|
1105
|
-
}
|
|
1106
|
-
}
|
|
1107
|
-
if (console.trace) console.trace();
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
// Build the best logging method possible for this env
|
|
1111
|
-
// Wherever possible we want to bind, not wrap, to preserve stack traces
|
|
1112
|
-
function realMethod(methodName) {
|
|
1113
|
-
if (methodName === 'debug') {
|
|
1114
|
-
methodName = 'log';
|
|
1115
|
-
}
|
|
1116
|
-
if (typeof console === undefinedType) {
|
|
1117
|
-
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
|
|
1118
|
-
} else if (methodName === 'trace' && isIE) {
|
|
1119
|
-
return traceForIE;
|
|
1120
|
-
} else if (console[methodName] !== undefined) {
|
|
1121
|
-
return bindMethod(console, methodName);
|
|
1122
|
-
} else if (console.log !== undefined) {
|
|
1123
|
-
return bindMethod(console, 'log');
|
|
1124
|
-
} else {
|
|
1125
|
-
return noop;
|
|
1126
|
-
}
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
|
-
// These private functions always need `this` to be set properly
|
|
1130
|
-
|
|
1131
|
-
function replaceLoggingMethods() {
|
|
1132
|
-
/*jshint validthis:true */
|
|
1133
|
-
var level = this.getLevel();
|
|
1134
|
-
|
|
1135
|
-
// Replace the actual methods.
|
|
1136
|
-
for (var i = 0; i < logMethods.length; i++) {
|
|
1137
|
-
var methodName = logMethods[i];
|
|
1138
|
-
this[methodName] = i < level ? noop : this.methodFactory(methodName, level, this.name);
|
|
1155
|
+
function hasLift(source) {
|
|
1156
|
+
return isFunction(source === null || source === void 0 ? void 0 : source.lift);
|
|
1157
|
+
}
|
|
1158
|
+
function operate(init) {
|
|
1159
|
+
return function (source) {
|
|
1160
|
+
if (hasLift(source)) {
|
|
1161
|
+
return source.lift(function (liftedSource) {
|
|
1162
|
+
try {
|
|
1163
|
+
return init(liftedSource, this);
|
|
1164
|
+
} catch (err) {
|
|
1165
|
+
this.error(err);
|
|
1139
1166
|
}
|
|
1167
|
+
});
|
|
1168
|
+
}
|
|
1169
|
+
throw new TypeError('Unable to lift unknown Observable type');
|
|
1170
|
+
};
|
|
1171
|
+
}
|
|
1140
1172
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1173
|
+
function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
|
1174
|
+
return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
|
1175
|
+
}
|
|
1176
|
+
var OperatorSubscriber = function (_super) {
|
|
1177
|
+
__extends(OperatorSubscriber, _super);
|
|
1178
|
+
function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
|
1179
|
+
var _this = _super.call(this, destination) || this;
|
|
1180
|
+
_this.onFinalize = onFinalize;
|
|
1181
|
+
_this.shouldUnsubscribe = shouldUnsubscribe;
|
|
1182
|
+
_this._next = onNext ? function (value) {
|
|
1183
|
+
try {
|
|
1184
|
+
onNext(value);
|
|
1185
|
+
} catch (err) {
|
|
1186
|
+
destination.error(err);
|
|
1148
1187
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
}
|
|
1158
|
-
};
|
|
1188
|
+
} : _super.prototype._next;
|
|
1189
|
+
_this._error = onError ? function (err) {
|
|
1190
|
+
try {
|
|
1191
|
+
onError(err);
|
|
1192
|
+
} catch (err) {
|
|
1193
|
+
destination.error(err);
|
|
1194
|
+
} finally {
|
|
1195
|
+
this.unsubscribe();
|
|
1159
1196
|
}
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1197
|
+
} : _super.prototype._error;
|
|
1198
|
+
_this._complete = onComplete ? function () {
|
|
1199
|
+
try {
|
|
1200
|
+
onComplete();
|
|
1201
|
+
} catch (err) {
|
|
1202
|
+
destination.error(err);
|
|
1203
|
+
} finally {
|
|
1204
|
+
this.unsubscribe();
|
|
1166
1205
|
}
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
* The default level for this logger, if any. If set, this overrides
|
|
1181
|
-
* `inheritedLevel`.
|
|
1182
|
-
* @type {number|null}
|
|
1183
|
-
*/
|
|
1184
|
-
var defaultLevel;
|
|
1185
|
-
/**
|
|
1186
|
-
* A user-specific level for this logger. If set, this overrides
|
|
1187
|
-
* `defaultLevel`.
|
|
1188
|
-
* @type {number|null}
|
|
1189
|
-
*/
|
|
1190
|
-
var userLevel;
|
|
1191
|
-
var storageKey = "loglevel";
|
|
1192
|
-
if (typeof name === "string") {
|
|
1193
|
-
storageKey += ":" + name;
|
|
1194
|
-
} else if (typeof name === "symbol") {
|
|
1195
|
-
storageKey = undefined;
|
|
1196
|
-
}
|
|
1197
|
-
function persistLevelIfPossible(levelNum) {
|
|
1198
|
-
var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
|
|
1199
|
-
if (typeof window === undefinedType || !storageKey) return;
|
|
1206
|
+
} : _super.prototype._complete;
|
|
1207
|
+
return _this;
|
|
1208
|
+
}
|
|
1209
|
+
OperatorSubscriber.prototype.unsubscribe = function () {
|
|
1210
|
+
var _a;
|
|
1211
|
+
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
|
1212
|
+
var closed_1 = this.closed;
|
|
1213
|
+
_super.prototype.unsubscribe.call(this);
|
|
1214
|
+
!closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
|
|
1215
|
+
}
|
|
1216
|
+
};
|
|
1217
|
+
return OperatorSubscriber;
|
|
1218
|
+
}(Subscriber);
|
|
1200
1219
|
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1220
|
+
var ObjectUnsubscribedError = createErrorClass(function (_super) {
|
|
1221
|
+
return function ObjectUnsubscribedErrorImpl() {
|
|
1222
|
+
_super(this);
|
|
1223
|
+
this.name = 'ObjectUnsubscribedError';
|
|
1224
|
+
this.message = 'object unsubscribed';
|
|
1225
|
+
};
|
|
1226
|
+
});
|
|
1206
1227
|
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1228
|
+
var Subject = function (_super) {
|
|
1229
|
+
__extends(Subject, _super);
|
|
1230
|
+
function Subject() {
|
|
1231
|
+
var _this = _super.call(this) || this;
|
|
1232
|
+
_this.closed = false;
|
|
1233
|
+
_this.currentObservers = null;
|
|
1234
|
+
_this.observers = [];
|
|
1235
|
+
_this.isStopped = false;
|
|
1236
|
+
_this.hasError = false;
|
|
1237
|
+
_this.thrownError = null;
|
|
1238
|
+
return _this;
|
|
1239
|
+
}
|
|
1240
|
+
Subject.prototype.lift = function (operator) {
|
|
1241
|
+
var subject = new AnonymousSubject(this, this);
|
|
1242
|
+
subject.operator = operator;
|
|
1243
|
+
return subject;
|
|
1244
|
+
};
|
|
1245
|
+
Subject.prototype._throwIfClosed = function () {
|
|
1246
|
+
if (this.closed) {
|
|
1247
|
+
throw new ObjectUnsubscribedError();
|
|
1248
|
+
}
|
|
1249
|
+
};
|
|
1250
|
+
Subject.prototype.next = function (value) {
|
|
1251
|
+
var _this = this;
|
|
1252
|
+
errorContext(function () {
|
|
1253
|
+
var e_1, _a;
|
|
1254
|
+
_this._throwIfClosed();
|
|
1255
|
+
if (!_this.isStopped) {
|
|
1256
|
+
if (!_this.currentObservers) {
|
|
1257
|
+
_this.currentObservers = Array.from(_this.observers);
|
|
1211
1258
|
}
|
|
1212
|
-
|
|
1213
|
-
var
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
storedLevel = window.localStorage[storageKey];
|
|
1217
|
-
} catch (ignore) {}
|
|
1218
|
-
|
|
1219
|
-
// Fallback to cookies if local storage gives us nothing
|
|
1220
|
-
if (typeof storedLevel === undefinedType) {
|
|
1221
|
-
try {
|
|
1222
|
-
var cookie = window.document.cookie;
|
|
1223
|
-
var cookieName = encodeURIComponent(storageKey);
|
|
1224
|
-
var location = cookie.indexOf(cookieName + "=");
|
|
1225
|
-
if (location !== -1) {
|
|
1226
|
-
storedLevel = /^([^;]+)/.exec(cookie.slice(location + cookieName.length + 1))[1];
|
|
1227
|
-
}
|
|
1228
|
-
} catch (ignore) {}
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
// If the stored level is not valid, treat it as if nothing was stored.
|
|
1232
|
-
if (self.levels[storedLevel] === undefined) {
|
|
1233
|
-
storedLevel = undefined;
|
|
1259
|
+
try {
|
|
1260
|
+
for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1261
|
+
var observer = _c.value;
|
|
1262
|
+
observer.next(value);
|
|
1234
1263
|
}
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
// Use localStorage if available
|
|
1241
|
-
try {
|
|
1242
|
-
window.localStorage.removeItem(storageKey);
|
|
1243
|
-
} catch (ignore) {}
|
|
1244
|
-
|
|
1245
|
-
// Use session cookie as fallback
|
|
1264
|
+
} catch (e_1_1) {
|
|
1265
|
+
e_1 = {
|
|
1266
|
+
error: e_1_1
|
|
1267
|
+
};
|
|
1268
|
+
} finally {
|
|
1246
1269
|
try {
|
|
1247
|
-
|
|
1248
|
-
}
|
|
1249
|
-
|
|
1250
|
-
function normalizeLevel(input) {
|
|
1251
|
-
var level = input;
|
|
1252
|
-
if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {
|
|
1253
|
-
level = self.levels[level.toUpperCase()];
|
|
1254
|
-
}
|
|
1255
|
-
if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {
|
|
1256
|
-
return level;
|
|
1257
|
-
} else {
|
|
1258
|
-
throw new TypeError("log.setLevel() called with invalid level: " + input);
|
|
1270
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1271
|
+
} finally {
|
|
1272
|
+
if (e_1) throw e_1.error;
|
|
1259
1273
|
}
|
|
1260
1274
|
}
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
"ERROR": 4,
|
|
1275
|
-
"SILENT": 5
|
|
1276
|
-
};
|
|
1277
|
-
self.methodFactory = factory || defaultMethodFactory;
|
|
1278
|
-
self.getLevel = function () {
|
|
1279
|
-
if (userLevel != null) {
|
|
1280
|
-
return userLevel;
|
|
1281
|
-
} else if (defaultLevel != null) {
|
|
1282
|
-
return defaultLevel;
|
|
1283
|
-
} else {
|
|
1284
|
-
return inheritedLevel;
|
|
1285
|
-
}
|
|
1286
|
-
};
|
|
1287
|
-
self.setLevel = function (level, persist) {
|
|
1288
|
-
userLevel = normalizeLevel(level);
|
|
1289
|
-
if (persist !== false) {
|
|
1290
|
-
// defaults to true
|
|
1291
|
-
persistLevelIfPossible(userLevel);
|
|
1292
|
-
}
|
|
1293
|
-
|
|
1294
|
-
// NOTE: in v2, this should call rebuild(), which updates children.
|
|
1295
|
-
return replaceLoggingMethods.call(self);
|
|
1296
|
-
};
|
|
1297
|
-
self.setDefaultLevel = function (level) {
|
|
1298
|
-
defaultLevel = normalizeLevel(level);
|
|
1299
|
-
if (!getPersistedLevel()) {
|
|
1300
|
-
self.setLevel(level, false);
|
|
1301
|
-
}
|
|
1302
|
-
};
|
|
1303
|
-
self.resetLevel = function () {
|
|
1304
|
-
userLevel = null;
|
|
1305
|
-
clearPersistedLevel();
|
|
1306
|
-
replaceLoggingMethods.call(self);
|
|
1307
|
-
};
|
|
1308
|
-
self.enableAll = function (persist) {
|
|
1309
|
-
self.setLevel(self.levels.TRACE, persist);
|
|
1310
|
-
};
|
|
1311
|
-
self.disableAll = function (persist) {
|
|
1312
|
-
self.setLevel(self.levels.SILENT, persist);
|
|
1313
|
-
};
|
|
1314
|
-
self.rebuild = function () {
|
|
1315
|
-
if (defaultLogger !== self) {
|
|
1316
|
-
inheritedLevel = normalizeLevel(defaultLogger.getLevel());
|
|
1317
|
-
}
|
|
1318
|
-
replaceLoggingMethods.call(self);
|
|
1319
|
-
if (defaultLogger === self) {
|
|
1320
|
-
for (var childName in _loggersByName) {
|
|
1321
|
-
_loggersByName[childName].rebuild();
|
|
1322
|
-
}
|
|
1323
|
-
}
|
|
1324
|
-
};
|
|
1325
|
-
|
|
1326
|
-
// Initialize all the internal levels.
|
|
1327
|
-
inheritedLevel = normalizeLevel(defaultLogger ? defaultLogger.getLevel() : "WARN");
|
|
1328
|
-
var initialLevel = getPersistedLevel();
|
|
1329
|
-
if (initialLevel != null) {
|
|
1330
|
-
userLevel = normalizeLevel(initialLevel);
|
|
1275
|
+
}
|
|
1276
|
+
});
|
|
1277
|
+
};
|
|
1278
|
+
Subject.prototype.error = function (err) {
|
|
1279
|
+
var _this = this;
|
|
1280
|
+
errorContext(function () {
|
|
1281
|
+
_this._throwIfClosed();
|
|
1282
|
+
if (!_this.isStopped) {
|
|
1283
|
+
_this.hasError = _this.isStopped = true;
|
|
1284
|
+
_this.thrownError = err;
|
|
1285
|
+
var observers = _this.observers;
|
|
1286
|
+
while (observers.length) {
|
|
1287
|
+
observers.shift().error(err);
|
|
1331
1288
|
}
|
|
1332
|
-
replaceLoggingMethods.call(self);
|
|
1333
1289
|
}
|
|
1290
|
+
});
|
|
1291
|
+
};
|
|
1292
|
+
Subject.prototype.complete = function () {
|
|
1293
|
+
var _this = this;
|
|
1294
|
+
errorContext(function () {
|
|
1295
|
+
_this._throwIfClosed();
|
|
1296
|
+
if (!_this.isStopped) {
|
|
1297
|
+
_this.isStopped = true;
|
|
1298
|
+
var observers = _this.observers;
|
|
1299
|
+
while (observers.length) {
|
|
1300
|
+
observers.shift().complete();
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
});
|
|
1304
|
+
};
|
|
1305
|
+
Subject.prototype.unsubscribe = function () {
|
|
1306
|
+
this.isStopped = this.closed = true;
|
|
1307
|
+
this.observers = this.currentObservers = null;
|
|
1308
|
+
};
|
|
1309
|
+
Object.defineProperty(Subject.prototype, "observed", {
|
|
1310
|
+
get: function () {
|
|
1311
|
+
var _a;
|
|
1312
|
+
return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
1313
|
+
},
|
|
1314
|
+
enumerable: false,
|
|
1315
|
+
configurable: true
|
|
1316
|
+
});
|
|
1317
|
+
Subject.prototype._trySubscribe = function (subscriber) {
|
|
1318
|
+
this._throwIfClosed();
|
|
1319
|
+
return _super.prototype._trySubscribe.call(this, subscriber);
|
|
1320
|
+
};
|
|
1321
|
+
Subject.prototype._subscribe = function (subscriber) {
|
|
1322
|
+
this._throwIfClosed();
|
|
1323
|
+
this._checkFinalizedStatuses(subscriber);
|
|
1324
|
+
return this._innerSubscribe(subscriber);
|
|
1325
|
+
};
|
|
1326
|
+
Subject.prototype._innerSubscribe = function (subscriber) {
|
|
1327
|
+
var _this = this;
|
|
1328
|
+
var _a = this,
|
|
1329
|
+
hasError = _a.hasError,
|
|
1330
|
+
isStopped = _a.isStopped,
|
|
1331
|
+
observers = _a.observers;
|
|
1332
|
+
if (hasError || isStopped) {
|
|
1333
|
+
return EMPTY_SUBSCRIPTION;
|
|
1334
|
+
}
|
|
1335
|
+
this.currentObservers = null;
|
|
1336
|
+
observers.push(subscriber);
|
|
1337
|
+
return new Subscription(function () {
|
|
1338
|
+
_this.currentObservers = null;
|
|
1339
|
+
arrRemove(observers, subscriber);
|
|
1340
|
+
});
|
|
1341
|
+
};
|
|
1342
|
+
Subject.prototype._checkFinalizedStatuses = function (subscriber) {
|
|
1343
|
+
var _a = this,
|
|
1344
|
+
hasError = _a.hasError,
|
|
1345
|
+
thrownError = _a.thrownError,
|
|
1346
|
+
isStopped = _a.isStopped;
|
|
1347
|
+
if (hasError) {
|
|
1348
|
+
subscriber.error(thrownError);
|
|
1349
|
+
} else if (isStopped) {
|
|
1350
|
+
subscriber.complete();
|
|
1351
|
+
}
|
|
1352
|
+
};
|
|
1353
|
+
Subject.prototype.asObservable = function () {
|
|
1354
|
+
var observable = new Observable();
|
|
1355
|
+
observable.source = this;
|
|
1356
|
+
return observable;
|
|
1357
|
+
};
|
|
1358
|
+
Subject.create = function (destination, source) {
|
|
1359
|
+
return new AnonymousSubject(destination, source);
|
|
1360
|
+
};
|
|
1361
|
+
return Subject;
|
|
1362
|
+
}(Observable);
|
|
1363
|
+
var AnonymousSubject = function (_super) {
|
|
1364
|
+
__extends(AnonymousSubject, _super);
|
|
1365
|
+
function AnonymousSubject(destination, source) {
|
|
1366
|
+
var _this = _super.call(this) || this;
|
|
1367
|
+
_this.destination = destination;
|
|
1368
|
+
_this.source = source;
|
|
1369
|
+
return _this;
|
|
1370
|
+
}
|
|
1371
|
+
AnonymousSubject.prototype.next = function (value) {
|
|
1372
|
+
var _a, _b;
|
|
1373
|
+
(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);
|
|
1374
|
+
};
|
|
1375
|
+
AnonymousSubject.prototype.error = function (err) {
|
|
1376
|
+
var _a, _b;
|
|
1377
|
+
(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
|
|
1378
|
+
};
|
|
1379
|
+
AnonymousSubject.prototype.complete = function () {
|
|
1380
|
+
var _a, _b;
|
|
1381
|
+
(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1382
|
+
};
|
|
1383
|
+
AnonymousSubject.prototype._subscribe = function (subscriber) {
|
|
1384
|
+
var _a, _b;
|
|
1385
|
+
return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
|
|
1386
|
+
};
|
|
1387
|
+
return AnonymousSubject;
|
|
1388
|
+
}(Subject);
|
|
1334
1389
|
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1390
|
+
var EmptyError = createErrorClass(function (_super) {
|
|
1391
|
+
return function EmptyErrorImpl() {
|
|
1392
|
+
_super(this);
|
|
1393
|
+
this.name = 'EmptyError';
|
|
1394
|
+
this.message = 'no elements in sequence';
|
|
1395
|
+
};
|
|
1396
|
+
});
|
|
1340
1397
|
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1398
|
+
function firstValueFrom(source, config) {
|
|
1399
|
+
return new Promise(function (resolve, reject) {
|
|
1400
|
+
var subscriber = new SafeSubscriber({
|
|
1401
|
+
next: function (value) {
|
|
1402
|
+
resolve(value);
|
|
1403
|
+
subscriber.unsubscribe();
|
|
1404
|
+
},
|
|
1405
|
+
error: reject,
|
|
1406
|
+
complete: function () {
|
|
1407
|
+
{
|
|
1408
|
+
reject(new EmptyError());
|
|
1349
1409
|
}
|
|
1350
|
-
|
|
1351
|
-
|
|
1410
|
+
}
|
|
1411
|
+
});
|
|
1412
|
+
source.subscribe(subscriber);
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1352
1415
|
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
defaultLogger.getLoggers = function getLoggers() {
|
|
1362
|
-
return _loggersByName;
|
|
1363
|
-
};
|
|
1416
|
+
function map(project, thisArg) {
|
|
1417
|
+
return operate(function (source, subscriber) {
|
|
1418
|
+
var index = 0;
|
|
1419
|
+
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1420
|
+
subscriber.next(project.call(thisArg, value, index++));
|
|
1421
|
+
}));
|
|
1422
|
+
});
|
|
1423
|
+
}
|
|
1364
1424
|
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1425
|
+
function filter(predicate, thisArg) {
|
|
1426
|
+
return operate(function (source, subscriber) {
|
|
1427
|
+
var index = 0;
|
|
1428
|
+
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1429
|
+
return predicate.call(thisArg, value, index++) && subscriber.next(value);
|
|
1430
|
+
}));
|
|
1431
|
+
});
|
|
1371
1432
|
}
|
|
1372
1433
|
|
|
1373
|
-
|
|
1374
|
-
|
|
1434
|
+
const bigIntReplacer = (_key, value) => {
|
|
1435
|
+
return typeof value === "bigint" ? value.toString() : value;
|
|
1436
|
+
};
|
|
1437
|
+
/**
|
|
1438
|
+
* Creates a window features string for `window.open`, based on the current screen size.
|
|
1439
|
+
* It tries to center the window and limits the size to the given max width and height.
|
|
1440
|
+
* Slightly reduces the size to avoid browser auto-resizing.
|
|
1441
|
+
*/
|
|
1442
|
+
const getWindowFeatures = (maxWidth, maxHeight) => {
|
|
1443
|
+
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
|
|
1444
|
+
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
|
|
1445
|
+
const w = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width;
|
|
1446
|
+
const h = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height;
|
|
1447
|
+
// 95% adjustment for mobile devices, some browser might resize the window
|
|
1448
|
+
const finalWidth = Math.min(w, maxWidth) * 0.95;
|
|
1449
|
+
const finalHeight = Math.min(h, maxHeight) * 0.95;
|
|
1450
|
+
const systemZoom = 1; // No reliable estimate
|
|
1451
|
+
const left = Math.abs((w - finalWidth) / 2 / systemZoom + dualScreenLeft);
|
|
1452
|
+
const top = Math.abs((h - finalHeight) / 2 / systemZoom + dualScreenTop);
|
|
1453
|
+
return `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${finalHeight / systemZoom},width=${finalWidth / systemZoom},top=${top},left=${left}`;
|
|
1454
|
+
};
|
|
1375
1455
|
|
|
1376
|
-
|
|
1456
|
+
// refer to realm-network-api/src/common/enums/error-codes.enum.ts
|
|
1457
|
+
/*** Authentication Errors ***/
|
|
1458
|
+
var AuthErrorName;
|
|
1459
|
+
(function (AuthErrorName) {
|
|
1460
|
+
AuthErrorName["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
1461
|
+
AuthErrorName["INVALID_TOKEN"] = "INVALID_TOKEN";
|
|
1462
|
+
AuthErrorName["TOKEN_EXPIRED"] = "TOKEN_EXPIRED";
|
|
1463
|
+
AuthErrorName["INVALID_CREDENTIALS"] = "INVALID_CREDENTIALS";
|
|
1464
|
+
})(AuthErrorName || (AuthErrorName = {}));
|
|
1465
|
+
/*** Partner Access Token Errors ***/
|
|
1466
|
+
var PartnerAccessTokenErrorName;
|
|
1467
|
+
(function (PartnerAccessTokenErrorName) {
|
|
1468
|
+
PartnerAccessTokenErrorName["PARTNER_ACCESS_TOKEN_INVALID"] = "PARTNER_ACCESS_TOKEN_INVALID";
|
|
1469
|
+
PartnerAccessTokenErrorName["USER_MISMATCH"] = "USER_MISMATCH";
|
|
1470
|
+
})(PartnerAccessTokenErrorName || (PartnerAccessTokenErrorName = {}));
|
|
1471
|
+
/*** Realm ID Errors ***/
|
|
1472
|
+
var RealmIDErrorName;
|
|
1473
|
+
(function (RealmIDErrorName) {
|
|
1474
|
+
RealmIDErrorName["REALM_ID_NOT_FOUND"] = "REALM_ID_NOT_FOUND";
|
|
1475
|
+
RealmIDErrorName["REALM_ID_INVALID_NAME"] = "REALM_ID_INVALID_NAME";
|
|
1476
|
+
RealmIDErrorName["REALM_ID_ALREADY_EXISTS"] = "REALM_ID_ALREADY_EXISTS";
|
|
1477
|
+
RealmIDErrorName["REALM_ID_DUPLICATE_PARTNER_USER"] = "REALM_ID_DUPLICATE_PARTNER_USER";
|
|
1478
|
+
})(RealmIDErrorName || (RealmIDErrorName = {}));
|
|
1479
|
+
/*** Parameter Errors ***/
|
|
1480
|
+
var ParameterErrorName;
|
|
1481
|
+
(function (ParameterErrorName) {
|
|
1482
|
+
ParameterErrorName["INVALID_PARAMETER"] = "INVALID_PARAMETER";
|
|
1483
|
+
})(ParameterErrorName || (ParameterErrorName = {}));
|
|
1484
|
+
/*** Server Errors ***/
|
|
1485
|
+
var ServerErrorName;
|
|
1486
|
+
(function (ServerErrorName) {
|
|
1487
|
+
ServerErrorName["INTERNAL_SERVER_ERROR"] = "INTERNAL_SERVER_ERROR";
|
|
1488
|
+
})(ServerErrorName || (ServerErrorName = {}));
|
|
1489
|
+
/*** Passkey Errors ***/
|
|
1490
|
+
var PasskeyErrorName;
|
|
1491
|
+
(function (PasskeyErrorName) {
|
|
1492
|
+
PasskeyErrorName["PASSKEY_REGISTRATION_FAILED"] = "PASSKEY_REGISTRATION_FAILED";
|
|
1493
|
+
PasskeyErrorName["PASSKEY_AUTHENTICATION_FAILED"] = "PASSKEY_AUTHENTICATION_FAILED";
|
|
1494
|
+
PasskeyErrorName["PASSKEY_LIMIT_EXCEEDED"] = "PASSKEY_LIMIT_EXCEEDED";
|
|
1495
|
+
PasskeyErrorName["PASSKEY_NOT_FOUND"] = "PASSKEY_NOT_FOUND";
|
|
1496
|
+
PasskeyErrorName["PASSKEY_UNAUTHORIZED"] = "PASSKEY_UNAUTHORIZED";
|
|
1497
|
+
PasskeyErrorName["PASSKEY_CHALLENGE_INVALID"] = "PASSKEY_CHALLENGE_INVALID";
|
|
1498
|
+
})(PasskeyErrorName || (PasskeyErrorName = {}));
|
|
1499
|
+
/*** Passwordless Authentication Errors ***/
|
|
1500
|
+
var PasswordlessErrorName;
|
|
1501
|
+
(function (PasswordlessErrorName) {
|
|
1502
|
+
PasswordlessErrorName["PASSWORDLESS_CODE_EXPIRED"] = "PASSWORDLESS_CODE_EXPIRED";
|
|
1503
|
+
PasswordlessErrorName["PASSWORDLESS_INVALID_CODE"] = "PASSWORDLESS_INVALID_CODE";
|
|
1504
|
+
PasswordlessErrorName["PASSWORDLESS_MAX_ATTEMPTS"] = "PASSWORDLESS_MAX_ATTEMPTS";
|
|
1505
|
+
PasswordlessErrorName["PASSWORDLESS_HOURLY_LIMIT"] = "PASSWORDLESS_HOURLY_LIMIT";
|
|
1506
|
+
PasswordlessErrorName["PASSWORDLESS_LOCK_EXCEEDED"] = "PASSWORDLESS_LOCK_EXCEEDED";
|
|
1507
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_VERIFICATION_FAILED"] = "CAPTCHA_TOKEN_VERIFICATION_FAILED";
|
|
1508
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_INVALID"] = "CAPTCHA_TOKEN_INVALID";
|
|
1509
|
+
PasswordlessErrorName["CAPTCHA_SECRET_MISSING"] = "CAPTCHA_SECRET_MISSING";
|
|
1510
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_MISSING"] = "CAPTCHA_TOKEN_MISSING";
|
|
1511
|
+
})(PasswordlessErrorName || (PasswordlessErrorName = {}));
|
|
1512
|
+
/*** Authentication Wallet Errors ***/
|
|
1513
|
+
var AuthWalletErrorName;
|
|
1514
|
+
(function (AuthWalletErrorName) {
|
|
1515
|
+
AuthWalletErrorName["AUTH_WALLET_LOCK_EXCEEDED"] = "AUTH_WALLET_LOCK_EXCEEDED";
|
|
1516
|
+
AuthWalletErrorName["AUTH_WALLET_NONCE_EXPIRED_OR_INVALID"] = "AUTH_WALLET_NONCE_EXPIRED_OR_INVALID";
|
|
1517
|
+
AuthWalletErrorName["AUTH_WALLET_ADDRESS_MISMATCH"] = "AUTH_WALLET_ADDRESS_MISMATCH";
|
|
1518
|
+
AuthWalletErrorName["AUTH_WALLET_SIGNATURE_VERIFICATION_FAILED"] = "AUTH_WALLET_SIGNATURE_VERIFICATION_FAILED";
|
|
1519
|
+
})(AuthWalletErrorName || (AuthWalletErrorName = {}));
|
|
1520
|
+
/*** Wallet Linking Errors ***/
|
|
1521
|
+
var WalletLinkErrorName;
|
|
1522
|
+
(function (WalletLinkErrorName) {
|
|
1523
|
+
WalletLinkErrorName["LINK_WALLET_ALREADY_LINKED"] = "LINK_WALLET_ALREADY_LINKED";
|
|
1524
|
+
WalletLinkErrorName["LINK_WALLET_LINKED_OTHER_ACCOUNT"] = "LINK_WALLET_LINKED_OTHER_ACCOUNT";
|
|
1525
|
+
WalletLinkErrorName["LINK_EMAIL_LINKED_OTHER_ACCOUNT"] = "LINK_EMAIL_LINKED_OTHER_ACCOUNT";
|
|
1526
|
+
})(WalletLinkErrorName || (WalletLinkErrorName = {}));
|
|
1527
|
+
/*** Intent Errors ***/
|
|
1528
|
+
var IntentErrorName;
|
|
1529
|
+
(function (IntentErrorName) {
|
|
1530
|
+
IntentErrorName["INTENT_INVALID"] = "INTENT_INVALID";
|
|
1531
|
+
IntentErrorName["INTENT_LOCK_EXCEEDED"] = "INTENT_LOCK_EXCEEDED";
|
|
1532
|
+
IntentErrorName["INTENT_REQUIRED"] = "INTENT_REQUIRED";
|
|
1533
|
+
IntentErrorName["INTENT_UNSUPPORTED_TYPE"] = "INTENT_UNSUPPORTED_TYPE";
|
|
1534
|
+
})(IntentErrorName || (IntentErrorName = {}));
|
|
1535
|
+
/*** Privy Errors ***/
|
|
1536
|
+
var PrivyErrorName;
|
|
1537
|
+
(function (PrivyErrorName) {
|
|
1538
|
+
PrivyErrorName["WALLET_PROVIDER_ERROR"] = "WALLET_PROVIDER_ERROR";
|
|
1539
|
+
})(PrivyErrorName || (PrivyErrorName = {}));
|
|
1540
|
+
/*** Air ID Errors ***/
|
|
1541
|
+
var AirIDErrorName;
|
|
1542
|
+
(function (AirIDErrorName) {
|
|
1543
|
+
AirIDErrorName["AIR_ID_MINT_TRANSACTION_NOT_FOUND"] = "AIR_ID_MINT_TRANSACTION_NOT_FOUND";
|
|
1544
|
+
AirIDErrorName["AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND"] = "AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND";
|
|
1545
|
+
AirIDErrorName["AIR_ID_NOT_FOUND"] = "AIR_ID_NOT_FOUND";
|
|
1546
|
+
AirIDErrorName["AIR_ID_INVALID_OR_DISABLED_CONFIGURATION"] = "AIR_ID_INVALID_OR_DISABLED_CONFIGURATION";
|
|
1547
|
+
AirIDErrorName["AIR_ID_RPC_URL_NOT_CONFIGURED"] = "AIR_ID_RPC_URL_NOT_CONFIGURED";
|
|
1548
|
+
AirIDErrorName["AIR_ID_INVALID_STATUS"] = "AIR_ID_INVALID_STATUS";
|
|
1549
|
+
AirIDErrorName["AIR_ID_PARTNER_ELIGIBILITY_CHECK_FAILED"] = "AIR_ID_PARTNER_ELIGIBILITY_CHECK_FAILED";
|
|
1550
|
+
AirIDErrorName["AIR_ID_PARTNER_ELIGIBILITY_CHECK_TIMEOUT"] = "AIR_ID_PARTNER_ELIGIBILITY_CHECK_TIMEOUT";
|
|
1551
|
+
AirIDErrorName["AIR_ID_MULTIPLE_AIR_IDS_FOUND"] = "AIR_ID_MULTIPLE_AIR_IDS_FOUND";
|
|
1552
|
+
AirIDErrorName["AIR_ID_NAME_RESERVED"] = "AIR_ID_NAME_RESERVED";
|
|
1553
|
+
AirIDErrorName["AIR_ID_NAME_PROFANITY"] = "AIR_ID_NAME_PROFANITY";
|
|
1554
|
+
AirIDErrorName["AIR_ID_USER_ALREADY_HAS_AIR_ID"] = "AIR_ID_USER_ALREADY_HAS_AIR_ID";
|
|
1555
|
+
AirIDErrorName["AIR_ID_NAME_ALREADY_EXISTS"] = "AIR_ID_NAME_ALREADY_EXISTS";
|
|
1556
|
+
AirIDErrorName["AIR_ID_INVALID_MINT_NAME"] = "AIR_ID_INVALID_MINT_NAME";
|
|
1557
|
+
AirIDErrorName["AIR_ID_MINT_TRANSACTION_HASH_MISMATCH"] = "AIR_ID_MINT_TRANSACTION_HASH_MISMATCH";
|
|
1558
|
+
})(AirIDErrorName || (AirIDErrorName = {}));
|
|
1559
|
+
/*** Window Errors ***/
|
|
1560
|
+
var WindowErrorName;
|
|
1561
|
+
(function (WindowErrorName) {
|
|
1562
|
+
WindowErrorName["WINDOW_BLOCKED"] = "WINDOW_BLOCKED";
|
|
1563
|
+
WindowErrorName["WINDOW_CLOSED"] = "WINDOW_CLOSED";
|
|
1564
|
+
})(WindowErrorName || (WindowErrorName = {}));
|
|
1565
|
+
const Codes = {
|
|
1566
|
+
...AuthErrorName,
|
|
1567
|
+
...PartnerAccessTokenErrorName,
|
|
1568
|
+
...RealmIDErrorName,
|
|
1569
|
+
...ParameterErrorName,
|
|
1570
|
+
...ServerErrorName,
|
|
1571
|
+
...PasskeyErrorName,
|
|
1572
|
+
...PasswordlessErrorName,
|
|
1573
|
+
...AuthWalletErrorName,
|
|
1574
|
+
...WalletLinkErrorName,
|
|
1575
|
+
...IntentErrorName,
|
|
1576
|
+
...PrivyErrorName,
|
|
1577
|
+
...AirIDErrorName,
|
|
1578
|
+
...WindowErrorName
|
|
1579
|
+
};
|
|
1377
1580
|
|
|
1378
|
-
|
|
1379
|
-
(function (AirWalletProviderMessageTypes) {
|
|
1380
|
-
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1381
|
-
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1382
|
-
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1383
|
-
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1581
|
+
const AirClientUserErrors = ["USER_CANCELLED", "CONFIG_ERROR", "CLIENT_ERROR", "UNKNOWN_ERROR", "PERMISSION_NOT_ENABLED", "SMART_ACCOUNT_NOT_DEPLOYED"];
|
|
1384
1582
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
this.
|
|
1417
|
-
this.
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
}
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
if (ev.origin !== authIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1442
|
-
return;
|
|
1443
|
-
log.debug("Embed auth message received from auth", ev.data);
|
|
1444
|
-
if (AUTH_MESSAGES.includes(ev.data.type)) {
|
|
1445
|
-
this._authMessage$.next(ev.data);
|
|
1446
|
-
}
|
|
1447
|
-
};
|
|
1448
|
-
window.addEventListener("message", handleAuthMessage);
|
|
1449
|
-
this.closeAuthMessageListeners = () => {
|
|
1450
|
-
window.removeEventListener("message", handleAuthMessage);
|
|
1451
|
-
};
|
|
1452
|
-
}
|
|
1453
|
-
async openWalletObservables({ walletIframeOrigin }) {
|
|
1454
|
-
this.closeAirObservables();
|
|
1455
|
-
this.setupAirObservables();
|
|
1456
|
-
const handleMessage = async (ev) => {
|
|
1457
|
-
if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1458
|
-
return;
|
|
1459
|
-
log.debug("Account messages received from wallet frontend", ev.data);
|
|
1460
|
-
if (ACCOUNT_MESSAGES.includes(ev.data.type)) {
|
|
1461
|
-
this.airMessages$.next(ev.data);
|
|
1462
|
-
}
|
|
1463
|
-
};
|
|
1464
|
-
window.addEventListener("message", handleMessage);
|
|
1465
|
-
this.closeRealmMessageListeners = () => {
|
|
1466
|
-
window.removeEventListener("message", handleMessage);
|
|
1467
|
-
};
|
|
1468
|
-
this.closeWalletObservables();
|
|
1469
|
-
this.setupWalletObservables();
|
|
1470
|
-
const handleWalletMessage = async (ev) => {
|
|
1471
|
-
if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1472
|
-
return;
|
|
1473
|
-
log.debug("Wallet provider messages received from wallet frontend", ev.data);
|
|
1474
|
-
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1475
|
-
this._providerMessage$.next(ev.data);
|
|
1476
|
-
}
|
|
1477
|
-
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1478
|
-
this._providerEvent$.next(ev.data);
|
|
1479
|
-
}
|
|
1480
|
-
};
|
|
1481
|
-
window.addEventListener("message", handleWalletMessage);
|
|
1482
|
-
this.closeWalletMessageListeners = () => {
|
|
1483
|
-
window.removeEventListener("message", handleWalletMessage);
|
|
1484
|
-
};
|
|
1485
|
-
}
|
|
1486
|
-
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1487
|
-
const channel = new MessageChannel();
|
|
1488
|
-
const authOrigin = new URL(authIframe.src).origin;
|
|
1489
|
-
authIframe.contentWindow.postMessage({
|
|
1490
|
-
type: AirAuthMessageTypes.INIT_WALLET_COMMUNICATION,
|
|
1491
|
-
}, authOrigin, [channel.port1]);
|
|
1492
|
-
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1493
|
-
walletIframe.contentWindow.postMessage({
|
|
1494
|
-
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1495
|
-
payload: {
|
|
1496
|
-
skipWalletLogin,
|
|
1497
|
-
},
|
|
1498
|
-
}, walletOrigin, [channel.port2]);
|
|
1499
|
-
}
|
|
1500
|
-
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
1501
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1502
|
-
const { origin } = new URL(walletIframe.src);
|
|
1503
|
-
walletIframe.contentWindow.postMessage({
|
|
1504
|
-
type: AirMessageTypes.GRANT_PERMISSIONS_REQUEST,
|
|
1505
|
-
payload: {
|
|
1506
|
-
policies,
|
|
1507
|
-
},
|
|
1508
|
-
}, origin);
|
|
1509
|
-
const result = await response;
|
|
1510
|
-
if (result.payload.success === false) {
|
|
1511
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1512
|
-
}
|
|
1513
|
-
return result.payload.sessionData;
|
|
1514
|
-
}
|
|
1515
|
-
async sendExecuteActionRequest(walletIframe, params) {
|
|
1516
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.EXECUTE_ACTION_RESPONSE)));
|
|
1517
|
-
const { origin } = new URL(walletIframe.src);
|
|
1518
|
-
walletIframe.contentWindow.postMessage({
|
|
1519
|
-
type: AirMessageTypes.EXECUTE_ACTION_REQUEST,
|
|
1520
|
-
payload: {
|
|
1521
|
-
sessionData: params.sessionData,
|
|
1522
|
-
call: {
|
|
1523
|
-
to: params.call.to,
|
|
1524
|
-
value: params.call.value,
|
|
1525
|
-
data: params.call.data,
|
|
1526
|
-
},
|
|
1527
|
-
sessionOwnerPrivateKey: params.sessionOwnerPrivateKey,
|
|
1528
|
-
},
|
|
1529
|
-
}, origin);
|
|
1530
|
-
const result = await response;
|
|
1531
|
-
if (result.payload.success === false) {
|
|
1532
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1533
|
-
}
|
|
1534
|
-
return result.payload.txHash;
|
|
1535
|
-
}
|
|
1536
|
-
async sendRevokePermissionsRequest(walletIframe, permissionId) {
|
|
1537
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.REVOKE_PERMISSIONS_RESPONSE)));
|
|
1538
|
-
const { origin } = new URL(walletIframe.src);
|
|
1539
|
-
walletIframe.contentWindow.postMessage({
|
|
1540
|
-
type: AirMessageTypes.REVOKE_PERMISSIONS_REQUEST,
|
|
1541
|
-
payload: {
|
|
1542
|
-
permissionId,
|
|
1543
|
-
},
|
|
1544
|
-
}, origin);
|
|
1545
|
-
const result = await response;
|
|
1546
|
-
if (result.payload.success === false) {
|
|
1547
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1548
|
-
}
|
|
1549
|
-
return result.payload.txHash;
|
|
1550
|
-
}
|
|
1551
|
-
sendDeploySmartAccountRequest(walletIframe) {
|
|
1552
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE)));
|
|
1553
|
-
const { origin } = new URL(walletIframe.src);
|
|
1554
|
-
walletIframe.contentWindow.postMessage({
|
|
1555
|
-
type: AirMessageTypes.DEPLOY_SMART_ACCOUNT_REQUEST,
|
|
1556
|
-
}, origin);
|
|
1557
|
-
return response;
|
|
1558
|
-
}
|
|
1559
|
-
async sendIsSmartAccountDeployedRequest(walletIframe) {
|
|
1560
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE)));
|
|
1561
|
-
const { origin } = new URL(walletIframe.src);
|
|
1562
|
-
walletIframe.contentWindow.postMessage({
|
|
1563
|
-
type: AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_REQUEST,
|
|
1564
|
-
}, origin);
|
|
1565
|
-
return response;
|
|
1566
|
-
}
|
|
1567
|
-
async sendPartnerUserInfoRequest(authIframe) {
|
|
1568
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE)));
|
|
1569
|
-
const { origin } = new URL(authIframe.src);
|
|
1570
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.PARTNER_USER_INFO_REQUEST }, origin);
|
|
1571
|
-
return response;
|
|
1572
|
-
}
|
|
1573
|
-
async sendAuthLoginRequest(authIframe, payload) {
|
|
1574
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGIN_RESPONSE)));
|
|
1575
|
-
const { origin } = new URL(authIframe.src);
|
|
1576
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.LOGIN_REQUEST, payload }, origin);
|
|
1577
|
-
return response;
|
|
1578
|
-
}
|
|
1579
|
-
async logoutAuth(authIframe) {
|
|
1580
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGOUT_RESPONSE)));
|
|
1581
|
-
const { origin } = new URL(authIframe.src);
|
|
1582
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1583
|
-
return response;
|
|
1584
|
-
}
|
|
1585
|
-
async logoutWallet(walletIframe) {
|
|
1586
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LOGOUT_RESPONSE)));
|
|
1587
|
-
const { origin } = new URL(walletIframe.src);
|
|
1588
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1589
|
-
return response;
|
|
1590
|
-
}
|
|
1591
|
-
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1592
|
-
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1593
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1594
|
-
}
|
|
1595
|
-
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1596
|
-
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1597
|
-
const { origin } = new URL(authIframe.src);
|
|
1598
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1599
|
-
return response;
|
|
1600
|
-
}
|
|
1601
|
-
async sendWalletInitializationRequest(walletIframe, payload) {
|
|
1602
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1603
|
-
const { origin } = new URL(walletIframe.src);
|
|
1604
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1605
|
-
return response;
|
|
1606
|
-
}
|
|
1607
|
-
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1608
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1609
|
-
const { origin } = new URL(authIframe.src);
|
|
1610
|
-
authIframe.contentWindow.postMessage({
|
|
1611
|
-
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1612
|
-
payload: {
|
|
1613
|
-
targetPartnerUrl,
|
|
1614
|
-
},
|
|
1615
|
-
}, origin);
|
|
1616
|
-
return response;
|
|
1617
|
-
}
|
|
1618
|
-
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1619
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1620
|
-
const { origin } = new URL(walletIframe.src);
|
|
1621
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.GRANT_PERMISSIONS_REQUEST, payload }, origin);
|
|
1622
|
-
return response;
|
|
1623
|
-
}
|
|
1624
|
-
async sendListAllSessionKeyScopesRequest(walletIframe) {
|
|
1625
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE)));
|
|
1626
|
-
const { origin } = new URL(walletIframe.src);
|
|
1627
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_REQUEST }, origin);
|
|
1628
|
-
return response;
|
|
1629
|
-
}
|
|
1630
|
-
onWalletInitialized() {
|
|
1631
|
-
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
|
|
1632
|
-
}
|
|
1633
|
-
sendWalletLoginRequest(walletIframe) {
|
|
1634
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
1635
|
-
const { origin } = new URL(walletIframe.src);
|
|
1636
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.WALLET_LOGIN_REQUEST }, origin);
|
|
1637
|
-
return response;
|
|
1638
|
-
}
|
|
1639
|
-
async sendSetupMfaRequest(walletIframe) {
|
|
1640
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.SETUP_MFA_RESPONSE)));
|
|
1641
|
-
const { origin } = new URL(walletIframe.src);
|
|
1642
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.SETUP_MFA_REQUEST }, origin);
|
|
1643
|
-
return response;
|
|
1644
|
-
}
|
|
1645
|
-
sendOpenWindowSuccessResponse(walletIframe, windowId, port) {
|
|
1646
|
-
const { origin: walletOrigin } = new URL(walletIframe.src);
|
|
1647
|
-
walletIframe.contentWindow.postMessage({
|
|
1648
|
-
type: AirMessageTypes.OPEN_WINDOW_RESPONSE,
|
|
1649
|
-
payload: {
|
|
1650
|
-
success: true,
|
|
1651
|
-
windowId,
|
|
1652
|
-
},
|
|
1653
|
-
}, walletOrigin, [port]);
|
|
1654
|
-
}
|
|
1655
|
-
sendOpenWindowErrorResponse(walletIframe, windowId, error) {
|
|
1656
|
-
const { origin: walletOrigin } = new URL(walletIframe.src);
|
|
1657
|
-
walletIframe.contentWindow.postMessage({
|
|
1658
|
-
type: AirMessageTypes.OPEN_WINDOW_RESPONSE,
|
|
1659
|
-
payload: {
|
|
1660
|
-
success: false,
|
|
1661
|
-
windowId,
|
|
1662
|
-
errorName: "UNKNOWN_ERROR",
|
|
1663
|
-
errorMessage: error.message,
|
|
1664
|
-
},
|
|
1665
|
-
}, walletOrigin);
|
|
1583
|
+
class AirError extends BaseError {}
|
|
1584
|
+
new Set(AirClientUserErrors);
|
|
1585
|
+
new Set(Object.values(Codes));
|
|
1586
|
+
|
|
1587
|
+
class MessageServiceBase {
|
|
1588
|
+
get events$() {
|
|
1589
|
+
return this._events$;
|
|
1590
|
+
}
|
|
1591
|
+
get messages$() {
|
|
1592
|
+
return this._messages$;
|
|
1593
|
+
}
|
|
1594
|
+
get isOpen() {
|
|
1595
|
+
return !!this.closeListener;
|
|
1596
|
+
}
|
|
1597
|
+
constructor(name, allowedMessageTypes) {
|
|
1598
|
+
this.name = name;
|
|
1599
|
+
this.allowedMessageTypes = allowedMessageTypes;
|
|
1600
|
+
this.closeListener = null;
|
|
1601
|
+
}
|
|
1602
|
+
async _open(target) {
|
|
1603
|
+
await this.close();
|
|
1604
|
+
this.eventSubject = new Subject();
|
|
1605
|
+
this._events$ = this.eventSubject.asObservable();
|
|
1606
|
+
this._messages$ = this.eventSubject.pipe(map(ev => ev.data));
|
|
1607
|
+
this._events$.subscribe(event => {
|
|
1608
|
+
const sentOrReceived = event.origin === window.origin ? "sent" : "received";
|
|
1609
|
+
log.debug(`[${this.name}] Message ${sentOrReceived}:`, event.data);
|
|
1610
|
+
});
|
|
1611
|
+
const handleMessage = async ev => {
|
|
1612
|
+
if (this.targetOrigin && ev.origin !== this.targetOrigin || !ev.data || !(ev.data instanceof Object)) return;
|
|
1613
|
+
if (this.isMessageAllowed(ev.data)) {
|
|
1614
|
+
await this.onBeforeEvent(ev);
|
|
1615
|
+
this.eventSubject.next(ev);
|
|
1616
|
+
}
|
|
1617
|
+
};
|
|
1618
|
+
if (target instanceof MessagePort) {
|
|
1619
|
+
this.messagePort = target;
|
|
1620
|
+
target.onmessage = handleMessage;
|
|
1621
|
+
this.closeListener = async () => {
|
|
1622
|
+
this.messagePort?.close();
|
|
1623
|
+
this.messagePort = undefined;
|
|
1624
|
+
};
|
|
1625
|
+
} else if (target instanceof BroadcastChannel) {
|
|
1626
|
+
this.messageChannel = target;
|
|
1627
|
+
target.onmessage = handleMessage;
|
|
1628
|
+
this.closeListener = async () => {
|
|
1629
|
+
this.messageChannel?.close();
|
|
1630
|
+
this.messageChannel = undefined;
|
|
1631
|
+
};
|
|
1632
|
+
} else {
|
|
1633
|
+
this.targetWindow = target.window;
|
|
1634
|
+
this.targetOrigin = target.origin;
|
|
1635
|
+
window.addEventListener("message", handleMessage);
|
|
1636
|
+
this.closeListener = async () => {
|
|
1637
|
+
window.removeEventListener("message", handleMessage);
|
|
1638
|
+
};
|
|
1666
1639
|
}
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1640
|
+
}
|
|
1641
|
+
isMessageAllowed(message) {
|
|
1642
|
+
return this.allowedMessageTypes.includes(message.type);
|
|
1643
|
+
}
|
|
1644
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1645
|
+
async onBeforeEvent(_event) {
|
|
1646
|
+
// by default not used
|
|
1647
|
+
}
|
|
1648
|
+
async close() {
|
|
1649
|
+
if (this.closeListener) {
|
|
1650
|
+
await this.closeListener();
|
|
1651
|
+
this.closeListener = null;
|
|
1675
1652
|
}
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
const { origin } = new URL(walletIframe.src);
|
|
1679
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.CLAIM_ID_REQUEST, payload }, origin);
|
|
1680
|
-
return response;
|
|
1653
|
+
if (this.eventSubject && !this.eventSubject.closed) {
|
|
1654
|
+
this.eventSubject.complete();
|
|
1681
1655
|
}
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1656
|
+
}
|
|
1657
|
+
createErrorResponseMessage(type, error) {
|
|
1658
|
+
return {
|
|
1659
|
+
type,
|
|
1660
|
+
payload: {
|
|
1661
|
+
success: false,
|
|
1662
|
+
errorName: error instanceof AirError ? error.name : "UNKNOWN_ERROR",
|
|
1663
|
+
errorMessage: error.message
|
|
1664
|
+
}
|
|
1665
|
+
};
|
|
1666
|
+
}
|
|
1667
|
+
async sendMessage(message, transfer) {
|
|
1668
|
+
// To prevent any non-cloneable objects causing errors in postMessage
|
|
1669
|
+
const clonedMessage = this.deepClone(message);
|
|
1670
|
+
if (this.messagePort) {
|
|
1671
|
+
this.messagePort.postMessage(clonedMessage);
|
|
1672
|
+
} else if (this.messageChannel) {
|
|
1673
|
+
this.messageChannel.postMessage(clonedMessage);
|
|
1674
|
+
} else if (this.targetWindow && this.targetOrigin) {
|
|
1675
|
+
this.targetWindow.postMessage(clonedMessage, this.targetOrigin, transfer);
|
|
1676
|
+
} else {
|
|
1677
|
+
log.debug(`[${this.name}] Not opened yet`);
|
|
1678
|
+
return;
|
|
1691
1679
|
}
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
}
|
|
1704
|
-
closeWalletObservables() {
|
|
1705
|
-
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1706
|
-
this._providerMessage$.complete();
|
|
1707
|
-
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1708
|
-
this._providerEvent$.complete();
|
|
1709
|
-
if (this.closeWalletMessageListeners)
|
|
1710
|
-
this.closeWalletMessageListeners();
|
|
1711
|
-
}
|
|
1712
|
-
setupAuthObservables() {
|
|
1713
|
-
this._authMessage$ = new Subject();
|
|
1714
|
-
}
|
|
1715
|
-
setupAirObservables() {
|
|
1716
|
-
this.airMessages$ = new Subject();
|
|
1717
|
-
}
|
|
1718
|
-
setupWalletObservables() {
|
|
1719
|
-
this._providerMessage$ = new Subject();
|
|
1720
|
-
this._providerEvent$ = new Subject();
|
|
1721
|
-
}
|
|
1722
|
-
async sendGetPartnerAccessTokenRequest(authIframe) {
|
|
1723
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.GET_PARTNER_ACCESS_TOKEN_RESPONSE)));
|
|
1724
|
-
const { origin } = new URL(authIframe.src);
|
|
1725
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.GET_PARTNER_ACCESS_TOKEN_REQUEST }, origin);
|
|
1726
|
-
return response;
|
|
1680
|
+
this.eventSubject.next(new MessageEvent("message", {
|
|
1681
|
+
data: clonedMessage,
|
|
1682
|
+
origin: window.origin
|
|
1683
|
+
}));
|
|
1684
|
+
}
|
|
1685
|
+
deepClone(message) {
|
|
1686
|
+
try {
|
|
1687
|
+
return JSON.parse(JSON.stringify(message, bigIntReplacer));
|
|
1688
|
+
} catch (e) {
|
|
1689
|
+
log.warn("Error generating cloneable message", e);
|
|
1690
|
+
return message;
|
|
1727
1691
|
}
|
|
1692
|
+
}
|
|
1728
1693
|
}
|
|
1729
|
-
var AirMessageService$1 = AirMessageService.instance;
|
|
1730
|
-
|
|
1731
|
-
const BUILD_ENV = {
|
|
1732
|
-
PRODUCTION: "production",
|
|
1733
|
-
UAT: "uat",
|
|
1734
|
-
STAGING: "staging",
|
|
1735
|
-
DEVELOPMENT: "development",
|
|
1736
|
-
};
|
|
1737
|
-
|
|
1738
|
-
const AIR_URLS = {
|
|
1739
|
-
[BUILD_ENV.DEVELOPMENT]: {
|
|
1740
|
-
authUrl: "http://localhost:8100",
|
|
1741
|
-
walletUrl: "http://localhost:8200",
|
|
1742
|
-
logLevel: "debug",
|
|
1743
|
-
},
|
|
1744
|
-
[BUILD_ENV.UAT]: {
|
|
1745
|
-
authUrl: "https://auth.uat.air3.com",
|
|
1746
|
-
walletUrl: "https://account.uat.air3.com",
|
|
1747
|
-
logLevel: "info",
|
|
1748
|
-
},
|
|
1749
|
-
[BUILD_ENV.STAGING]: {
|
|
1750
|
-
authUrl: "https://auth.staging.air3.com",
|
|
1751
|
-
walletUrl: "https://account.staging.air3.com",
|
|
1752
|
-
logLevel: "info",
|
|
1753
|
-
},
|
|
1754
|
-
[BUILD_ENV.PRODUCTION]: {
|
|
1755
|
-
authUrl: "https://auth.air3.com",
|
|
1756
|
-
walletUrl: "https://account.air3.com",
|
|
1757
|
-
logLevel: "error",
|
|
1758
|
-
},
|
|
1759
|
-
};
|
|
1760
|
-
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1761
|
-
const randomId = () => Math.random().toString(36).slice(2);
|
|
1762
|
-
const getWindowFeatures = (width, height) => {
|
|
1763
|
-
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
|
|
1764
|
-
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
|
|
1765
|
-
const w = window.innerWidth
|
|
1766
|
-
? window.innerWidth
|
|
1767
|
-
: document.documentElement.clientWidth
|
|
1768
|
-
? document.documentElement.clientWidth
|
|
1769
|
-
: window.screen.width;
|
|
1770
|
-
const h = window.innerHeight
|
|
1771
|
-
? window.innerHeight
|
|
1772
|
-
: document.documentElement.clientHeight
|
|
1773
|
-
? document.documentElement.clientHeight
|
|
1774
|
-
: window.screen.height;
|
|
1775
|
-
const systemZoom = 1; // No reliable estimate
|
|
1776
|
-
const left = Math.abs((w - width) / 2 / systemZoom + dualScreenLeft);
|
|
1777
|
-
const top = Math.abs((h - height) / 2 / systemZoom + dualScreenTop);
|
|
1778
|
-
return `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${height / systemZoom},width=${width / systemZoom},top=${top},left=${left}`;
|
|
1779
|
-
};
|
|
1780
1694
|
|
|
1781
|
-
var
|
|
1695
|
+
var AirWalletProviderMessageTypes;
|
|
1696
|
+
(function (AirWalletProviderMessageTypes) {
|
|
1697
|
+
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1698
|
+
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1699
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1700
|
+
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1701
|
+
|
|
1702
|
+
var _a$2, _ProviderMessageService_instance;
|
|
1703
|
+
const ALLOWED_PROVIDER_MESSAGES = [
|
|
1704
|
+
AirWalletProviderMessageTypes.RESPONSE,
|
|
1705
|
+
AirWalletProviderMessageTypes.EVENT,
|
|
1706
|
+
];
|
|
1707
|
+
class ProviderMessageService extends MessageServiceBase {
|
|
1708
|
+
static create() {
|
|
1709
|
+
if (__classPrivateFieldGet(this, _a$2, "f", _ProviderMessageService_instance))
|
|
1710
|
+
throw new Error("ProviderMessageService already created");
|
|
1711
|
+
__classPrivateFieldSet(this, _a$2, new _a$2("Embed Service: Provider Channel", ALLOWED_PROVIDER_MESSAGES), "f", _ProviderMessageService_instance);
|
|
1712
|
+
return __classPrivateFieldGet(this, _a$2, "f", _ProviderMessageService_instance);
|
|
1713
|
+
}
|
|
1714
|
+
async open(walletIframe) {
|
|
1715
|
+
const origin = new URL(walletIframe.src).origin;
|
|
1716
|
+
const window = walletIframe.contentWindow;
|
|
1717
|
+
await super._open({ window, origin });
|
|
1718
|
+
}
|
|
1719
|
+
async sendWalletProviderRequest(payload) {
|
|
1720
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter((msg) => msg.payload.method === payload.method)));
|
|
1721
|
+
await this.sendMessage({
|
|
1722
|
+
type: AirWalletProviderMessageTypes.REQUEST,
|
|
1723
|
+
payload,
|
|
1724
|
+
});
|
|
1725
|
+
return response;
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
_a$2 = ProviderMessageService;
|
|
1729
|
+
_ProviderMessageService_instance = { value: void 0 };
|
|
1730
|
+
|
|
1731
|
+
var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1782
1732
|
class AirWalletProvider {
|
|
1783
|
-
constructor({ isLoggedIn, ensureWallet,
|
|
1733
|
+
constructor({ isLoggedIn, ensureWallet, }) {
|
|
1784
1734
|
_AirWalletProvider_instances.add(this);
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
_AirWalletProvider_eventListeners.set(this,
|
|
1789
|
-
this.startEventMessageListening = () => {
|
|
1790
|
-
|
|
1735
|
+
_AirWalletProvider_providerMessageService.set(this, void 0);
|
|
1736
|
+
_AirWalletProvider_isLoggedIn.set(this, void 0);
|
|
1737
|
+
_AirWalletProvider_ensureWallet.set(this, void 0);
|
|
1738
|
+
_AirWalletProvider_eventListeners.set(this, void 0);
|
|
1739
|
+
this.startEventMessageListening = async (walletIframe) => {
|
|
1740
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
|
|
1741
|
+
__classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").messages$
|
|
1742
|
+
.pipe(filter((msg) => msg.type === AirWalletProviderMessageTypes.EVENT))
|
|
1743
|
+
.subscribe((message) => {
|
|
1791
1744
|
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1792
1745
|
});
|
|
1793
1746
|
};
|
|
1747
|
+
__classPrivateFieldSet(this, _AirWalletProvider_providerMessageService, ProviderMessageService.create(), "f");
|
|
1794
1748
|
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1795
1749
|
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1796
|
-
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1797
1750
|
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1798
1751
|
connect: [],
|
|
1799
1752
|
disconnect: [],
|
|
@@ -1822,14 +1775,20 @@ class AirWalletProvider {
|
|
|
1822
1775
|
if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
|
|
1823
1776
|
throw new UnauthorizedProviderError("User is not logged in");
|
|
1824
1777
|
}
|
|
1778
|
+
const skipWalletLoginMethods = ['eth_chainId'];
|
|
1825
1779
|
try {
|
|
1826
|
-
|
|
1780
|
+
if (skipWalletLoginMethods.includes(method)) {
|
|
1781
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this, { skipWalletLogin: true });
|
|
1782
|
+
}
|
|
1783
|
+
else {
|
|
1784
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
|
|
1785
|
+
}
|
|
1827
1786
|
}
|
|
1828
1787
|
catch (error) {
|
|
1829
1788
|
throw ensureProviderRpcError(error);
|
|
1830
1789
|
}
|
|
1831
1790
|
const requestId = randomId();
|
|
1832
|
-
const response = await
|
|
1791
|
+
const response = await __classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").sendWalletProviderRequest({
|
|
1833
1792
|
requestId,
|
|
1834
1793
|
...request,
|
|
1835
1794
|
});
|
|
@@ -1859,13 +1818,13 @@ class AirWalletProvider {
|
|
|
1859
1818
|
}, "f");
|
|
1860
1819
|
}
|
|
1861
1820
|
}
|
|
1862
|
-
|
|
1821
|
+
_AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isLoggedIn = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
|
|
1863
1822
|
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1864
1823
|
try {
|
|
1865
1824
|
return listener(...args);
|
|
1866
1825
|
}
|
|
1867
1826
|
catch (error) {
|
|
1868
|
-
log
|
|
1827
|
+
log.warn(error);
|
|
1869
1828
|
}
|
|
1870
1829
|
});
|
|
1871
1830
|
};
|
|
@@ -1896,6 +1855,7 @@ class IframeController {
|
|
|
1896
1855
|
iframe.style.margin = "0";
|
|
1897
1856
|
iframe.style.padding = "0";
|
|
1898
1857
|
iframe.style.display = "none";
|
|
1858
|
+
iframe.style.colorScheme = "auto";
|
|
1899
1859
|
document.body.appendChild(iframe);
|
|
1900
1860
|
this._iframeElement = iframe;
|
|
1901
1861
|
return iframe;
|
|
@@ -1934,84 +1894,117 @@ IframeController.defaultState = {
|
|
|
1934
1894
|
};
|
|
1935
1895
|
|
|
1936
1896
|
class WindowController {
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
return
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
return;
|
|
1967
|
-
}
|
|
1968
|
-
this._messages$.next(ev);
|
|
1969
|
-
};
|
|
1970
|
-
window.addEventListener("message", this._messageHandler);
|
|
1971
|
-
const checkWindow = setInterval(() => {
|
|
1972
|
-
if (!this._windowInstance || this._windowInstance?.closed) {
|
|
1973
|
-
this.cleanup();
|
|
1974
|
-
clearInterval(checkWindow);
|
|
1975
|
-
}
|
|
1976
|
-
}, 500);
|
|
1977
|
-
return windowInstance;
|
|
1897
|
+
get messages$() {
|
|
1898
|
+
return this._messages$.asObservable();
|
|
1899
|
+
}
|
|
1900
|
+
constructor(windowId, windowUrl) {
|
|
1901
|
+
this._windowInstance = null;
|
|
1902
|
+
this._messageHandler = null;
|
|
1903
|
+
this._messages$ = new Subject();
|
|
1904
|
+
this.windowId = windowId;
|
|
1905
|
+
this.windowUrl = windowUrl;
|
|
1906
|
+
this.windowOrigin = new URL(windowUrl).origin;
|
|
1907
|
+
this._messageHandler = ev => {
|
|
1908
|
+
if (ev.source !== this._windowInstance || ev.origin !== this.windowOrigin || !ev.data || !(ev.data instanceof Object)) {
|
|
1909
|
+
return;
|
|
1910
|
+
}
|
|
1911
|
+
this._messages$.next(ev);
|
|
1912
|
+
};
|
|
1913
|
+
window.addEventListener("message", this._messageHandler);
|
|
1914
|
+
}
|
|
1915
|
+
get windowInstance() {
|
|
1916
|
+
return this._windowInstance;
|
|
1917
|
+
}
|
|
1918
|
+
async openWindow(onRetry) {
|
|
1919
|
+
let windowInstance = this.tryOpenWindow();
|
|
1920
|
+
if (!windowInstance) {
|
|
1921
|
+
await onRetry();
|
|
1922
|
+
windowInstance = this.tryOpenWindow();
|
|
1923
|
+
if (!windowInstance) {
|
|
1924
|
+
throw new AirError(WindowErrorName.WINDOW_BLOCKED);
|
|
1925
|
+
}
|
|
1978
1926
|
}
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1927
|
+
const pendingWindowOpenCheck = new Promise((resolve, reject) => {
|
|
1928
|
+
setTimeout(() => {
|
|
1929
|
+
if (this.isWindowOpen(windowInstance)) {
|
|
1930
|
+
// only now are we scheduling the close event check since we're sure the window is open
|
|
1931
|
+
this.scheduleWindowClosedChecks(windowInstance);
|
|
1932
|
+
resolve("opened");
|
|
1933
|
+
} else {
|
|
1934
|
+
onRetry().then(() => {
|
|
1935
|
+
windowInstance = this.tryOpenWindow();
|
|
1936
|
+
if (windowInstance) {
|
|
1937
|
+
this._windowInstance = windowInstance;
|
|
1938
|
+
windowInstance.focus();
|
|
1939
|
+
this.scheduleWindowClosedChecks(windowInstance);
|
|
1940
|
+
resolve("retry");
|
|
1941
|
+
} else {
|
|
1942
|
+
reject(new AirError(WindowErrorName.WINDOW_BLOCKED));
|
|
1943
|
+
}
|
|
1944
|
+
}).catch(reject);
|
|
1945
|
+
}
|
|
1946
|
+
}, 1000);
|
|
1947
|
+
});
|
|
1948
|
+
this._windowInstance = windowInstance;
|
|
1949
|
+
windowInstance.focus();
|
|
1950
|
+
return {
|
|
1951
|
+
pendingWindowOpenCheck
|
|
1952
|
+
};
|
|
1953
|
+
}
|
|
1954
|
+
postMessage(message, transfer) {
|
|
1955
|
+
if (!this._windowInstance) return;
|
|
1956
|
+
this._windowInstance.postMessage(message, this.windowOrigin, transfer);
|
|
1957
|
+
}
|
|
1958
|
+
onMessage(callback) {
|
|
1959
|
+
const listener = ev => {
|
|
1960
|
+
if (ev.source !== this._windowInstance || ev.origin !== this.windowOrigin) return;
|
|
1961
|
+
callback(ev);
|
|
1962
|
+
};
|
|
1963
|
+
window.addEventListener("message", listener);
|
|
1964
|
+
const close = () => window.removeEventListener("message", listener);
|
|
1965
|
+
this.onClose(close);
|
|
1966
|
+
return {
|
|
1967
|
+
close
|
|
1968
|
+
};
|
|
1969
|
+
}
|
|
1970
|
+
cleanup() {
|
|
1971
|
+
if (this._windowInstance && !this._windowInstance.closed) {
|
|
1972
|
+
this._windowInstance.close();
|
|
1983
1973
|
}
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
callback(ev);
|
|
1989
|
-
};
|
|
1990
|
-
window.addEventListener("message", listener);
|
|
1991
|
-
const close = () => window.removeEventListener("message", listener);
|
|
1992
|
-
this.onClose(close);
|
|
1993
|
-
return {
|
|
1994
|
-
close,
|
|
1995
|
-
};
|
|
1974
|
+
this._windowInstance = null;
|
|
1975
|
+
if (this._messageHandler) {
|
|
1976
|
+
window.removeEventListener("message", this._messageHandler);
|
|
1977
|
+
this._messageHandler = null;
|
|
1996
1978
|
}
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
this._windowInstance.close();
|
|
2000
|
-
}
|
|
2001
|
-
if (this._messageHandler) {
|
|
2002
|
-
window.removeEventListener("message", this._messageHandler);
|
|
2003
|
-
this._messageHandler = null;
|
|
2004
|
-
}
|
|
2005
|
-
if (this._messages$ && !this._messages$.closed) {
|
|
2006
|
-
this._messages$.complete();
|
|
2007
|
-
}
|
|
2008
|
-
this._windowInstance = null;
|
|
1979
|
+
if (this._messages$ && !this._messages$.closed) {
|
|
1980
|
+
this._messages$.complete();
|
|
2009
1981
|
}
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
1982
|
+
}
|
|
1983
|
+
onClose(callback) {
|
|
1984
|
+
return this._messages$.subscribe({
|
|
1985
|
+
complete: callback
|
|
1986
|
+
});
|
|
1987
|
+
}
|
|
1988
|
+
isWindowOpen(windowInstance) {
|
|
1989
|
+
return !(!windowInstance || windowInstance.closed || typeof windowInstance.closed == "undefined");
|
|
1990
|
+
}
|
|
1991
|
+
tryOpenWindow() {
|
|
1992
|
+
const windowInstance = window.open(this.windowUrl, this.windowId, getWindowFeatures(425, 680));
|
|
1993
|
+
if (this.isWindowOpen(windowInstance)) {
|
|
1994
|
+
return windowInstance;
|
|
2014
1995
|
}
|
|
1996
|
+
return null;
|
|
1997
|
+
}
|
|
1998
|
+
scheduleWindowClosedChecks(windowInstance) {
|
|
1999
|
+
const checkWindow = setInterval(() => {
|
|
2000
|
+
if (!windowInstance || windowInstance.closed) {
|
|
2001
|
+
clearInterval(checkWindow);
|
|
2002
|
+
if (windowInstance === this._windowInstance) {
|
|
2003
|
+
this.cleanup();
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
}, 500);
|
|
2007
|
+
}
|
|
2015
2008
|
}
|
|
2016
2009
|
|
|
2017
2010
|
class WindowService {
|
|
@@ -2030,37 +2023,60 @@ class WindowService {
|
|
|
2030
2023
|
if (!windowInstance) {
|
|
2031
2024
|
throw new Error("Window instance not found");
|
|
2032
2025
|
}
|
|
2033
|
-
const response = firstValueFrom(windowController.messages$.pipe(filter((event) => event.data.type ===
|
|
2034
|
-
|
|
2026
|
+
const response = firstValueFrom(windowController.messages$.pipe(filter((event) => event.data.type ===
|
|
2027
|
+
AirWalletMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2028
|
+
windowController.postMessage({ type: AirWalletMessageTypes.INITIALIZATION_REQUEST, payload }, [
|
|
2029
|
+
port,
|
|
2030
|
+
]);
|
|
2035
2031
|
return (await response).data;
|
|
2036
2032
|
}
|
|
2037
|
-
async openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging,
|
|
2033
|
+
async openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging, onRetry, sdkVersion, enableAutomation, }) {
|
|
2038
2034
|
if (this.windowControllers.has(windowId)) {
|
|
2039
2035
|
throw new Error("Window controller already exists");
|
|
2040
2036
|
}
|
|
2041
|
-
const windowController = new WindowController(
|
|
2042
|
-
|
|
2043
|
-
windowController.openWindow();
|
|
2037
|
+
const windowController = new WindowController(windowId, url);
|
|
2038
|
+
const { pendingWindowOpenCheck } = await windowController.openWindow(onRetry);
|
|
2044
2039
|
windowController.onClose(() => {
|
|
2045
2040
|
this.removeWindowController(windowId);
|
|
2046
2041
|
});
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2042
|
+
this.windowControllers.set(windowId, windowController);
|
|
2043
|
+
let channel = null;
|
|
2044
|
+
const initializeWindow = () => {
|
|
2045
|
+
return new Promise((resolve, reject) => {
|
|
2046
|
+
windowController.onMessage(async (ev) => {
|
|
2047
|
+
if (ev.data === AirWalletMessageTypes.SERVICE_STARTED) {
|
|
2048
|
+
try {
|
|
2049
|
+
channel = new MessageChannel();
|
|
2050
|
+
const { payload } = await this.sendWindowInitializationRequest(windowId, {
|
|
2051
|
+
partnerId,
|
|
2052
|
+
enableLogging,
|
|
2053
|
+
sdkVersion,
|
|
2054
|
+
enableAutomation,
|
|
2055
|
+
}, channel.port1);
|
|
2056
|
+
if (payload.success === false) {
|
|
2057
|
+
reject(new AirServiceError(payload.errorName, payload.errorMessage));
|
|
2058
|
+
}
|
|
2059
|
+
else {
|
|
2060
|
+
resolve();
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
catch (e) {
|
|
2064
|
+
reject(e);
|
|
2065
|
+
}
|
|
2059
2066
|
}
|
|
2060
|
-
}
|
|
2067
|
+
});
|
|
2061
2068
|
});
|
|
2062
|
-
}
|
|
2063
|
-
|
|
2069
|
+
};
|
|
2070
|
+
const initializeWindowPromise = initializeWindow();
|
|
2071
|
+
const result = await pendingWindowOpenCheck;
|
|
2072
|
+
if (result === "retry") {
|
|
2073
|
+
// we can ignore previous initialization attempt since a new window was opened
|
|
2074
|
+
await initializeWindow();
|
|
2075
|
+
}
|
|
2076
|
+
else {
|
|
2077
|
+
await initializeWindowPromise;
|
|
2078
|
+
}
|
|
2079
|
+
return { windowController, port: channel.port2 };
|
|
2064
2080
|
}
|
|
2065
2081
|
getWindowController(windowId) {
|
|
2066
2082
|
return this.windowControllers.get(windowId);
|
|
@@ -2071,27 +2087,265 @@ class WindowService {
|
|
|
2071
2087
|
}
|
|
2072
2088
|
var WindowService$1 = WindowService.instance;
|
|
2073
2089
|
|
|
2074
|
-
var
|
|
2090
|
+
var _a$1, _AuthMessageService_instance;
|
|
2091
|
+
const ALLOWED_AUTH_MESSAGES = [
|
|
2092
|
+
AirAuthMessageTypes.INITIALIZATION_RESPONSE,
|
|
2093
|
+
AirAuthMessageTypes.LOGIN_RESPONSE,
|
|
2094
|
+
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
2095
|
+
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
2096
|
+
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
2097
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
2098
|
+
AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE,
|
|
2099
|
+
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
2100
|
+
AirAuthMessageTypes.CREDENTIAL_SALT_RESPONSE,
|
|
2101
|
+
];
|
|
2102
|
+
class AuthMessageService extends MessageServiceBase {
|
|
2103
|
+
static create() {
|
|
2104
|
+
if (__classPrivateFieldGet(this, _a$1, "f", _AuthMessageService_instance))
|
|
2105
|
+
throw new Error("AuthMessageService already created");
|
|
2106
|
+
__classPrivateFieldSet(this, _a$1, new _a$1("Embed Service: Auth Channel", ALLOWED_AUTH_MESSAGES), "f", _AuthMessageService_instance);
|
|
2107
|
+
return __classPrivateFieldGet(this, _a$1, "f", _AuthMessageService_instance);
|
|
2108
|
+
}
|
|
2109
|
+
async open(authIframe) {
|
|
2110
|
+
const origin = new URL(authIframe.src).origin;
|
|
2111
|
+
const window = authIframe.contentWindow;
|
|
2112
|
+
await super._open({ window, origin });
|
|
2113
|
+
}
|
|
2114
|
+
async initWalletCommunication() {
|
|
2115
|
+
await this.sendMessage({
|
|
2116
|
+
type: AirAuthMessageTypes.INIT_WALLET_COMMUNICATION,
|
|
2117
|
+
});
|
|
2118
|
+
}
|
|
2119
|
+
async sendPartnerUserInfoRequest() {
|
|
2120
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE)));
|
|
2121
|
+
await this.sendMessage({
|
|
2122
|
+
type: AirAuthMessageTypes.PARTNER_USER_INFO_REQUEST,
|
|
2123
|
+
payload: { allowCache: false },
|
|
2124
|
+
});
|
|
2125
|
+
return response;
|
|
2126
|
+
}
|
|
2127
|
+
async sendLoginRequest(payload) {
|
|
2128
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGIN_RESPONSE)));
|
|
2129
|
+
await this.sendMessage({ type: AirAuthMessageTypes.LOGIN_REQUEST, payload });
|
|
2130
|
+
return response;
|
|
2131
|
+
}
|
|
2132
|
+
async logout() {
|
|
2133
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGOUT_RESPONSE)));
|
|
2134
|
+
await this.sendMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST });
|
|
2135
|
+
return response;
|
|
2136
|
+
}
|
|
2137
|
+
async resetWalletCommunication() {
|
|
2138
|
+
await this.sendMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION });
|
|
2139
|
+
}
|
|
2140
|
+
async sendInitializationRequest(payload) {
|
|
2141
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2142
|
+
await this.sendMessage({ type: AirAuthMessageTypes.INITIALIZATION_REQUEST, payload });
|
|
2143
|
+
return response;
|
|
2144
|
+
}
|
|
2145
|
+
async sendSetupWalletSuccessResponse() {
|
|
2146
|
+
await this.sendMessage({
|
|
2147
|
+
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
2148
|
+
payload: {
|
|
2149
|
+
success: true,
|
|
2150
|
+
},
|
|
2151
|
+
});
|
|
2152
|
+
}
|
|
2153
|
+
async sendSetupWalletErrorResponse(error) {
|
|
2154
|
+
await this.sendMessage(this.createErrorResponseMessage(AirAuthMessageTypes.SETUP_WALLET_RESPONSE, error));
|
|
2155
|
+
}
|
|
2156
|
+
async sendCrossPartnerTokenRequest(targetPartnerUrl) {
|
|
2157
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
2158
|
+
await this.sendMessage({
|
|
2159
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
2160
|
+
payload: {
|
|
2161
|
+
targetPartnerUrl,
|
|
2162
|
+
},
|
|
2163
|
+
});
|
|
2164
|
+
return response;
|
|
2165
|
+
}
|
|
2166
|
+
async sendPartnerAccessTokenRequest() {
|
|
2167
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE)));
|
|
2168
|
+
await this.sendMessage({ type: AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_REQUEST });
|
|
2169
|
+
return response;
|
|
2170
|
+
}
|
|
2171
|
+
async sendCredentialSaltRequest() {
|
|
2172
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CREDENTIAL_SALT_RESPONSE)));
|
|
2173
|
+
await this.sendMessage({ type: AirAuthMessageTypes.CREDENTIAL_SALT_REQUEST });
|
|
2174
|
+
return response;
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
_a$1 = AuthMessageService;
|
|
2178
|
+
_AuthMessageService_instance = { value: void 0 };
|
|
2179
|
+
|
|
2180
|
+
var _a, _WalletMessageService_instance;
|
|
2181
|
+
const ALLOWED_WALLET_MESSAGES = [
|
|
2182
|
+
AirWalletMessageTypes.INITIALIZATION_RESPONSE,
|
|
2183
|
+
AirWalletMessageTypes.WALLET_INITIALIZED,
|
|
2184
|
+
AirWalletMessageTypes.WALLET_LOGIN_RESPONSE,
|
|
2185
|
+
AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_RESPONSE,
|
|
2186
|
+
AirWalletMessageTypes.CLAIM_ID_RESPONSE,
|
|
2187
|
+
AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE,
|
|
2188
|
+
AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE,
|
|
2189
|
+
AirWalletMessageTypes.WALLET_INITIALIZED,
|
|
2190
|
+
AirWalletMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST,
|
|
2191
|
+
AirWalletMessageTypes.LOGOUT_RESPONSE,
|
|
2192
|
+
AirWalletMessageTypes.OPEN_WINDOW_REQUEST,
|
|
2193
|
+
AirWalletMessageTypes.OPEN_WINDOW_RETRY_RESPONSE,
|
|
2194
|
+
];
|
|
2195
|
+
class WalletMessageService extends MessageServiceBase {
|
|
2196
|
+
static create() {
|
|
2197
|
+
if (__classPrivateFieldGet(this, _a, "f", _WalletMessageService_instance))
|
|
2198
|
+
throw new Error("WalletMessageService already created");
|
|
2199
|
+
__classPrivateFieldSet(this, _a, new _a("Embed Service: Wallet Channel", ALLOWED_WALLET_MESSAGES), "f", _WalletMessageService_instance);
|
|
2200
|
+
return __classPrivateFieldGet(this, _a, "f", _WalletMessageService_instance);
|
|
2201
|
+
}
|
|
2202
|
+
async open(walletIframe) {
|
|
2203
|
+
const origin = new URL(walletIframe.src).origin;
|
|
2204
|
+
const window = walletIframe.contentWindow;
|
|
2205
|
+
await super._open({ window, origin });
|
|
2206
|
+
}
|
|
2207
|
+
async initAuthCommunication(skipWalletLogin) {
|
|
2208
|
+
await this.sendMessage({
|
|
2209
|
+
type: AirWalletMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
2210
|
+
payload: {
|
|
2211
|
+
skipWalletLogin,
|
|
2212
|
+
},
|
|
2213
|
+
});
|
|
2214
|
+
}
|
|
2215
|
+
async sendDeploySmartAccountRequest() {
|
|
2216
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE)));
|
|
2217
|
+
await this.sendMessage({
|
|
2218
|
+
type: AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_REQUEST,
|
|
2219
|
+
});
|
|
2220
|
+
return response;
|
|
2221
|
+
}
|
|
2222
|
+
async sendIsSmartAccountDeployedRequest() {
|
|
2223
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE)));
|
|
2224
|
+
await this.sendMessage({
|
|
2225
|
+
type: AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_REQUEST,
|
|
2226
|
+
});
|
|
2227
|
+
return response;
|
|
2228
|
+
}
|
|
2229
|
+
async logout() {
|
|
2230
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.LOGOUT_RESPONSE)));
|
|
2231
|
+
await this.sendMessage({ type: AirWalletMessageTypes.LOGOUT_REQUEST });
|
|
2232
|
+
return response;
|
|
2233
|
+
}
|
|
2234
|
+
async sendInitializationRequest(payload) {
|
|
2235
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2236
|
+
await this.sendMessage({ type: AirWalletMessageTypes.INITIALIZATION_REQUEST, payload });
|
|
2237
|
+
return response;
|
|
2238
|
+
}
|
|
2239
|
+
onInitialized() {
|
|
2240
|
+
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.WALLET_INITIALIZED)));
|
|
2241
|
+
}
|
|
2242
|
+
async sendLoginRequest() {
|
|
2243
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
2244
|
+
await this.sendMessage({
|
|
2245
|
+
type: AirWalletMessageTypes.WALLET_LOGIN_REQUEST,
|
|
2246
|
+
});
|
|
2247
|
+
return response;
|
|
2248
|
+
}
|
|
2249
|
+
async sendSetupMfaRequest() {
|
|
2250
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_RESPONSE)));
|
|
2251
|
+
await this.sendMessage({
|
|
2252
|
+
type: AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_REQUEST,
|
|
2253
|
+
});
|
|
2254
|
+
return response;
|
|
2255
|
+
}
|
|
2256
|
+
async sendOpenWindowSuccessResponse(windowId, port) {
|
|
2257
|
+
await this.sendMessage({
|
|
2258
|
+
type: AirWalletMessageTypes.OPEN_WINDOW_RESPONSE,
|
|
2259
|
+
payload: {
|
|
2260
|
+
success: true,
|
|
2261
|
+
windowId,
|
|
2262
|
+
},
|
|
2263
|
+
}, [port]);
|
|
2264
|
+
}
|
|
2265
|
+
async sendOpenWindowErrorResponse(windowId, error) {
|
|
2266
|
+
const errorResponse = this.createErrorResponseMessage(AirWalletMessageTypes.OPEN_WINDOW_RESPONSE, error);
|
|
2267
|
+
await this.sendMessage({
|
|
2268
|
+
...errorResponse,
|
|
2269
|
+
payload: { ...errorResponse.payload, windowId },
|
|
2270
|
+
});
|
|
2271
|
+
}
|
|
2272
|
+
async sendOpenWindowRetryRequest(windowId) {
|
|
2273
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.OPEN_WINDOW_RETRY_RESPONSE), filter((msg) => msg.payload.windowId === windowId)));
|
|
2274
|
+
await this.sendMessage({
|
|
2275
|
+
type: AirWalletMessageTypes.OPEN_WINDOW_RETRY_REQUEST,
|
|
2276
|
+
payload: { windowId },
|
|
2277
|
+
});
|
|
2278
|
+
return response;
|
|
2279
|
+
}
|
|
2280
|
+
async sendWindowClosed(windowId) {
|
|
2281
|
+
await this.sendMessage({
|
|
2282
|
+
type: AirWalletMessageTypes.WINDOW_CLOSED,
|
|
2283
|
+
payload: {
|
|
2284
|
+
windowId,
|
|
2285
|
+
},
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
async sendClaimIdRequest(payload) {
|
|
2289
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.CLAIM_ID_RESPONSE)));
|
|
2290
|
+
await this.sendMessage({ type: AirWalletMessageTypes.CLAIM_ID_REQUEST, payload });
|
|
2291
|
+
return response;
|
|
2292
|
+
}
|
|
2293
|
+
}
|
|
2294
|
+
_a = WalletMessageService;
|
|
2295
|
+
_WalletMessageService_instance = { value: void 0 };
|
|
2296
|
+
|
|
2297
|
+
const getLevelName = levelNum => {
|
|
2298
|
+
const levelNames = Object.keys(log.levels);
|
|
2299
|
+
if (levelNum >= 0 && levelNum < levelNames.length) {
|
|
2300
|
+
return levelNames[levelNum];
|
|
2301
|
+
}
|
|
2302
|
+
return "UNKNOWN";
|
|
2303
|
+
};
|
|
2304
|
+
const configureLogLevel = (environment, enableLogging) => {
|
|
2305
|
+
let level = log.levels.ERROR;
|
|
2306
|
+
if (environment === "development") {
|
|
2307
|
+
level = enableLogging ? log.levels.TRACE : log.levels.INFO;
|
|
2308
|
+
} else if (environment === "staging") {
|
|
2309
|
+
level = enableLogging ? log.levels.DEBUG : log.levels.INFO;
|
|
2310
|
+
} else if (environment === "uat") {
|
|
2311
|
+
level = enableLogging ? log.levels.INFO : log.levels.WARN;
|
|
2312
|
+
} else if (environment === "production") {
|
|
2313
|
+
// Be cautious with enabling more than WARN in prod
|
|
2314
|
+
level = enableLogging ? log.levels.WARN : log.levels.ERROR;
|
|
2315
|
+
}
|
|
2316
|
+
log.setLevel(level);
|
|
2317
|
+
log.info(`[${window?.location?.href}] LogLevel: ${getLevelName(log.getLevel())}`);
|
|
2318
|
+
};
|
|
2319
|
+
|
|
2320
|
+
var version = "1.3.0";
|
|
2321
|
+
var airkitPackage = {
|
|
2322
|
+
version: version};
|
|
2323
|
+
|
|
2324
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_subscribeToWalletEvents, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
|
|
2325
|
+
const airKitVersion = airkitPackage.version;
|
|
2075
2326
|
class AirService {
|
|
2076
2327
|
constructor({ partnerId }) {
|
|
2077
2328
|
_AirService_instances.add(this);
|
|
2078
|
-
_AirService_loginResult.set(this,
|
|
2079
|
-
_AirService_buildEnv.set(this,
|
|
2329
|
+
_AirService_loginResult.set(this, void 0);
|
|
2330
|
+
_AirService_buildEnv.set(this, void 0);
|
|
2080
2331
|
_AirService_enableLogging.set(this, false);
|
|
2081
|
-
_AirService_partnerId.set(this,
|
|
2332
|
+
_AirService_partnerId.set(this, void 0);
|
|
2082
2333
|
//#modalZIndex: number; TODO implement z index overwrite
|
|
2083
|
-
|
|
2334
|
+
_AirService_authMessagingService.set(this, void 0);
|
|
2335
|
+
_AirService_authIframeController.set(this, void 0);
|
|
2084
2336
|
_AirService_isAuthInitialized.set(this, false);
|
|
2085
2337
|
_AirService_airAuthListener.set(this, []);
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2338
|
+
_AirService_walletMessagingService.set(this, void 0);
|
|
2339
|
+
_AirService_walletIframeController.set(this, void 0);
|
|
2340
|
+
_AirService_walletInitialization.set(this, void 0);
|
|
2341
|
+
_AirService_walletLoggedInResult.set(this, void 0);
|
|
2342
|
+
_AirService_airWalletProvider.set(this, void 0);
|
|
2090
2343
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
2344
|
+
__classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
|
|
2345
|
+
__classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
|
|
2091
2346
|
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
2092
2347
|
isLoggedIn: () => this.isLoggedIn,
|
|
2093
2348
|
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
2094
|
-
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
2095
2349
|
}), "f");
|
|
2096
2350
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
2097
2351
|
}
|
|
@@ -2115,6 +2369,9 @@ class AirService {
|
|
|
2115
2369
|
removeListener: provider.removeListener.bind(provider),
|
|
2116
2370
|
};
|
|
2117
2371
|
}
|
|
2372
|
+
shouldEnableAutomation() {
|
|
2373
|
+
return localStorage.getItem("automation") === "true" && __classPrivateFieldGet(this, _AirService_buildEnv, "f") !== "production";
|
|
2374
|
+
}
|
|
2118
2375
|
async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
|
|
2119
2376
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
2120
2377
|
throw new Error("Partner ID is required to initialize auth service");
|
|
@@ -2122,61 +2379,48 @@ class AirService {
|
|
|
2122
2379
|
return;
|
|
2123
2380
|
__classPrivateFieldSet(this, _AirService_buildEnv, buildEnv, "f");
|
|
2124
2381
|
__classPrivateFieldSet(this, _AirService_enableLogging, enableLogging, "f");
|
|
2125
|
-
const { authUrl
|
|
2126
|
-
|
|
2127
|
-
if (__classPrivateFieldGet(this, _AirService_enableLogging, "f"))
|
|
2128
|
-
log.enableAll();
|
|
2129
|
-
else
|
|
2130
|
-
log.disableAll();
|
|
2382
|
+
const { authUrl } = AIR_URLS[buildEnv];
|
|
2383
|
+
configureLogLevel(buildEnv, enableLogging);
|
|
2131
2384
|
const authIframeOrigin = new URL(authUrl).origin;
|
|
2132
|
-
await AirMessageService$1.openAuthObservables({ authIframeOrigin });
|
|
2133
2385
|
__classPrivateFieldSet(this, _AirService_authIframeController, new IframeController(authUrl, `air-auth-${randomId()}`), "f");
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
2146
|
-
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
2147
|
-
payload: {
|
|
2148
|
-
success: true,
|
|
2149
|
-
},
|
|
2150
|
-
});
|
|
2386
|
+
try {
|
|
2387
|
+
__classPrivateFieldGet(this, _AirService_authIframeController, "f").createIframe();
|
|
2388
|
+
log.info(authUrl, "url loaded");
|
|
2389
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").open(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2390
|
+
__classPrivateFieldGet(this, _AirService_authMessagingService, "f").messages$.subscribe(async (msg) => {
|
|
2391
|
+
switch (msg.type) {
|
|
2392
|
+
case AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST: {
|
|
2393
|
+
const authIframeController = __classPrivateFieldGet(this, _AirService_authIframeController, "f");
|
|
2394
|
+
authIframeController.setIframeVisibility(msg.payload.visible);
|
|
2395
|
+
authIframeController.updateIframeState();
|
|
2396
|
+
break;
|
|
2151
2397
|
}
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
});
|
|
2398
|
+
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
2399
|
+
try {
|
|
2400
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2401
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendSetupWalletSuccessResponse();
|
|
2402
|
+
}
|
|
2403
|
+
catch (err) {
|
|
2404
|
+
const error = ensureError(err);
|
|
2405
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendSetupWalletErrorResponse(error);
|
|
2406
|
+
}
|
|
2407
|
+
break;
|
|
2163
2408
|
}
|
|
2164
|
-
break;
|
|
2165
2409
|
}
|
|
2166
|
-
}
|
|
2167
|
-
});
|
|
2168
|
-
try {
|
|
2169
|
-
__classPrivateFieldGet(this, _AirService_authIframeController, "f").createIframe();
|
|
2410
|
+
});
|
|
2170
2411
|
const result = await new Promise((resolve, reject) => {
|
|
2171
2412
|
const handleAuthMessage = async (ev) => {
|
|
2172
2413
|
if (ev.origin !== authIframeOrigin)
|
|
2173
2414
|
return;
|
|
2174
2415
|
if (ev.data === AirAuthMessageTypes.AUTH_SETUP_COMPLETED) {
|
|
2175
2416
|
window.removeEventListener("message", handleAuthMessage);
|
|
2176
|
-
const { payload } = await
|
|
2417
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendInitializationRequest({
|
|
2177
2418
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2178
2419
|
skipRehydration,
|
|
2179
2420
|
partnerDAppUrl: window.location.href,
|
|
2421
|
+
sdkVersion: airKitVersion,
|
|
2422
|
+
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2423
|
+
enableAutomation: this.shouldEnableAutomation(),
|
|
2180
2424
|
});
|
|
2181
2425
|
if (payload.success === true) {
|
|
2182
2426
|
resolve(payload);
|
|
@@ -2209,8 +2453,7 @@ class AirService {
|
|
|
2209
2453
|
throw new Error("Service is not initialized");
|
|
2210
2454
|
if (__classPrivateFieldGet(this, _AirService_loginResult, "f"))
|
|
2211
2455
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
2212
|
-
const
|
|
2213
|
-
const { payload } = await AirMessageService$1.sendAuthLoginRequest(iframeController.iframeElement, {
|
|
2456
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendLoginRequest({
|
|
2214
2457
|
partnerLoginToken: options?.authToken,
|
|
2215
2458
|
});
|
|
2216
2459
|
if (payload.success === true) {
|
|
@@ -2218,7 +2461,7 @@ class AirService {
|
|
|
2218
2461
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedIn).call(this);
|
|
2219
2462
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
2220
2463
|
}
|
|
2221
|
-
throw new AirServiceError(
|
|
2464
|
+
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2222
2465
|
}
|
|
2223
2466
|
/**
|
|
2224
2467
|
* @experimental This method is experimental and will change in the future.
|
|
@@ -2229,7 +2472,7 @@ class AirService {
|
|
|
2229
2472
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2230
2473
|
try {
|
|
2231
2474
|
log.info("deploySmartAccount");
|
|
2232
|
-
const { payload } = await
|
|
2475
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendDeploySmartAccountRequest();
|
|
2233
2476
|
if (payload.success === false) {
|
|
2234
2477
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2235
2478
|
}
|
|
@@ -2242,67 +2485,16 @@ class AirService {
|
|
|
2242
2485
|
/**
|
|
2243
2486
|
* @experimental This method is experimental and will change in the future.
|
|
2244
2487
|
*/
|
|
2245
|
-
async
|
|
2246
|
-
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2247
|
-
throw new Error("AirAuth is not initialized");
|
|
2248
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2249
|
-
try {
|
|
2250
|
-
log.info("grantPermission", policies);
|
|
2251
|
-
const { payload } = await AirMessageService$1.sendGrantPermissionsRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, { policies });
|
|
2252
|
-
if (payload.success === false) {
|
|
2253
|
-
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2254
|
-
}
|
|
2255
|
-
return payload.sessionData;
|
|
2256
|
-
}
|
|
2257
|
-
catch (error) {
|
|
2258
|
-
throw AirServiceError.from(error);
|
|
2259
|
-
}
|
|
2260
|
-
}
|
|
2261
|
-
/**
|
|
2262
|
-
* @experimental This method is experimental and will change in the future.
|
|
2263
|
-
*/
|
|
2264
|
-
async listAllSessionKeyScopes() {
|
|
2488
|
+
async isSmartAccountDeployed() {
|
|
2265
2489
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2266
2490
|
throw new Error("Service is not initialized");
|
|
2267
2491
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2268
2492
|
try {
|
|
2269
|
-
const { payload } = await
|
|
2493
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendIsSmartAccountDeployedRequest();
|
|
2270
2494
|
if (payload.success === false) {
|
|
2271
2495
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2272
2496
|
}
|
|
2273
|
-
return payload.
|
|
2274
|
-
}
|
|
2275
|
-
catch (error) {
|
|
2276
|
-
throw AirServiceError.from(error);
|
|
2277
|
-
}
|
|
2278
|
-
}
|
|
2279
|
-
/**
|
|
2280
|
-
* @experimental This method is experimental and will change in the future.
|
|
2281
|
-
*/
|
|
2282
|
-
async executeAction(params) {
|
|
2283
|
-
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2284
|
-
throw new Error("Service is not initialized");
|
|
2285
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2286
|
-
try {
|
|
2287
|
-
log.info("executeAction", params);
|
|
2288
|
-
const txHash = await AirMessageService$1.sendExecuteActionRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, params);
|
|
2289
|
-
return txHash;
|
|
2290
|
-
}
|
|
2291
|
-
catch (error) {
|
|
2292
|
-
throw AirServiceError.from(error);
|
|
2293
|
-
}
|
|
2294
|
-
}
|
|
2295
|
-
/**
|
|
2296
|
-
* @experimental This method is experimental and will change in the future.
|
|
2297
|
-
*/
|
|
2298
|
-
async revokePermission(permissionId) {
|
|
2299
|
-
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2300
|
-
throw new Error("Service is not initialized");
|
|
2301
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2302
|
-
try {
|
|
2303
|
-
log.info("revokePermission", permissionId);
|
|
2304
|
-
const txHash = await AirMessageService$1.sendRevokePermissionsRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, permissionId);
|
|
2305
|
-
return txHash;
|
|
2497
|
+
return payload.isDeployed;
|
|
2306
2498
|
}
|
|
2307
2499
|
catch (error) {
|
|
2308
2500
|
throw AirServiceError.from(error);
|
|
@@ -2311,20 +2503,18 @@ class AirService {
|
|
|
2311
2503
|
/**
|
|
2312
2504
|
* @experimental This method is experimental and will change in the future.
|
|
2313
2505
|
*/
|
|
2314
|
-
async
|
|
2506
|
+
async getCredentialSalt() {
|
|
2315
2507
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2316
2508
|
throw new Error("Service is not initialized");
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
}
|
|
2323
|
-
return payload.isDeployed;
|
|
2324
|
-
}
|
|
2325
|
-
catch (error) {
|
|
2326
|
-
throw AirServiceError.from(error);
|
|
2509
|
+
if (!this.isLoggedIn)
|
|
2510
|
+
throw new Error("No active session to get partner access token");
|
|
2511
|
+
const result = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendCredentialSaltRequest();
|
|
2512
|
+
if (result.payload.success === false) {
|
|
2513
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2327
2514
|
}
|
|
2515
|
+
return {
|
|
2516
|
+
credentialSalt: result.payload.credentialSalt,
|
|
2517
|
+
};
|
|
2328
2518
|
}
|
|
2329
2519
|
getProvider() {
|
|
2330
2520
|
return this.provider;
|
|
@@ -2334,14 +2524,18 @@ class AirService {
|
|
|
2334
2524
|
}
|
|
2335
2525
|
async setupOrUpdateMfa() {
|
|
2336
2526
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2337
|
-
const result = await
|
|
2527
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendSetupMfaRequest();
|
|
2338
2528
|
if (result.payload.success === false) {
|
|
2339
2529
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2340
2530
|
}
|
|
2531
|
+
__classPrivateFieldSet(this, _AirService_loginResult, {
|
|
2532
|
+
...__classPrivateFieldGet(this, _AirService_loginResult, "f"),
|
|
2533
|
+
isMFASetup: true,
|
|
2534
|
+
}, "f");
|
|
2341
2535
|
}
|
|
2342
2536
|
async claimAirId(options) {
|
|
2343
2537
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2344
|
-
const result = await
|
|
2538
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendClaimIdRequest(options ?? {});
|
|
2345
2539
|
if (result.payload.success === true) {
|
|
2346
2540
|
return { airId: result.payload.airId };
|
|
2347
2541
|
}
|
|
@@ -2350,7 +2544,7 @@ class AirService {
|
|
|
2350
2544
|
async getUserInfo() {
|
|
2351
2545
|
if (!this.isLoggedIn)
|
|
2352
2546
|
throw new Error("User not logged in");
|
|
2353
|
-
const info = await
|
|
2547
|
+
const info = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
|
|
2354
2548
|
if (info.payload.success === false) {
|
|
2355
2549
|
throw new AirServiceError(info.payload.errorName, info.payload.errorMessage);
|
|
2356
2550
|
}
|
|
@@ -2371,7 +2565,7 @@ class AirService {
|
|
|
2371
2565
|
throw new Error("Service is not initialized");
|
|
2372
2566
|
if (!this.isLoggedIn)
|
|
2373
2567
|
throw new Error("No active session to generate token");
|
|
2374
|
-
const result = await
|
|
2568
|
+
const result = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendCrossPartnerTokenRequest(partnerUrl);
|
|
2375
2569
|
if (result.payload.success === false) {
|
|
2376
2570
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2377
2571
|
}
|
|
@@ -2379,6 +2573,20 @@ class AirService {
|
|
|
2379
2573
|
urlWithToken: result.payload.urlWithToken,
|
|
2380
2574
|
};
|
|
2381
2575
|
}
|
|
2576
|
+
async getAccessToken() {
|
|
2577
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2578
|
+
throw new Error("Service is not initialized");
|
|
2579
|
+
if (!this.isLoggedIn)
|
|
2580
|
+
throw new Error("No active session to get partner access token");
|
|
2581
|
+
const result = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendPartnerAccessTokenRequest();
|
|
2582
|
+
if (result.payload.success !== true) {
|
|
2583
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2584
|
+
}
|
|
2585
|
+
if (!result.payload.partnerAccessToken) {
|
|
2586
|
+
throw new Error("Partner access token not found in response");
|
|
2587
|
+
}
|
|
2588
|
+
return { token: result.payload.partnerAccessToken };
|
|
2589
|
+
}
|
|
2382
2590
|
async logout() {
|
|
2383
2591
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2384
2592
|
throw new Error("Service is not initialized");
|
|
@@ -2386,7 +2594,7 @@ class AirService {
|
|
|
2386
2594
|
throw new Error("No active session to logout");
|
|
2387
2595
|
// Clear up wallet
|
|
2388
2596
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2389
|
-
await
|
|
2597
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").logout();
|
|
2390
2598
|
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2391
2599
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2392
2600
|
}
|
|
@@ -2406,22 +2614,8 @@ class AirService {
|
|
|
2406
2614
|
clearEventListeners() {
|
|
2407
2615
|
__classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
|
|
2408
2616
|
}
|
|
2409
|
-
async getPartnerAccessToken() {
|
|
2410
|
-
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2411
|
-
throw new Error("Service is not initialized");
|
|
2412
|
-
if (!this.isLoggedIn)
|
|
2413
|
-
throw new Error("No active session to get partner access token");
|
|
2414
|
-
const result = await AirMessageService$1.sendGetPartnerAccessTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2415
|
-
if (result.payload.success === false) {
|
|
2416
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2417
|
-
}
|
|
2418
|
-
if (!result.payload.partnerAccessToken) {
|
|
2419
|
-
throw new Error("Partner access token not found in response");
|
|
2420
|
-
}
|
|
2421
|
-
return result.payload.partnerAccessToken;
|
|
2422
|
-
}
|
|
2423
2617
|
}
|
|
2424
|
-
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_walletLoggedInResult = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet = async function _AirService_ensureWallet(option) {
|
|
2618
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletMessagingService = 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) {
|
|
2425
2619
|
if (!this.isInitialized)
|
|
2426
2620
|
throw new Error("Service not initialized");
|
|
2427
2621
|
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
@@ -2443,7 +2637,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2443
2637
|
}
|
|
2444
2638
|
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2445
2639
|
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2446
|
-
const walletLoginResult = await
|
|
2640
|
+
const walletLoginResult = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendLoginRequest();
|
|
2447
2641
|
if (walletLoginResult.payload.success !== true) {
|
|
2448
2642
|
throw new AirServiceError(walletLoginResult.payload.errorName, walletLoginResult.payload.errorMessage);
|
|
2449
2643
|
}
|
|
@@ -2452,22 +2646,19 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2452
2646
|
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2453
2647
|
throw new Error("Already initializing");
|
|
2454
2648
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
2455
|
-
log.info(walletUrl, "url loaded");
|
|
2456
2649
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
2457
|
-
await AirMessageService$1.openWalletObservables({ walletIframeOrigin });
|
|
2458
2650
|
try {
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToWalletEvents).call(this);
|
|
2462
|
-
await new Promise((resolve, reject) => {
|
|
2463
|
-
const handleAuthMessage = async (ev) => {
|
|
2651
|
+
const walletInitRequestPromise = new Promise((resolve, reject) => {
|
|
2652
|
+
const handleWalletMessage = async (ev) => {
|
|
2464
2653
|
if (ev.origin !== walletIframeOrigin)
|
|
2465
2654
|
return;
|
|
2466
|
-
if (ev.data ===
|
|
2467
|
-
window.removeEventListener("message",
|
|
2468
|
-
const { payload } = await
|
|
2655
|
+
if (ev.data === AirWalletMessageTypes.SERVICE_STARTED) {
|
|
2656
|
+
window.removeEventListener("message", handleWalletMessage);
|
|
2657
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendInitializationRequest({
|
|
2469
2658
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2470
2659
|
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2660
|
+
sdkVersion: airKitVersion,
|
|
2661
|
+
enableAutomation: this.shouldEnableAutomation(),
|
|
2471
2662
|
});
|
|
2472
2663
|
if (payload.success === true) {
|
|
2473
2664
|
resolve();
|
|
@@ -2477,11 +2668,18 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2477
2668
|
}
|
|
2478
2669
|
}
|
|
2479
2670
|
};
|
|
2480
|
-
window.addEventListener("message",
|
|
2671
|
+
window.addEventListener("message", handleWalletMessage);
|
|
2481
2672
|
});
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2673
|
+
__classPrivateFieldSet(this, _AirService_walletIframeController, new IframeController(walletUrl, `air-wallet-${randomId()}`), "f");
|
|
2674
|
+
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").createIframe();
|
|
2675
|
+
log.info(walletUrl, "url loaded");
|
|
2676
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").open(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2677
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToWalletEvents).call(this);
|
|
2678
|
+
await __classPrivateFieldGet(this, _AirService_airWalletProvider, "f").startEventMessageListening(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2679
|
+
const walletInitPromise = __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").onInitialized();
|
|
2680
|
+
await walletInitRequestPromise;
|
|
2681
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").initWalletCommunication();
|
|
2682
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").initAuthCommunication(option?.skipWalletLogin ?? false);
|
|
2485
2683
|
const walletInitResult = await walletInitPromise;
|
|
2486
2684
|
if (walletInitResult.payload.success !== true) {
|
|
2487
2685
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
@@ -2498,37 +2696,44 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2498
2696
|
throw error;
|
|
2499
2697
|
}
|
|
2500
2698
|
}, _AirService_subscribeToWalletEvents = function _AirService_subscribeToWalletEvents() {
|
|
2501
|
-
|
|
2699
|
+
__classPrivateFieldGet(this, _AirService_walletMessagingService, "f").messages$.subscribe(async (msg) => {
|
|
2502
2700
|
switch (msg.type) {
|
|
2503
|
-
case
|
|
2701
|
+
case AirWalletMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST: {
|
|
2504
2702
|
const walletIframeController = __classPrivateFieldGet(this, _AirService_walletIframeController, "f");
|
|
2505
2703
|
walletIframeController.setIframeVisibility(msg.payload.visible);
|
|
2506
2704
|
walletIframeController.updateIframeState();
|
|
2507
2705
|
break;
|
|
2508
2706
|
}
|
|
2509
|
-
case
|
|
2707
|
+
case AirWalletMessageTypes.WALLET_LOGIN_RESPONSE: {
|
|
2510
2708
|
if (msg.payload.success === true && !__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")) {
|
|
2511
2709
|
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
|
|
2512
2710
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2513
2711
|
}
|
|
2514
2712
|
break;
|
|
2515
2713
|
}
|
|
2516
|
-
case
|
|
2714
|
+
case AirWalletMessageTypes.OPEN_WINDOW_REQUEST: {
|
|
2517
2715
|
try {
|
|
2518
|
-
const
|
|
2519
|
-
|
|
2716
|
+
const onRetry = async () => {
|
|
2717
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowRetryRequest(msg.payload.windowId);
|
|
2718
|
+
if (payload.success === false) {
|
|
2719
|
+
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2720
|
+
}
|
|
2721
|
+
};
|
|
2722
|
+
const { windowController, port } = await WindowService$1.openAndInitializeWalletServiceWindow({
|
|
2520
2723
|
url: msg.payload.url,
|
|
2521
2724
|
windowId: msg.payload.windowId,
|
|
2522
2725
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2523
2726
|
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2524
|
-
|
|
2727
|
+
sdkVersion: airKitVersion,
|
|
2728
|
+
enableAutomation: this.shouldEnableAutomation(),
|
|
2729
|
+
onRetry,
|
|
2525
2730
|
});
|
|
2526
|
-
windowController.onClose(() =>
|
|
2527
|
-
|
|
2731
|
+
windowController.onClose(async () => await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendWindowClosed(msg.payload.windowId));
|
|
2732
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowSuccessResponse(msg.payload.windowId, port);
|
|
2528
2733
|
}
|
|
2529
2734
|
catch (err) {
|
|
2530
2735
|
const error = ensureError(err);
|
|
2531
|
-
|
|
2736
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowErrorResponse(msg.payload.windowId, error);
|
|
2532
2737
|
}
|
|
2533
2738
|
break;
|
|
2534
2739
|
}
|
|
@@ -2573,7 +2778,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2573
2778
|
};
|
|
2574
2779
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2575
2780
|
// Logout auth session
|
|
2576
|
-
await
|
|
2781
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").logout();
|
|
2577
2782
|
// Destroy the auth iframe
|
|
2578
2783
|
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2579
2784
|
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
@@ -2581,7 +2786,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2581
2786
|
__classPrivateFieldSet(this, _AirService_authIframeController, undefined, "f");
|
|
2582
2787
|
}
|
|
2583
2788
|
// Close the message service
|
|
2584
|
-
|
|
2789
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").close();
|
|
2585
2790
|
__classPrivateFieldSet(this, _AirService_isAuthInitialized, false, "f");
|
|
2586
2791
|
}, _AirService_cleanUpWallet = async function _AirService_cleanUpWallet() {
|
|
2587
2792
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
@@ -2589,16 +2794,16 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2589
2794
|
// Logout wallet and destroy the wallet iframe
|
|
2590
2795
|
const walletIframeElement = __classPrivateFieldGet(this, _AirService_walletIframeController, "f")?.iframeElement;
|
|
2591
2796
|
if (isElement(walletIframeElement) && window.document.body.contains(walletIframeElement)) {
|
|
2592
|
-
await
|
|
2797
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").logout();
|
|
2593
2798
|
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").destroy();
|
|
2594
2799
|
__classPrivateFieldSet(this, _AirService_walletIframeController, undefined, "f");
|
|
2595
2800
|
}
|
|
2596
2801
|
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2597
2802
|
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2598
|
-
|
|
2803
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").resetWalletCommunication();
|
|
2599
2804
|
}
|
|
2600
2805
|
// Close the message service
|
|
2601
|
-
|
|
2806
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").close();
|
|
2602
2807
|
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2603
2808
|
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2604
2809
|
};
|
|
@@ -2612,7 +2817,9 @@ exports.InvalidParamsRpcError = InvalidParamsRpcError;
|
|
|
2612
2817
|
exports.InvalidRequestRpcError = InvalidRequestRpcError;
|
|
2613
2818
|
exports.MethodNotFoundRpcError = MethodNotFoundRpcError;
|
|
2614
2819
|
exports.ProviderDisconnectedError = ProviderDisconnectedError;
|
|
2820
|
+
exports.ProviderRpcError = ProviderRpcError;
|
|
2615
2821
|
exports.SwitchChainError = SwitchChainError;
|
|
2822
|
+
exports.TransactionRejectedRpcError = TransactionRejectedRpcError;
|
|
2616
2823
|
exports.UnauthorizedProviderError = UnauthorizedProviderError;
|
|
2617
2824
|
exports.UnsupportedProviderMethodError = UnsupportedProviderMethodError;
|
|
2618
2825
|
exports.UserRejectedRequestError = UserRejectedRequestError;
|