@braze/web-sdk 4.8.3 → 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.
- package/index.d.ts +121 -6
- package/package.json +1 -1
- package/shared-lib/braze-shared-lib.js +7 -7
- package/shared-lib/encoding-utils.js +4 -4
- package/shared-lib/event-types.js +22 -21
- package/shared-lib/guid.js +7 -7
- package/shared-lib/indexed-db-adapter.js +172 -135
- package/shared-lib/logger.js +26 -26
- package/shared-lib/supported-options.js +15 -15
- package/shared-lib/types.js +1 -0
- package/src/Card/card-manager-factory.js +1 -1
- package/src/Card/card-manager.js +2 -2
- package/src/Card/display/card-display.js +5 -4
- package/src/Card/models/banner.js +10 -10
- package/src/Card/models/captioned-image.js +7 -7
- package/src/Card/models/card.js +37 -36
- package/src/Card/models/classic-card.js +7 -7
- package/src/Card/models/control-card.js +3 -3
- package/src/Card/models/image-only.js +32 -0
- package/src/Card/models/index.js +1 -0
- package/src/Card/util/card-factory.js +16 -16
- package/src/ContentCards/content-cards-provider-factory.js +1 -1
- package/src/ContentCards/content-cards-provider.js +102 -102
- package/src/ContentCards/get-cached-content-cards.js +1 -1
- package/src/ContentCards/request-content-cards-refresh.js +1 -1
- package/src/ContentCards/subscribe-to-content-cards-updates.js +4 -4
- package/src/ContentCards/ui/show-content-cards.js +15 -12
- package/src/Core/add-sdk-metadata.js +2 -2
- package/src/Core/braze-sdk-metadata.js +1 -1
- package/src/Core/change-user.js +1 -1
- package/src/Core/device-properties.js +1 -1
- package/src/Core/disable-sdk.js +10 -7
- package/src/Core/enable-sdk.js +5 -2
- package/src/Core/get-device-id.js +3 -3
- package/src/Core/get-user.js +1 -1
- package/src/Core/handle-braze-action.js +14 -14
- package/src/Core/is-disabled.js +1 -1
- package/src/Core/log-custom-event.js +4 -4
- package/src/Core/log-purchase.js +9 -9
- package/src/Core/open-session.js +10 -10
- package/src/FeatureFlags/feature-flag-factory.js +5 -3
- package/src/FeatureFlags/feature-flag.js +17 -14
- package/src/FeatureFlags/feature-flags-provider-factory.js +1 -1
- package/src/FeatureFlags/feature-flags-provider.js +56 -43
- package/src/FeatureFlags/get-all-feature-flags.js +2 -2
- package/src/FeatureFlags/get-feature-flag.js +2 -2
- package/src/FeatureFlags/index.js +1 -0
- package/src/FeatureFlags/log-feature-flag-impression.js +23 -0
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +1 -1
- package/src/Feed/feed-provider-factory.js +1 -1
- package/src/Feed/feed-provider.js +20 -20
- package/src/Feed/get-cached-feed.js +1 -1
- package/src/Feed/log-feed-displayed.js +1 -1
- package/src/Feed/request-feed-refresh.js +1 -1
- package/src/Feed/subscribe-to-feed-updates.js +1 -1
- package/src/Feed/ui/show-feed.js +13 -10
- package/src/InAppMessage/defer-in-app-message.js +13 -0
- package/src/InAppMessage/display/get-animation-effect.js +1 -1
- package/src/InAppMessage/display/html-message-to-html.js +47 -47
- package/src/InAppMessage/display/in-app-message-to-html.js +92 -91
- package/src/InAppMessage/display/modal-utils.js +16 -16
- package/src/InAppMessage/get-deferred-in-app-message.js +5 -0
- package/src/InAppMessage/in-app-message-factory.js +77 -57
- package/src/InAppMessage/in-app-message-manager-factory.js +6 -6
- package/src/InAppMessage/in-app-message-manager.js +121 -82
- package/src/InAppMessage/index.js +2 -0
- package/src/InAppMessage/log-in-app-message-button-click.js +17 -9
- package/src/InAppMessage/log-in-app-message-click.js +4 -4
- package/src/InAppMessage/log-in-app-message-html-click.js +6 -6
- package/src/InAppMessage/log-in-app-message-impression.js +3 -3
- package/src/InAppMessage/models/full-screen-message.js +65 -29
- package/src/InAppMessage/models/html-message.js +32 -13
- package/src/InAppMessage/models/in-app-message-button.js +7 -7
- package/src/InAppMessage/models/in-app-message.js +203 -134
- package/src/InAppMessage/models/modal-message.js +64 -29
- package/src/InAppMessage/models/slide-up-message.js +52 -24
- package/src/InAppMessage/models/templated-in-app-message.js +8 -8
- package/src/InAppMessage/subscribe-to-in-app-message.js +2 -2
- package/src/InAppMessage/ui/automatically-show-in-app-messages.js +6 -6
- package/src/InAppMessage/ui/show-in-app-message.js +49 -47
- package/src/InAppMessage/utils/in-app-message-utils.js +1 -1
- package/src/Push/is-push-blocked.js +2 -2
- package/src/Push/is-push-permission-granted.js +2 -2
- package/src/Push/is-push-supported.js +2 -2
- package/src/Push/push-manager-factory.js +19 -19
- package/src/Push/push-manager.js +131 -131
- package/src/Push/request-push-permission.js +2 -2
- package/src/Push/unregister-push.js +2 -2
- package/src/Push/utils/push-utils.js +12 -10
- package/src/User/user-manager.js +4 -4
- package/src/User/user.js +57 -57
- package/src/common/base-feed.js +1 -1
- package/src/common/constants.js +1 -0
- package/src/common/event-logger.js +6 -6
- package/src/common/feed-display.js +34 -34
- package/src/common/translations.js +33 -33
- package/src/l10n/l10n-manager-factory.js +8 -8
- package/src/l10n/l10n-manager.js +6 -2
- package/src/l10n/types.js +1 -0
- package/src/managers/auth-manager.js +29 -29
- package/src/managers/braze-instance.js +125 -125
- package/src/managers/device-manager.js +20 -20
- package/src/managers/network-manager.js +100 -98
- package/src/managers/server-config-manager.js +23 -23
- package/src/managers/session-manager.js +5 -5
- package/src/managers/storage-manager-factory.js +9 -9
- package/src/managers/storage-manager.js +132 -129
- package/src/managers/subscription-manager.js +8 -8
- package/src/models/backend-errors.js +6 -6
- package/src/models/braze-event.js +11 -11
- package/src/models/braze-sdk-metadata.js +1 -1
- package/src/models/device.js +2 -2
- package/src/models/identifier.js +1 -1
- package/src/models/push-token.js +5 -5
- package/src/models/server-config.js +7 -7
- package/src/request-controller.js +191 -178
- package/src/triggers/models/custom-event-data.js +4 -4
- package/src/triggers/models/custom-event-property-data.js +7 -7
- package/src/triggers/models/filter-set.js +5 -5
- package/src/triggers/models/filter.js +64 -60
- package/src/triggers/models/in-app-message-click-data.js +9 -9
- package/src/triggers/models/purchase-data.js +4 -4
- package/src/triggers/models/purchase-property-data.js +6 -6
- package/src/triggers/models/push-click-data.js +6 -6
- package/src/triggers/models/trigger-condition.js +55 -59
- package/src/triggers/models/trigger-events.js +3 -3
- package/src/triggers/models/trigger.js +47 -35
- package/src/triggers/triggers-provider-factory.js +10 -6
- package/src/triggers/triggers-provider.js +203 -185
- package/src/triggers/types.js +1 -0
- package/src/ui/js/attach-css.js +5 -4
- package/src/ui/js/feed-css.js +5 -5
- package/src/ui/js/iam-css.js +5 -5
- package/src/ui/js/load-font-awesome.js +1 -1
- package/src/util/base-device-parser.js +1 -1
- package/src/util/braze-actions.js +35 -30
- package/src/util/browser-detector.js +30 -31
- package/src/util/client-hints-parser.js +30 -24
- package/src/util/code-utils.js +22 -21
- package/src/util/color-utils.js +19 -13
- package/src/util/component-utils.js +4 -4
- package/src/util/date-utils.js +4 -3
- package/src/util/device-constants.js +10 -10
- package/src/util/dom-utils.js +32 -28
- package/src/util/error-utils.js +1 -1
- package/src/util/key-codes.js +1 -1
- package/src/util/net.js +53 -57
- package/src/util/request-header-utils.js +34 -11
- package/src/util/string-utils.js +14 -14
- package/src/util/types.js +1 -0
- package/src/util/url-utils.js +1 -4
- package/src/util/user-agent-parser.js +39 -39
- package/src/util/validation-utils.js +32 -32
- package/src/util/window-utils.js +11 -12
package/src/util/date-utils.js
CHANGED
|
@@ -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
|
-
|
|
11
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
xg: "Android",
|
|
11
|
+
de: "iOS",
|
|
12
|
+
kg: "Mac",
|
|
13
|
+
Pg: "Windows",
|
|
14
14
|
};
|
package/src/util/dom-utils.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 = {
|
|
20
|
-
export const DIRECTIONS = {
|
|
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.
|
|
23
|
-
DOMUtils.
|
|
24
|
+
if (null == DOMUtils.Wu) {
|
|
25
|
+
DOMUtils.Wu = !1;
|
|
24
26
|
try {
|
|
25
27
|
const t = Object.defineProperty({}, "passive", {
|
|
26
28
|
get: () => {
|
|
27
|
-
DOMUtils.
|
|
28
|
-
}
|
|
29
|
+
DOMUtils.Wu = !0;
|
|
30
|
+
},
|
|
29
31
|
});
|
|
30
|
-
window.addEventListener("testPassive",
|
|
31
|
-
window.removeEventListener("testPassive",
|
|
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.
|
|
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.
|
|
44
|
+
return DOMUtils.no(t, !0, !1, !1);
|
|
41
45
|
}
|
|
42
46
|
export function bottomIsInView(t) {
|
|
43
|
-
return DOMUtils.
|
|
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
|
-
|
|
61
|
-
Math.abs(l) > Math.abs(
|
|
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(
|
|
67
|
-
(((
|
|
68
|
-
n === DIRECTIONS.
|
|
70
|
+
: Math.abs(r) >= 25 &&
|
|
71
|
+
(((r > 0 &&
|
|
72
|
+
n === DIRECTIONS.Oe &&
|
|
69
73
|
t.scrollTop === t.scrollHeight - t.offsetHeight) ||
|
|
70
|
-
(
|
|
74
|
+
(r < 0 && n === DIRECTIONS.Qe && 0 === t.scrollTop)) &&
|
|
71
75
|
e(o),
|
|
72
76
|
(s = null),
|
|
73
77
|
(i = null));
|
package/src/util/error-utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const getErrorMessage = r =>
|
|
1
|
+
export const getErrorMessage = (r) =>
|
|
2
2
|
r instanceof Error ? r.message : String(r);
|
package/src/util/key-codes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const KeyCodes = {
|
|
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
|
-
|
|
5
|
+
Xs: (t) => {
|
|
5
6
|
let e, o;
|
|
6
7
|
try {
|
|
7
|
-
const
|
|
8
|
+
const s = () => {
|
|
8
9
|
r.j.error("This browser does not have any supported ajax options!");
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
) {
|
|
14
|
-
|
|
15
|
-
"function" == typeof t.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
39
|
-
}
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
55
|
+
r.j.error(`Network request error: ${ei(t)}`);
|
|
57
56
|
}
|
|
58
|
-
}
|
|
57
|
+
},
|
|
59
58
|
};
|
|
60
|
-
export const readResponseHeaders = t => {
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
export const readResponseHeaders = (t) => {
|
|
60
|
+
const e = {},
|
|
61
|
+
o = t.toString().split("\r\n");
|
|
63
62
|
if (!o) return e;
|
|
64
|
-
let r,
|
|
63
|
+
let r, s;
|
|
65
64
|
for (const t of o)
|
|
66
65
|
t &&
|
|
67
|
-
((r = t
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
if (e) return e.v(i.k.
|
|
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
|
-
|
|
8
|
-
e
|
|
8
|
+
Xu: (e) => {
|
|
9
|
+
if (e) return e.v(i.k.lE);
|
|
9
10
|
},
|
|
10
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
42
|
+
const r = T.Xh(e, t);
|
|
43
|
+
T.si(e, t, r + 1);
|
|
44
|
+
},
|
|
22
45
|
};
|
|
23
46
|
export default T;
|
package/src/util/string-utils.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import r from "../../shared-lib/braze-shared-lib.js";
|
|
2
|
-
export function getByteLength(
|
|
3
|
-
let
|
|
4
|
-
for (let r =
|
|
5
|
-
const n =
|
|
6
|
-
n > 127 && n <= 2047 ?
|
|
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
|
|
9
|
+
return e;
|
|
10
10
|
}
|
|
11
|
-
export function decodeBrazeActions(
|
|
11
|
+
export function decodeBrazeActions(t) {
|
|
12
12
|
try {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
r = new Uint8Array(
|
|
16
|
-
for (let
|
|
17
|
-
|
|
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 (
|
|
20
|
-
return r.j.error("Unable to decode Base64: " +
|
|
19
|
+
} catch (t) {
|
|
20
|
+
return r.j.error("Unable to decode Base64: " + t), null;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/src/util/url-utils.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import ge from "./base-device-parser.js";
|
|
2
|
-
import { Browsers as
|
|
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.
|
|
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
|
-
|
|
14
|
-
for (let
|
|
15
|
-
|
|
16
|
-
|
|
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.
|
|
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
|
|
26
|
-
let
|
|
27
|
-
|
|
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(
|
|
31
|
+
if (e[1] && /trident/i.test(e[1]))
|
|
32
32
|
return (
|
|
33
|
-
(
|
|
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
|
-
|
|
49
|
-
((
|
|
50
|
-
null !=
|
|
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
|
-
(
|
|
54
|
-
(
|
|
55
|
-
(
|
|
56
|
-
"Edg" ===
|
|
57
|
-
[
|
|
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
|
-
|
|
61
|
-
((
|
|
60
|
+
e[1] === oi.Bg &&
|
|
61
|
+
((n = r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/)), null != n)
|
|
62
62
|
)
|
|
63
63
|
return (
|
|
64
|
-
(
|
|
64
|
+
(n = n.slice(1)), (n[0] = n[0].replace("EdgiOS", oi.xE)), [n[0], n[1]]
|
|
65
65
|
);
|
|
66
66
|
if (
|
|
67
|
-
((
|
|
68
|
-
|
|
69
|
-
null != (
|
|
70
|
-
|
|
71
|
-
null != (
|
|
72
|
-
|
|
73
|
-
|
|
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",
|
|
76
|
-
if (
|
|
77
|
-
const r =
|
|
78
|
-
"msie" === r && (
|
|
79
|
-
"crios" === r && (
|
|
80
|
-
"tizen" === r && ((
|
|
81
|
-
"samsungbrowser" === r && (
|
|
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
|
|
83
|
+
return e;
|
|
84
84
|
}
|
|
85
85
|
}
|