@paypay/mini-app-js-sdk 2.51.0 → 2.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/client/clientUtils.d.ts +0 -3
  2. package/dist/client/communicationWithCore.d.ts +2 -1
  3. package/dist/client/functions/coreWindowBridgeFunctions.d.ts +5 -0
  4. package/dist/client/supportedFunctionsList.d.ts +1 -1
  5. package/dist/client/windowBridgeFunctions/domFunctions.d.ts +7 -0
  6. package/dist/client/windowBridgeFunctions/index.d.ts +2 -0
  7. package/dist/client/windowBridgeFunctions/insertIframe.d.ts +11 -0
  8. package/dist/composition-api/useMakePayment.d.ts +1 -1
  9. package/dist/composition-api/usePaymentLabel.d.ts +27 -0
  10. package/dist/composition-api/usePaymentTypeTranslation.d.ts +19 -0
  11. package/dist/core/button/buttonFunctions/index.d.ts +1 -0
  12. package/dist/core/button/buttonFunctions/renderButtonUi.d.ts +17 -0
  13. package/dist/core/button/index.d.ts +3 -0
  14. package/dist/core/clientState.d.ts +3 -1
  15. package/dist/core/coreFunctions/index.d.ts +2 -0
  16. package/dist/core/coreFunctions/renderButton/index.d.ts +8 -0
  17. package/dist/core/coreFunctions/renderButton/renderButton.d.ts +6 -0
  18. package/dist/core/coreFunctions/renderButton/types.d.ts +31 -0
  19. package/dist/core/iframeVisibilityManager.d.ts +15 -0
  20. package/dist/environment-variables.d.ts +2 -0
  21. package/dist/mini-app-api.d.ts +0 -1
  22. package/dist/mini-app-js-sdk.browser.js +1 -1
  23. package/dist/mini-app-js-sdk.es.js +407 -2257
  24. package/dist/model/bridge/render.d.ts +1 -1
  25. package/dist/model/bridge/renderLoginButton.d.ts +1 -1
  26. package/dist/model/bridge/renderPayButton.d.ts +4 -2
  27. package/dist/model/makePayment.d.ts +18 -0
  28. package/dist/package/lottie/lottie.d.ts +1 -1
  29. package/dist/resources/images.d.ts +1 -0
  30. package/dist/resources/locales/payment/index.d.ts +499 -0
  31. package/dist/resources/locales/payment/ja.d.ts +249 -0
  32. package/dist/resources/locales/shared/index.d.ts +79 -0
  33. package/dist/resources/locales/shared/ja.d.ts +39 -0
  34. package/dist/types/getTransactions.d.ts +5 -0
  35. package/dist/types/init.d.ts +2 -0
  36. package/dist/types/makePayment.d.ts +5 -8
  37. package/dist/types.d.ts +4 -7
  38. package/dist/utils/analytics.d.ts +2 -1
  39. package/dist/utils/api.d.ts +19 -76
  40. package/dist/utils/clientCustomization.d.ts +3 -0
  41. package/dist/utils/getLanguage.d.ts +1 -2
  42. package/dist/utils/helper.d.ts +8 -5
  43. package/dist/utils/minimumJSSDKVersion.d.ts +1 -0
  44. package/dist/utils/userAgent.d.ts +1 -0
  45. package/dist/utils/windowBridge.d.ts +15 -2
  46. package/dist/views/coupon/components/CouponAction/index.d.ts +2 -0
  47. package/dist/views/coupon/index.d.ts +2 -0
  48. package/dist/views/make-payment/store/util-for-handle-error.d.ts +11 -0
  49. package/dist/views/make-payment/store.d.ts +22056 -0
  50. package/dist/views/make-payment/utils/paymentMethod.d.ts +4 -0
  51. package/dist/views/registerPaymentFeatures/types.d.ts +1 -1
  52. package/package.json +1 -1
@@ -18,6 +18,18 @@ var __spreadValues = (a, b) => {
18
18
  return a;
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
21
33
  var __async = (__this, __arguments, generator) => {
22
34
  return new Promise((resolve, reject) => {
23
35
  var fulfilled = (value) => {
@@ -213,6 +225,8 @@ const PPUtilFunctionName = {
213
225
  saveRefreshToken: "saveRefreshToken",
214
226
  saveCodeVerifier: "saveCodeVerifier",
215
227
  makeVisible: "makeVisible",
228
+ hideIframe: "hideIframe",
229
+ showIframe: "showIframe",
216
230
  consoleDebugInfo: "consoleDebugInfo",
217
231
  clientPopState: "clientPopState"
218
232
  };
@@ -292,14 +306,26 @@ const smartPaymentSupportedFunctions = [
292
306
  "getUAID",
293
307
  "getCashbackInformation",
294
308
  "renderCoupons",
295
- "getLoginUrl"
309
+ "getLoginUrl",
310
+ "renderButton"
296
311
  ];
297
- class PPError extends Error {
298
- constructor(message, errorCode) {
299
- super(message);
300
- this.errorCode = errorCode;
301
- }
302
- }
312
+ const JS_SDK_VERSION = "2.55.0";
313
+ const REVISION = "a78757a";
314
+ const coreBaseUrl = new URL("https://mini-app-sdk-core.paypay.ne.jp/");
315
+ const CORE_IFRAME_ORIGIN = coreBaseUrl.origin;
316
+ const CORE_IFRAME_URL = new URL(
317
+ `./iframe.html?v=${JS_SDK_VERSION}&rev=${REVISION}`,
318
+ coreBaseUrl
319
+ ).href;
320
+ const COUPON_IFRAME_URL = new URL(
321
+ `./coupon/iframe.html?v=${JS_SDK_VERSION}`,
322
+ coreBaseUrl
323
+ ).href;
324
+ new URL(
325
+ `./button/iframe.html?v=${JS_SDK_VERSION}`,
326
+ coreBaseUrl
327
+ ).href;
328
+ const SENTRY_DSN = "https://377b45f154b1fb17d8e98a6ffb67030a@o4505819519320064.ingest.sentry.io/4506579323453440";
303
329
  var MiniAppErrorType = /* @__PURE__ */ ((MiniAppErrorType2) => {
304
330
  MiniAppErrorType2["success"] = "SUCCESS";
305
331
  MiniAppErrorType2["invalidUrl"] = "INVALID_URL";
@@ -374,19 +400,123 @@ var MiniAppErrorType = /* @__PURE__ */ ((MiniAppErrorType2) => {
374
400
  MiniAppErrorType2["invalidVirtualAccount"] = "INVALID_VIRTUAL_ACCOUNT";
375
401
  return MiniAppErrorType2;
376
402
  })(MiniAppErrorType || {});
377
- const JS_SDK_VERSION = "2.51.0";
378
- const REVISION = "9c03362";
379
- const coreBaseUrl = new URL("https://mini-app-sdk-core.paypay.ne.jp/");
380
- const CORE_IFRAME_ORIGIN = coreBaseUrl.origin;
381
- const CORE_IFRAME_URL = new URL(
382
- `./iframe.html?v=${JS_SDK_VERSION}&rev=${REVISION}`,
383
- coreBaseUrl
384
- ).href;
385
- const COUPON_IFRAME_URL = new URL(
386
- `./coupon/iframe.html?v=${JS_SDK_VERSION}`,
387
- coreBaseUrl
388
- ).href;
389
- const SENTRY_DSN = "https://377b45f154b1fb17d8e98a6ffb67030a@o4505819519320064.ingest.sentry.io/4506579323453440";
403
+ function setCookie({ name, value, options }) {
404
+ return api.set(name, value, options);
405
+ }
406
+ function getCookie({ name }) {
407
+ return api.get(name);
408
+ }
409
+ function removeCookie$1({ name, options }) {
410
+ return api.remove(name, options);
411
+ }
412
+ function setLocalStorage({
413
+ name,
414
+ value
415
+ }) {
416
+ return localStorage.setItem(name, value);
417
+ }
418
+ function getLocalStorage({ name }) {
419
+ return localStorage.getItem(name);
420
+ }
421
+ function removeLocalStorage({ name }) {
422
+ return localStorage.removeItem(name);
423
+ }
424
+ function setSessionStorage({
425
+ name,
426
+ value
427
+ }) {
428
+ return sessionStorage.setItem(name, value);
429
+ }
430
+ function getSessionStorage({ name }) {
431
+ return sessionStorage.getItem(name);
432
+ }
433
+ function removeSessionStorage({ name }) {
434
+ return sessionStorage.removeItem(name);
435
+ }
436
+ function removeQueryParametersFromUrl(removeParams) {
437
+ const url = new URL(window.location.href);
438
+ removeParams.forEach((param) => url.searchParams.delete(param));
439
+ const newURL = `${url.pathname}${url.search}`;
440
+ history.replaceState(history.state, "", newURL);
441
+ }
442
+ function getUrl() {
443
+ return window.location.href;
444
+ }
445
+ class PPError extends Error {
446
+ constructor(message, errorCode) {
447
+ super(message);
448
+ this.errorCode = errorCode;
449
+ }
450
+ }
451
+ function insertIframe(_a) {
452
+ var {
453
+ containerSelector: containerQuerySelector,
454
+ attributes: _b
455
+ } = _a, _c = _b, { styles } = _c, attributes = __objRest(_c, ["styles"]);
456
+ return new Promise((resolve, reject) => {
457
+ const container = document.querySelector(containerQuerySelector);
458
+ if (!container) {
459
+ reject(
460
+ new PPError(
461
+ `Container with selector "${containerQuerySelector}" not found.`,
462
+ MiniAppErrorType.badRequestInsufficientParameter
463
+ )
464
+ );
465
+ return;
466
+ }
467
+ const iframe = document.createElement("iframe");
468
+ iframe.onload = () => {
469
+ resolve(true);
470
+ };
471
+ iframe.onerror = () => {
472
+ reject(
473
+ new PPError("Failed to load iframe.", MiniAppErrorType.notReachable)
474
+ );
475
+ };
476
+ Object.assign(iframe.style, styles);
477
+ Object.entries(attributes).forEach(([key, value]) => {
478
+ iframe.setAttribute(key, value);
479
+ });
480
+ container.innerHTML = "";
481
+ container.appendChild(iframe);
482
+ });
483
+ }
484
+ function removeElement({ selector }) {
485
+ const element = document.querySelector(selector);
486
+ if (element) {
487
+ element.remove();
488
+ return true;
489
+ }
490
+ return false;
491
+ }
492
+ function updateElementStyle({
493
+ selector,
494
+ styles
495
+ }) {
496
+ const element = document.querySelector(selector);
497
+ if (element) {
498
+ Object.assign(element.style, styles);
499
+ return true;
500
+ }
501
+ return false;
502
+ }
503
+ const clientWindowBridgeFunctions = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
504
+ __proto__: null,
505
+ getCookie,
506
+ getLocalStorage,
507
+ getSessionStorage,
508
+ getUrl,
509
+ insertIframe,
510
+ removeCookie: removeCookie$1,
511
+ removeElement,
512
+ removeLocalStorage,
513
+ removeQueryParametersFromUrl,
514
+ removeSessionStorage,
515
+ setCookie,
516
+ setLocalStorage,
517
+ setSessionStorage,
518
+ updateElementStyle
519
+ }, Symbol.toStringTag, { value: "Module" }));
390
520
  const SDK_VERSION = "8.45.1";
391
521
  const GLOBAL_OBJ = globalThis;
392
522
  function getGlobalSingleton(name, creator, obj) {
@@ -1270,6 +1400,109 @@ function addBreadcrumbToSentry(breadcrumb) {
1270
1400
  addBreadcrumb(breadcrumb);
1271
1401
  }
1272
1402
  }
1403
+ class LocalStorageProxy {
1404
+ constructor() {
1405
+ var _a;
1406
+ this.useLocalStorage = true;
1407
+ this.memoryStorage = {};
1408
+ try {
1409
+ localStorage.setItem(
1410
+ PpLocalStorageKey.initializedAt,
1411
+ Date.now().toString()
1412
+ );
1413
+ for (let i = 0; i < localStorage.length; i++) {
1414
+ const key = localStorage.key(i);
1415
+ if (key != null) {
1416
+ this.memoryStorage[key] = (_a = localStorage.getItem(key)) != null ? _a : "";
1417
+ }
1418
+ }
1419
+ } catch (e) {
1420
+ this.useLocalStorage = false;
1421
+ }
1422
+ }
1423
+ getItem(key) {
1424
+ var _a, _b;
1425
+ if (this.useLocalStorage) {
1426
+ try {
1427
+ if (localStorage.getItem(PpLocalStorageKey.initializedAt) != null) {
1428
+ const val = localStorage.getItem(key);
1429
+ if (val != null) {
1430
+ return val;
1431
+ }
1432
+ return (_a = api.get(key)) != null ? _a : null;
1433
+ } else {
1434
+ console.debug("local storage value has lost unexpectedly.");
1435
+ addBreadcrumbToSentry({
1436
+ message: "local storage value has lost unexpectedly.",
1437
+ category: "storage"
1438
+ });
1439
+ }
1440
+ } catch (e) {
1441
+ }
1442
+ }
1443
+ this.useLocalStorage = false;
1444
+ return (_b = this.memoryStorage[key]) != null ? _b : null;
1445
+ }
1446
+ setItem(key, value) {
1447
+ this.memoryStorage[key] = value;
1448
+ if (this.useLocalStorage) {
1449
+ try {
1450
+ localStorage.setItem(key, value);
1451
+ removeCookie(key);
1452
+ } catch (e) {
1453
+ this.useLocalStorage = false;
1454
+ console.warn("localStorage has become unavailable.");
1455
+ }
1456
+ }
1457
+ }
1458
+ removeItem(key) {
1459
+ delete this.memoryStorage[key];
1460
+ try {
1461
+ localStorage.removeItem(key);
1462
+ removeCookie(key);
1463
+ } catch (e) {
1464
+ this.useLocalStorage = false;
1465
+ }
1466
+ }
1467
+ clear() {
1468
+ try {
1469
+ localStorage.clear();
1470
+ localStorage.setItem(
1471
+ PpLocalStorageKey.initializedAt,
1472
+ Date.now().toString()
1473
+ );
1474
+ clearAllCookies();
1475
+ } catch (e) {
1476
+ }
1477
+ this.memoryStorage = {};
1478
+ }
1479
+ }
1480
+ const cookieAttributes = Object.freeze(__spreadValues({
1481
+ expires: 365,
1482
+ sameSite: "None"
1483
+ }, { secure: true, Partitioned: true }));
1484
+ function writeCookie(key, value) {
1485
+ api.set(key, value, cookieAttributes);
1486
+ }
1487
+ function removeCookie(key) {
1488
+ api.remove(key, cookieAttributes);
1489
+ }
1490
+ (() => {
1491
+ return new LocalStorageProxy();
1492
+ })();
1493
+ function clearAllCookies() {
1494
+ const cookies = api.get();
1495
+ for (const key in cookies) {
1496
+ removeCookie(key);
1497
+ }
1498
+ writeCookie(PpLocalStorageKey.initializedAt, Date.now().toString());
1499
+ }
1500
+ function isFunction(val) {
1501
+ return typeof val === "function";
1502
+ }
1503
+ function getRandomString() {
1504
+ return Math.random().toString(36).substring(7);
1505
+ }
1273
1506
  function middlewareHandler(middlewares, message, messageHandler, params) {
1274
1507
  let index = -1;
1275
1508
  const next = (_params) => __async(this, null, function* () {
@@ -1288,12 +1521,27 @@ const deepClone = (obj) => {
1288
1521
  }
1289
1522
  return JSON.parse(JSON.stringify(obj));
1290
1523
  };
1524
+ const hasCallbacks = (params) => {
1525
+ var _a;
1526
+ const callbacks = (_a = params[0]) == null ? void 0 : _a.callbacks;
1527
+ return typeof callbacks === "object" && callbacks !== null;
1528
+ };
1529
+ const getCallbacksPlaceholder = (callbacks) => {
1530
+ return Object.keys(callbacks).reduce(
1531
+ (cbs, name) => {
1532
+ cbs[name] = true;
1533
+ return cbs;
1534
+ },
1535
+ {}
1536
+ );
1537
+ };
1291
1538
  class WindowBridge {
1292
1539
  constructor(functions, allowedOrigins, middlewares = []) {
1293
- this.deferredCallbacks = {};
1540
+ this.deferredPromises = {};
1294
1541
  this.functions = functions;
1295
1542
  this.allowedOrigins = allowedOrigins;
1296
1543
  this.middlewares = middlewares;
1544
+ this.registeredCallbacks = {};
1297
1545
  this.messageEventHandler = this.messageEventHandler.bind(this);
1298
1546
  this.subscribeToMessageEvent();
1299
1547
  }
@@ -1332,6 +1580,10 @@ class WindowBridge {
1332
1580
  this.handleResponse(
1333
1581
  receivedMessageEvent
1334
1582
  );
1583
+ } else if (receivedMessageEvent.data.type === "callback") {
1584
+ this.handleCallback(
1585
+ receivedMessageEvent
1586
+ );
1335
1587
  }
1336
1588
  }
1337
1589
  handleRequest(receivedMessageEvent) {
@@ -1346,6 +1598,18 @@ class WindowBridge {
1346
1598
  MiniAppErrorType.functionNotFound
1347
1599
  );
1348
1600
  }
1601
+ const params = deepClone(receivedMessageEvent.data.params);
1602
+ if (hasCallbacks(params)) {
1603
+ params[0].callbacks = Object.keys(params[0].callbacks).reduce(
1604
+ (cbs, name) => {
1605
+ cbs[name] = (...args) => {
1606
+ this.invokeCallback(receivedMessageEvent, name, args);
1607
+ };
1608
+ return cbs;
1609
+ },
1610
+ {}
1611
+ );
1612
+ }
1349
1613
  try {
1350
1614
  this.sendSuccessResponse(
1351
1615
  receivedMessageEvent,
@@ -1353,7 +1617,7 @@ class WindowBridge {
1353
1617
  [...this.middlewares, ...(_a = functionToInvoke.middlewares) != null ? _a : []],
1354
1618
  receivedMessageEvent,
1355
1619
  functionToInvoke,
1356
- deepClone(receivedMessageEvent.data.params)
1620
+ params
1357
1621
  )
1358
1622
  );
1359
1623
  } catch (error) {
@@ -1370,17 +1634,18 @@ class WindowBridge {
1370
1634
  });
1371
1635
  }
1372
1636
  handleResponse(receivedMessageEvent) {
1373
- if (!this.deferredCallbacks[receivedMessageEvent.data.key]) {
1637
+ if (!this.deferredPromises[receivedMessageEvent.data.key]) {
1374
1638
  console.warn(
1375
- `Callback for ${receivedMessageEvent.data.functionName} not found`
1639
+ `Promise for ${receivedMessageEvent.data.functionName} not found`
1376
1640
  );
1377
1641
  return;
1378
1642
  }
1379
- const [resolve, reject] = this.deferredCallbacks[receivedMessageEvent.data.key];
1380
- delete this.deferredCallbacks[receivedMessageEvent.data.key];
1643
+ const [resolve, reject] = this.deferredPromises[receivedMessageEvent.data.key];
1644
+ delete this.deferredPromises[receivedMessageEvent.data.key];
1381
1645
  if (receivedMessageEvent.data.status === "success") {
1382
1646
  resolve(receivedMessageEvent.data.result);
1383
1647
  } else {
1648
+ delete this.registeredCallbacks[receivedMessageEvent.data.key];
1384
1649
  reject(
1385
1650
  new PPError(
1386
1651
  receivedMessageEvent.data.message,
@@ -1389,6 +1654,18 @@ class WindowBridge {
1389
1654
  );
1390
1655
  }
1391
1656
  }
1657
+ handleCallback(receivedMessageEvent) {
1658
+ var _a;
1659
+ const { key, callbackName, args } = receivedMessageEvent.data;
1660
+ const callback = (_a = this.registeredCallbacks[key]) == null ? void 0 : _a[callbackName];
1661
+ if (!callback) {
1662
+ console.warn(
1663
+ `Callback with key ${key} and name ${callbackName} not found.`
1664
+ );
1665
+ return;
1666
+ }
1667
+ callback(...args);
1668
+ }
1392
1669
  sendErrorResponse(receivedMessageEvent, message, errorCode) {
1393
1670
  sendWindowBridgeErrorToSentry(
1394
1671
  receivedMessageEvent.data.functionName,
@@ -1408,18 +1685,81 @@ class WindowBridge {
1408
1685
  });
1409
1686
  }
1410
1687
  sendResponse(receivedMessageEvent, data) {
1411
- var _a;
1412
- (_a = receivedMessageEvent.source) == null ? void 0 : _a.postMessage(
1688
+ this.sendMessage(
1689
+ receivedMessageEvent.source,
1690
+ receivedMessageEvent.origin,
1413
1691
  __spreadValues({
1414
- forWindowBridge: true,
1415
1692
  type: "response",
1416
1693
  key: receivedMessageEvent.data.key,
1417
1694
  functionName: receivedMessageEvent.data.functionName
1695
+ }, data)
1696
+ );
1697
+ }
1698
+ invokeCallback(receivedMessageEvent, callbackName, args) {
1699
+ this.sendMessage(
1700
+ receivedMessageEvent.source,
1701
+ receivedMessageEvent.origin,
1702
+ {
1703
+ type: "callback",
1704
+ key: receivedMessageEvent.data.key,
1705
+ functionName: receivedMessageEvent.data.functionName,
1706
+ callbackName,
1707
+ args
1708
+ }
1709
+ );
1710
+ }
1711
+ sendMessage(targetWindow, origin, data) {
1712
+ targetWindow.postMessage(
1713
+ __spreadValues({
1714
+ forWindowBridge: true
1418
1715
  }, deepClone(data)),
1419
- // Just a hack to overcome weird function overload mismatch
1420
- receivedMessageEvent.origin
1716
+ origin
1421
1717
  );
1422
1718
  }
1719
+ sendRequest(getTargetWindow, targetWindowOrigin, functionName, params) {
1720
+ return new Promise((resolve, reject) => __async(this, null, function* () {
1721
+ const key = `${functionName}--${getRandomString()}`;
1722
+ try {
1723
+ const targetWindow = yield getTargetWindow();
1724
+ if (!targetWindow) {
1725
+ throw new Error("Target window is undefined");
1726
+ }
1727
+ let messageParams = params[0];
1728
+ if (hasCallbacks(params)) {
1729
+ const callbacks = params[0].callbacks;
1730
+ this.addFunctionCallbacks(key, callbacks);
1731
+ messageParams = __spreadProps(__spreadValues({}, params[0]), {
1732
+ // Convert callbacks to a format that can be sent over postMessage
1733
+ callbacks: getCallbacksPlaceholder(callbacks)
1734
+ });
1735
+ }
1736
+ this.deferredPromises[key] = [resolve, reject];
1737
+ this.sendMessage(targetWindow, targetWindowOrigin, {
1738
+ type: "request",
1739
+ key,
1740
+ functionName,
1741
+ params: [messageParams]
1742
+ });
1743
+ } catch (error) {
1744
+ delete this.deferredPromises[key];
1745
+ delete this.registeredCallbacks[key];
1746
+ reject(
1747
+ new PPError(
1748
+ error.message,
1749
+ MiniAppErrorType.messageSendingFailed
1750
+ )
1751
+ );
1752
+ }
1753
+ }));
1754
+ }
1755
+ addFunctionCallbacks(key, callbacks) {
1756
+ Object.keys(callbacks).forEach((callbackName) => {
1757
+ if (typeof callbacks[callbackName] !== "function") {
1758
+ throw new Error(`Callback ${callbackName} is not a function`);
1759
+ }
1760
+ });
1761
+ this.registeredCallbacks[key] = __spreadValues({}, callbacks);
1762
+ }
1423
1763
  /**
1424
1764
  * A static method to create a new `WindowBridge` instance and enforce singleton pattern
1425
1765
  * @param functions an objection of functions that can be invoked on the current window
@@ -1479,2192 +1819,22 @@ class WindowBridge {
1479
1819
  getTargetWindowFunctionProxy(getTargetWindow, targetWindowOrigin) {
1480
1820
  return new Proxy(this, {
1481
1821
  get(windowBridgeInstance, functionName) {
1482
- return (...params) => (
1483
- // eslint-disable-next-line no-async-promise-executor, @typescript-eslint/no-misused-promises
1484
- new Promise((resolve, reject) => __async(this, null, function* () {
1485
- const functionNameString = functionName.toString();
1486
- const key = `${functionNameString}--${getRandomString()}`;
1487
- try {
1488
- const targetWindow = yield getTargetWindow();
1489
- if (!targetWindow) {
1490
- throw new Error("Target window is undefined");
1491
- }
1492
- windowBridgeInstance.deferredCallbacks[key] = [resolve, reject];
1493
- targetWindow.postMessage(
1494
- {
1495
- forWindowBridge: true,
1496
- type: "request",
1497
- functionName: functionNameString,
1498
- key,
1499
- params: deepClone(params)
1500
- },
1501
- targetWindowOrigin
1502
- );
1503
- } catch (error) {
1504
- delete windowBridgeInstance.deferredCallbacks[key];
1505
- reject(
1506
- new PPError(
1507
- error.message,
1508
- MiniAppErrorType.messageSendingFailed
1509
- )
1510
- );
1511
- }
1512
- }))
1822
+ return (...params) => windowBridgeInstance.sendRequest(
1823
+ getTargetWindow,
1824
+ targetWindowOrigin,
1825
+ functionName.toString(),
1826
+ params
1513
1827
  );
1514
1828
  }
1515
1829
  });
1516
1830
  }
1517
1831
  }
1518
- const BROWSER_ALIASES_MAP = {
1519
- "Amazon Silk": "amazon_silk",
1520
- "Android Browser": "android",
1521
- Bada: "bada",
1522
- BlackBerry: "blackberry",
1523
- Chrome: "chrome",
1524
- Chromium: "chromium",
1525
- Electron: "electron",
1526
- Epiphany: "epiphany",
1527
- Firefox: "firefox",
1528
- Focus: "focus",
1529
- Generic: "generic",
1530
- "Google Search": "google_search",
1531
- Googlebot: "googlebot",
1532
- "Internet Explorer": "ie",
1533
- "K-Meleon": "k_meleon",
1534
- Maxthon: "maxthon",
1535
- "Microsoft Edge": "edge",
1536
- "MZ Browser": "mz",
1537
- "NAVER Whale Browser": "naver",
1538
- Opera: "opera",
1539
- "Opera Coast": "opera_coast",
1540
- PhantomJS: "phantomjs",
1541
- Puffin: "puffin",
1542
- QupZilla: "qupzilla",
1543
- QQ: "qq",
1544
- QQLite: "qqlite",
1545
- Safari: "safari",
1546
- Sailfish: "sailfish",
1547
- "Samsung Internet for Android": "samsung_internet",
1548
- SeaMonkey: "seamonkey",
1549
- Sleipnir: "sleipnir",
1550
- Swing: "swing",
1551
- Tizen: "tizen",
1552
- "UC Browser": "uc",
1553
- Vivaldi: "vivaldi",
1554
- "WebOS Browser": "webos",
1555
- WeChat: "wechat",
1556
- "Yandex Browser": "yandex",
1557
- Roku: "roku"
1558
- };
1559
- const BROWSER_MAP = {
1560
- amazon_silk: "Amazon Silk",
1561
- android: "Android Browser",
1562
- bada: "Bada",
1563
- blackberry: "BlackBerry",
1564
- chrome: "Chrome",
1565
- chromium: "Chromium",
1566
- electron: "Electron",
1567
- epiphany: "Epiphany",
1568
- firefox: "Firefox",
1569
- focus: "Focus",
1570
- generic: "Generic",
1571
- googlebot: "Googlebot",
1572
- google_search: "Google Search",
1573
- ie: "Internet Explorer",
1574
- k_meleon: "K-Meleon",
1575
- maxthon: "Maxthon",
1576
- edge: "Microsoft Edge",
1577
- mz: "MZ Browser",
1578
- naver: "NAVER Whale Browser",
1579
- opera: "Opera",
1580
- opera_coast: "Opera Coast",
1581
- phantomjs: "PhantomJS",
1582
- puffin: "Puffin",
1583
- qupzilla: "QupZilla",
1584
- qq: "QQ Browser",
1585
- qqlite: "QQ Browser Lite",
1586
- safari: "Safari",
1587
- sailfish: "Sailfish",
1588
- samsung_internet: "Samsung Internet for Android",
1589
- seamonkey: "SeaMonkey",
1590
- sleipnir: "Sleipnir",
1591
- swing: "Swing",
1592
- tizen: "Tizen",
1593
- uc: "UC Browser",
1594
- vivaldi: "Vivaldi",
1595
- webos: "WebOS Browser",
1596
- wechat: "WeChat",
1597
- yandex: "Yandex Browser"
1598
- };
1599
- const PLATFORMS_MAP = {
1600
- tablet: "tablet",
1601
- mobile: "mobile",
1602
- desktop: "desktop",
1603
- tv: "tv"
1604
- };
1605
- const OS_MAP = {
1606
- WindowsPhone: "Windows Phone",
1607
- Windows: "Windows",
1608
- MacOS: "macOS",
1609
- iOS: "iOS",
1610
- Android: "Android",
1611
- WebOS: "WebOS",
1612
- BlackBerry: "BlackBerry",
1613
- Bada: "Bada",
1614
- Tizen: "Tizen",
1615
- Linux: "Linux",
1616
- ChromeOS: "Chrome OS",
1617
- PlayStation4: "PlayStation 4",
1618
- Roku: "Roku"
1619
- };
1620
- const ENGINE_MAP = {
1621
- EdgeHTML: "EdgeHTML",
1622
- Blink: "Blink",
1623
- Trident: "Trident",
1624
- Presto: "Presto",
1625
- Gecko: "Gecko",
1626
- WebKit: "WebKit"
1627
- };
1628
- class Utils {
1629
- /**
1630
- * Get first matched item for a string
1631
- * @param {RegExp} regexp
1632
- * @param {String} ua
1633
- * @return {Array|{index: number, input: string}|*|boolean|string}
1634
- */
1635
- static getFirstMatch(regexp, ua) {
1636
- const match = ua.match(regexp);
1637
- return match && match.length > 0 && match[1] || "";
1638
- }
1639
- /**
1640
- * Get second matched item for a string
1641
- * @param regexp
1642
- * @param {String} ua
1643
- * @return {Array|{index: number, input: string}|*|boolean|string}
1644
- */
1645
- static getSecondMatch(regexp, ua) {
1646
- const match = ua.match(regexp);
1647
- return match && match.length > 1 && match[2] || "";
1648
- }
1649
- /**
1650
- * Match a regexp and return a constant or undefined
1651
- * @param {RegExp} regexp
1652
- * @param {String} ua
1653
- * @param {*} _const Any const that will be returned if regexp matches the string
1654
- * @return {*}
1655
- */
1656
- static matchAndReturnConst(regexp, ua, _const) {
1657
- if (regexp.test(ua)) {
1658
- return _const;
1659
- }
1660
- return void 0;
1661
- }
1662
- static getWindowsVersionName(version) {
1663
- switch (version) {
1664
- case "NT":
1665
- return "NT";
1666
- case "XP":
1667
- return "XP";
1668
- case "NT 5.0":
1669
- return "2000";
1670
- case "NT 5.1":
1671
- return "XP";
1672
- case "NT 5.2":
1673
- return "2003";
1674
- case "NT 6.0":
1675
- return "Vista";
1676
- case "NT 6.1":
1677
- return "7";
1678
- case "NT 6.2":
1679
- return "8";
1680
- case "NT 6.3":
1681
- return "8.1";
1682
- case "NT 10.0":
1683
- return "10";
1684
- default:
1685
- return void 0;
1686
- }
1687
- }
1688
- /**
1689
- * Get macOS version name
1690
- * 10.5 - Leopard
1691
- * 10.6 - Snow Leopard
1692
- * 10.7 - Lion
1693
- * 10.8 - Mountain Lion
1694
- * 10.9 - Mavericks
1695
- * 10.10 - Yosemite
1696
- * 10.11 - El Capitan
1697
- * 10.12 - Sierra
1698
- * 10.13 - High Sierra
1699
- * 10.14 - Mojave
1700
- * 10.15 - Catalina
1701
- *
1702
- * @example
1703
- * getMacOSVersionName("10.14") // 'Mojave'
1704
- *
1705
- * @param {string} version
1706
- * @return {string} versionName
1707
- */
1708
- static getMacOSVersionName(version) {
1709
- const v = version.split(".").splice(0, 2).map((s) => parseInt(s, 10) || 0);
1710
- v.push(0);
1711
- if (v[0] !== 10) return void 0;
1712
- switch (v[1]) {
1713
- case 5:
1714
- return "Leopard";
1715
- case 6:
1716
- return "Snow Leopard";
1717
- case 7:
1718
- return "Lion";
1719
- case 8:
1720
- return "Mountain Lion";
1721
- case 9:
1722
- return "Mavericks";
1723
- case 10:
1724
- return "Yosemite";
1725
- case 11:
1726
- return "El Capitan";
1727
- case 12:
1728
- return "Sierra";
1729
- case 13:
1730
- return "High Sierra";
1731
- case 14:
1732
- return "Mojave";
1733
- case 15:
1734
- return "Catalina";
1735
- default:
1736
- return void 0;
1737
- }
1738
- }
1739
- /**
1740
- * Get Android version name
1741
- * 1.5 - Cupcake
1742
- * 1.6 - Donut
1743
- * 2.0 - Eclair
1744
- * 2.1 - Eclair
1745
- * 2.2 - Froyo
1746
- * 2.x - Gingerbread
1747
- * 3.x - Honeycomb
1748
- * 4.0 - Ice Cream Sandwich
1749
- * 4.1 - Jelly Bean
1750
- * 4.4 - KitKat
1751
- * 5.x - Lollipop
1752
- * 6.x - Marshmallow
1753
- * 7.x - Nougat
1754
- * 8.x - Oreo
1755
- * 9.x - Pie
1756
- *
1757
- * @example
1758
- * getAndroidVersionName("7.0") // 'Nougat'
1759
- *
1760
- * @param {string} version
1761
- * @return {string} versionName
1762
- */
1763
- static getAndroidVersionName(version) {
1764
- const v = version.split(".").splice(0, 2).map((s) => parseInt(s, 10) || 0);
1765
- v.push(0);
1766
- if (v[0] === 1 && v[1] < 5) return void 0;
1767
- if (v[0] === 1 && v[1] < 6) return "Cupcake";
1768
- if (v[0] === 1 && v[1] >= 6) return "Donut";
1769
- if (v[0] === 2 && v[1] < 2) return "Eclair";
1770
- if (v[0] === 2 && v[1] === 2) return "Froyo";
1771
- if (v[0] === 2 && v[1] > 2) return "Gingerbread";
1772
- if (v[0] === 3) return "Honeycomb";
1773
- if (v[0] === 4 && v[1] < 1) return "Ice Cream Sandwich";
1774
- if (v[0] === 4 && v[1] < 4) return "Jelly Bean";
1775
- if (v[0] === 4 && v[1] >= 4) return "KitKat";
1776
- if (v[0] === 5) return "Lollipop";
1777
- if (v[0] === 6) return "Marshmallow";
1778
- if (v[0] === 7) return "Nougat";
1779
- if (v[0] === 8) return "Oreo";
1780
- if (v[0] === 9) return "Pie";
1781
- return void 0;
1782
- }
1783
- /**
1784
- * Get version precisions count
1785
- *
1786
- * @example
1787
- * getVersionPrecision("1.10.3") // 3
1788
- *
1789
- * @param {string} version
1790
- * @return {number}
1791
- */
1792
- static getVersionPrecision(version) {
1793
- return version.split(".").length;
1794
- }
1795
- /**
1796
- * Calculate browser version weight
1797
- *
1798
- * @example
1799
- * compareVersions('1.10.2.1', '1.8.2.1.90') // 1
1800
- * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1
1801
- * compareVersions('1.10.2.1', '1.10.2.1'); // 0
1802
- * compareVersions('1.10.2.1', '1.0800.2'); // -1
1803
- * compareVersions('1.10.2.1', '1.10', true); // 0
1804
- *
1805
- * @param {String} versionA versions versions to compare
1806
- * @param {String} versionB versions versions to compare
1807
- * @param {boolean} [isLoose] enable loose comparison
1808
- * @return {Number} comparison result: -1 when versionA is lower,
1809
- * 1 when versionA is bigger, 0 when both equal
1810
- */
1811
- /* eslint consistent-return: 1 */
1812
- static compareVersions(versionA, versionB, isLoose = false) {
1813
- const versionAPrecision = Utils.getVersionPrecision(versionA);
1814
- const versionBPrecision = Utils.getVersionPrecision(versionB);
1815
- let precision = Math.max(versionAPrecision, versionBPrecision);
1816
- let lastPrecision = 0;
1817
- const chunks = Utils.map([versionA, versionB], (version) => {
1818
- const delta = precision - Utils.getVersionPrecision(version);
1819
- const _version = version + new Array(delta + 1).join(".0");
1820
- return Utils.map(_version.split("."), (chunk) => new Array(20 - chunk.length).join("0") + chunk).reverse();
1821
- });
1822
- if (isLoose) {
1823
- lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision);
1824
- }
1825
- precision -= 1;
1826
- while (precision >= lastPrecision) {
1827
- if (chunks[0][precision] > chunks[1][precision]) {
1828
- return 1;
1829
- }
1830
- if (chunks[0][precision] === chunks[1][precision]) {
1831
- if (precision === lastPrecision) {
1832
- return 0;
1833
- }
1834
- precision -= 1;
1835
- } else if (chunks[0][precision] < chunks[1][precision]) {
1836
- return -1;
1837
- }
1838
- }
1839
- return void 0;
1840
- }
1841
- /**
1842
- * Array::map polyfill
1843
- *
1844
- * @param {Array} arr
1845
- * @param {Function} iterator
1846
- * @return {Array}
1847
- */
1848
- static map(arr, iterator) {
1849
- const result = [];
1850
- let i;
1851
- if (Array.prototype.map) {
1852
- return Array.prototype.map.call(arr, iterator);
1853
- }
1854
- for (i = 0; i < arr.length; i += 1) {
1855
- result.push(iterator(arr[i]));
1856
- }
1857
- return result;
1858
- }
1859
- /**
1860
- * Array::find polyfill
1861
- *
1862
- * @param {Array} arr
1863
- * @param {Function} predicate
1864
- * @return {Array}
1865
- */
1866
- static find(arr, predicate) {
1867
- let i;
1868
- let l;
1869
- if (Array.prototype.find) {
1870
- return Array.prototype.find.call(arr, predicate);
1871
- }
1872
- for (i = 0, l = arr.length; i < l; i += 1) {
1873
- const value = arr[i];
1874
- if (predicate(value, i)) {
1875
- return value;
1876
- }
1877
- }
1878
- return void 0;
1879
- }
1880
- /**
1881
- * Object::assign polyfill
1882
- *
1883
- * @param {Object} obj
1884
- * @param {Object} ...objs
1885
- * @return {Object}
1886
- */
1887
- static assign(obj, ...assigners) {
1888
- const result = obj;
1889
- let i;
1890
- let l;
1891
- if (Object.assign) {
1892
- return Object.assign(obj, ...assigners);
1893
- }
1894
- for (i = 0, l = assigners.length; i < l; i += 1) {
1895
- const assigner = assigners[i];
1896
- if (typeof assigner === "object" && assigner !== null) {
1897
- const keys = Object.keys(assigner);
1898
- keys.forEach((key) => {
1899
- result[key] = assigner[key];
1900
- });
1901
- }
1902
- }
1903
- return obj;
1904
- }
1905
- /**
1906
- * Get short version/alias for a browser name
1907
- *
1908
- * @example
1909
- * getBrowserAlias('Microsoft Edge') // edge
1910
- *
1911
- * @param {string} browserName
1912
- * @return {string}
1913
- */
1914
- static getBrowserAlias(browserName) {
1915
- return BROWSER_ALIASES_MAP[browserName];
1916
- }
1917
- /**
1918
- * Get short version/alias for a browser name
1919
- *
1920
- * @example
1921
- * getBrowserAlias('edge') // Microsoft Edge
1922
- *
1923
- * @param {string} browserAlias
1924
- * @return {string}
1925
- */
1926
- static getBrowserTypeByAlias(browserAlias) {
1927
- return BROWSER_MAP[browserAlias] || "";
1928
- }
1929
- }
1930
- const commonVersionIdentifier = /version\/(\d+(\.?_?\d+)+)/i;
1931
- const browsersList = [
1932
- /* Googlebot */
1933
- {
1934
- test: [/googlebot/i],
1935
- describe(ua) {
1936
- const browser = {
1937
- name: "Googlebot"
1938
- };
1939
- const version = Utils.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1940
- if (version) {
1941
- browser.version = version;
1942
- }
1943
- return browser;
1944
- }
1945
- },
1946
- /* Opera < 13.0 */
1947
- {
1948
- test: [/opera/i],
1949
- describe(ua) {
1950
- const browser = {
1951
- name: "Opera"
1952
- };
1953
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, ua);
1954
- if (version) {
1955
- browser.version = version;
1956
- }
1957
- return browser;
1958
- }
1959
- },
1960
- /* Opera > 13.0 */
1961
- {
1962
- test: [/opr\/|opios/i],
1963
- describe(ua) {
1964
- const browser = {
1965
- name: "Opera"
1966
- };
1967
- const version = Utils.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1968
- if (version) {
1969
- browser.version = version;
1970
- }
1971
- return browser;
1972
- }
1973
- },
1974
- {
1975
- test: [/SamsungBrowser/i],
1976
- describe(ua) {
1977
- const browser = {
1978
- name: "Samsung Internet for Android"
1979
- };
1980
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
1981
- if (version) {
1982
- browser.version = version;
1983
- }
1984
- return browser;
1985
- }
1986
- },
1987
- {
1988
- test: [/Whale/i],
1989
- describe(ua) {
1990
- const browser = {
1991
- name: "NAVER Whale Browser"
1992
- };
1993
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, ua);
1994
- if (version) {
1995
- browser.version = version;
1996
- }
1997
- return browser;
1998
- }
1999
- },
2000
- {
2001
- test: [/MZBrowser/i],
2002
- describe(ua) {
2003
- const browser = {
2004
- name: "MZ Browser"
2005
- };
2006
- const version = Utils.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2007
- if (version) {
2008
- browser.version = version;
2009
- }
2010
- return browser;
2011
- }
2012
- },
2013
- {
2014
- test: [/focus/i],
2015
- describe(ua) {
2016
- const browser = {
2017
- name: "Focus"
2018
- };
2019
- const version = Utils.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2020
- if (version) {
2021
- browser.version = version;
2022
- }
2023
- return browser;
2024
- }
2025
- },
2026
- {
2027
- test: [/swing/i],
2028
- describe(ua) {
2029
- const browser = {
2030
- name: "Swing"
2031
- };
2032
- const version = Utils.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2033
- if (version) {
2034
- browser.version = version;
2035
- }
2036
- return browser;
2037
- }
2038
- },
2039
- {
2040
- test: [/coast/i],
2041
- describe(ua) {
2042
- const browser = {
2043
- name: "Opera Coast"
2044
- };
2045
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, ua);
2046
- if (version) {
2047
- browser.version = version;
2048
- }
2049
- return browser;
2050
- }
2051
- },
2052
- {
2053
- test: [/opt\/\d+(?:.?_?\d+)+/i],
2054
- describe(ua) {
2055
- const browser = {
2056
- name: "Opera Touch"
2057
- };
2058
- const version = Utils.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2059
- if (version) {
2060
- browser.version = version;
2061
- }
2062
- return browser;
2063
- }
2064
- },
2065
- {
2066
- test: [/yabrowser/i],
2067
- describe(ua) {
2068
- const browser = {
2069
- name: "Yandex Browser"
2070
- };
2071
- const version = Utils.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2072
- if (version) {
2073
- browser.version = version;
2074
- }
2075
- return browser;
2076
- }
2077
- },
2078
- {
2079
- test: [/ucbrowser/i],
2080
- describe(ua) {
2081
- const browser = {
2082
- name: "UC Browser"
2083
- };
2084
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
2085
- if (version) {
2086
- browser.version = version;
2087
- }
2088
- return browser;
2089
- }
2090
- },
2091
- {
2092
- test: [/Maxthon|mxios/i],
2093
- describe(ua) {
2094
- const browser = {
2095
- name: "Maxthon"
2096
- };
2097
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, ua);
2098
- if (version) {
2099
- browser.version = version;
2100
- }
2101
- return browser;
2102
- }
2103
- },
2104
- {
2105
- test: [/epiphany/i],
2106
- describe(ua) {
2107
- const browser = {
2108
- name: "Epiphany"
2109
- };
2110
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, ua);
2111
- if (version) {
2112
- browser.version = version;
2113
- }
2114
- return browser;
2115
- }
2116
- },
2117
- {
2118
- test: [/puffin/i],
2119
- describe(ua) {
2120
- const browser = {
2121
- name: "Puffin"
2122
- };
2123
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, ua);
2124
- if (version) {
2125
- browser.version = version;
2126
- }
2127
- return browser;
2128
- }
2129
- },
2130
- {
2131
- test: [/sleipnir/i],
2132
- describe(ua) {
2133
- const browser = {
2134
- name: "Sleipnir"
2135
- };
2136
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, ua);
2137
- if (version) {
2138
- browser.version = version;
2139
- }
2140
- return browser;
2141
- }
2142
- },
2143
- {
2144
- test: [/k-meleon/i],
2145
- describe(ua) {
2146
- const browser = {
2147
- name: "K-Meleon"
2148
- };
2149
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, ua);
2150
- if (version) {
2151
- browser.version = version;
2152
- }
2153
- return browser;
2154
- }
2155
- },
2156
- {
2157
- test: [/micromessenger/i],
2158
- describe(ua) {
2159
- const browser = {
2160
- name: "WeChat"
2161
- };
2162
- const version = Utils.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2163
- if (version) {
2164
- browser.version = version;
2165
- }
2166
- return browser;
2167
- }
2168
- },
2169
- {
2170
- test: [/qqbrowser/i],
2171
- describe(ua) {
2172
- const browser = {
2173
- name: /qqbrowserlite/i.test(ua) ? "QQ Browser Lite" : "QQ Browser"
2174
- };
2175
- const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2176
- if (version) {
2177
- browser.version = version;
2178
- }
2179
- return browser;
2180
- }
2181
- },
2182
- {
2183
- test: [/msie|trident/i],
2184
- describe(ua) {
2185
- const browser = {
2186
- name: "Internet Explorer"
2187
- };
2188
- const version = Utils.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, ua);
2189
- if (version) {
2190
- browser.version = version;
2191
- }
2192
- return browser;
2193
- }
2194
- },
2195
- {
2196
- test: [/\sedg\//i],
2197
- describe(ua) {
2198
- const browser = {
2199
- name: "Microsoft Edge"
2200
- };
2201
- const version = Utils.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, ua);
2202
- if (version) {
2203
- browser.version = version;
2204
- }
2205
- return browser;
2206
- }
2207
- },
2208
- {
2209
- test: [/edg([ea]|ios)/i],
2210
- describe(ua) {
2211
- const browser = {
2212
- name: "Microsoft Edge"
2213
- };
2214
- const version = Utils.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, ua);
2215
- if (version) {
2216
- browser.version = version;
2217
- }
2218
- return browser;
2219
- }
2220
- },
2221
- {
2222
- test: [/vivaldi/i],
2223
- describe(ua) {
2224
- const browser = {
2225
- name: "Vivaldi"
2226
- };
2227
- const version = Utils.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, ua);
2228
- if (version) {
2229
- browser.version = version;
2230
- }
2231
- return browser;
2232
- }
2233
- },
2234
- {
2235
- test: [/seamonkey/i],
2236
- describe(ua) {
2237
- const browser = {
2238
- name: "SeaMonkey"
2239
- };
2240
- const version = Utils.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, ua);
2241
- if (version) {
2242
- browser.version = version;
2243
- }
2244
- return browser;
2245
- }
2246
- },
2247
- {
2248
- test: [/sailfish/i],
2249
- describe(ua) {
2250
- const browser = {
2251
- name: "Sailfish"
2252
- };
2253
- const version = Utils.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, ua);
2254
- if (version) {
2255
- browser.version = version;
2256
- }
2257
- return browser;
2258
- }
2259
- },
2260
- {
2261
- test: [/silk/i],
2262
- describe(ua) {
2263
- const browser = {
2264
- name: "Amazon Silk"
2265
- };
2266
- const version = Utils.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, ua);
2267
- if (version) {
2268
- browser.version = version;
2269
- }
2270
- return browser;
2271
- }
2272
- },
2273
- {
2274
- test: [/phantom/i],
2275
- describe(ua) {
2276
- const browser = {
2277
- name: "PhantomJS"
2278
- };
2279
- const version = Utils.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, ua);
2280
- if (version) {
2281
- browser.version = version;
2282
- }
2283
- return browser;
2284
- }
2285
- },
2286
- {
2287
- test: [/slimerjs/i],
2288
- describe(ua) {
2289
- const browser = {
2290
- name: "SlimerJS"
2291
- };
2292
- const version = Utils.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, ua);
2293
- if (version) {
2294
- browser.version = version;
2295
- }
2296
- return browser;
2297
- }
2298
- },
2299
- {
2300
- test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
2301
- describe(ua) {
2302
- const browser = {
2303
- name: "BlackBerry"
2304
- };
2305
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, ua);
2306
- if (version) {
2307
- browser.version = version;
2308
- }
2309
- return browser;
2310
- }
2311
- },
2312
- {
2313
- test: [/(web|hpw)[o0]s/i],
2314
- describe(ua) {
2315
- const browser = {
2316
- name: "WebOS Browser"
2317
- };
2318
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, ua);
2319
- if (version) {
2320
- browser.version = version;
2321
- }
2322
- return browser;
2323
- }
2324
- },
2325
- {
2326
- test: [/bada/i],
2327
- describe(ua) {
2328
- const browser = {
2329
- name: "Bada"
2330
- };
2331
- const version = Utils.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, ua);
2332
- if (version) {
2333
- browser.version = version;
2334
- }
2335
- return browser;
2336
- }
2337
- },
2338
- {
2339
- test: [/tizen/i],
2340
- describe(ua) {
2341
- const browser = {
2342
- name: "Tizen"
2343
- };
2344
- const version = Utils.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2345
- if (version) {
2346
- browser.version = version;
2347
- }
2348
- return browser;
2349
- }
2350
- },
2351
- {
2352
- test: [/qupzilla/i],
2353
- describe(ua) {
2354
- const browser = {
2355
- name: "QupZilla"
2356
- };
2357
- const version = Utils.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2358
- if (version) {
2359
- browser.version = version;
2360
- }
2361
- return browser;
2362
- }
2363
- },
2364
- {
2365
- test: [/firefox|iceweasel|fxios/i],
2366
- describe(ua) {
2367
- const browser = {
2368
- name: "Firefox"
2369
- };
2370
- const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, ua);
2371
- if (version) {
2372
- browser.version = version;
2373
- }
2374
- return browser;
2375
- }
2376
- },
2377
- {
2378
- test: [/electron/i],
2379
- describe(ua) {
2380
- const browser = {
2381
- name: "Electron"
2382
- };
2383
- const version = Utils.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, ua);
2384
- if (version) {
2385
- browser.version = version;
2386
- }
2387
- return browser;
2388
- }
2389
- },
2390
- {
2391
- test: [/MiuiBrowser/i],
2392
- describe(ua) {
2393
- const browser = {
2394
- name: "Miui"
2395
- };
2396
- const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
2397
- if (version) {
2398
- browser.version = version;
2399
- }
2400
- return browser;
2401
- }
2402
- },
2403
- {
2404
- test: [/chromium/i],
2405
- describe(ua) {
2406
- const browser = {
2407
- name: "Chromium"
2408
- };
2409
- const version = Utils.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
2410
- if (version) {
2411
- browser.version = version;
2412
- }
2413
- return browser;
2414
- }
2415
- },
2416
- {
2417
- test: [/chrome|crios|crmo/i],
2418
- describe(ua) {
2419
- const browser = {
2420
- name: "Chrome"
2421
- };
2422
- const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua);
2423
- if (version) {
2424
- browser.version = version;
2425
- }
2426
- return browser;
2427
- }
2428
- },
2429
- {
2430
- test: [/GSA/i],
2431
- describe(ua) {
2432
- const browser = {
2433
- name: "Google Search"
2434
- };
2435
- const version = Utils.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, ua);
2436
- if (version) {
2437
- browser.version = version;
2438
- }
2439
- return browser;
2440
- }
2441
- },
2442
- /* Android Browser */
2443
- {
2444
- test(parser) {
2445
- const notLikeAndroid = !parser.test(/like android/i);
2446
- const butAndroid = parser.test(/android/i);
2447
- return notLikeAndroid && butAndroid;
2448
- },
2449
- describe(ua) {
2450
- const browser = {
2451
- name: "Android Browser"
2452
- };
2453
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
2454
- if (version) {
2455
- browser.version = version;
2456
- }
2457
- return browser;
2458
- }
2459
- },
2460
- /* PlayStation 4 */
2461
- {
2462
- test: [/playstation 4/i],
2463
- describe(ua) {
2464
- const browser = {
2465
- name: "PlayStation 4"
2466
- };
2467
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
2468
- if (version) {
2469
- browser.version = version;
2470
- }
2471
- return browser;
2472
- }
2473
- },
2474
- /* Safari */
2475
- {
2476
- test: [/safari|applewebkit/i],
2477
- describe(ua) {
2478
- const browser = {
2479
- name: "Safari"
2480
- };
2481
- const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
2482
- if (version) {
2483
- browser.version = version;
2484
- }
2485
- return browser;
2486
- }
2487
- },
2488
- /* Something else */
2489
- {
2490
- test: [/.*/i],
2491
- describe(ua) {
2492
- const regexpWithoutDeviceSpec = /^(.*)\/(.*) /;
2493
- const regexpWithDeviceSpec = /^(.*)\/(.*)[ \t]\((.*)/;
2494
- const hasDeviceSpec = ua.search("\\(") !== -1;
2495
- const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec;
2496
- return {
2497
- name: Utils.getFirstMatch(regexp, ua),
2498
- version: Utils.getSecondMatch(regexp, ua)
2499
- };
2500
- }
2501
- }
2502
- ];
2503
- const osParsersList = [
2504
- /* Roku */
2505
- {
2506
- test: [/Roku\/DVP/],
2507
- describe(ua) {
2508
- const version = Utils.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, ua);
2509
- return {
2510
- name: OS_MAP.Roku,
2511
- version
2512
- };
2513
- }
2514
- },
2515
- /* Windows Phone */
2516
- {
2517
- test: [/windows phone/i],
2518
- describe(ua) {
2519
- const version = Utils.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, ua);
2520
- return {
2521
- name: OS_MAP.WindowsPhone,
2522
- version
2523
- };
2524
- }
2525
- },
2526
- /* Windows */
2527
- {
2528
- test: [/windows /i],
2529
- describe(ua) {
2530
- const version = Utils.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, ua);
2531
- const versionName = Utils.getWindowsVersionName(version);
2532
- return {
2533
- name: OS_MAP.Windows,
2534
- version,
2535
- versionName
2536
- };
2537
- }
2538
- },
2539
- /* Firefox on iPad */
2540
- {
2541
- test: [/Macintosh(.*?) FxiOS(.*?)\//],
2542
- describe(ua) {
2543
- const result = {
2544
- name: OS_MAP.iOS
2545
- };
2546
- const version = Utils.getSecondMatch(/(Version\/)(\d[\d.]+)/, ua);
2547
- if (version) {
2548
- result.version = version;
2549
- }
2550
- return result;
2551
- }
2552
- },
2553
- /* macOS */
2554
- {
2555
- test: [/macintosh/i],
2556
- describe(ua) {
2557
- const version = Utils.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, ua).replace(/[_\s]/g, ".");
2558
- const versionName = Utils.getMacOSVersionName(version);
2559
- const os = {
2560
- name: OS_MAP.MacOS,
2561
- version
2562
- };
2563
- if (versionName) {
2564
- os.versionName = versionName;
2565
- }
2566
- return os;
2567
- }
2568
- },
2569
- /* iOS */
2570
- {
2571
- test: [/(ipod|iphone|ipad)/i],
2572
- describe(ua) {
2573
- const version = Utils.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, ua).replace(/[_\s]/g, ".");
2574
- return {
2575
- name: OS_MAP.iOS,
2576
- version
2577
- };
2578
- }
2579
- },
2580
- /* Android */
2581
- {
2582
- test(parser) {
2583
- const notLikeAndroid = !parser.test(/like android/i);
2584
- const butAndroid = parser.test(/android/i);
2585
- return notLikeAndroid && butAndroid;
2586
- },
2587
- describe(ua) {
2588
- const version = Utils.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, ua);
2589
- const versionName = Utils.getAndroidVersionName(version);
2590
- const os = {
2591
- name: OS_MAP.Android,
2592
- version
2593
- };
2594
- if (versionName) {
2595
- os.versionName = versionName;
2596
- }
2597
- return os;
2598
- }
2599
- },
2600
- /* WebOS */
2601
- {
2602
- test: [/(web|hpw)[o0]s/i],
2603
- describe(ua) {
2604
- const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, ua);
2605
- const os = {
2606
- name: OS_MAP.WebOS
2607
- };
2608
- if (version && version.length) {
2609
- os.version = version;
2610
- }
2611
- return os;
2612
- }
2613
- },
2614
- /* BlackBerry */
2615
- {
2616
- test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
2617
- describe(ua) {
2618
- const version = Utils.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, ua) || Utils.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, ua) || Utils.getFirstMatch(/\bbb(\d+)/i, ua);
2619
- return {
2620
- name: OS_MAP.BlackBerry,
2621
- version
2622
- };
2623
- }
2624
- },
2625
- /* Bada */
2626
- {
2627
- test: [/bada/i],
2628
- describe(ua) {
2629
- const version = Utils.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, ua);
2630
- return {
2631
- name: OS_MAP.Bada,
2632
- version
2633
- };
2634
- }
2635
- },
2636
- /* Tizen */
2637
- {
2638
- test: [/tizen/i],
2639
- describe(ua) {
2640
- const version = Utils.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, ua);
2641
- return {
2642
- name: OS_MAP.Tizen,
2643
- version
2644
- };
2645
- }
2646
- },
2647
- /* Linux */
2648
- {
2649
- test: [/linux/i],
2650
- describe() {
2651
- return {
2652
- name: OS_MAP.Linux
2653
- };
2654
- }
2655
- },
2656
- /* Chrome OS */
2657
- {
2658
- test: [/CrOS/],
2659
- describe() {
2660
- return {
2661
- name: OS_MAP.ChromeOS
2662
- };
2663
- }
2664
- },
2665
- /* Playstation 4 */
2666
- {
2667
- test: [/PlayStation 4/],
2668
- describe(ua) {
2669
- const version = Utils.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, ua);
2670
- return {
2671
- name: OS_MAP.PlayStation4,
2672
- version
2673
- };
2674
- }
2675
- }
2676
- ];
2677
- const platformParsersList = [
2678
- /* Googlebot */
2679
- {
2680
- test: [/googlebot/i],
2681
- describe() {
2682
- return {
2683
- type: "bot",
2684
- vendor: "Google"
2685
- };
2686
- }
2687
- },
2688
- /* Huawei */
2689
- {
2690
- test: [/huawei/i],
2691
- describe(ua) {
2692
- const model = Utils.getFirstMatch(/(can-l01)/i, ua) && "Nova";
2693
- const platform = {
2694
- type: PLATFORMS_MAP.mobile,
2695
- vendor: "Huawei"
2696
- };
2697
- if (model) {
2698
- platform.model = model;
2699
- }
2700
- return platform;
2701
- }
2702
- },
2703
- /* Nexus Tablet */
2704
- {
2705
- test: [/nexus\s*(?:7|8|9|10).*/i],
2706
- describe() {
2707
- return {
2708
- type: PLATFORMS_MAP.tablet,
2709
- vendor: "Nexus"
2710
- };
2711
- }
2712
- },
2713
- /* iPad */
2714
- {
2715
- test: [/ipad/i],
2716
- describe() {
2717
- return {
2718
- type: PLATFORMS_MAP.tablet,
2719
- vendor: "Apple",
2720
- model: "iPad"
2721
- };
2722
- }
2723
- },
2724
- /* Firefox on iPad */
2725
- {
2726
- test: [/Macintosh(.*?) FxiOS(.*?)\//],
2727
- describe() {
2728
- return {
2729
- type: PLATFORMS_MAP.tablet,
2730
- vendor: "Apple",
2731
- model: "iPad"
2732
- };
2733
- }
2734
- },
2735
- /* Amazon Kindle Fire */
2736
- {
2737
- test: [/kftt build/i],
2738
- describe() {
2739
- return {
2740
- type: PLATFORMS_MAP.tablet,
2741
- vendor: "Amazon",
2742
- model: "Kindle Fire HD 7"
2743
- };
2744
- }
2745
- },
2746
- /* Another Amazon Tablet with Silk */
2747
- {
2748
- test: [/silk/i],
2749
- describe() {
2750
- return {
2751
- type: PLATFORMS_MAP.tablet,
2752
- vendor: "Amazon"
2753
- };
2754
- }
2755
- },
2756
- /* Tablet */
2757
- {
2758
- test: [/tablet(?! pc)/i],
2759
- describe() {
2760
- return {
2761
- type: PLATFORMS_MAP.tablet
2762
- };
2763
- }
2764
- },
2765
- /* iPod/iPhone */
2766
- {
2767
- test(parser) {
2768
- const iDevice = parser.test(/ipod|iphone/i);
2769
- const likeIDevice = parser.test(/like (ipod|iphone)/i);
2770
- return iDevice && !likeIDevice;
2771
- },
2772
- describe(ua) {
2773
- const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua);
2774
- return {
2775
- type: PLATFORMS_MAP.mobile,
2776
- vendor: "Apple",
2777
- model
2778
- };
2779
- }
2780
- },
2781
- /* Nexus Mobile */
2782
- {
2783
- test: [/nexus\s*[0-6].*/i, /galaxy nexus/i],
2784
- describe() {
2785
- return {
2786
- type: PLATFORMS_MAP.mobile,
2787
- vendor: "Nexus"
2788
- };
2789
- }
2790
- },
2791
- /* Mobile */
2792
- {
2793
- test: [/[^-]mobi/i],
2794
- describe() {
2795
- return {
2796
- type: PLATFORMS_MAP.mobile
2797
- };
2798
- }
2799
- },
2800
- /* BlackBerry */
2801
- {
2802
- test(parser) {
2803
- return parser.getBrowserName(true) === "blackberry";
2804
- },
2805
- describe() {
2806
- return {
2807
- type: PLATFORMS_MAP.mobile,
2808
- vendor: "BlackBerry"
2809
- };
2810
- }
2811
- },
2812
- /* Bada */
2813
- {
2814
- test(parser) {
2815
- return parser.getBrowserName(true) === "bada";
2816
- },
2817
- describe() {
2818
- return {
2819
- type: PLATFORMS_MAP.mobile
2820
- };
2821
- }
2822
- },
2823
- /* Windows Phone */
2824
- {
2825
- test(parser) {
2826
- return parser.getBrowserName() === "windows phone";
2827
- },
2828
- describe() {
2829
- return {
2830
- type: PLATFORMS_MAP.mobile,
2831
- vendor: "Microsoft"
2832
- };
2833
- }
2834
- },
2835
- /* Android Tablet */
2836
- {
2837
- test(parser) {
2838
- const osMajorVersion = Number(String(parser.getOSVersion()).split(".")[0]);
2839
- return parser.getOSName(true) === "android" && osMajorVersion >= 3;
2840
- },
2841
- describe() {
2842
- return {
2843
- type: PLATFORMS_MAP.tablet
2844
- };
2845
- }
2846
- },
2847
- /* Android Mobile */
2848
- {
2849
- test(parser) {
2850
- return parser.getOSName(true) === "android";
2851
- },
2852
- describe() {
2853
- return {
2854
- type: PLATFORMS_MAP.mobile
2855
- };
2856
- }
2857
- },
2858
- /* desktop */
2859
- {
2860
- test(parser) {
2861
- return parser.getOSName(true) === "macos";
2862
- },
2863
- describe() {
2864
- return {
2865
- type: PLATFORMS_MAP.desktop,
2866
- vendor: "Apple"
2867
- };
2868
- }
2869
- },
2870
- /* Windows */
2871
- {
2872
- test(parser) {
2873
- return parser.getOSName(true) === "windows";
2874
- },
2875
- describe() {
2876
- return {
2877
- type: PLATFORMS_MAP.desktop
2878
- };
2879
- }
2880
- },
2881
- /* Linux */
2882
- {
2883
- test(parser) {
2884
- return parser.getOSName(true) === "linux";
2885
- },
2886
- describe() {
2887
- return {
2888
- type: PLATFORMS_MAP.desktop
2889
- };
2890
- }
2891
- },
2892
- /* PlayStation 4 */
2893
- {
2894
- test(parser) {
2895
- return parser.getOSName(true) === "playstation 4";
2896
- },
2897
- describe() {
2898
- return {
2899
- type: PLATFORMS_MAP.tv
2900
- };
2901
- }
2902
- },
2903
- /* Roku */
2904
- {
2905
- test(parser) {
2906
- return parser.getOSName(true) === "roku";
2907
- },
2908
- describe() {
2909
- return {
2910
- type: PLATFORMS_MAP.tv
2911
- };
2912
- }
2913
- }
2914
- ];
2915
- const enginesParsersList = [
2916
- /* EdgeHTML */
2917
- {
2918
- test(parser) {
2919
- return parser.getBrowserName(true) === "microsoft edge";
2920
- },
2921
- describe(ua) {
2922
- const isBlinkBased = /\sedg\//i.test(ua);
2923
- if (isBlinkBased) {
2924
- return {
2925
- name: ENGINE_MAP.Blink
2926
- };
2927
- }
2928
- const version = Utils.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, ua);
2929
- return {
2930
- name: ENGINE_MAP.EdgeHTML,
2931
- version
2932
- };
2933
- }
2934
- },
2935
- /* Trident */
2936
- {
2937
- test: [/trident/i],
2938
- describe(ua) {
2939
- const engine = {
2940
- name: ENGINE_MAP.Trident
2941
- };
2942
- const version = Utils.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, ua);
2943
- if (version) {
2944
- engine.version = version;
2945
- }
2946
- return engine;
2947
- }
2948
- },
2949
- /* Presto */
2950
- {
2951
- test(parser) {
2952
- return parser.test(/presto/i);
2953
- },
2954
- describe(ua) {
2955
- const engine = {
2956
- name: ENGINE_MAP.Presto
2957
- };
2958
- const version = Utils.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, ua);
2959
- if (version) {
2960
- engine.version = version;
2961
- }
2962
- return engine;
2963
- }
2964
- },
2965
- /* Gecko */
2966
- {
2967
- test(parser) {
2968
- const isGecko = parser.test(/gecko/i);
2969
- const likeGecko = parser.test(/like gecko/i);
2970
- return isGecko && !likeGecko;
2971
- },
2972
- describe(ua) {
2973
- const engine = {
2974
- name: ENGINE_MAP.Gecko
2975
- };
2976
- const version = Utils.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, ua);
2977
- if (version) {
2978
- engine.version = version;
2979
- }
2980
- return engine;
2981
- }
2982
- },
2983
- /* Blink */
2984
- {
2985
- test: [/(apple)?webkit\/537\.36/i],
2986
- describe() {
2987
- return {
2988
- name: ENGINE_MAP.Blink
2989
- };
2990
- }
2991
- },
2992
- /* WebKit */
2993
- {
2994
- test: [/(apple)?webkit/i],
2995
- describe(ua) {
2996
- const engine = {
2997
- name: ENGINE_MAP.WebKit
2998
- };
2999
- const version = Utils.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, ua);
3000
- if (version) {
3001
- engine.version = version;
3002
- }
3003
- return engine;
3004
- }
3005
- }
3006
- ];
3007
- class Parser {
3008
- /**
3009
- * Create instance of Parser
3010
- *
3011
- * @param {String} UA User-Agent string
3012
- * @param {Boolean} [skipParsing=false] parser can skip parsing in purpose of performance
3013
- * improvements if you need to make a more particular parsing
3014
- * like {@link Parser#parseBrowser} or {@link Parser#parsePlatform}
3015
- *
3016
- * @throw {Error} in case of empty UA String
3017
- *
3018
- * @constructor
3019
- */
3020
- constructor(UA, skipParsing = false) {
3021
- if (UA === void 0 || UA === null || UA === "") {
3022
- throw new Error("UserAgent parameter can't be empty");
3023
- }
3024
- this._ua = UA;
3025
- this.parsedResult = {};
3026
- if (skipParsing !== true) {
3027
- this.parse();
3028
- }
3029
- }
3030
- /**
3031
- * Get UserAgent string of current Parser instance
3032
- * @return {String} User-Agent String of the current <Parser> object
3033
- *
3034
- * @public
3035
- */
3036
- getUA() {
3037
- return this._ua;
3038
- }
3039
- /**
3040
- * Test a UA string for a regexp
3041
- * @param {RegExp} regex
3042
- * @return {Boolean}
3043
- */
3044
- test(regex) {
3045
- return regex.test(this._ua);
3046
- }
3047
- /**
3048
- * Get parsed browser object
3049
- * @return {Object}
3050
- */
3051
- parseBrowser() {
3052
- this.parsedResult.browser = {};
3053
- const browserDescriptor = Utils.find(browsersList, (_browser) => {
3054
- if (typeof _browser.test === "function") {
3055
- return _browser.test(this);
3056
- }
3057
- if (_browser.test instanceof Array) {
3058
- return _browser.test.some((condition) => this.test(condition));
3059
- }
3060
- throw new Error("Browser's test function is not valid");
3061
- });
3062
- if (browserDescriptor) {
3063
- this.parsedResult.browser = browserDescriptor.describe(this.getUA());
3064
- }
3065
- return this.parsedResult.browser;
3066
- }
3067
- /**
3068
- * Get parsed browser object
3069
- * @return {Object}
3070
- *
3071
- * @public
3072
- */
3073
- getBrowser() {
3074
- if (this.parsedResult.browser) {
3075
- return this.parsedResult.browser;
3076
- }
3077
- return this.parseBrowser();
3078
- }
3079
- /**
3080
- * Get browser's name
3081
- * @return {String} Browser's name or an empty string
3082
- *
3083
- * @public
3084
- */
3085
- getBrowserName(toLowerCase) {
3086
- if (toLowerCase) {
3087
- return String(this.getBrowser().name).toLowerCase() || "";
3088
- }
3089
- return this.getBrowser().name || "";
3090
- }
3091
- /**
3092
- * Get browser's version
3093
- * @return {String} version of browser
3094
- *
3095
- * @public
3096
- */
3097
- getBrowserVersion() {
3098
- return this.getBrowser().version;
3099
- }
3100
- /**
3101
- * Get OS
3102
- * @return {Object}
3103
- *
3104
- * @example
3105
- * this.getOS();
3106
- * {
3107
- * name: 'macOS',
3108
- * version: '10.11.12'
3109
- * }
3110
- */
3111
- getOS() {
3112
- if (this.parsedResult.os) {
3113
- return this.parsedResult.os;
3114
- }
3115
- return this.parseOS();
3116
- }
3117
- /**
3118
- * Parse OS and save it to this.parsedResult.os
3119
- * @return {*|{}}
3120
- */
3121
- parseOS() {
3122
- this.parsedResult.os = {};
3123
- const os = Utils.find(osParsersList, (_os) => {
3124
- if (typeof _os.test === "function") {
3125
- return _os.test(this);
3126
- }
3127
- if (_os.test instanceof Array) {
3128
- return _os.test.some((condition) => this.test(condition));
3129
- }
3130
- throw new Error("Browser's test function is not valid");
3131
- });
3132
- if (os) {
3133
- this.parsedResult.os = os.describe(this.getUA());
3134
- }
3135
- return this.parsedResult.os;
3136
- }
3137
- /**
3138
- * Get OS name
3139
- * @param {Boolean} [toLowerCase] return lower-cased value
3140
- * @return {String} name of the OS — macOS, Windows, Linux, etc.
3141
- */
3142
- getOSName(toLowerCase) {
3143
- const { name } = this.getOS();
3144
- if (toLowerCase) {
3145
- return String(name).toLowerCase() || "";
3146
- }
3147
- return name || "";
3148
- }
3149
- /**
3150
- * Get OS version
3151
- * @return {String} full version with dots ('10.11.12', '5.6', etc)
3152
- */
3153
- getOSVersion() {
3154
- return this.getOS().version;
3155
- }
3156
- /**
3157
- * Get parsed platform
3158
- * @return {{}}
3159
- */
3160
- getPlatform() {
3161
- if (this.parsedResult.platform) {
3162
- return this.parsedResult.platform;
3163
- }
3164
- return this.parsePlatform();
3165
- }
3166
- /**
3167
- * Get platform name
3168
- * @param {Boolean} [toLowerCase=false]
3169
- * @return {*}
3170
- */
3171
- getPlatformType(toLowerCase = false) {
3172
- const { type } = this.getPlatform();
3173
- if (toLowerCase) {
3174
- return String(type).toLowerCase() || "";
3175
- }
3176
- return type || "";
3177
- }
3178
- /**
3179
- * Get parsed platform
3180
- * @return {{}}
3181
- */
3182
- parsePlatform() {
3183
- this.parsedResult.platform = {};
3184
- const platform = Utils.find(platformParsersList, (_platform) => {
3185
- if (typeof _platform.test === "function") {
3186
- return _platform.test(this);
3187
- }
3188
- if (_platform.test instanceof Array) {
3189
- return _platform.test.some((condition) => this.test(condition));
3190
- }
3191
- throw new Error("Browser's test function is not valid");
3192
- });
3193
- if (platform) {
3194
- this.parsedResult.platform = platform.describe(this.getUA());
3195
- }
3196
- return this.parsedResult.platform;
3197
- }
3198
- /**
3199
- * Get parsed engine
3200
- * @return {{}}
3201
- */
3202
- getEngine() {
3203
- if (this.parsedResult.engine) {
3204
- return this.parsedResult.engine;
3205
- }
3206
- return this.parseEngine();
3207
- }
3208
- /**
3209
- * Get engines's name
3210
- * @return {String} Engines's name or an empty string
3211
- *
3212
- * @public
3213
- */
3214
- getEngineName(toLowerCase) {
3215
- if (toLowerCase) {
3216
- return String(this.getEngine().name).toLowerCase() || "";
3217
- }
3218
- return this.getEngine().name || "";
3219
- }
3220
- /**
3221
- * Get parsed platform
3222
- * @return {{}}
3223
- */
3224
- parseEngine() {
3225
- this.parsedResult.engine = {};
3226
- const engine = Utils.find(enginesParsersList, (_engine) => {
3227
- if (typeof _engine.test === "function") {
3228
- return _engine.test(this);
3229
- }
3230
- if (_engine.test instanceof Array) {
3231
- return _engine.test.some((condition) => this.test(condition));
3232
- }
3233
- throw new Error("Browser's test function is not valid");
3234
- });
3235
- if (engine) {
3236
- this.parsedResult.engine = engine.describe(this.getUA());
3237
- }
3238
- return this.parsedResult.engine;
3239
- }
3240
- /**
3241
- * Parse full information about the browser
3242
- * @returns {Parser}
3243
- */
3244
- parse() {
3245
- this.parseBrowser();
3246
- this.parseOS();
3247
- this.parsePlatform();
3248
- this.parseEngine();
3249
- return this;
3250
- }
3251
- /**
3252
- * Get parsed result
3253
- * @return {ParsedResult}
3254
- */
3255
- getResult() {
3256
- return Utils.assign({}, this.parsedResult);
3257
- }
3258
- /**
3259
- * Check if parsed browser matches certain conditions
3260
- *
3261
- * @param {Object} checkTree It's one or two layered object,
3262
- * which can include a platform or an OS on the first layer
3263
- * and should have browsers specs on the bottom-laying layer
3264
- *
3265
- * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.
3266
- * Returns `undefined` when the browser is no described in the checkTree object.
3267
- *
3268
- * @example
3269
- * const browser = Bowser.getParser(window.navigator.userAgent);
3270
- * if (browser.satisfies({chrome: '>118.01.1322' }))
3271
- * // or with os
3272
- * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))
3273
- * // or with platforms
3274
- * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))
3275
- */
3276
- satisfies(checkTree) {
3277
- const platformsAndOSes = {};
3278
- let platformsAndOSCounter = 0;
3279
- const browsers = {};
3280
- let browsersCounter = 0;
3281
- const allDefinitions = Object.keys(checkTree);
3282
- allDefinitions.forEach((key) => {
3283
- const currentDefinition = checkTree[key];
3284
- if (typeof currentDefinition === "string") {
3285
- browsers[key] = currentDefinition;
3286
- browsersCounter += 1;
3287
- } else if (typeof currentDefinition === "object") {
3288
- platformsAndOSes[key] = currentDefinition;
3289
- platformsAndOSCounter += 1;
3290
- }
3291
- });
3292
- if (platformsAndOSCounter > 0) {
3293
- const platformsAndOSNames = Object.keys(platformsAndOSes);
3294
- const OSMatchingDefinition = Utils.find(platformsAndOSNames, (name) => this.isOS(name));
3295
- if (OSMatchingDefinition) {
3296
- const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);
3297
- if (osResult !== void 0) {
3298
- return osResult;
3299
- }
3300
- }
3301
- const platformMatchingDefinition = Utils.find(
3302
- platformsAndOSNames,
3303
- (name) => this.isPlatform(name)
3304
- );
3305
- if (platformMatchingDefinition) {
3306
- const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);
3307
- if (platformResult !== void 0) {
3308
- return platformResult;
3309
- }
3310
- }
3311
- }
3312
- if (browsersCounter > 0) {
3313
- const browserNames = Object.keys(browsers);
3314
- const matchingDefinition = Utils.find(browserNames, (name) => this.isBrowser(name, true));
3315
- if (matchingDefinition !== void 0) {
3316
- return this.compareVersion(browsers[matchingDefinition]);
3317
- }
3318
- }
3319
- return void 0;
3320
- }
3321
- /**
3322
- * Check if the browser name equals the passed string
3323
- * @param browserName The string to compare with the browser name
3324
- * @param [includingAlias=false] The flag showing whether alias will be included into comparison
3325
- * @returns {boolean}
3326
- */
3327
- isBrowser(browserName, includingAlias = false) {
3328
- const defaultBrowserName = this.getBrowserName().toLowerCase();
3329
- let browserNameLower = browserName.toLowerCase();
3330
- const alias = Utils.getBrowserTypeByAlias(browserNameLower);
3331
- if (includingAlias && alias) {
3332
- browserNameLower = alias.toLowerCase();
3333
- }
3334
- return browserNameLower === defaultBrowserName;
3335
- }
3336
- compareVersion(version) {
3337
- let expectedResults = [0];
3338
- let comparableVersion = version;
3339
- let isLoose = false;
3340
- const currentBrowserVersion = this.getBrowserVersion();
3341
- if (typeof currentBrowserVersion !== "string") {
3342
- return void 0;
3343
- }
3344
- if (version[0] === ">" || version[0] === "<") {
3345
- comparableVersion = version.substr(1);
3346
- if (version[1] === "=") {
3347
- isLoose = true;
3348
- comparableVersion = version.substr(2);
3349
- } else {
3350
- expectedResults = [];
3351
- }
3352
- if (version[0] === ">") {
3353
- expectedResults.push(1);
3354
- } else {
3355
- expectedResults.push(-1);
3356
- }
3357
- } else if (version[0] === "=") {
3358
- comparableVersion = version.substr(1);
3359
- } else if (version[0] === "~") {
3360
- isLoose = true;
3361
- comparableVersion = version.substr(1);
3362
- }
3363
- return expectedResults.indexOf(
3364
- Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose)
3365
- ) > -1;
3366
- }
3367
- isOS(osName) {
3368
- return this.getOSName(true) === String(osName).toLowerCase();
3369
- }
3370
- isPlatform(platformType) {
3371
- return this.getPlatformType(true) === String(platformType).toLowerCase();
3372
- }
3373
- isEngine(engineName) {
3374
- return this.getEngineName(true) === String(engineName).toLowerCase();
3375
- }
3376
- /**
3377
- * Is anything? Check if the browser is called "anything",
3378
- * the OS called "anything" or the platform called "anything"
3379
- * @param {String} anything
3380
- * @param [includingAlias=false] The flag showing whether alias will be included into comparison
3381
- * @returns {Boolean}
3382
- */
3383
- is(anything, includingAlias = false) {
3384
- return this.isBrowser(anything, includingAlias) || this.isOS(anything) || this.isPlatform(anything);
3385
- }
3386
- /**
3387
- * Check if any of the given values satisfies this.is(anything)
3388
- * @param {String[]} anythings
3389
- * @returns {Boolean}
3390
- */
3391
- some(anythings = []) {
3392
- return anythings.some((anything) => this.is(anything));
3393
- }
3394
- }
3395
- /*!
3396
- * Bowser - a browser detector
3397
- * https://github.com/lancedikson/bowser
3398
- * MIT License | (c) Dustin Diaz 2012-2015
3399
- * MIT License | (c) Denis Demchenko 2015-2019
3400
- */
3401
- class Bowser {
3402
- /**
3403
- * Creates a {@link Parser} instance
3404
- *
3405
- * @param {String} UA UserAgent string
3406
- * @param {Boolean} [skipParsing=false] Will make the Parser postpone parsing until you ask it
3407
- * explicitly. Same as `skipParsing` for {@link Parser}.
3408
- * @returns {Parser}
3409
- * @throws {Error} when UA is not a String
3410
- *
3411
- * @example
3412
- * const parser = Bowser.getParser(window.navigator.userAgent);
3413
- * const result = parser.getResult();
3414
- */
3415
- static getParser(UA, skipParsing = false) {
3416
- if (typeof UA !== "string") {
3417
- throw new Error("UserAgent should be a string");
3418
- }
3419
- return new Parser(UA, skipParsing);
3420
- }
3421
- /**
3422
- * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately
3423
- *
3424
- * @param UA
3425
- * @return {ParsedResult}
3426
- *
3427
- * @example
3428
- * const result = Bowser.parse(window.navigator.userAgent);
3429
- */
3430
- static parse(UA) {
3431
- return new Parser(UA).getResult();
3432
- }
3433
- static get BROWSER_MAP() {
3434
- return BROWSER_MAP;
3435
- }
3436
- static get ENGINE_MAP() {
3437
- return ENGINE_MAP;
3438
- }
3439
- static get OS_MAP() {
3440
- return OS_MAP;
3441
- }
3442
- static get PLATFORMS_MAP() {
3443
- return PLATFORMS_MAP;
3444
- }
3445
- }
3446
- class LocalStorageProxy {
3447
- constructor() {
3448
- var _a;
3449
- this.useLocalStorage = true;
3450
- this.memoryStorage = {};
3451
- try {
3452
- localStorage.setItem(
3453
- PpLocalStorageKey.initializedAt,
3454
- Date.now().toString()
3455
- );
3456
- for (let i = 0; i < localStorage.length; i++) {
3457
- const key = localStorage.key(i);
3458
- if (key != null) {
3459
- this.memoryStorage[key] = (_a = localStorage.getItem(key)) != null ? _a : "";
3460
- }
3461
- }
3462
- } catch (e) {
3463
- this.useLocalStorage = false;
3464
- }
3465
- }
3466
- getItem(key) {
3467
- var _a;
3468
- if (this.useLocalStorage) {
3469
- try {
3470
- if (localStorage.getItem(PpLocalStorageKey.initializedAt) != null) {
3471
- return localStorage.getItem(key);
3472
- } else {
3473
- console.debug("local storage value has lost unexpectedly.");
3474
- addBreadcrumbToSentry({
3475
- message: "local storage value has lost unexpectedly.",
3476
- category: "storage"
3477
- });
3478
- }
3479
- } catch (e) {
3480
- }
3481
- }
3482
- this.useLocalStorage = false;
3483
- return (_a = this.memoryStorage[key]) != null ? _a : null;
3484
- }
3485
- setItem(key, value) {
3486
- this.memoryStorage[key] = value;
3487
- if (this.useLocalStorage) {
3488
- try {
3489
- localStorage.setItem(key, value);
3490
- } catch (e) {
3491
- this.useLocalStorage = false;
3492
- console.warn("localStorage has become unavailable.");
3493
- }
3494
- }
3495
- }
3496
- removeItem(key) {
3497
- delete this.memoryStorage[key];
3498
- try {
3499
- localStorage.removeItem(key);
3500
- } catch (e) {
3501
- this.useLocalStorage = false;
3502
- }
3503
- }
3504
- clear() {
3505
- try {
3506
- localStorage.clear();
3507
- localStorage.setItem(
3508
- PpLocalStorageKey.initializedAt,
3509
- Date.now().toString()
3510
- );
3511
- } catch (e) {
3512
- }
3513
- this.memoryStorage = {};
3514
- }
3515
- }
3516
- function writeCookie(key, value) {
3517
- api.set(key, value, __spreadValues({
3518
- expires: 365,
3519
- sameSite: "None"
3520
- }, { secure: true, Partitioned: true }));
3521
- }
3522
- class CookieStorageProxy {
3523
- constructor() {
3524
- var _a;
3525
- this.useCookie = true;
3526
- this.memoryStorage = {};
3527
- try {
3528
- writeCookie(PpLocalStorageKey.initializedAt, Date.now().toString());
3529
- const cookies = api.get();
3530
- for (const key in cookies) {
3531
- this.memoryStorage[key] = (_a = cookies[key]) != null ? _a : "";
3532
- }
3533
- } catch (e) {
3534
- this.useCookie = false;
3535
- }
3536
- }
3537
- getItem(key) {
3538
- var _a;
3539
- if (this.useCookie) {
3540
- try {
3541
- if (api.get(PpLocalStorageKey.initializedAt) != null) {
3542
- const val = api.get(key);
3543
- if (val != null) {
3544
- return val;
3545
- }
3546
- return localStorage.getItem(key);
3547
- } else {
3548
- addBreadcrumbToSentry({
3549
- message: "cookie value has lost unexpectedly.",
3550
- category: "storage"
3551
- });
3552
- }
3553
- } catch (e) {
3554
- }
3555
- }
3556
- this.useCookie = false;
3557
- return (_a = this.memoryStorage[key]) != null ? _a : null;
3558
- }
3559
- setItem(key, value) {
3560
- this.memoryStorage[key] = value;
3561
- if (this.useCookie) {
3562
- try {
3563
- writeCookie(key, value);
3564
- localStorage.removeItem(key);
3565
- } catch (e) {
3566
- this.useCookie = false;
3567
- console.warn("cookie has become unavailable.");
3568
- }
3569
- }
3570
- }
3571
- removeItem(key) {
3572
- delete this.memoryStorage[key];
3573
- try {
3574
- api.remove(key);
3575
- localStorage.removeItem(key);
3576
- } catch (e) {
3577
- this.useCookie = false;
3578
- }
3579
- }
3580
- clear() {
3581
- try {
3582
- localStorage.clear();
3583
- const cookies = api.get();
3584
- for (const key in cookies) {
3585
- api.remove(key);
3586
- }
3587
- writeCookie(PpLocalStorageKey.initializedAt, Date.now().toString());
3588
- } catch (e) {
3589
- }
3590
- this.memoryStorage = {};
3591
- }
3592
- }
3593
- (() => {
3594
- const browser = Bowser.getParser(window.navigator.userAgent);
3595
- if (browser.satisfies({ safari: ">=18.4", chrome: ">=0", edge: ">=0" })) {
3596
- return new CookieStorageProxy();
3597
- }
3598
- return new LocalStorageProxy();
3599
- })();
3600
- function isFunction(val) {
3601
- return typeof val === "function";
3602
- }
3603
- function getRandomString() {
3604
- return Math.random().toString(36).substring(7);
3605
- }
3606
- function setCookie({ name, value, options }) {
3607
- return api.set(name, value, options);
3608
- }
3609
- function getCookie({ name }) {
3610
- return api.get(name);
3611
- }
3612
- function removeCookie({ name, options }) {
3613
- return api.remove(name, options);
3614
- }
3615
- function setLocalStorage({
3616
- name,
3617
- value
3618
- }) {
3619
- return localStorage.setItem(name, value);
3620
- }
3621
- function getLocalStorage({ name }) {
3622
- return localStorage.getItem(name);
3623
- }
3624
- function removeLocalStorage({ name }) {
3625
- return localStorage.removeItem(name);
3626
- }
3627
- function setSessionStorage({
3628
- name,
3629
- value
3630
- }) {
3631
- return sessionStorage.setItem(name, value);
3632
- }
3633
- function getSessionStorage({ name }) {
3634
- return sessionStorage.getItem(name);
3635
- }
3636
- function removeSessionStorage({ name }) {
3637
- return sessionStorage.removeItem(name);
3638
- }
3639
- function removeQueryParametersFromUrl(removeParams) {
3640
- const url = new URL(window.location.href);
3641
- removeParams.forEach((param) => url.searchParams.delete(param));
3642
- const newURL = `${url.pathname}${url.search}`;
3643
- history.replaceState(history.state, "", newURL);
3644
- }
3645
- function getUrl() {
3646
- return window.location.href;
3647
- }
3648
- const clientWindowBridgeFunctions = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3649
- __proto__: null,
3650
- getCookie,
3651
- getLocalStorage,
3652
- getSessionStorage,
3653
- getUrl,
3654
- removeCookie,
3655
- removeLocalStorage,
3656
- removeQueryParametersFromUrl,
3657
- removeSessionStorage,
3658
- setCookie,
3659
- setLocalStorage,
3660
- setSessionStorage
3661
- }, Symbol.toStringTag, { value: "Module" }));
3662
- const IFRAME_NAME = "ppmna-iframe";
3663
- const IFRAME_CONTAINER_NAME = "ppsdk-container";
3664
- let iframeContainer;
3665
- function getCoreIframeContainer() {
3666
- if (!iframeContainer) {
3667
- iframeContainer = createIframeContainer();
1832
+ const IFRAME_NAME = "ppmna-iframe";
1833
+ const IFRAME_CONTAINER_NAME = "ppsdk-container";
1834
+ let iframeContainer;
1835
+ function getCoreIframeContainer() {
1836
+ if (!iframeContainer) {
1837
+ iframeContainer = createIframeContainer();
3668
1838
  }
3669
1839
  return iframeContainer;
3670
1840
  }
@@ -3753,10 +1923,6 @@ function receiveMessageFromIframe(messageData, params, eventHandler) {
3753
1923
  if (messageData.result === PPFunctionResult.complete) {
3754
1924
  (_c = params == null ? void 0 : params.complete) == null ? void 0 : _c.call(params);
3755
1925
  removeEventListener("message", eventHandler);
3756
- functionEnd(messageData.messageId);
3757
- if (!isFunctionRunning()) {
3758
- showCoreIframe(false);
3759
- }
3760
1926
  }
3761
1927
  }
3762
1928
  function postMessageToCore(messageData) {
@@ -3769,8 +1935,8 @@ function postMessageToCore(messageData) {
3769
1935
  );
3770
1936
  });
3771
1937
  }
3772
- function triggerPostMessageToCore(type, showIframeFlag, params, postMessageParams) {
3773
- const messageId = functionStart();
1938
+ function triggerPostMessageToCore(type, params, postMessageParams) {
1939
+ const messageId = getRandomString();
3774
1940
  const fnMessageHandler = (e) => {
3775
1941
  if (!checkIFrameOrigin(e.origin)) {
3776
1942
  return;
@@ -3818,20 +1984,6 @@ function isSupportedSmartpayment(functionName) {
3818
1984
  functionName
3819
1985
  );
3820
1986
  }
3821
- let runningFunctions = [];
3822
- function isFunctionRunning() {
3823
- return runningFunctions.length > 0;
3824
- }
3825
- function functionEnd(messageId) {
3826
- runningFunctions = runningFunctions.filter((val) => {
3827
- return val !== messageId;
3828
- });
3829
- }
3830
- function functionStart() {
3831
- const messageId = getRandomString();
3832
- runningFunctions.push(messageId);
3833
- return messageId;
3834
- }
3835
1987
  function promiseToCallback(functionName, target, getLoggingParams) {
3836
1988
  return function(params = {}) {
3837
1989
  const loggingParams = getLoggingParams == null ? void 0 : getLoggingParams(params);
@@ -3925,6 +2077,14 @@ const commonMessageHandler = (e) => {
3925
2077
  showCoreIframe(true);
3926
2078
  return;
3927
2079
  }
2080
+ if (e.data.name === PPUtilFunctionName.showIframe) {
2081
+ showCoreIframe(true);
2082
+ return;
2083
+ }
2084
+ if (e.data.name === PPUtilFunctionName.hideIframe) {
2085
+ showCoreIframe(false);
2086
+ return;
2087
+ }
3928
2088
  if (e.data.name === PPUtilFunctionName.link) {
3929
2089
  const linkOption = e.data.data;
3930
2090
  if (linkOption.target === "_blank") {
@@ -3951,18 +2111,14 @@ addEventListener("popstate", () => {
3951
2111
  function init(params) {
3952
2112
  const refreshToken = getRefreshToken(params.clientId);
3953
2113
  const codeVerifier = getCodeVerifier(params.clientId);
3954
- const clientVersion = "2.51.0";
3955
- const initParams = {
3956
- env: params.env,
3957
- mode: params.mode,
3958
- debugMode: params.debugMode,
3959
- clientId: params.clientId,
2114
+ const clientVersion = "2.55.0";
2115
+ const initParams = __spreadProps(__spreadValues({}, params), {
3960
2116
  refreshToken,
3961
2117
  clientVersion,
3962
2118
  codeVerifier,
3963
2119
  clientSdkType,
3964
2120
  clientUrl: window.location.href
3965
- };
2121
+ });
3966
2122
  let initDonePromiseResolve;
3967
2123
  const nextInitDonePromise = new Promise(
3968
2124
  (resolve) => initDonePromiseResolve = resolve
@@ -3975,7 +2131,6 @@ function init(params) {
3975
2131
  initDonePromise.then(() => getCoreIframe()).then(() => {
3976
2132
  triggerPostMessageToCore(
3977
2133
  PPFunctionName.init,
3978
- false,
3979
2134
  __spreadProps(__spreadValues({}, params), { complete }),
3980
2135
  initParams
3981
2136
  );
@@ -4031,8 +2186,8 @@ function executePendingFunctionCalls(client2) {
4031
2186
  }
4032
2187
  }
4033
2188
  const clientProperties = {
4034
- version: "2.51.0",
4035
- revision: "9c03362"
2189
+ version: "2.55.0",
2190
+ revision: "a78757a"
4036
2191
  };
4037
2192
  function isInitClientParams(params) {
4038
2193
  return params.clientId !== void 0;
@@ -4080,7 +2235,6 @@ function getClient({
4080
2235
  }
4081
2236
  triggerPostMessageToCore(
4082
2237
  prop,
4083
- false,
4084
2238
  params,
4085
2239
  params
4086
2240
  );
@@ -4124,9 +2278,13 @@ const markAsReady = promiseToCallback(
4124
2278
  "markAsReady",
4125
2279
  coreFunctions.markAsReady
4126
2280
  );
2281
+ promiseToCallback(
2282
+ "renderButton",
2283
+ coreFunctions.renderButton
2284
+ );
4127
2285
  function getKycPassportInfo(params) {
4128
2286
  const url = window.location.href;
4129
- triggerPostMessageToCore(PPFunctionName.getKycPassportInfo, false, params, __spreadProps(__spreadValues({}, params), {
2287
+ triggerPostMessageToCore(PPFunctionName.getKycPassportInfo, params, __spreadProps(__spreadValues({}, params), {
4130
2288
  url
4131
2289
  }));
4132
2290
  }
@@ -4223,12 +2381,7 @@ function scanCode(params) {
4223
2381
  const scanCodeParams = __spreadProps(__spreadValues({}, params), {
4224
2382
  redirectUrlOnCancel: (_a = params == null ? void 0 : params.redirectUrlOnCancel) != null ? _a : window.location.href
4225
2383
  });
4226
- triggerPostMessageToCore(
4227
- PPFunctionName.scanCode,
4228
- false,
4229
- params,
4230
- scanCodeParams
4231
- );
2384
+ triggerPostMessageToCore(PPFunctionName.scanCode, params, scanCodeParams);
4232
2385
  }
4233
2386
  function setTitle(params) {
4234
2387
  var _a, _b, _c;
@@ -4238,7 +2391,7 @@ function setTitle(params) {
4238
2391
  }
4239
2392
  function share(params) {
4240
2393
  if (!(navigator == null ? void 0 : navigator.share)) {
4241
- triggerPostMessageToCore(PPFunctionName.share, false, params, params);
2394
+ triggerPostMessageToCore(PPFunctionName.share, params, params);
4242
2395
  return;
4243
2396
  }
4244
2397
  const data = {
@@ -4288,12 +2441,9 @@ function removeStorageData(params) {
4288
2441
  }
4289
2442
  function verifyMultiFactorAuthResult(params) {
4290
2443
  const url = new URL(window.location.href);
4291
- triggerPostMessageToCore(
4292
- PPFunctionName.verifyMultiFactorAuthResult,
4293
- false,
4294
- params,
4295
- __spreadProps(__spreadValues({}, params), { sessionId: url.searchParams.get("ppSessionId") })
4296
- );
2444
+ triggerPostMessageToCore(PPFunctionName.verifyMultiFactorAuthResult, params, __spreadProps(__spreadValues({}, params), {
2445
+ sessionId: url.searchParams.get("ppSessionId")
2446
+ }));
4297
2447
  }
4298
2448
  const clientFunctions = {
4299
2449
  verifyMultiFactorAuthResult,