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