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