@braze/web-sdk 5.0.1 → 5.1.1

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 (158) hide show
  1. package/README.md +1 -1
  2. package/index.d.ts +10 -5
  3. package/package.json +1 -1
  4. package/shared-lib/encoding-utils.js +3 -3
  5. package/shared-lib/event-types.js +29 -29
  6. package/shared-lib/guid.js +3 -3
  7. package/shared-lib/index.js +6 -0
  8. package/shared-lib/indexed-db-adapter.js +70 -70
  9. package/shared-lib/logger.js +18 -18
  10. package/shared-lib/supported-options.js +21 -21
  11. package/src/Card/card-manager.js +43 -45
  12. package/src/Card/display/card-display.js +60 -60
  13. package/src/Card/log-card-click.js +4 -4
  14. package/src/Card/log-card-dismissal.js +2 -3
  15. package/src/Card/log-card-impressions.js +7 -7
  16. package/src/Card/models/captioned-image.js +21 -21
  17. package/src/Card/models/card.js +73 -73
  18. package/src/Card/models/classic-card.js +21 -21
  19. package/src/Card/models/control-card.js +11 -11
  20. package/src/Card/models/image-only.js +19 -19
  21. package/src/Card/util/card-factory.js +68 -68
  22. package/src/ContentCards/content-cards-provider-factory.js +3 -3
  23. package/src/ContentCards/content-cards-provider.js +255 -245
  24. package/src/ContentCards/content-cards.js +2 -2
  25. package/src/ContentCards/get-cached-content-cards.js +1 -1
  26. package/src/ContentCards/request-content-cards-refresh.js +1 -1
  27. package/src/ContentCards/subscribe-to-content-cards-updates.js +6 -6
  28. package/src/ContentCards/ui/hide-content-cards.js +1 -1
  29. package/src/ContentCards/ui/show-content-cards.js +24 -24
  30. package/src/ContentCards/ui/toggle-content-cards.js +1 -1
  31. package/src/Core/add-sdk-metadata.js +21 -19
  32. package/src/Core/change-user.js +10 -10
  33. package/src/Core/destroy.js +2 -2
  34. package/src/Core/disable-sdk.js +11 -11
  35. package/src/Core/enable-sdk.js +7 -7
  36. package/src/Core/get-device-id.js +6 -6
  37. package/src/Core/get-user.js +1 -1
  38. package/src/Core/handle-braze-action.js +41 -41
  39. package/src/Core/is-disabled.js +2 -2
  40. package/src/Core/log-custom-event.js +15 -15
  41. package/src/Core/log-purchase.js +31 -37
  42. package/src/Core/open-session.js +12 -12
  43. package/src/Core/remove-all-subscriptions.js +1 -1
  44. package/src/Core/remove-subscription.js +1 -1
  45. package/src/Core/request-immediate-data-flush.js +1 -1
  46. package/src/Core/set-logger.js +2 -2
  47. package/src/Core/set-sdk-authentication-signature.js +3 -3
  48. package/src/Core/subscribe-to-sdk-authentication-failures.js +6 -4
  49. package/src/Core/toggle-logging.js +2 -2
  50. package/src/Core/wipe-data.js +9 -9
  51. package/src/FeatureFlags/feature-flag-factory.js +12 -12
  52. package/src/FeatureFlags/feature-flag.js +10 -10
  53. package/src/FeatureFlags/feature-flags-provider-factory.js +3 -2
  54. package/src/FeatureFlags/feature-flags-provider.js +108 -80
  55. package/src/FeatureFlags/get-all-feature-flags.js +5 -5
  56. package/src/FeatureFlags/get-feature-flag.js +6 -6
  57. package/src/FeatureFlags/log-feature-flag-impression.js +15 -13
  58. package/src/FeatureFlags/refresh-feature-flags.js +1 -1
  59. package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +7 -4
  60. package/src/Feed/feed-provider-factory.js +2 -2
  61. package/src/Feed/feed-provider.js +44 -44
  62. package/src/Feed/feed.js +1 -1
  63. package/src/Feed/get-cached-feed.js +1 -1
  64. package/src/Feed/log-feed-displayed.js +4 -4
  65. package/src/Feed/request-feed-refresh.js +1 -1
  66. package/src/Feed/subscribe-to-feed-updates.js +1 -1
  67. package/src/Feed/ui/hide-feed.js +1 -1
  68. package/src/Feed/ui/show-feed.js +28 -28
  69. package/src/Feed/ui/toggle-feed.js +1 -1
  70. package/src/InAppMessage/defer-in-app-message.js +5 -5
  71. package/src/InAppMessage/display/html-message-to-html.js +54 -54
  72. package/src/InAppMessage/display/in-app-message-to-html.js +79 -79
  73. package/src/InAppMessage/display/modal-utils.js +8 -8
  74. package/src/InAppMessage/get-deferred-in-app-message.js +1 -1
  75. package/src/InAppMessage/in-app-message-factory.js +49 -49
  76. package/src/InAppMessage/in-app-message-manager-factory.js +1 -1
  77. package/src/InAppMessage/in-app-message-manager.js +143 -138
  78. package/src/InAppMessage/log-in-app-message-button-click.js +12 -12
  79. package/src/InAppMessage/log-in-app-message-click.js +9 -9
  80. package/src/InAppMessage/log-in-app-message-html-click.js +12 -12
  81. package/src/InAppMessage/log-in-app-message-impression.js +6 -6
  82. package/src/InAppMessage/models/full-screen-message.js +33 -33
  83. package/src/InAppMessage/models/html-message.js +20 -20
  84. package/src/InAppMessage/models/in-app-message-button.js +6 -6
  85. package/src/InAppMessage/models/in-app-message.js +99 -99
  86. package/src/InAppMessage/models/modal-message.js +32 -32
  87. package/src/InAppMessage/models/slide-up-message.js +28 -28
  88. package/src/InAppMessage/models/templated-in-app-message.js +8 -8
  89. package/src/InAppMessage/subscribe-to-in-app-message.js +2 -2
  90. package/src/InAppMessage/ui/automatically-show-in-app-messages.js +4 -4
  91. package/src/InAppMessage/ui/show-in-app-message.js +81 -81
  92. package/src/Push/is-push-blocked.js +1 -1
  93. package/src/Push/is-push-permission-granted.js +1 -1
  94. package/src/Push/is-push-supported.js +1 -1
  95. package/src/Push/push-manager-factory.js +5 -5
  96. package/src/Push/push-manager.js +176 -173
  97. package/src/Push/request-push-permission.js +1 -1
  98. package/src/Push/unregister-push.js +1 -1
  99. package/src/Push/utils/push-utils.js +4 -4
  100. package/src/User/user-manager.js +29 -29
  101. package/src/User/user.js +72 -74
  102. package/src/common/base-feed.js +7 -7
  103. package/src/common/base-provider.js +1 -1
  104. package/src/common/constants.js +2 -0
  105. package/src/common/event-logger.js +21 -18
  106. package/src/common/feed-display.js +44 -44
  107. package/src/l10n/l10n-manager-factory.js +3 -3
  108. package/src/l10n/l10n-manager.js +7 -7
  109. package/src/managers/auth-manager.js +32 -32
  110. package/src/managers/braze-instance.js +188 -190
  111. package/src/managers/device-manager.js +28 -28
  112. package/src/managers/network-manager.js +189 -138
  113. package/src/managers/server-config-manager.js +69 -53
  114. package/src/managers/session-manager.js +34 -30
  115. package/src/managers/storage-manager-factory.js +16 -16
  116. package/src/managers/storage-manager.js +178 -163
  117. package/src/managers/subscription-manager.js +12 -12
  118. package/src/models/backend-errors.js +5 -5
  119. package/src/models/braze-event.js +4 -4
  120. package/src/models/device.js +2 -2
  121. package/src/models/identifier.js +34 -14
  122. package/src/models/push-token.js +8 -8
  123. package/src/models/request-result.js +3 -3
  124. package/src/models/server-config.js +32 -23
  125. package/src/request-controller.js +187 -179
  126. package/src/triggers/models/custom-event-data.js +7 -7
  127. package/src/triggers/models/custom-event-property-data.js +10 -10
  128. package/src/triggers/models/filter-set.js +13 -13
  129. package/src/triggers/models/filter.js +45 -45
  130. package/src/triggers/models/in-app-message-click-data.js +12 -12
  131. package/src/triggers/models/purchase-data.js +2 -2
  132. package/src/triggers/models/purchase-property-data.js +10 -10
  133. package/src/triggers/models/push-click-data.js +7 -7
  134. package/src/triggers/models/trigger-condition.js +57 -59
  135. package/src/triggers/models/trigger-events.js +4 -4
  136. package/src/triggers/models/trigger.js +38 -38
  137. package/src/triggers/triggers-provider-factory.js +4 -4
  138. package/src/triggers/triggers-provider.js +127 -130
  139. package/src/ui/js/attach-css.js +2 -2
  140. package/src/ui/js/iam-css.js +1 -1
  141. package/src/ui/js/load-font-awesome.js +1 -1
  142. package/src/util/base-device-parser.js +3 -3
  143. package/src/util/braze-actions.js +35 -35
  144. package/src/util/browser-detector.js +21 -21
  145. package/src/util/client-hints-parser.js +8 -8
  146. package/src/util/code-utils.js +2 -2
  147. package/src/util/component-utils.js +1 -1
  148. package/src/util/deprecation-utils.js +4 -4
  149. package/src/util/device-constants.js +1 -1
  150. package/src/util/dom-utils.js +18 -18
  151. package/src/util/key-codes.js +1 -1
  152. package/src/util/net.js +18 -18
  153. package/src/util/request-header-utils.js +39 -37
  154. package/src/util/string-utils.js +10 -10
  155. package/src/util/user-agent-parser.js +18 -18
  156. package/src/util/validation-utils.js +37 -39
  157. package/src/util/window-utils.js +3 -3
  158. 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 oi, OperatingSystems as V } from "./device-constants.js";
3
- export default class ai extends ge {
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.rd = ai.ic(navigator.userAgent || ""));
5
+ super(), (this.ud = oi.hc(navigator.userAgent || ""));
6
6
  }
7
7
  tf() {
8
- return this.rd[0] || "Unknown Browser";
8
+ return this.ud[0] || "Unknown Browser";
9
9
  }
10
10
  ef() {
11
- return this.rd[1] || "Unknown Version";
11
+ return this.ud[1] || "Unknown Version";
12
12
  }
13
- Ta(r) {
13
+ Oa(r) {
14
14
  for (let n = 0; n < r.length; n++) {
15
15
  const e = r[n].string;
16
- let i = ai.rf(e, r[n]);
16
+ let i = oi.rf(e, r[n]);
17
17
  if (i)
18
18
  return (
19
- i === V.kg && navigator.maxTouchPoints > 1 && (i = V.de),
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 ic(r) {
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] === oi.rO &&
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", oi.oO)),
51
- (n[0] = n[0].replace("EdgA", oi.eO)),
52
- "Edg" === n[0] && (n[0] = oi.eO),
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] === oi.Bg &&
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", oi.eO)), [n[0], n[1]]
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] === oi.Bg &&
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] === oi.oO && null != (n = r.match(/mini\/(\.?\d+(\.\d+)*)/i)))
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] = oi.rO),
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 p,
2
+ isArray as j,
3
3
  isDate as yt,
4
4
  isObject as Nt,
5
- keys as oo,
5
+ keys as to,
6
6
  } from "./code-utils.js";
7
- import { getByteLength as U } from "./string-utils.js";
8
- import r from "../../shared-lib/braze-shared-lib.js";
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 _ } from "./braze-actions.js";
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.j.error(`Cannot ${e} because ${n} "${t}" is invalid.`), o;
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.j.warn("Custom attribute keys cannot contain '$' or '.'"),
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 (p(t) && p(e)) {
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 oo(t)) {
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) || p(t)
81
+ Nt(t) || j(t)
84
82
  ? _validateNestedProperties(t, e, i ? 1 : -1)
85
83
  : validatePropertyType(t)),
86
- a || r.j.error(`Cannot ${n} because ${o} "${t}" is invalid.`),
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.j.error(`Cannot ${e} because ${n} "${t}" is invalid.`), i;
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 || p(t)))
93
+ if ((null == t && (t = {}), "object" != typeof t || j(t)))
96
94
  return (
97
- r.j.error(`${e} requires that ${n} be an object. Ignoring ${i}.`),
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 (U(u) > a)
101
+ if (O(u) > a)
104
102
  return (
105
- r.j.error(
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.j.error(`Could not ${o} because ${n} did not contain valid JSON.`),
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.j.error(
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 (!(_.properties.type in t)) return !1;
186
- switch (t[_.properties.type]) {
187
- case _.types.ue:
188
- if (_.properties.me in t) return !0;
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 _.types.logCustomEvent:
191
- case _.types.setEmailNotificationSubscriptionType:
192
- case _.types.setPushNotificationSubscriptionType:
193
- case _.types.setCustomUserAttribute:
194
- case _.types.addToSubscriptionGroup:
195
- case _.types.removeFromSubscriptionGroup:
196
- case _.types.addToCustomAttributeArray:
197
- case _.types.removeFromCustomAttributeArray:
198
- case _.types.pe:
199
- case _.types.je:
200
- if (_.properties.le in t) return !0;
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 _.types.requestPushPermission:
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(_.types).forEach((r) => {
213
- _.types[r] !== t.toString() || (e = !0);
210
+ Object.keys(V.types).forEach((r) => {
211
+ V.types[r] !== t.toString() || (e = !0);
214
212
  }),
215
213
  e
216
214
  );
@@ -28,7 +28,7 @@ export function _getCurrentUrl() {
28
28
  }
29
29
  export const WindowUtils = {
30
30
  openUri: _openUri,
31
- ao: _isPhone,
32
- mo: _getOrientation,
33
- Cn: _getCurrentUrl,
31
+ jo: _isPhone,
32
+ bo: _getOrientation,
33
+ Tn: _getCurrentUrl,
34
34
  };
@@ -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;