@braze/web-sdk 4.8.2 → 4.9.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 (154) hide show
  1. package/index.d.ts +121 -6
  2. package/package.json +1 -1
  3. package/shared-lib/braze-shared-lib.js +7 -7
  4. package/shared-lib/encoding-utils.js +4 -4
  5. package/shared-lib/event-types.js +22 -21
  6. package/shared-lib/guid.js +7 -7
  7. package/shared-lib/indexed-db-adapter.js +172 -135
  8. package/shared-lib/logger.js +26 -26
  9. package/shared-lib/supported-options.js +15 -15
  10. package/shared-lib/types.js +1 -0
  11. package/src/Card/card-manager-factory.js +1 -1
  12. package/src/Card/card-manager.js +2 -2
  13. package/src/Card/display/card-display.js +5 -4
  14. package/src/Card/models/banner.js +10 -10
  15. package/src/Card/models/captioned-image.js +7 -7
  16. package/src/Card/models/card.js +37 -36
  17. package/src/Card/models/classic-card.js +7 -7
  18. package/src/Card/models/control-card.js +3 -3
  19. package/src/Card/models/image-only.js +32 -0
  20. package/src/Card/models/index.js +1 -0
  21. package/src/Card/util/card-factory.js +16 -16
  22. package/src/ContentCards/content-cards-provider-factory.js +1 -1
  23. package/src/ContentCards/content-cards-provider.js +102 -102
  24. package/src/ContentCards/get-cached-content-cards.js +1 -1
  25. package/src/ContentCards/request-content-cards-refresh.js +1 -1
  26. package/src/ContentCards/subscribe-to-content-cards-updates.js +4 -4
  27. package/src/ContentCards/ui/show-content-cards.js +15 -12
  28. package/src/Core/add-sdk-metadata.js +2 -2
  29. package/src/Core/braze-sdk-metadata.js +1 -1
  30. package/src/Core/change-user.js +1 -1
  31. package/src/Core/device-properties.js +1 -1
  32. package/src/Core/disable-sdk.js +10 -7
  33. package/src/Core/enable-sdk.js +5 -2
  34. package/src/Core/get-device-id.js +3 -3
  35. package/src/Core/get-user.js +1 -1
  36. package/src/Core/handle-braze-action.js +14 -14
  37. package/src/Core/is-disabled.js +1 -1
  38. package/src/Core/log-custom-event.js +4 -4
  39. package/src/Core/log-purchase.js +9 -9
  40. package/src/Core/open-session.js +10 -10
  41. package/src/FeatureFlags/feature-flag-factory.js +5 -3
  42. package/src/FeatureFlags/feature-flag.js +17 -14
  43. package/src/FeatureFlags/feature-flags-provider-factory.js +1 -1
  44. package/src/FeatureFlags/feature-flags-provider.js +56 -43
  45. package/src/FeatureFlags/get-all-feature-flags.js +2 -2
  46. package/src/FeatureFlags/get-feature-flag.js +2 -2
  47. package/src/FeatureFlags/index.js +1 -0
  48. package/src/FeatureFlags/log-feature-flag-impression.js +23 -0
  49. package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +1 -1
  50. package/src/Feed/feed-provider-factory.js +1 -1
  51. package/src/Feed/feed-provider.js +20 -20
  52. package/src/Feed/get-cached-feed.js +1 -1
  53. package/src/Feed/log-feed-displayed.js +1 -1
  54. package/src/Feed/request-feed-refresh.js +1 -1
  55. package/src/Feed/subscribe-to-feed-updates.js +1 -1
  56. package/src/Feed/ui/show-feed.js +13 -10
  57. package/src/InAppMessage/defer-in-app-message.js +13 -0
  58. package/src/InAppMessage/display/get-animation-effect.js +1 -1
  59. package/src/InAppMessage/display/html-message-to-html.js +47 -47
  60. package/src/InAppMessage/display/in-app-message-to-html.js +92 -91
  61. package/src/InAppMessage/display/modal-utils.js +16 -16
  62. package/src/InAppMessage/get-deferred-in-app-message.js +5 -0
  63. package/src/InAppMessage/in-app-message-factory.js +77 -57
  64. package/src/InAppMessage/in-app-message-manager-factory.js +6 -6
  65. package/src/InAppMessage/in-app-message-manager.js +121 -82
  66. package/src/InAppMessage/index.js +2 -0
  67. package/src/InAppMessage/log-in-app-message-button-click.js +17 -9
  68. package/src/InAppMessage/log-in-app-message-click.js +4 -4
  69. package/src/InAppMessage/log-in-app-message-html-click.js +6 -6
  70. package/src/InAppMessage/log-in-app-message-impression.js +3 -3
  71. package/src/InAppMessage/models/full-screen-message.js +65 -29
  72. package/src/InAppMessage/models/html-message.js +32 -13
  73. package/src/InAppMessage/models/in-app-message-button.js +7 -7
  74. package/src/InAppMessage/models/in-app-message.js +203 -134
  75. package/src/InAppMessage/models/modal-message.js +64 -29
  76. package/src/InAppMessage/models/slide-up-message.js +52 -24
  77. package/src/InAppMessage/models/templated-in-app-message.js +8 -8
  78. package/src/InAppMessage/subscribe-to-in-app-message.js +2 -2
  79. package/src/InAppMessage/ui/automatically-show-in-app-messages.js +6 -6
  80. package/src/InAppMessage/ui/show-in-app-message.js +49 -47
  81. package/src/InAppMessage/utils/in-app-message-utils.js +1 -1
  82. package/src/Push/is-push-blocked.js +2 -2
  83. package/src/Push/is-push-permission-granted.js +2 -2
  84. package/src/Push/is-push-supported.js +2 -2
  85. package/src/Push/push-manager-factory.js +19 -19
  86. package/src/Push/push-manager.js +131 -131
  87. package/src/Push/request-push-permission.js +2 -2
  88. package/src/Push/unregister-push.js +2 -2
  89. package/src/Push/utils/push-utils.js +12 -10
  90. package/src/User/user-manager.js +4 -4
  91. package/src/User/user.js +57 -57
  92. package/src/common/base-feed.js +1 -1
  93. package/src/common/constants.js +1 -0
  94. package/src/common/event-logger.js +6 -6
  95. package/src/common/feed-display.js +34 -34
  96. package/src/common/translations.js +33 -33
  97. package/src/l10n/l10n-manager-factory.js +8 -8
  98. package/src/l10n/l10n-manager.js +6 -2
  99. package/src/l10n/types.js +1 -0
  100. package/src/managers/auth-manager.js +29 -29
  101. package/src/managers/braze-instance.js +125 -125
  102. package/src/managers/device-manager.js +20 -20
  103. package/src/managers/network-manager.js +100 -98
  104. package/src/managers/server-config-manager.js +23 -23
  105. package/src/managers/session-manager.js +5 -5
  106. package/src/managers/storage-manager-factory.js +9 -9
  107. package/src/managers/storage-manager.js +132 -129
  108. package/src/managers/subscription-manager.js +8 -8
  109. package/src/models/backend-errors.js +6 -6
  110. package/src/models/braze-event.js +11 -11
  111. package/src/models/braze-sdk-metadata.js +1 -1
  112. package/src/models/device.js +2 -2
  113. package/src/models/identifier.js +1 -1
  114. package/src/models/push-token.js +5 -5
  115. package/src/models/server-config.js +7 -7
  116. package/src/request-controller.js +191 -178
  117. package/src/triggers/models/custom-event-data.js +4 -4
  118. package/src/triggers/models/custom-event-property-data.js +7 -7
  119. package/src/triggers/models/filter-set.js +5 -5
  120. package/src/triggers/models/filter.js +64 -60
  121. package/src/triggers/models/in-app-message-click-data.js +9 -9
  122. package/src/triggers/models/purchase-data.js +4 -4
  123. package/src/triggers/models/purchase-property-data.js +6 -6
  124. package/src/triggers/models/push-click-data.js +6 -6
  125. package/src/triggers/models/trigger-condition.js +55 -59
  126. package/src/triggers/models/trigger-events.js +3 -3
  127. package/src/triggers/models/trigger.js +47 -35
  128. package/src/triggers/triggers-provider-factory.js +10 -6
  129. package/src/triggers/triggers-provider.js +203 -185
  130. package/src/triggers/types.js +1 -0
  131. package/src/ui/js/attach-css.js +5 -4
  132. package/src/ui/js/feed-css.js +5 -5
  133. package/src/ui/js/iam-css.js +5 -5
  134. package/src/ui/js/load-font-awesome.js +1 -1
  135. package/src/util/base-device-parser.js +1 -1
  136. package/src/util/braze-actions.js +35 -30
  137. package/src/util/browser-detector.js +30 -31
  138. package/src/util/client-hints-parser.js +30 -24
  139. package/src/util/code-utils.js +22 -21
  140. package/src/util/color-utils.js +19 -13
  141. package/src/util/component-utils.js +4 -4
  142. package/src/util/date-utils.js +4 -3
  143. package/src/util/device-constants.js +10 -10
  144. package/src/util/dom-utils.js +32 -28
  145. package/src/util/error-utils.js +1 -1
  146. package/src/util/key-codes.js +1 -1
  147. package/src/util/net.js +53 -57
  148. package/src/util/request-header-utils.js +34 -11
  149. package/src/util/string-utils.js +14 -14
  150. package/src/util/types.js +1 -0
  151. package/src/util/url-utils.js +1 -4
  152. package/src/util/user-agent-parser.js +39 -39
  153. package/src/util/validation-utils.js +32 -32
  154. package/src/util/window-utils.js +11 -12
@@ -1,5 +1,5 @@
1
1
  import { isDate as Nt } from "./code-utils.js";
2
- export function convertMsToSeconds(e, n) {
2
+ export function convertMsToSeconds(e, n = !1) {
3
3
  let t = e / 1e3;
4
4
  return n && (t = Math.floor(t)), t;
5
5
  }
@@ -7,8 +7,9 @@ export function convertSecondsToMs(e) {
7
7
  return 1e3 * e;
8
8
  }
9
9
  export function dateFromUnixTimestamp(e) {
10
- const n = parseInt(e);
11
- return null == e || isNaN(n) ? null : new Date(1e3 * n);
10
+ if (null == e) return null;
11
+ const n = parseInt(e.toString());
12
+ return isNaN(n) ? null : new Date(1e3 * n);
12
13
  }
13
14
  export function toValidBackendTimeString(e) {
14
15
  return null != e && Nt(e) ? e.toISOString().replace(/\.[0-9]{3}Z$/, "") : e;
@@ -1,14 +1,14 @@
1
1
  export const Browsers = {
2
- rE: "Chrome",
3
- eE: "Edge",
4
- Pg: "Internet Explorer",
5
- EE: "Opera",
6
- kg: "Safari",
7
- oE: "Firefox"
2
+ pE: "Chrome",
3
+ xE: "Edge",
4
+ Ku: "Internet Explorer",
5
+ FE: "Opera",
6
+ Bg: "Safari",
7
+ ME: "Firefox",
8
8
  };
9
9
  export const OperatingSystems = {
10
- Lg: "Android",
11
- fe: "iOS",
12
- Fg: "Mac",
13
- Dg: "Windows"
10
+ xg: "Android",
11
+ de: "iOS",
12
+ kg: "Mac",
13
+ Pg: "Windows",
14
14
  };
@@ -1,4 +1,6 @@
1
- export function _isInView(t, n, e, s) {
1
+ import r from "../../shared-lib/braze-shared-lib.js";
2
+ import { getErrorMessage as ei } from "./error-utils.js";
3
+ export function _isInView(t, n = !1, e = !1, s = !1) {
2
4
  if (null == t) return !1;
3
5
  (n = n || !1), (e = e || !1);
4
6
  const i = t.getBoundingClientRect();
@@ -7,40 +9,42 @@ export function _isInView(t, n, e, s) {
7
9
  ((i.top >= 0 &&
8
10
  i.top <= (window.innerHeight || document.documentElement.clientHeight)) ||
9
11
  !n) &&
10
- (i.left >= 0 || !s) &&
11
- ((i.bottom >= 0 &&
12
- i.bottom <=
13
- (window.innerHeight || document.documentElement.clientHeight)) ||
14
- !e) &&
15
- (i.right <= (window.innerWidth || document.documentElement.clientWidth) ||
16
- !s)
12
+ (i.left >= 0 || !s) &&
13
+ ((i.bottom >= 0 &&
14
+ i.bottom <=
15
+ (window.innerHeight || document.documentElement.clientHeight)) ||
16
+ !e) &&
17
+ (i.right <= (window.innerWidth || document.documentElement.clientWidth) ||
18
+ !s)
17
19
  );
18
20
  }
19
- export const DOMUtils = { lc: null, eo: _isInView };
20
- export const DIRECTIONS = { Je: "up", Ke: "down", W: "left", X: "right" };
21
+ export const DOMUtils = { Wu: null, no: _isInView };
22
+ export const DIRECTIONS = { Oe: "up", Qe: "down", W: "left", X: "right" };
21
23
  export function supportsPassive() {
22
- if (null == DOMUtils.lc) {
23
- DOMUtils.lc = !1;
24
+ if (null == DOMUtils.Wu) {
25
+ DOMUtils.Wu = !1;
24
26
  try {
25
27
  const t = Object.defineProperty({}, "passive", {
26
28
  get: () => {
27
- DOMUtils.lc = !0;
28
- }
29
+ DOMUtils.Wu = !0;
30
+ },
29
31
  });
30
- window.addEventListener("testPassive", null, t),
31
- window.removeEventListener("testPassive", null, t);
32
- } catch (t) {}
32
+ window.addEventListener("testPassive", () => {}, t),
33
+ window.removeEventListener("testPassive", () => {}, t);
34
+ } catch (t) {
35
+ r.j.error(ei(t));
36
+ }
33
37
  }
34
- return DOMUtils.lc;
38
+ return DOMUtils.Wu;
35
39
  }
36
40
  export function addPassiveEventListener(t, n, e = () => {}) {
37
41
  t.addEventListener(n, e, !!supportsPassive() && { passive: !0 });
38
42
  }
39
43
  export function topIsInView(t) {
40
- return DOMUtils.eo(t, !0, !1, !1);
44
+ return DOMUtils.no(t, !0, !1, !1);
41
45
  }
42
46
  export function bottomIsInView(t) {
43
- return DOMUtils.eo(t, !1, !0, !1);
47
+ return DOMUtils.no(t, !1, !0, !1);
44
48
  }
45
49
  export function clickElement(t) {
46
50
  if (t.onclick) {
@@ -51,23 +55,23 @@ export function clickElement(t) {
51
55
  export function detectSwipe(t, n, e) {
52
56
  let s = null,
53
57
  i = null;
54
- addPassiveEventListener(t, "touchstart", t => {
58
+ addPassiveEventListener(t, "touchstart", (t) => {
55
59
  (s = t.touches[0].clientX), (i = t.touches[0].clientY);
56
60
  }),
57
- addPassiveEventListener(t, "touchmove", o => {
61
+ addPassiveEventListener(t, "touchmove", (o) => {
58
62
  if (null == s || null == i) return;
59
63
  const l = s - o.touches[0].clientX,
60
- u = i - o.touches[0].clientY;
61
- Math.abs(l) > Math.abs(u) && Math.abs(l) >= 25
64
+ r = i - o.touches[0].clientY;
65
+ Math.abs(l) > Math.abs(r) && Math.abs(l) >= 25
62
66
  ? (((l > 0 && n === DIRECTIONS.W) || (l < 0 && n === DIRECTIONS.X)) &&
63
67
  e(o),
64
68
  (s = null),
65
69
  (i = null))
66
- : Math.abs(u) >= 25 &&
67
- (((u > 0 &&
68
- n === DIRECTIONS.Je &&
70
+ : Math.abs(r) >= 25 &&
71
+ (((r > 0 &&
72
+ n === DIRECTIONS.Oe &&
69
73
  t.scrollTop === t.scrollHeight - t.offsetHeight) ||
70
- (u < 0 && n === DIRECTIONS.Ke && 0 === t.scrollTop)) &&
74
+ (r < 0 && n === DIRECTIONS.Qe && 0 === t.scrollTop)) &&
71
75
  e(o),
72
76
  (s = null),
73
77
  (i = null));
@@ -1,2 +1,2 @@
1
- export const getErrorMessage = r =>
1
+ export const getErrorMessage = (r) =>
2
2
  r instanceof Error ? r.message : String(r);
@@ -1 +1 @@
1
- export const KeyCodes = { yo: 32, oo: 9, Fo: 13, Ih: 27 };
1
+ export const KeyCodes = { Fo: 32, oo: 9, To: 13, _h: 27 };
package/src/util/net.js CHANGED
@@ -1,75 +1,71 @@
1
1
  import r from "../../shared-lib/braze-shared-lib.js";
2
2
  import qt from "../models/backend-errors.js";
3
+ import { getErrorMessage as ei } from "./error-utils.js";
3
4
  const C = {
4
- Ys: t => {
5
+ Xs: (t) => {
5
6
  let e, o;
6
7
  try {
7
- const n = () => {
8
+ const s = () => {
8
9
  r.j.error("This browser does not have any supported ajax options!");
9
10
  };
10
- if (
11
- (window.XMLHttpRequest ? ((e = new XMLHttpRequest()), e || n()) : n(),
12
- null != e)
13
- ) {
14
- const r = () => {
15
- "function" == typeof t.error && t.error(e.status),
16
- "function" == typeof t.ei && t.ei(!1);
17
- };
18
- (e.onload = () => {
19
- let o = !1;
20
- if (4 === e.readyState)
21
- if (
22
- ((o = (e.status >= 200 && e.status < 300) || 304 === e.status), o)
23
- ) {
24
- if ("function" == typeof t.O) {
25
- let o, r;
26
- try {
27
- (o = JSON.parse(e.responseText)),
28
- (r = e.getAllResponseHeaders());
29
- } catch (o) {
30
- const n = {
31
- error: "" === e.responseText ? qt.ga : qt.qa,
32
- response: e.responseText
33
- };
34
- t.O(n, r);
35
- }
36
- o && t.O(o, r);
11
+ let n = !1;
12
+ if ((window.XMLHttpRequest && (n = !0), !n)) return void s();
13
+ e = new XMLHttpRequest();
14
+ const i = () => {
15
+ "function" == typeof t.error && t.error(e.status),
16
+ "function" == typeof t.ei && t.ei(!1);
17
+ };
18
+ (e.onload = () => {
19
+ let o = !1;
20
+ if (4 === e.readyState)
21
+ if (
22
+ ((o = (e.status >= 200 && e.status < 300) || 304 === e.status), o)
23
+ ) {
24
+ if ("function" == typeof t.O) {
25
+ let o, r;
26
+ try {
27
+ (o = JSON.parse(e.responseText)),
28
+ (r = e.getAllResponseHeaders());
29
+ } catch (o) {
30
+ const s = {
31
+ error: "" === e.responseText ? qt.Na : qt.Ha,
32
+ response: e.responseText,
33
+ };
34
+ (0, t.O)(s, r);
37
35
  }
38
- "function" == typeof t.ei && t.ei(!0);
39
- } else r();
36
+ o && t.O(o, r);
37
+ }
38
+ "function" == typeof t.ei && t.ei(!0);
39
+ } else i();
40
+ }),
41
+ (e.onerror = () => {
42
+ i();
43
+ }),
44
+ (e.ontimeout = () => {
45
+ i();
40
46
  }),
41
- (e.onerror = () => {
42
- r();
43
- }),
44
- (e.ontimeout = () => {
45
- r();
46
- }),
47
- (o = JSON.stringify(t.data)),
48
- e.open("POST", t.url, !0),
49
- e.setRequestHeader("Content-type", "application/json"),
50
- e.setRequestHeader("X-Requested-With", "XMLHttpRequest");
51
- const n = t.headers || [];
52
- for (const t of n) e.setRequestHeader(t[0], t[1]);
53
- e.send(o);
54
- }
47
+ (o = JSON.stringify(t.data)),
48
+ e.open("POST", t.url, !0),
49
+ e.setRequestHeader("Content-type", "application/json"),
50
+ e.setRequestHeader("X-Requested-With", "XMLHttpRequest");
51
+ const f = t.headers || [];
52
+ for (const t of f) e.setRequestHeader(t[0], t[1]);
53
+ e.send(o);
55
54
  } catch (t) {
56
- r.j.error(`Network request error: ${t.message}`);
55
+ r.j.error(`Network request error: ${ei(t)}`);
57
56
  }
58
- }
57
+ },
59
58
  };
60
- export const readResponseHeaders = t => {
61
- let e = {};
62
- const o = t.toString().split("\r\n");
59
+ export const readResponseHeaders = (t) => {
60
+ const e = {},
61
+ o = t.toString().split("\r\n");
63
62
  if (!o) return e;
64
- let r, n;
63
+ let r, s;
65
64
  for (const t of o)
66
65
  t &&
67
- ((r = t
68
- .slice(0, t.indexOf(":"))
69
- .toLowerCase()
70
- .trim()),
71
- (n = t.slice(t.indexOf(":") + 1).trim()),
72
- (e[r] = n));
66
+ ((r = t.slice(0, t.indexOf(":")).toLowerCase().trim()),
67
+ (s = t.slice(t.indexOf(":") + 1).trim()),
68
+ (e[r] = s));
73
69
  return e;
74
70
  };
75
71
  export default C;
@@ -1,23 +1,46 @@
1
+ import { REQUEST_ATTEMPT_DEFAULT as Ae } from "../common/constants.js";
1
2
  import { STORAGE_KEYS as i } from "../managers/storage-manager.js";
2
3
  const T = {
3
- Qs: { Sa: "d", Os: "cc", xi: "ff", Yi: "t" },
4
- eT: e => {
5
- if (e) return e.v(i.k.Ua);
4
+ Os: { Ja: "d", Ks: "cc", Si: "ff", Lr: "t" },
5
+ Qu: (e) => {
6
+ if (e) return e.v(i.k.EE);
6
7
  },
7
- tT: (e, t) => {
8
- e && e.D(i.k.Ua, t);
8
+ Xu: (e) => {
9
+ if (e) return e.v(i.k.lE);
9
10
  },
10
- Xa: (e, t) => {
11
+ Yu: (e, t) => {
12
+ e && e.D(i.k.EE, t);
13
+ },
14
+ Zu: (e, t) => {
15
+ e && e.D(i.k.lE, t);
16
+ },
17
+ Ga: (e, t) => {
11
18
  if (!e || !t) return -1;
12
- const r = T.eT(e);
19
+ const r = T.Qu(e);
13
20
  if (null == r) return -1;
14
21
  const s = r[t];
15
22
  return null == s || isNaN(s) ? -1 : s;
16
23
  },
17
- Xs: (e, t, r) => {
24
+ Xh: (e, t) => {
25
+ let r = Ae;
26
+ if (!e || !t) return r;
27
+ const s = T.Xu(e);
28
+ return null == s ? r : ((r = s[t]), null == r || isNaN(r) ? Ae : r);
29
+ },
30
+ Ws: (e, t, r) => {
31
+ if (!e || !t) return;
32
+ let s = T.Qu(e);
33
+ null == s && (s = {}), (s[t] = r), T.Yu(e, s);
34
+ },
35
+ si: (e, t, r) => {
36
+ if (!e || !t) return;
37
+ let s = T.Xu(e);
38
+ null == s && (s = {}), (s[t] = r), T.Zu(e, s);
39
+ },
40
+ hi: (e, t) => {
18
41
  if (!e || !t) return;
19
- let s = T.eT(e);
20
- null == s && (s = {}), (s[t] = r), T.tT(e, s);
21
- }
42
+ const r = T.Xh(e, t);
43
+ T.si(e, t, r + 1);
44
+ },
22
45
  };
23
46
  export default T;
@@ -1,22 +1,22 @@
1
1
  import r from "../../shared-lib/braze-shared-lib.js";
2
- export function getByteLength(e) {
3
- let t = e.length;
4
- for (let r = e.length - 1; r >= 0; r--) {
5
- const n = e.charCodeAt(r);
6
- n > 127 && n <= 2047 ? t++ : n > 2047 && n <= 65535 && (t += 2),
2
+ export function getByteLength(t) {
3
+ let e = t.length;
4
+ for (let r = t.length - 1; r >= 0; r--) {
5
+ const n = t.charCodeAt(r);
6
+ n > 127 && n <= 2047 ? e++ : n > 2047 && n <= 65535 && (e += 2),
7
7
  n >= 56320 && n <= 57343 && r--;
8
8
  }
9
- return t;
9
+ return e;
10
10
  }
11
- export function decodeBrazeActions(e) {
11
+ export function decodeBrazeActions(t) {
12
12
  try {
13
- e = e.replace(/-/g, "+").replace(/_/g, "/");
14
- let t = window.atob(e),
15
- r = new Uint8Array(t.length);
16
- for (let e = 0; e < t.length; e++) r[e] = t.charCodeAt(e);
17
- let n = new Uint16Array(r.buffer);
13
+ t = t.replace(/-/g, "+").replace(/_/g, "/");
14
+ const e = window.atob(t),
15
+ r = new Uint8Array(e.length);
16
+ for (let t = 0; t < e.length; t++) r[t] = e.charCodeAt(t);
17
+ const n = new Uint16Array(r.buffer);
18
18
  return String.fromCharCode(...n);
19
- } catch (e) {
20
- return r.j.error("Unable to decode Base64: " + e), null;
19
+ } catch (t) {
20
+ return r.j.error("Unable to decode Base64: " + t), null;
21
21
  }
22
22
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,6 @@
1
1
  export function parseQueryStringKeyValues(t) {
2
2
  null == t && (t = "");
3
- const r = t
4
- .split("?")
5
- .slice(1)
6
- .join("?"),
3
+ const r = t.split("?").slice(1).join("?"),
7
4
  n = {};
8
5
  if (null != r) {
9
6
  const t = r.split("&");
@@ -1,8 +1,8 @@
1
1
  import ge from "./base-device-parser.js";
2
- import { Browsers as gi, OperatingSystems as W } from "./device-constants.js";
2
+ import { Browsers as oi, OperatingSystems as W } from "./device-constants.js";
3
3
  export default class ai extends ge {
4
4
  constructor() {
5
- super(), (this.rd = ai.ed(navigator.userAgent || ""));
5
+ super(), (this.rd = ai.Uu(navigator.userAgent || ""));
6
6
  }
7
7
  tf() {
8
8
  return this.rd[0] || "Unknown Browser";
@@ -10,27 +10,27 @@ export default class ai extends ge {
10
10
  ef() {
11
11
  return this.rd[1] || "Unknown Version";
12
12
  }
13
- Zo(r) {
14
- for (let e = 0; e < r.length; e++) {
15
- let n = r[e].string,
16
- i = ai.rf(n, r[e]);
13
+ Ia(r) {
14
+ for (let n = 0; n < r.length; n++) {
15
+ const e = r[n].string;
16
+ let i = ai.rf(e, r[n]);
17
17
  if (i)
18
18
  return (
19
- i === W.Fg && navigator.maxTouchPoints > 1 && (i = W.fe),
19
+ i === W.kg && navigator.maxTouchPoints > 1 && (i = W.de),
20
20
  Promise.resolve(i)
21
21
  );
22
22
  }
23
23
  return Promise.resolve(navigator.platform);
24
24
  }
25
- static ed(r) {
26
- let e,
27
- n =
25
+ static Uu(r) {
26
+ let n,
27
+ e =
28
28
  r.match(
29
- /(samsungbrowser|tizen|roku|konqueror|icab|crios|opera|ucbrowser|chrome|safari|firefox|camino|msie|trident(?=\/))\/?\s*(\.?\d+(\.\d+)*)/i
29
+ /(samsungbrowser|tizen|roku|konqueror|icab|crios|opera|ucbrowser|chrome|safari|firefox|camino|msie|trident(?=\/))\/?\s*(\.?\d+(\.\d+)*)/i,
30
30
  ) || [];
31
- if (/trident/i.test(n[1]))
31
+ if (e[1] && /trident/i.test(e[1]))
32
32
  return (
33
- (e = /\brv[ :]+(\.?\d+(\.\d+)*)/g.exec(r) || []), [gi.Pg, e[1] || ""]
33
+ (n = /\brv[ :]+(\.?\d+(\.\d+)*)/g.exec(r) || []), [oi.Ku, n[1] || ""]
34
34
  );
35
35
  if (-1 !== r.indexOf("(Web0S; Linux/SmartTV)"))
36
36
  return ["LG Smart TV", null];
@@ -45,41 +45,41 @@ export default class ai extends ge {
45
45
  if (r.match(/\b(Roku)\b/)) return ["Roku", null];
46
46
  if (r.match(/\bAFTM\b/)) return ["Amazon Fire Stick", null];
47
47
  if (
48
- n[1] === gi.rE &&
49
- ((e = r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/)),
50
- null != e)
48
+ e[1] === oi.pE &&
49
+ ((n = r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/)),
50
+ null != n)
51
51
  )
52
52
  return (
53
- (e = e.slice(1)),
54
- (e[0] = e[0].replace("OPR", gi.EE)),
55
- (e[0] = e[0].replace("EdgA", gi.eE)),
56
- "Edg" === e[0] && (e[0] = gi.eE),
57
- [e[0], e[1]]
53
+ (n = n.slice(1)),
54
+ (n[0] = n[0].replace("OPR", oi.FE)),
55
+ (n[0] = n[0].replace("EdgA", oi.xE)),
56
+ "Edg" === n[0] && (n[0] = oi.xE),
57
+ [n[0], n[1]]
58
58
  );
59
59
  if (
60
- n[1] === gi.kg &&
61
- ((e = r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/)), null != e)
60
+ e[1] === oi.Bg &&
61
+ ((n = r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/)), null != n)
62
62
  )
63
63
  return (
64
- (e = e.slice(1)), (e[0] = e[0].replace("EdgiOS", gi.eE)), [e[0], e[1]]
64
+ (n = n.slice(1)), (n[0] = n[0].replace("EdgiOS", oi.xE)), [n[0], n[1]]
65
65
  );
66
66
  if (
67
- ((n = n[2] ? [n[1], n[2]] : [null, null]),
68
- n[0] === gi.kg &&
69
- null != (e = r.match(/version\/(\.?\d+(\.\d+)*)/i)) &&
70
- n.splice(1, 1, e[1]),
71
- null != (e = r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/)) &&
72
- n.splice(1, 1, e[2]),
73
- n[0] === gi.EE && null != (e = r.match(/mini\/(\.?\d+(\.\d+)*)/i)))
67
+ ((e = e[2] ? [e[1], e[2]] : [null, null]),
68
+ e[0] === oi.Bg &&
69
+ null != (n = r.match(/version\/(\.?\d+(\.\d+)*)/i)) &&
70
+ e.splice(1, 1, n[1]),
71
+ null != (n = r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/)) &&
72
+ e.splice(1, 1, n[2]),
73
+ e[0] === oi.FE && null != (n = r.match(/mini\/(\.?\d+(\.\d+)*)/i)))
74
74
  )
75
- return ["Opera Mini", e[1] || ""];
76
- if (n[0]) {
77
- const r = n[0].toLowerCase();
78
- "msie" === r && (n[0] = gi.Pg),
79
- "crios" === r && (n[0] = gi.rE),
80
- "tizen" === r && ((n[0] = "Samsung Smart TV"), (n[1] = null)),
81
- "samsungbrowser" === r && (n[0] = "Samsung Browser");
75
+ return ["Opera Mini", n[1] || ""];
76
+ if (e[0]) {
77
+ const r = e[0].toLowerCase();
78
+ "msie" === r && (e[0] = oi.Ku),
79
+ "crios" === r && (e[0] = oi.pE),
80
+ "tizen" === r && ((e[0] = "Samsung Smart TV"), (e[1] = null)),
81
+ "samsungbrowser" === r && (e[0] = "Samsung Browser");
82
82
  }
83
- return n;
83
+ return e;
84
84
  }
85
85
  }