@braze/web-sdk 5.0.0 → 5.1.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 +12 -5
- package/package.json +1 -1
- package/shared-lib/encoding-utils.js +3 -3
- package/shared-lib/event-types.js +29 -29
- package/shared-lib/guid.js +3 -3
- package/shared-lib/index.js +6 -0
- package/shared-lib/indexed-db-adapter.js +70 -70
- package/shared-lib/logger.js +18 -18
- package/shared-lib/supported-options.js +21 -21
- package/src/Card/card-manager.js +43 -45
- package/src/Card/display/card-display.js +60 -60
- package/src/Card/log-card-click.js +4 -4
- package/src/Card/log-card-dismissal.js +2 -3
- package/src/Card/log-card-impressions.js +7 -7
- package/src/Card/models/captioned-image.js +21 -21
- package/src/Card/models/card.js +73 -73
- package/src/Card/models/classic-card.js +21 -21
- package/src/Card/models/control-card.js +11 -11
- package/src/Card/models/image-only.js +19 -19
- package/src/Card/util/card-factory.js +68 -68
- package/src/ContentCards/content-cards-provider-factory.js +3 -3
- package/src/ContentCards/content-cards-provider.js +255 -245
- package/src/ContentCards/content-cards.js +2 -2
- 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 +6 -6
- package/src/ContentCards/ui/hide-content-cards.js +1 -1
- package/src/ContentCards/ui/show-content-cards.js +24 -24
- package/src/ContentCards/ui/toggle-content-cards.js +1 -1
- package/src/Core/add-sdk-metadata.js +21 -19
- package/src/Core/change-user.js +10 -10
- package/src/Core/destroy.js +2 -2
- package/src/Core/disable-sdk.js +11 -11
- package/src/Core/enable-sdk.js +7 -7
- package/src/Core/get-device-id.js +6 -6
- package/src/Core/get-user.js +1 -1
- package/src/Core/handle-braze-action.js +41 -41
- package/src/Core/is-disabled.js +2 -2
- package/src/Core/log-custom-event.js +15 -15
- package/src/Core/log-purchase.js +31 -37
- package/src/Core/open-session.js +12 -12
- package/src/Core/remove-all-subscriptions.js +1 -1
- package/src/Core/remove-subscription.js +1 -1
- package/src/Core/request-immediate-data-flush.js +1 -1
- package/src/Core/set-logger.js +2 -2
- package/src/Core/set-sdk-authentication-signature.js +3 -3
- package/src/Core/subscribe-to-sdk-authentication-failures.js +6 -4
- package/src/Core/toggle-logging.js +2 -2
- package/src/Core/wipe-data.js +9 -9
- package/src/FeatureFlags/feature-flag-factory.js +12 -12
- package/src/FeatureFlags/feature-flag.js +10 -10
- package/src/FeatureFlags/feature-flags-provider-factory.js +3 -2
- package/src/FeatureFlags/feature-flags-provider.js +108 -80
- package/src/FeatureFlags/get-all-feature-flags.js +5 -5
- package/src/FeatureFlags/get-feature-flag.js +6 -6
- package/src/FeatureFlags/log-feature-flag-impression.js +15 -13
- package/src/FeatureFlags/refresh-feature-flags.js +1 -1
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +7 -4
- package/src/Feed/feed-provider-factory.js +2 -2
- package/src/Feed/feed-provider.js +44 -44
- package/src/Feed/feed.js +1 -1
- package/src/Feed/get-cached-feed.js +1 -1
- package/src/Feed/log-feed-displayed.js +4 -4
- package/src/Feed/request-feed-refresh.js +1 -1
- package/src/Feed/subscribe-to-feed-updates.js +1 -1
- package/src/Feed/ui/hide-feed.js +1 -1
- package/src/Feed/ui/show-feed.js +28 -28
- package/src/Feed/ui/toggle-feed.js +1 -1
- package/src/InAppMessage/defer-in-app-message.js +5 -5
- package/src/InAppMessage/display/html-message-to-html.js +54 -54
- package/src/InAppMessage/display/in-app-message-to-html.js +79 -79
- package/src/InAppMessage/display/modal-utils.js +8 -8
- package/src/InAppMessage/get-deferred-in-app-message.js +1 -1
- package/src/InAppMessage/in-app-message-factory.js +49 -49
- package/src/InAppMessage/in-app-message-manager-factory.js +1 -1
- package/src/InAppMessage/in-app-message-manager.js +143 -138
- package/src/InAppMessage/log-in-app-message-button-click.js +12 -12
- package/src/InAppMessage/log-in-app-message-click.js +9 -9
- package/src/InAppMessage/log-in-app-message-html-click.js +12 -12
- package/src/InAppMessage/log-in-app-message-impression.js +6 -6
- package/src/InAppMessage/models/full-screen-message.js +33 -33
- package/src/InAppMessage/models/html-message.js +20 -20
- package/src/InAppMessage/models/in-app-message-button.js +6 -6
- package/src/InAppMessage/models/in-app-message.js +99 -99
- package/src/InAppMessage/models/modal-message.js +32 -32
- package/src/InAppMessage/models/slide-up-message.js +28 -28
- 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 +4 -4
- package/src/InAppMessage/ui/show-in-app-message.js +81 -81
- package/src/Push/is-push-blocked.js +1 -1
- package/src/Push/is-push-permission-granted.js +1 -1
- package/src/Push/is-push-supported.js +1 -1
- package/src/Push/push-manager-factory.js +5 -5
- package/src/Push/push-manager.js +176 -173
- package/src/Push/request-push-permission.js +1 -1
- package/src/Push/unregister-push.js +1 -1
- package/src/Push/utils/push-utils.js +4 -4
- package/src/User/user-manager.js +29 -29
- package/src/User/user.js +72 -74
- package/src/common/base-feed.js +7 -7
- package/src/common/base-provider.js +1 -1
- package/src/common/constants.js +2 -0
- package/src/common/event-logger.js +21 -18
- package/src/common/feed-display.js +44 -44
- package/src/l10n/l10n-manager-factory.js +3 -3
- package/src/l10n/l10n-manager.js +7 -7
- package/src/managers/auth-manager.js +32 -32
- package/src/managers/braze-instance.js +188 -189
- package/src/managers/device-manager.js +28 -28
- package/src/managers/network-manager.js +189 -138
- package/src/managers/server-config-manager.js +69 -53
- package/src/managers/session-manager.js +34 -30
- package/src/managers/storage-manager-factory.js +16 -16
- package/src/managers/storage-manager.js +210 -188
- package/src/managers/subscription-manager.js +12 -12
- package/src/models/backend-errors.js +5 -5
- package/src/models/braze-event.js +3 -3
- package/src/models/device.js +2 -2
- package/src/models/identifier.js +34 -14
- package/src/models/push-token.js +8 -8
- package/src/models/request-result.js +3 -3
- package/src/models/server-config.js +32 -23
- package/src/request-controller.js +187 -180
- package/src/triggers/models/custom-event-data.js +7 -7
- package/src/triggers/models/custom-event-property-data.js +10 -10
- package/src/triggers/models/filter-set.js +13 -13
- package/src/triggers/models/filter.js +45 -45
- package/src/triggers/models/in-app-message-click-data.js +12 -12
- package/src/triggers/models/purchase-data.js +2 -2
- package/src/triggers/models/purchase-property-data.js +10 -10
- package/src/triggers/models/push-click-data.js +7 -7
- package/src/triggers/models/trigger-condition.js +57 -59
- package/src/triggers/models/trigger-events.js +4 -4
- package/src/triggers/models/trigger.js +38 -38
- package/src/triggers/triggers-provider-factory.js +4 -4
- package/src/triggers/triggers-provider.js +127 -130
- package/src/ui/js/attach-css.js +2 -2
- package/src/ui/js/iam-css.js +1 -1
- package/src/ui/js/load-font-awesome.js +1 -1
- package/src/util/base-device-parser.js +3 -3
- package/src/util/braze-actions.js +35 -35
- package/src/util/browser-detector.js +21 -21
- package/src/util/client-hints-parser.js +8 -8
- package/src/util/code-utils.js +2 -2
- package/src/util/component-utils.js +1 -1
- package/src/util/deprecation-utils.js +4 -4
- package/src/util/device-constants.js +1 -1
- package/src/util/dom-utils.js +18 -18
- package/src/util/key-codes.js +1 -1
- package/src/util/net.js +18 -18
- package/src/util/request-header-utils.js +39 -37
- package/src/util/string-utils.js +10 -10
- package/src/util/user-agent-parser.js +18 -18
- package/src/util/validation-utils.js +37 -39
- package/src/util/window-utils.js +3 -3
- package/shared-lib/braze-shared-lib.js +0 -8
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import ge from "./base-device-parser.js";
|
|
2
|
-
import { Browsers as
|
|
3
|
-
export default class
|
|
2
|
+
import { Browsers as gi, OperatingSystems as Y } from "./device-constants.js";
|
|
3
|
+
export default class oi extends ge {
|
|
4
4
|
constructor() {
|
|
5
|
-
super(), (this.
|
|
5
|
+
super(), (this.ud = oi.hc(navigator.userAgent || ""));
|
|
6
6
|
}
|
|
7
7
|
tf() {
|
|
8
|
-
return this.
|
|
8
|
+
return this.ud[0] || "Unknown Browser";
|
|
9
9
|
}
|
|
10
10
|
ef() {
|
|
11
|
-
return this.
|
|
11
|
+
return this.ud[1] || "Unknown Version";
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
Oa(r) {
|
|
14
14
|
for (let n = 0; n < r.length; n++) {
|
|
15
15
|
const e = r[n].string;
|
|
16
|
-
let i =
|
|
16
|
+
let i = oi.rf(e, r[n]);
|
|
17
17
|
if (i)
|
|
18
18
|
return (
|
|
19
|
-
i ===
|
|
19
|
+
i === Y.kg && navigator.maxTouchPoints > 1 && (i = Y.io),
|
|
20
20
|
Promise.resolve(i)
|
|
21
21
|
);
|
|
22
22
|
}
|
|
23
23
|
return Promise.resolve(navigator.platform);
|
|
24
24
|
}
|
|
25
|
-
static
|
|
25
|
+
static hc(r) {
|
|
26
26
|
let n,
|
|
27
27
|
e =
|
|
28
28
|
r.match(
|
|
@@ -41,37 +41,37 @@ export default class ai extends ge {
|
|
|
41
41
|
if (r.match(/\b(Roku)\b/)) return ["Roku", null];
|
|
42
42
|
if (r.match(/\bAFTM\b/)) return ["Amazon Fire Stick", null];
|
|
43
43
|
if (
|
|
44
|
-
e[1] ===
|
|
44
|
+
e[1] === gi.rO &&
|
|
45
45
|
((n = r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/)),
|
|
46
46
|
null != n)
|
|
47
47
|
)
|
|
48
48
|
return (
|
|
49
49
|
(n = n.slice(1)),
|
|
50
|
-
(n[0] = n[0].replace("OPR",
|
|
51
|
-
(n[0] = n[0].replace("EdgA",
|
|
52
|
-
"Edg" === n[0] && (n[0] =
|
|
50
|
+
(n[0] = n[0].replace("OPR", gi.oO)),
|
|
51
|
+
(n[0] = n[0].replace("EdgA", gi.eO)),
|
|
52
|
+
"Edg" === n[0] && (n[0] = gi.eO),
|
|
53
53
|
[n[0], n[1]]
|
|
54
54
|
);
|
|
55
55
|
if (
|
|
56
|
-
e[1] ===
|
|
56
|
+
e[1] === gi.Bg &&
|
|
57
57
|
((n = r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/)), null != n)
|
|
58
58
|
)
|
|
59
59
|
return (
|
|
60
|
-
(n = n.slice(1)), (n[0] = n[0].replace("EdgiOS",
|
|
60
|
+
(n = n.slice(1)), (n[0] = n[0].replace("EdgiOS", gi.eO)), [n[0], n[1]]
|
|
61
61
|
);
|
|
62
62
|
if (
|
|
63
63
|
((e = e[2] ? [e[1], e[2]] : [null, null]),
|
|
64
|
-
e[0] ===
|
|
64
|
+
e[0] === gi.Bg &&
|
|
65
65
|
null != (n = r.match(/version\/(\.?\d+(\.\d+)*)/i)) &&
|
|
66
66
|
e.splice(1, 1, n[1]),
|
|
67
67
|
null != (n = r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/)) &&
|
|
68
68
|
e.splice(1, 1, n[2]),
|
|
69
|
-
e[0] ===
|
|
69
|
+
e[0] === gi.oO && null != (n = r.match(/mini\/(\.?\d+(\.\d+)*)/i)))
|
|
70
70
|
)
|
|
71
71
|
return ["Opera Mini", n[1] || ""];
|
|
72
72
|
if (e[0]) {
|
|
73
73
|
const r = e[0].toLowerCase();
|
|
74
|
-
"crios" === r && (e[0] =
|
|
74
|
+
"crios" === r && (e[0] = gi.rO),
|
|
75
75
|
"tizen" === r && ((e[0] = "Samsung Smart TV"), (e[1] = null)),
|
|
76
76
|
"samsungbrowser" === r && (e[0] = "Samsung Browser");
|
|
77
77
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
isArray as
|
|
2
|
+
isArray as j,
|
|
3
3
|
isDate as yt,
|
|
4
4
|
isObject as Nt,
|
|
5
|
-
keys as
|
|
5
|
+
keys as to,
|
|
6
6
|
} from "./code-utils.js";
|
|
7
|
-
import { getByteLength as
|
|
8
|
-
import r from "../../shared-lib/
|
|
7
|
+
import { getByteLength as O } from "./string-utils.js";
|
|
8
|
+
import { logger as r } from "../../shared-lib/index.js";
|
|
9
9
|
import { toValidBackendTimeString as $t } from "./date-utils.js";
|
|
10
|
-
import { BRAZE_ACTIONS as
|
|
10
|
+
import { BRAZE_ACTIONS as V } from "./braze-actions.js";
|
|
11
11
|
import { SET_CUSTOM_USER_ATTRIBUTE_STRING as Ft } from "../common/constants.js";
|
|
12
12
|
export const CUSTOM_DATA_REGEX = /^[^\x00-\x1F\x22]+$/;
|
|
13
13
|
export const CUSTOM_ATTRIBUTE_SPECIAL_CHARS_REGEX = /[$.]/;
|
|
@@ -32,14 +32,14 @@ export function validateCustomString(t, e, n) {
|
|
|
32
32
|
null != t &&
|
|
33
33
|
"string" == typeof t &&
|
|
34
34
|
("" === t || null != t.match(CUSTOM_DATA_REGEX));
|
|
35
|
-
return o || r.
|
|
35
|
+
return o || r.error(`Cannot ${e} because ${n} "${t}" is invalid.`), o;
|
|
36
36
|
}
|
|
37
37
|
export function validateCustomAttributeKey(t) {
|
|
38
38
|
return (
|
|
39
39
|
null != t &&
|
|
40
40
|
t.match(CUSTOM_ATTRIBUTE_SPECIAL_CHARS_REGEX) &&
|
|
41
41
|
-1 === CUSTOM_ATTRIBUTE_RESERVED_OPERATORS.indexOf(t) &&
|
|
42
|
-
r.
|
|
42
|
+
r.warn("Custom attribute keys cannot contain '$' or '.'"),
|
|
43
43
|
validateCustomString(t, "set custom user attribute", "the given key")
|
|
44
44
|
);
|
|
45
45
|
}
|
|
@@ -52,11 +52,9 @@ export function validatePropertyType(t) {
|
|
|
52
52
|
export function _validateNestedProperties(t, e, n) {
|
|
53
53
|
const o = -1 !== n;
|
|
54
54
|
if (o && n > 50)
|
|
55
|
-
return (
|
|
56
|
-
r.j.error("Nested attributes cannot be more than 50 levels deep."), !1
|
|
57
|
-
);
|
|
55
|
+
return r.error("Nested attributes cannot be more than 50 levels deep."), !1;
|
|
58
56
|
const i = o ? n + 1 : -1;
|
|
59
|
-
if (
|
|
57
|
+
if (j(t) && j(e)) {
|
|
60
58
|
for (let r = 0; r < t.length && r < e.length; r++)
|
|
61
59
|
if (
|
|
62
60
|
(yt(t[r]) && (e[r] = $t(t[r])),
|
|
@@ -65,7 +63,7 @@ export function _validateNestedProperties(t, e, n) {
|
|
|
65
63
|
return !1;
|
|
66
64
|
} else {
|
|
67
65
|
if (!Nt(t)) return validatePropertyType(t);
|
|
68
|
-
for (const r of
|
|
66
|
+
for (const r of to(t)) {
|
|
69
67
|
const n = t[r];
|
|
70
68
|
if (o && !validateCustomAttributeKey(r)) return !1;
|
|
71
69
|
if (yt(n)) {
|
|
@@ -80,29 +78,29 @@ export function _validateEventPropertyValue(t, e, n, o, i) {
|
|
|
80
78
|
let a;
|
|
81
79
|
return (
|
|
82
80
|
(a =
|
|
83
|
-
Nt(t) ||
|
|
81
|
+
Nt(t) || j(t)
|
|
84
82
|
? _validateNestedProperties(t, e, i ? 1 : -1)
|
|
85
83
|
: validatePropertyType(t)),
|
|
86
|
-
a || r.
|
|
84
|
+
a || r.error(`Cannot ${n} because ${o} "${t}" is invalid.`),
|
|
87
85
|
a
|
|
88
86
|
);
|
|
89
87
|
}
|
|
90
88
|
export function validateStandardString(t, e, n, o = !1) {
|
|
91
89
|
const i = "string" == typeof t || (null === t && o);
|
|
92
|
-
return i || r.
|
|
90
|
+
return i || r.error(`Cannot ${e} because ${n} "${t}" is invalid.`), i;
|
|
93
91
|
}
|
|
94
92
|
export function validateCustomProperties(t, e, n, o, i) {
|
|
95
|
-
if ((null == t && (t = {}), "object" != typeof t ||
|
|
93
|
+
if ((null == t && (t = {}), "object" != typeof t || j(t)))
|
|
96
94
|
return (
|
|
97
|
-
r.
|
|
95
|
+
r.error(`${e} requires that ${n} be an object. Ignoring ${i}.`),
|
|
98
96
|
[!1, null]
|
|
99
97
|
);
|
|
100
98
|
let a, s;
|
|
101
99
|
e === Ft ? ((a = 76800), (s = "75KB")) : ((a = 51200), (s = "50KB"));
|
|
102
100
|
const u = JSON.stringify(t);
|
|
103
|
-
if (
|
|
101
|
+
if (O(u) > a)
|
|
104
102
|
return (
|
|
105
|
-
r.
|
|
103
|
+
r.error(
|
|
106
104
|
`Could not ${o} because ${n} was greater than the max size of ${s}.`,
|
|
107
105
|
),
|
|
108
106
|
[!1, null]
|
|
@@ -112,7 +110,7 @@ export function validateCustomProperties(t, e, n, o, i) {
|
|
|
112
110
|
l = JSON.parse(u);
|
|
113
111
|
} catch (t) {
|
|
114
112
|
return (
|
|
115
|
-
r.
|
|
113
|
+
r.error(`Could not ${o} because ${n} did not contain valid JSON.`),
|
|
116
114
|
[!1, null]
|
|
117
115
|
);
|
|
118
116
|
}
|
|
@@ -143,7 +141,7 @@ export function validateCustomAttributeArrayType(t, e) {
|
|
|
143
141
|
let n = !1,
|
|
144
142
|
o = !1;
|
|
145
143
|
const i = () => {
|
|
146
|
-
r.
|
|
144
|
+
r.error(
|
|
147
145
|
"Custom attribute arrays must be either string arrays or object arrays.",
|
|
148
146
|
);
|
|
149
147
|
};
|
|
@@ -182,24 +180,24 @@ export function isValidEmail(t) {
|
|
|
182
180
|
);
|
|
183
181
|
}
|
|
184
182
|
export function isValidBrazeActionJson(t) {
|
|
185
|
-
if (!(
|
|
186
|
-
switch (t[
|
|
187
|
-
case
|
|
188
|
-
if (
|
|
183
|
+
if (!(V.properties.type in t)) return !1;
|
|
184
|
+
switch (t[V.properties.type]) {
|
|
185
|
+
case V.types.ro:
|
|
186
|
+
if (V.properties.oo in t) return !0;
|
|
189
187
|
break;
|
|
190
|
-
case
|
|
191
|
-
case
|
|
192
|
-
case
|
|
193
|
-
case
|
|
194
|
-
case
|
|
195
|
-
case
|
|
196
|
-
case
|
|
197
|
-
case
|
|
198
|
-
case
|
|
199
|
-
case
|
|
200
|
-
if (
|
|
188
|
+
case V.types.logCustomEvent:
|
|
189
|
+
case V.types.setEmailNotificationSubscriptionType:
|
|
190
|
+
case V.types.setPushNotificationSubscriptionType:
|
|
191
|
+
case V.types.setCustomUserAttribute:
|
|
192
|
+
case V.types.addToSubscriptionGroup:
|
|
193
|
+
case V.types.removeFromSubscriptionGroup:
|
|
194
|
+
case V.types.addToCustomAttributeArray:
|
|
195
|
+
case V.types.removeFromCustomAttributeArray:
|
|
196
|
+
case V.types.no:
|
|
197
|
+
case V.types.ao:
|
|
198
|
+
if (V.properties.eo in t) return !0;
|
|
201
199
|
break;
|
|
202
|
-
case
|
|
200
|
+
case V.types.requestPushPermission:
|
|
203
201
|
return !0;
|
|
204
202
|
default:
|
|
205
203
|
return !1;
|
|
@@ -209,8 +207,8 @@ export function isValidBrazeActionJson(t) {
|
|
|
209
207
|
export function isValidBrazeActionType(t) {
|
|
210
208
|
let e = !1;
|
|
211
209
|
return (
|
|
212
|
-
Object.keys(
|
|
213
|
-
|
|
210
|
+
Object.keys(V.types).forEach((r) => {
|
|
211
|
+
V.types[r] !== t.toString() || (e = !0);
|
|
214
212
|
}),
|
|
215
213
|
e
|
|
216
214
|
);
|
package/src/util/window-utils.js
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import ve from "./encoding-utils.js";
|
|
2
|
-
import { EventTypes as De, InternalEventTypes as Be } from "./event-types.js";
|
|
3
|
-
import Ge from "./guid.js";
|
|
4
|
-
import Oe from "./indexed-db-adapter.js";
|
|
5
|
-
import Ue from "./logger.js";
|
|
6
|
-
import ke from "./supported-options.js";
|
|
7
|
-
const r = { On: ve, q: De, Cr: Be, Z: Ge, es: Oe, ts: Oe.ep, j: Ue, Yo: ke };
|
|
8
|
-
export default r;
|