@braze/web-sdk 6.4.0 → 6.6.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/README.md +1 -1
- package/index.d.ts +11 -5
- package/package.json +1 -1
- package/shared-lib/encoding-utils.js +3 -3
- package/shared-lib/event-types.js +30 -30
- package/shared-lib/guid.js +3 -3
- package/shared-lib/indexed-db-adapter.js +58 -58
- package/shared-lib/logger.js +7 -7
- package/shared-lib/supported-options.js +17 -16
- package/src/Banner/banner-provider.js +95 -81
- package/src/Banner/banner.js +9 -9
- package/src/Banner/constants.js +4 -0
- package/src/Banner/display/banner-to-html.js +1 -1
- package/src/Banner/display/destroy-banner-html.js +3 -3
- package/src/Banner/display/detect-banner-impressions.js +14 -14
- package/src/Banner/get-all-banners.js +4 -4
- package/src/Banner/get-banner.js +5 -4
- package/src/Banner/log-banner-click.js +2 -2
- package/src/Banner/log-banner-impressions.js +6 -6
- package/src/Banner/request-banners-refresh.js +18 -20
- package/src/Banner/subscribe-to-banners-updates.js +5 -5
- package/src/Banner/ui/insert-banner.js +17 -14
- package/src/Card/card-manager-factory.js +3 -3
- package/src/Card/card-manager.js +32 -32
- package/src/Card/constants.js +1 -0
- package/src/Card/display/card-display.js +11 -11
- package/src/Card/log-card-dismissal.js +2 -2
- package/src/Card/log-content-card-click.js +2 -2
- package/src/Card/log-content-card-impressions.js +5 -5
- package/src/Card/models/captioned-image.js +3 -3
- package/src/Card/models/card.js +16 -16
- package/src/Card/models/classic-card.js +3 -3
- package/src/Card/models/control-card.js +3 -3
- package/src/Card/models/image-only.js +3 -3
- package/src/Card/util/card-factory.js +6 -6
- package/src/ContentCards/content-cards-provider-factory.js +11 -11
- package/src/ContentCards/content-cards-provider.js +110 -96
- package/src/ContentCards/get-cached-content-cards.js +2 -2
- package/src/ContentCards/request-content-cards-refresh.js +2 -2
- package/src/ContentCards/subscribe-to-content-cards-updates.js +5 -5
- package/src/ContentCards/ui/show-content-cards.js +5 -5
- package/src/Core/add-sdk-metadata.js +2 -2
- package/src/Core/change-user.js +4 -4
- package/src/Core/disable-sdk.js +9 -8
- package/src/Core/enable-sdk.js +5 -5
- package/src/Core/get-device-id.js +2 -2
- package/src/Core/handle-braze-action.js +3 -3
- package/src/Core/is-disabled.js +1 -1
- package/src/Core/log-custom-event.js +13 -13
- package/src/Core/log-purchase.js +10 -10
- package/src/Core/open-session.js +7 -7
- package/src/Core/set-sdk-authentication-signature.js +2 -2
- package/src/Core/wipe-data.js +6 -6
- package/src/DUST/dust-connection-core.js +23 -0
- package/src/DUST/dust-provider-factory.js +10 -8
- package/src/DUST/dust-provider.js +408 -176
- package/src/DUST/dust-shared-worker-code.js +2 -0
- package/src/DUST/dust-shared-worker-impl.js +240 -0
- package/src/DUST/dust-worker-bridge.js +136 -0
- package/src/DUST/index.js +10 -0
- package/src/DUST/subscribe-to-dust.js +13 -13
- package/src/FeatureFlags/feature-flag-factory.js +8 -8
- package/src/FeatureFlags/feature-flag.js +6 -6
- package/src/FeatureFlags/feature-flags-provider-factory.js +9 -9
- package/src/FeatureFlags/feature-flags-provider.js +98 -84
- package/src/FeatureFlags/get-all-feature-flags.js +3 -3
- package/src/FeatureFlags/get-feature-flag.js +3 -3
- package/src/FeatureFlags/log-feature-flag-impression.js +7 -7
- package/src/FeatureFlags/refresh-feature-flags.js +2 -2
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +4 -4
- package/src/InAppMessage/constants.js +4 -0
- package/src/InAppMessage/defer-in-app-message.js +2 -2
- package/src/InAppMessage/display/get-animation-effect.js +1 -1
- package/src/InAppMessage/display/html-message-to-html.js +6 -6
- package/src/InAppMessage/display/in-app-message-to-html.js +40 -40
- package/src/InAppMessage/display/modal-utils.js +16 -16
- package/src/InAppMessage/get-deferred-in-app-message.js +2 -2
- package/src/InAppMessage/in-app-message-factory.js +4 -4
- package/src/InAppMessage/in-app-message-manager-factory.js +7 -7
- package/src/InAppMessage/in-app-message-manager.js +97 -97
- package/src/InAppMessage/log-in-app-message-button-click.js +14 -14
- package/src/InAppMessage/log-in-app-message-click.js +13 -13
- package/src/InAppMessage/log-in-app-message-html-click.js +11 -11
- package/src/InAppMessage/log-in-app-message-impression.js +8 -8
- package/src/InAppMessage/models/control-message.js +5 -5
- package/src/InAppMessage/models/full-screen-message.js +18 -18
- package/src/InAppMessage/models/html-message.js +19 -19
- package/src/InAppMessage/models/in-app-message-button.js +7 -7
- package/src/InAppMessage/models/in-app-message.js +121 -119
- package/src/InAppMessage/models/modal-message.js +18 -18
- package/src/InAppMessage/models/slide-up-message.js +23 -23
- 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 +5 -5
- package/src/InAppMessage/ui/remove-all-visible-in-app-messages.js +8 -8
- package/src/InAppMessage/ui/show-in-app-message.js +34 -34
- package/src/Push/push-manager-factory.js +14 -14
- package/src/Push/push-manager.js +90 -90
- package/src/Push/request-push-permission.js +1 -1
- package/src/Push/unregister-push.js +1 -1
- package/src/Push/utils/push-utils.js +9 -9
- package/src/User/user-manager.js +32 -32
- package/src/User/user.js +71 -71
- package/src/common/constants.js +8 -11
- package/src/common/content-cards-display.js +32 -32
- package/src/common/event-logger.js +10 -10
- package/src/common/properties-base.js +16 -16
- package/src/l10n/l10n-manager-factory.js +11 -11
- package/src/l10n/l10n-manager.js +2 -2
- package/src/managers/auth-manager.js +14 -14
- package/src/managers/braze-instance.js +163 -159
- package/src/managers/device-manager.js +11 -11
- package/src/managers/network-manager.js +154 -154
- package/src/managers/server-config-manager.js +116 -88
- package/src/managers/session-manager.js +41 -41
- package/src/managers/storage-manager-factory.js +13 -13
- package/src/managers/storage-manager.js +130 -131
- package/src/managers/subscription-manager.js +12 -12
- package/src/managers/utils.js +1 -1
- package/src/models/backend-errors.js +5 -5
- package/src/models/braze-event.js +10 -10
- package/src/models/device.js +2 -2
- package/src/models/identifier.js +17 -17
- package/src/models/push-token.js +14 -14
- package/src/models/request-result.js +4 -4
- package/src/models/server-config.js +41 -37
- package/src/request-controller.js +163 -160
- package/src/triggers/models/custom-event-data.js +5 -5
- package/src/triggers/models/custom-event-property-data.js +6 -6
- package/src/triggers/models/filter-set.js +8 -8
- package/src/triggers/models/filter.js +7 -7
- package/src/triggers/models/in-app-message-click-data.js +13 -13
- package/src/triggers/models/purchase-data.js +2 -2
- 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 +47 -47
- package/src/triggers/models/trigger-events.js +2 -2
- package/src/triggers/models/trigger.js +42 -42
- package/src/triggers/triggers-provider-factory.js +5 -5
- package/src/triggers/triggers-provider.js +66 -66
- package/src/ui/js/attach-css.js +3 -3
- package/src/ui/js/load-font-awesome.js +2 -2
- package/src/util/base-device-parser.js +8 -8
- package/src/util/braze-actions.js +5 -5
- package/src/util/browser-detector.js +33 -33
- package/src/util/client-hints-parser.js +10 -10
- package/src/util/component-utils.js +5 -5
- package/src/util/dom-utils.js +13 -13
- package/src/util/html-display-utils.js +7 -7
- package/src/util/key-codes.js +1 -1
- package/src/util/net.js +6 -6
- package/src/util/request-header-utils.js +26 -26
- package/src/util/user-agent-parser.js +20 -20
- package/src/util/validation-utils.js +16 -16
- package/src/util/window-utils.js +3 -3
package/src/util/dom-utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logger as E } from "../../shared-lib/index.js";
|
|
2
|
-
import { getErrorMessage as
|
|
2
|
+
import { getErrorMessage as ai } from "./error-utils.js";
|
|
3
3
|
export function _isInView(t, n = !1, e = !1, s = !1) {
|
|
4
4
|
if (null == t) return !1;
|
|
5
5
|
(n = n || !1), (e = e || !1);
|
|
@@ -18,33 +18,33 @@ export function _isInView(t, n = !1, e = !1, s = !1) {
|
|
|
18
18
|
!s)
|
|
19
19
|
);
|
|
20
20
|
}
|
|
21
|
-
export const DOMUtils = {
|
|
22
|
-
export const DIRECTIONS = {
|
|
21
|
+
export const DOMUtils = { lp: null, td: _isInView };
|
|
22
|
+
export const DIRECTIONS = { Uo: "up", Vo: "down", de: "left", ce: "right" };
|
|
23
23
|
export function supportsPassive() {
|
|
24
|
-
if (null == DOMUtils.
|
|
25
|
-
DOMUtils.
|
|
24
|
+
if (null == DOMUtils.lp) {
|
|
25
|
+
DOMUtils.lp = !1;
|
|
26
26
|
try {
|
|
27
27
|
const t = Object.defineProperty({}, "passive", {
|
|
28
28
|
get: () => {
|
|
29
|
-
DOMUtils.
|
|
29
|
+
DOMUtils.lp = !0;
|
|
30
30
|
},
|
|
31
31
|
});
|
|
32
32
|
window.addEventListener("testPassive", () => {}, t),
|
|
33
33
|
window.removeEventListener("testPassive", () => {}, t);
|
|
34
34
|
} catch (t) {
|
|
35
|
-
E.error(
|
|
35
|
+
E.error(ai(t));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
return DOMUtils.
|
|
38
|
+
return DOMUtils.lp;
|
|
39
39
|
}
|
|
40
40
|
export function addPassiveEventListener(t, n, e = () => {}) {
|
|
41
41
|
t.addEventListener(n, e, !!supportsPassive() && { passive: !0 });
|
|
42
42
|
}
|
|
43
43
|
export function topIsInView(t) {
|
|
44
|
-
return DOMUtils.
|
|
44
|
+
return DOMUtils.td(t, !0, !1, !1);
|
|
45
45
|
}
|
|
46
46
|
export function bottomIsInView(t) {
|
|
47
|
-
return DOMUtils.
|
|
47
|
+
return DOMUtils.td(t, !1, !0, !1);
|
|
48
48
|
}
|
|
49
49
|
export function clickElement(t) {
|
|
50
50
|
if (t.onclick) {
|
|
@@ -63,15 +63,15 @@ export function detectSwipe(t, n, e) {
|
|
|
63
63
|
const l = s - o.touches[0].clientX,
|
|
64
64
|
u = i - o.touches[0].clientY;
|
|
65
65
|
Math.abs(l) > Math.abs(u) && Math.abs(l) >= 25
|
|
66
|
-
? (((l > 0 && n === DIRECTIONS.
|
|
66
|
+
? (((l > 0 && n === DIRECTIONS.de) || (l < 0 && n === DIRECTIONS.ce)) &&
|
|
67
67
|
e(o),
|
|
68
68
|
(s = null),
|
|
69
69
|
(i = null))
|
|
70
70
|
: Math.abs(u) >= 25 &&
|
|
71
71
|
(((u > 0 &&
|
|
72
|
-
n === DIRECTIONS.
|
|
72
|
+
n === DIRECTIONS.Uo &&
|
|
73
73
|
t.scrollTop === t.scrollHeight - t.offsetHeight) ||
|
|
74
|
-
(u < 0 && n === DIRECTIONS.
|
|
74
|
+
(u < 0 && n === DIRECTIONS.Vo && 0 === t.scrollTop)) &&
|
|
75
75
|
e(o),
|
|
76
76
|
(s = null),
|
|
77
77
|
(i = null));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logger as E } from "../../shared-lib/index.js";
|
|
2
2
|
import { getUser as ao } from "../Core/get-user.js";
|
|
3
|
-
import {
|
|
3
|
+
import { CoreStrings as z } from "../common/constants.js";
|
|
4
4
|
import r from "../managers/braze-instance.js";
|
|
5
5
|
import { keys as C } from "../util/code-utils.js";
|
|
6
6
|
import User from "../User/user.js";
|
|
@@ -12,7 +12,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
12
12
|
import("../Push/request-push-permission.js").then((e) => {
|
|
13
13
|
r.ao()
|
|
14
14
|
? e.requestPushPermission(...Array.prototype.slice.call(t))
|
|
15
|
-
: E.error(
|
|
15
|
+
: E.error(z.ee);
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
18
|
},
|
|
@@ -23,7 +23,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
23
23
|
({ requestImmediateDataFlush: requestImmediateDataFlush }) => {
|
|
24
24
|
r.ao()
|
|
25
25
|
? requestImmediateDataFlush(...Array.prototype.slice.call(t))
|
|
26
|
-
: E.error(
|
|
26
|
+
: E.error(z.ee);
|
|
27
27
|
},
|
|
28
28
|
);
|
|
29
29
|
},
|
|
@@ -31,7 +31,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
31
31
|
const t = arguments;
|
|
32
32
|
import("../Core/log-custom-event.js").then(
|
|
33
33
|
({ logCustomEvent: logCustomEvent }) => {
|
|
34
|
-
if (!r.ao()) return void E.error(
|
|
34
|
+
if (!r.ao()) return void E.error(z.ee);
|
|
35
35
|
logCustomEvent(...Array.prototype.slice.call(t));
|
|
36
36
|
},
|
|
37
37
|
);
|
|
@@ -40,7 +40,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
40
40
|
const t = arguments;
|
|
41
41
|
import("../Core/log-purchase.js").then(
|
|
42
42
|
({ logPurchase: logPurchase }) => {
|
|
43
|
-
if (!r.ao()) return void E.error(
|
|
43
|
+
if (!r.ao()) return void E.error(z.ee);
|
|
44
44
|
logPurchase(...Array.prototype.slice.call(t));
|
|
45
45
|
},
|
|
46
46
|
);
|
|
@@ -51,7 +51,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
51
51
|
({ unregisterPush: unregisterPush }) => {
|
|
52
52
|
r.ao()
|
|
53
53
|
? unregisterPush(...Array.prototype.slice.call(t))
|
|
54
|
-
: E.error(
|
|
54
|
+
: E.error(z.ee);
|
|
55
55
|
},
|
|
56
56
|
);
|
|
57
57
|
},
|
|
@@ -59,7 +59,7 @@ export const buildBrazeBridge = (t, e) => {
|
|
|
59
59
|
changeUser: function () {
|
|
60
60
|
const t = arguments;
|
|
61
61
|
import("../Core/change-user.js").then(({ changeUser: changeUser }) => {
|
|
62
|
-
if (!r.ao()) return void E.error(
|
|
62
|
+
if (!r.ao()) return void E.error(z.ee);
|
|
63
63
|
changeUser(...Array.prototype.slice.call(t));
|
|
64
64
|
});
|
|
65
65
|
},
|
package/src/util/key-codes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const KeyCodes = {
|
|
1
|
+
export const KeyCodes = { Ho: 32, Wo: 9, Go: 13, Ih: 27 };
|
package/src/util/net.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { logger as E } from "../../shared-lib/index.js";
|
|
2
|
-
import
|
|
3
|
-
import { getErrorMessage as
|
|
4
|
-
const
|
|
2
|
+
import qt from "../models/backend-errors.js";
|
|
3
|
+
import { getErrorMessage as ai } from "./error-utils.js";
|
|
4
|
+
const l = {
|
|
5
5
|
O: (t) => {
|
|
6
6
|
let e, o;
|
|
7
7
|
try {
|
|
@@ -27,7 +27,7 @@ const a = {
|
|
|
27
27
|
o = JSON.parse(e.responseText);
|
|
28
28
|
} catch (o) {
|
|
29
29
|
const n = {
|
|
30
|
-
error: "" === e.responseText ?
|
|
30
|
+
error: "" === e.responseText ? qt.wl : qt.Bl,
|
|
31
31
|
response: e.responseText,
|
|
32
32
|
};
|
|
33
33
|
(0, t.W)(n, r);
|
|
@@ -51,7 +51,7 @@ const a = {
|
|
|
51
51
|
for (const t of i) e.setRequestHeader(t[0], t[1]);
|
|
52
52
|
e.send(o);
|
|
53
53
|
} catch (t) {
|
|
54
|
-
E.error(`Network request error: ${
|
|
54
|
+
E.error(`Network request error: ${ai(t)}`);
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
};
|
|
@@ -67,4 +67,4 @@ export const readResponseHeaders = (t) => {
|
|
|
67
67
|
(e[r] = n));
|
|
68
68
|
return e;
|
|
69
69
|
};
|
|
70
|
-
export default
|
|
70
|
+
export default l;
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { REQUEST_ATTEMPT_DEFAULT as
|
|
1
|
+
import { REQUEST_ATTEMPT_DEFAULT as Ne } from "../common/constants.js";
|
|
2
2
|
import { STORAGE_KEYS as s } from "../managers/storage-manager.js";
|
|
3
3
|
const h = {
|
|
4
4
|
H: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
_e: "data",
|
|
6
|
+
vi: "content_cards/sync",
|
|
7
|
+
wo: "feature_flags/sync",
|
|
8
|
+
Xn: "template",
|
|
9
9
|
G: "banners/sync",
|
|
10
10
|
},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
null == t || t.
|
|
11
|
+
qc: (t) => (null == t ? void 0 : t.dt(s.ft.lE)),
|
|
12
|
+
Am: (t) => (null == t ? void 0 : t.dt(s.ft._E)),
|
|
13
|
+
Rm: (t, e) => {
|
|
14
|
+
null == t || t.bt(s.ft.lE, e);
|
|
15
15
|
},
|
|
16
|
-
|
|
17
|
-
null == t || t.
|
|
16
|
+
qm: (t, e) => {
|
|
17
|
+
null == t || t.bt(s.ft._E, e);
|
|
18
18
|
},
|
|
19
|
-
|
|
19
|
+
Ul: (t, e) => {
|
|
20
20
|
if (!t || !e) return -1;
|
|
21
|
-
const s = h.
|
|
21
|
+
const s = h.qc(t);
|
|
22
22
|
if (null == s) return -1;
|
|
23
23
|
const n = s[e];
|
|
24
24
|
return null == n || isNaN(n) ? -1 : n;
|
|
25
25
|
},
|
|
26
|
-
|
|
27
|
-
let s =
|
|
26
|
+
xl: (t, e) => {
|
|
27
|
+
let s = Ne;
|
|
28
28
|
if (!t || !e) return s;
|
|
29
|
-
const n = h.
|
|
30
|
-
return null == n ? s : ((s = n[e]), null == s || isNaN(s) ?
|
|
29
|
+
const n = h.Am(t);
|
|
30
|
+
return null == n ? s : ((s = n[e]), null == s || isNaN(s) ? Ne : s);
|
|
31
31
|
},
|
|
32
32
|
K: (t, e, s) => {
|
|
33
33
|
if (!t || !e) return;
|
|
34
|
-
let n = h.
|
|
35
|
-
null == n && (n = {}), (n[e] = s), h.
|
|
34
|
+
let n = h.qc(t);
|
|
35
|
+
null == n && (n = {}), (n[e] = s), h.Rm(t, n);
|
|
36
36
|
},
|
|
37
|
-
|
|
37
|
+
Hl: (t, e, s) => {
|
|
38
38
|
if (!t || !e) return;
|
|
39
|
-
let n = h.
|
|
40
|
-
null == n && (n = {}), (n[e] = s), h.
|
|
39
|
+
let n = h.Am(t);
|
|
40
|
+
null == n && (n = {}), (n[e] = s), h.qm(t, n);
|
|
41
41
|
},
|
|
42
42
|
fi: (t, e) => {
|
|
43
|
-
t && e && h.
|
|
43
|
+
t && e && h.Hl(t, e, Ne);
|
|
44
44
|
},
|
|
45
|
-
|
|
45
|
+
hc: (t, e) => {
|
|
46
46
|
if (!t || !e) return;
|
|
47
|
-
const s = h.
|
|
48
|
-
h.
|
|
47
|
+
const s = h.xl(t, e);
|
|
48
|
+
h.Hl(t, e, s + 1);
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
export default h;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Browsers as
|
|
3
|
-
export default class
|
|
1
|
+
import Oe from "./base-device-parser.js";
|
|
2
|
+
import { Browsers as bi, OperatingSystems as so } from "./device-constants.js";
|
|
3
|
+
export default class Si extends Oe {
|
|
4
4
|
constructor() {
|
|
5
|
-
super(), (this.
|
|
6
|
-
}
|
|
7
|
-
ef() {
|
|
8
|
-
return this.fd[0] || "Unknown Browser";
|
|
5
|
+
super(), (this.Vd = Si.hf(navigator.userAgent || ""));
|
|
9
6
|
}
|
|
10
7
|
ff() {
|
|
11
|
-
return this.
|
|
8
|
+
return this.Vd[0] || "Unknown Browser";
|
|
9
|
+
}
|
|
10
|
+
cf() {
|
|
11
|
+
return this.Vd[1] || "Unknown Version";
|
|
12
12
|
}
|
|
13
13
|
rc(r) {
|
|
14
14
|
for (let n = 0; n < r.length; n++) {
|
|
15
15
|
const e = r[n].string;
|
|
16
|
-
let i =
|
|
16
|
+
let i = Si.lf(e, r[n]);
|
|
17
17
|
if (i)
|
|
18
18
|
return (
|
|
19
19
|
i === so.Pg && navigator.maxTouchPoints > 1 && (i = so.co),
|
|
@@ -22,7 +22,7 @@ export default class gi extends ge {
|
|
|
22
22
|
}
|
|
23
23
|
return Promise.resolve(navigator.platform);
|
|
24
24
|
}
|
|
25
|
-
static
|
|
25
|
+
static hf(r) {
|
|
26
26
|
let n,
|
|
27
27
|
e =
|
|
28
28
|
r.match(
|
|
@@ -40,40 +40,40 @@ export default class gi extends ge {
|
|
|
40
40
|
if (-1 !== r.indexOf("PhilipsTV")) return ["Philips Smart TV", null];
|
|
41
41
|
if (r.match(/\b(Roku)\b/)) return ["Roku", null];
|
|
42
42
|
if (r.match(/\bAFTM\b/)) return ["Amazon Fire Stick", null];
|
|
43
|
-
if (e[1] ===
|
|
44
|
-
if (r.includes(
|
|
43
|
+
if (e[1] === bi.rO) {
|
|
44
|
+
if (r.includes(bi.Sg)) return [bi.Sg, e[2]];
|
|
45
45
|
if (
|
|
46
46
|
((n = r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/)),
|
|
47
47
|
null != n)
|
|
48
48
|
)
|
|
49
49
|
return (
|
|
50
50
|
(n = n.slice(1)),
|
|
51
|
-
(n[0] = n[0].replace("OPR",
|
|
52
|
-
(n[0] = n[0].replace("EdgA",
|
|
53
|
-
"Edg" === n[0] && (n[0] =
|
|
51
|
+
(n[0] = n[0].replace("OPR", bi.oO)),
|
|
52
|
+
(n[0] = n[0].replace("EdgA", bi.eO)),
|
|
53
|
+
"Edg" === n[0] && (n[0] = bi.eO),
|
|
54
54
|
[n[0], n[1]]
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
if (
|
|
58
|
-
e[1] ===
|
|
58
|
+
e[1] === bi.Bg &&
|
|
59
59
|
((n = r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/)), null != n)
|
|
60
60
|
)
|
|
61
61
|
return (
|
|
62
|
-
(n = n.slice(1)), (n[0] = n[0].replace("EdgiOS",
|
|
62
|
+
(n = n.slice(1)), (n[0] = n[0].replace("EdgiOS", bi.eO)), [n[0], n[1]]
|
|
63
63
|
);
|
|
64
64
|
if (
|
|
65
65
|
((e = e[2] ? [e[1], e[2]] : [null, null]),
|
|
66
|
-
e[0] ===
|
|
66
|
+
e[0] === bi.Bg &&
|
|
67
67
|
null != (n = r.match(/version\/(\.?\d+(\.\d+)*)/i)) &&
|
|
68
68
|
e.splice(1, 1, n[1]),
|
|
69
69
|
null != (n = r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/)) &&
|
|
70
70
|
e.splice(1, 1, n[2]),
|
|
71
|
-
e[0] ===
|
|
71
|
+
e[0] === bi.oO && null != (n = r.match(/mini\/(\.?\d+(\.\d+)*)/i)))
|
|
72
72
|
)
|
|
73
73
|
return ["Opera Mini", n[1] || ""];
|
|
74
74
|
if (e[0]) {
|
|
75
75
|
const r = e[0].toLowerCase();
|
|
76
|
-
"crios" === r && (e[0] =
|
|
76
|
+
"crios" === r && (e[0] = bi.rO),
|
|
77
77
|
"tizen" === r && ((e[0] = "Samsung Smart TV"), (e[1] = null)),
|
|
78
78
|
"samsungbrowser" === r && (e[0] = "Samsung Browser");
|
|
79
79
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
isArray as
|
|
2
|
+
isArray as R,
|
|
3
3
|
isDate as Nt,
|
|
4
4
|
isObject as yt,
|
|
5
5
|
keys as C,
|
|
6
6
|
} from "./code-utils.js";
|
|
7
|
-
import { getByteLength as
|
|
7
|
+
import { getByteLength as er } from "./string-utils.js";
|
|
8
8
|
import { logger as E } from "../../shared-lib/index.js";
|
|
9
|
-
import { toValidBackendTimeString as
|
|
9
|
+
import { toValidBackendTimeString as Dt } from "./date-utils.js";
|
|
10
10
|
import { BRAZE_ACTIONS as oo } from "./braze-actions.js";
|
|
11
|
-
import {
|
|
11
|
+
import { CoreStrings as z } from "../common/constants.js";
|
|
12
12
|
export const CUSTOM_DATA_REGEX = /^[^\x00-\x1F\x22]+$/;
|
|
13
13
|
export const CUSTOM_ATTRIBUTE_SPECIAL_CHARS_REGEX = /[$.]/;
|
|
14
14
|
export const CUSTOM_ATTRIBUTE_RESERVED_OPERATORS = [
|
|
@@ -58,10 +58,10 @@ export function _validateNestedProperties(t, e, r) {
|
|
|
58
58
|
if (n && r > 50)
|
|
59
59
|
return E.error("Nested attributes cannot be more than 50 levels deep."), !1;
|
|
60
60
|
const o = n ? r + 1 : -1;
|
|
61
|
-
if (
|
|
61
|
+
if (R(t) && R(e)) {
|
|
62
62
|
for (let r = 0; r < t.length && r < e.length; r++)
|
|
63
63
|
if (
|
|
64
|
-
(Nt(t[r]) && (e[r] =
|
|
64
|
+
(Nt(t[r]) && (e[r] = Dt(t[r])),
|
|
65
65
|
!_validateNestedProperties(t[r], e[r], o))
|
|
66
66
|
)
|
|
67
67
|
return !1;
|
|
@@ -71,7 +71,7 @@ export function _validateNestedProperties(t, e, r) {
|
|
|
71
71
|
const i = t[r];
|
|
72
72
|
if (n && !validateCustomAttributeKey(r)) return !1;
|
|
73
73
|
if (Nt(i)) {
|
|
74
|
-
e[r] =
|
|
74
|
+
e[r] = Dt(i);
|
|
75
75
|
}
|
|
76
76
|
if (!_validateNestedProperties(i, e[r], o)) return !1;
|
|
77
77
|
}
|
|
@@ -82,7 +82,7 @@ export function _validateEventPropertyValue(t, e, r, n, o) {
|
|
|
82
82
|
let i;
|
|
83
83
|
return (
|
|
84
84
|
(i =
|
|
85
|
-
yt(t) ||
|
|
85
|
+
yt(t) || R(t)
|
|
86
86
|
? _validateNestedProperties(t, e, o ? 1 : -1)
|
|
87
87
|
: validatePropertyType(t)),
|
|
88
88
|
i || E.error(`Cannot ${r} because ${n} "${t}" is invalid.`),
|
|
@@ -94,15 +94,15 @@ export function validateStandardString(t, e, r, n = !1) {
|
|
|
94
94
|
return o || E.error(`Cannot ${e} because ${r} "${t}" is invalid.`), o;
|
|
95
95
|
}
|
|
96
96
|
export function validateCustomProperties(t, e, r, n, o) {
|
|
97
|
-
if ((null == t && (t = {}), "object" != typeof t ||
|
|
97
|
+
if ((null == t && (t = {}), "object" != typeof t || R(t)))
|
|
98
98
|
return (
|
|
99
99
|
E.error(`${e} requires that ${r} be an object. Ignoring ${o}.`),
|
|
100
100
|
[!1, null]
|
|
101
101
|
);
|
|
102
102
|
let i, a;
|
|
103
|
-
e ===
|
|
103
|
+
e === z.Ku ? ((i = 76800), (a = "75KB")) : ((i = 51200), (a = "50KB"));
|
|
104
104
|
const s = JSON.stringify(t);
|
|
105
|
-
if (
|
|
105
|
+
if (er(s) > i)
|
|
106
106
|
return (
|
|
107
107
|
E.error(
|
|
108
108
|
`Could not ${n} because ${r} was greater than the max size of ${a}.`,
|
|
@@ -119,22 +119,22 @@ export function validateCustomProperties(t, e, r, n, o) {
|
|
|
119
119
|
);
|
|
120
120
|
}
|
|
121
121
|
for (const r in t) {
|
|
122
|
-
if (e ===
|
|
122
|
+
if (e === z.Ku && !validateCustomAttributeKey(r)) return [!1, null];
|
|
123
123
|
if (!validateCustomString(r, n, `the ${o} property name`))
|
|
124
124
|
return [!1, null];
|
|
125
125
|
const i = t[r];
|
|
126
|
-
if (e !==
|
|
126
|
+
if (e !== z.Ku && null == i) {
|
|
127
127
|
delete t[r], delete u[r];
|
|
128
128
|
continue;
|
|
129
129
|
}
|
|
130
|
-
Nt(i) && (u[r] =
|
|
130
|
+
Nt(i) && (u[r] = Dt(i));
|
|
131
131
|
if (
|
|
132
132
|
!_validateEventPropertyValue(
|
|
133
133
|
i,
|
|
134
134
|
u[r],
|
|
135
135
|
n,
|
|
136
136
|
`the ${o} property "${r}"`,
|
|
137
|
-
e ===
|
|
137
|
+
e === z.Ku,
|
|
138
138
|
)
|
|
139
139
|
)
|
|
140
140
|
return [!1, null];
|
|
@@ -167,7 +167,7 @@ export function validateCustomAttributeArrayType(t, e) {
|
|
|
167
167
|
if (
|
|
168
168
|
!validateCustomProperties(
|
|
169
169
|
i,
|
|
170
|
-
|
|
170
|
+
z.Ku,
|
|
171
171
|
"attribute value",
|
|
172
172
|
`set custom user attribute "${t}"`,
|
|
173
173
|
"custom user attribute",
|
package/src/util/window-utils.js
CHANGED