@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
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isArray as p,
|
|
3
3
|
isDate as Nt,
|
|
4
|
-
isObject as
|
|
5
|
-
keys as oo
|
|
4
|
+
isObject as yt,
|
|
5
|
+
keys as oo,
|
|
6
6
|
} from "./code-utils.js";
|
|
7
7
|
import { getByteLength as U } from "./string-utils.js";
|
|
8
8
|
import r from "../../shared-lib/braze-shared-lib.js";
|
|
9
|
-
import { toValidBackendTimeString as
|
|
9
|
+
import { toValidBackendTimeString as $t } from "./date-utils.js";
|
|
10
10
|
import { BRAZE_ACTIONS as _ } from "./braze-actions.js";
|
|
11
|
-
import { SET_CUSTOM_USER_ATTRIBUTE_STRING as
|
|
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 = /[$.]/;
|
|
14
14
|
export const CUSTOM_ATTRIBUTE_RESERVED_OPERATORS = [
|
|
@@ -18,7 +18,7 @@ export const CUSTOM_ATTRIBUTE_RESERVED_OPERATORS = [
|
|
|
18
18
|
"$identifier_key",
|
|
19
19
|
"$identifier_value",
|
|
20
20
|
"$new_object",
|
|
21
|
-
"$time"
|
|
21
|
+
"$time",
|
|
22
22
|
];
|
|
23
23
|
export const EMAIL_ADDRESS_REGEX = new RegExp(/^.+@.+\..+$/);
|
|
24
24
|
export const CUSTOM_PROPERTIES_MAX_SIZE_BYTES = 51200;
|
|
@@ -31,7 +31,7 @@ export function validateCustomString(t, e, n) {
|
|
|
31
31
|
const o =
|
|
32
32
|
null != t &&
|
|
33
33
|
"string" == typeof t &&
|
|
34
|
-
("" === t || t.match(CUSTOM_DATA_REGEX));
|
|
34
|
+
("" === t || null != t.match(CUSTOM_DATA_REGEX));
|
|
35
35
|
return o || r.j.error(`Cannot ${e} because ${n} "${t}" is invalid.`), o;
|
|
36
36
|
}
|
|
37
37
|
export function validateCustomAttributeKey(t) {
|
|
@@ -59,19 +59,19 @@ export function _validateNestedProperties(t, e, n) {
|
|
|
59
59
|
if (p(t) && p(e)) {
|
|
60
60
|
for (let r = 0; r < t.length && r < e.length; r++)
|
|
61
61
|
if (
|
|
62
|
-
(Nt(t[r]) && (e[r] =
|
|
62
|
+
(Nt(t[r]) && (e[r] = $t(t[r])),
|
|
63
63
|
!_validateNestedProperties(t[r], e[r], i))
|
|
64
64
|
)
|
|
65
65
|
return !1;
|
|
66
66
|
} else {
|
|
67
|
-
if (!
|
|
67
|
+
if (!yt(t)) return validatePropertyType(t);
|
|
68
68
|
for (const r of oo(t)) {
|
|
69
|
+
const n = t[r];
|
|
69
70
|
if (o && !validateCustomAttributeKey(r)) return !1;
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
)
|
|
74
|
-
return !1;
|
|
71
|
+
if (Nt(n)) {
|
|
72
|
+
e[r] = $t(n);
|
|
73
|
+
}
|
|
74
|
+
if (!_validateNestedProperties(n, e[r], i)) return !1;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
return !0;
|
|
@@ -80,14 +80,14 @@ export function _validateEventPropertyValue(t, e, n, o, i) {
|
|
|
80
80
|
let a;
|
|
81
81
|
return (
|
|
82
82
|
(a =
|
|
83
|
-
|
|
83
|
+
yt(t) || p(t)
|
|
84
84
|
? _validateNestedProperties(t, e, i ? 1 : -1)
|
|
85
85
|
: validatePropertyType(t)),
|
|
86
86
|
a || r.j.error(`Cannot ${n} because ${o} "${t}" is invalid.`),
|
|
87
87
|
a
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
|
-
export function validateStandardString(t, e, n, o) {
|
|
90
|
+
export function validateStandardString(t, e, n, o = !1) {
|
|
91
91
|
const i = "string" == typeof t || (null === t && o);
|
|
92
92
|
return i || r.j.error(`Cannot ${e} because ${n} "${t}" is invalid.`), i;
|
|
93
93
|
}
|
|
@@ -98,12 +98,12 @@ export function validateCustomProperties(t, e, n, o, i) {
|
|
|
98
98
|
[!1, null]
|
|
99
99
|
);
|
|
100
100
|
let a, s;
|
|
101
|
-
e ===
|
|
101
|
+
e === Ft ? ((a = 76800), (s = "75KB")) : ((a = 51200), (s = "50KB"));
|
|
102
102
|
const u = JSON.stringify(t);
|
|
103
103
|
if (U(u) > a)
|
|
104
104
|
return (
|
|
105
105
|
r.j.error(
|
|
106
|
-
`Could not ${o} because ${n} was greater than the max size of ${s}
|
|
106
|
+
`Could not ${o} because ${n} was greater than the max size of ${s}.`,
|
|
107
107
|
),
|
|
108
108
|
[!1, null]
|
|
109
109
|
);
|
|
@@ -116,23 +116,23 @@ export function validateCustomProperties(t, e, n, o, i) {
|
|
|
116
116
|
[!1, null]
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
|
-
for (
|
|
120
|
-
if (e ===
|
|
119
|
+
for (const r in t) {
|
|
120
|
+
if (e === Ft && !validateCustomAttributeKey(r)) return [!1, null];
|
|
121
121
|
if (!validateCustomString(r, o, `the ${i} property name`))
|
|
122
122
|
return [!1, null];
|
|
123
123
|
const n = t[r];
|
|
124
|
-
if (e !==
|
|
124
|
+
if (e !== Ft && null == n) {
|
|
125
125
|
delete t[r], delete l[r];
|
|
126
126
|
continue;
|
|
127
127
|
}
|
|
128
|
-
Nt(n) && (l[r] =
|
|
128
|
+
Nt(n) && (l[r] = $t(n));
|
|
129
129
|
if (
|
|
130
130
|
!_validateEventPropertyValue(
|
|
131
131
|
n,
|
|
132
132
|
l[r],
|
|
133
133
|
o,
|
|
134
134
|
`the ${i} property "${r}"`,
|
|
135
|
-
e ===
|
|
135
|
+
e === Ft,
|
|
136
136
|
)
|
|
137
137
|
)
|
|
138
138
|
return [!1, null];
|
|
@@ -144,7 +144,7 @@ export function validateCustomAttributeArrayType(t, e) {
|
|
|
144
144
|
o = !1;
|
|
145
145
|
const i = () => {
|
|
146
146
|
r.j.error(
|
|
147
|
-
"Custom attribute arrays must be either string arrays or object arrays."
|
|
147
|
+
"Custom attribute arrays must be either string arrays or object arrays.",
|
|
148
148
|
);
|
|
149
149
|
};
|
|
150
150
|
for (const r of e)
|
|
@@ -154,21 +154,21 @@ export function validateCustomAttributeArrayType(t, e) {
|
|
|
154
154
|
!validateCustomString(
|
|
155
155
|
r,
|
|
156
156
|
`set custom user attribute "${t}"`,
|
|
157
|
-
"the element in the given array"
|
|
157
|
+
"the element in the given array",
|
|
158
158
|
)
|
|
159
159
|
)
|
|
160
160
|
return [!1, !1];
|
|
161
161
|
n = !0;
|
|
162
162
|
} else {
|
|
163
|
-
if (!
|
|
163
|
+
if (!yt(r)) return i(), [!1, !1];
|
|
164
164
|
if (n) return i(), [!1, !1];
|
|
165
165
|
if (
|
|
166
166
|
!validateCustomProperties(
|
|
167
167
|
r,
|
|
168
|
-
|
|
168
|
+
Ft,
|
|
169
169
|
"attribute value",
|
|
170
170
|
`set custom user attribute "${t}"`,
|
|
171
|
-
"custom user attribute"
|
|
171
|
+
"custom user attribute",
|
|
172
172
|
)
|
|
173
173
|
)
|
|
174
174
|
return [!1, !1];
|
|
@@ -184,8 +184,8 @@ export function isValidEmail(t) {
|
|
|
184
184
|
export function isValidBrazeActionJson(t) {
|
|
185
185
|
if (!(_.properties.type in t)) return !1;
|
|
186
186
|
switch (t[_.properties.type]) {
|
|
187
|
-
case _.types.
|
|
188
|
-
if (_.properties.
|
|
187
|
+
case _.types.ue:
|
|
188
|
+
if (_.properties.me in t) return !0;
|
|
189
189
|
break;
|
|
190
190
|
case _.types.logCustomEvent:
|
|
191
191
|
case _.types.setEmailNotificationSubscriptionType:
|
|
@@ -195,9 +195,9 @@ export function isValidBrazeActionJson(t) {
|
|
|
195
195
|
case _.types.removeFromSubscriptionGroup:
|
|
196
196
|
case _.types.addToCustomAttributeArray:
|
|
197
197
|
case _.types.removeFromCustomAttributeArray:
|
|
198
|
-
case _.types.de:
|
|
199
198
|
case _.types.pe:
|
|
200
|
-
|
|
199
|
+
case _.types.je:
|
|
200
|
+
if (_.properties.le in t) return !0;
|
|
201
201
|
break;
|
|
202
202
|
case _.types.requestPushPermission:
|
|
203
203
|
return !0;
|
|
@@ -209,7 +209,7 @@ export function isValidBrazeActionJson(t) {
|
|
|
209
209
|
export function isValidBrazeActionType(t) {
|
|
210
210
|
let e = !1;
|
|
211
211
|
return (
|
|
212
|
-
Object.keys(_.types).forEach(r => {
|
|
212
|
+
Object.keys(_.types).forEach((r) => {
|
|
213
213
|
_.types[r] !== t.toString() || (e = !0);
|
|
214
214
|
}),
|
|
215
215
|
e
|
package/src/util/window-utils.js
CHANGED
|
@@ -7,29 +7,28 @@ export function _getOrientation() {
|
|
|
7
7
|
return 90 === Math.abs(window.orientation) || 270 === window.orientation
|
|
8
8
|
? ORIENTATION.LANDSCAPE
|
|
9
9
|
: ORIENTATION.PORTRAIT;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
screen.mozOrientation ||
|
|
14
|
-
screen.msOrientation;
|
|
10
|
+
const n = window;
|
|
11
|
+
if ("screen" in n) {
|
|
12
|
+
let e =
|
|
13
|
+
n.screen.orientation || screen.mozOrientation || screen.msOrientation;
|
|
15
14
|
return (
|
|
16
|
-
null !=
|
|
17
|
-
"landscape-primary" ===
|
|
15
|
+
null != e && "object" == typeof e && (e = e.type),
|
|
16
|
+
"landscape-primary" === e || "landscape-secondary" === e
|
|
18
17
|
? ORIENTATION.LANDSCAPE
|
|
19
18
|
: ORIENTATION.PORTRAIT
|
|
20
19
|
);
|
|
21
20
|
}
|
|
22
21
|
return ORIENTATION.PORTRAIT;
|
|
23
22
|
}
|
|
24
|
-
export function _openUri(n, e,
|
|
25
|
-
e || (null !=
|
|
23
|
+
export function _openUri(n, e, t) {
|
|
24
|
+
n && (e || (null != t && t.metaKey) ? window.open(n) : (window.location = n));
|
|
26
25
|
}
|
|
27
26
|
export function _getCurrentUrl() {
|
|
28
27
|
return window.location.href;
|
|
29
28
|
}
|
|
30
29
|
export const WindowUtils = {
|
|
31
30
|
openUri: _openUri,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
ao: _isPhone,
|
|
32
|
+
mo: _getOrientation,
|
|
33
|
+
Cn: _getCurrentUrl,
|
|
35
34
|
};
|