@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.
Files changed (155) hide show
  1. package/README.md +1 -1
  2. package/index.d.ts +11 -5
  3. package/package.json +1 -1
  4. package/shared-lib/encoding-utils.js +3 -3
  5. package/shared-lib/event-types.js +30 -30
  6. package/shared-lib/guid.js +3 -3
  7. package/shared-lib/indexed-db-adapter.js +58 -58
  8. package/shared-lib/logger.js +7 -7
  9. package/shared-lib/supported-options.js +17 -16
  10. package/src/Banner/banner-provider.js +95 -81
  11. package/src/Banner/banner.js +9 -9
  12. package/src/Banner/constants.js +4 -0
  13. package/src/Banner/display/banner-to-html.js +1 -1
  14. package/src/Banner/display/destroy-banner-html.js +3 -3
  15. package/src/Banner/display/detect-banner-impressions.js +14 -14
  16. package/src/Banner/get-all-banners.js +4 -4
  17. package/src/Banner/get-banner.js +5 -4
  18. package/src/Banner/log-banner-click.js +2 -2
  19. package/src/Banner/log-banner-impressions.js +6 -6
  20. package/src/Banner/request-banners-refresh.js +18 -20
  21. package/src/Banner/subscribe-to-banners-updates.js +5 -5
  22. package/src/Banner/ui/insert-banner.js +17 -14
  23. package/src/Card/card-manager-factory.js +3 -3
  24. package/src/Card/card-manager.js +32 -32
  25. package/src/Card/constants.js +1 -0
  26. package/src/Card/display/card-display.js +11 -11
  27. package/src/Card/log-card-dismissal.js +2 -2
  28. package/src/Card/log-content-card-click.js +2 -2
  29. package/src/Card/log-content-card-impressions.js +5 -5
  30. package/src/Card/models/captioned-image.js +3 -3
  31. package/src/Card/models/card.js +16 -16
  32. package/src/Card/models/classic-card.js +3 -3
  33. package/src/Card/models/control-card.js +3 -3
  34. package/src/Card/models/image-only.js +3 -3
  35. package/src/Card/util/card-factory.js +6 -6
  36. package/src/ContentCards/content-cards-provider-factory.js +11 -11
  37. package/src/ContentCards/content-cards-provider.js +110 -96
  38. package/src/ContentCards/get-cached-content-cards.js +2 -2
  39. package/src/ContentCards/request-content-cards-refresh.js +2 -2
  40. package/src/ContentCards/subscribe-to-content-cards-updates.js +5 -5
  41. package/src/ContentCards/ui/show-content-cards.js +5 -5
  42. package/src/Core/add-sdk-metadata.js +2 -2
  43. package/src/Core/change-user.js +4 -4
  44. package/src/Core/disable-sdk.js +9 -8
  45. package/src/Core/enable-sdk.js +5 -5
  46. package/src/Core/get-device-id.js +2 -2
  47. package/src/Core/handle-braze-action.js +3 -3
  48. package/src/Core/is-disabled.js +1 -1
  49. package/src/Core/log-custom-event.js +13 -13
  50. package/src/Core/log-purchase.js +10 -10
  51. package/src/Core/open-session.js +7 -7
  52. package/src/Core/set-sdk-authentication-signature.js +2 -2
  53. package/src/Core/wipe-data.js +6 -6
  54. package/src/DUST/dust-connection-core.js +23 -0
  55. package/src/DUST/dust-provider-factory.js +10 -8
  56. package/src/DUST/dust-provider.js +408 -176
  57. package/src/DUST/dust-shared-worker-code.js +2 -0
  58. package/src/DUST/dust-shared-worker-impl.js +240 -0
  59. package/src/DUST/dust-worker-bridge.js +136 -0
  60. package/src/DUST/index.js +10 -0
  61. package/src/DUST/subscribe-to-dust.js +13 -13
  62. package/src/FeatureFlags/feature-flag-factory.js +8 -8
  63. package/src/FeatureFlags/feature-flag.js +6 -6
  64. package/src/FeatureFlags/feature-flags-provider-factory.js +9 -9
  65. package/src/FeatureFlags/feature-flags-provider.js +98 -84
  66. package/src/FeatureFlags/get-all-feature-flags.js +3 -3
  67. package/src/FeatureFlags/get-feature-flag.js +3 -3
  68. package/src/FeatureFlags/log-feature-flag-impression.js +7 -7
  69. package/src/FeatureFlags/refresh-feature-flags.js +2 -2
  70. package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +4 -4
  71. package/src/InAppMessage/constants.js +4 -0
  72. package/src/InAppMessage/defer-in-app-message.js +2 -2
  73. package/src/InAppMessage/display/get-animation-effect.js +1 -1
  74. package/src/InAppMessage/display/html-message-to-html.js +6 -6
  75. package/src/InAppMessage/display/in-app-message-to-html.js +40 -40
  76. package/src/InAppMessage/display/modal-utils.js +16 -16
  77. package/src/InAppMessage/get-deferred-in-app-message.js +2 -2
  78. package/src/InAppMessage/in-app-message-factory.js +4 -4
  79. package/src/InAppMessage/in-app-message-manager-factory.js +7 -7
  80. package/src/InAppMessage/in-app-message-manager.js +97 -97
  81. package/src/InAppMessage/log-in-app-message-button-click.js +14 -14
  82. package/src/InAppMessage/log-in-app-message-click.js +13 -13
  83. package/src/InAppMessage/log-in-app-message-html-click.js +11 -11
  84. package/src/InAppMessage/log-in-app-message-impression.js +8 -8
  85. package/src/InAppMessage/models/control-message.js +5 -5
  86. package/src/InAppMessage/models/full-screen-message.js +18 -18
  87. package/src/InAppMessage/models/html-message.js +19 -19
  88. package/src/InAppMessage/models/in-app-message-button.js +7 -7
  89. package/src/InAppMessage/models/in-app-message.js +121 -119
  90. package/src/InAppMessage/models/modal-message.js +18 -18
  91. package/src/InAppMessage/models/slide-up-message.js +23 -23
  92. package/src/InAppMessage/models/templated-in-app-message.js +8 -8
  93. package/src/InAppMessage/subscribe-to-in-app-message.js +2 -2
  94. package/src/InAppMessage/ui/automatically-show-in-app-messages.js +5 -5
  95. package/src/InAppMessage/ui/remove-all-visible-in-app-messages.js +8 -8
  96. package/src/InAppMessage/ui/show-in-app-message.js +34 -34
  97. package/src/Push/push-manager-factory.js +14 -14
  98. package/src/Push/push-manager.js +90 -90
  99. package/src/Push/request-push-permission.js +1 -1
  100. package/src/Push/unregister-push.js +1 -1
  101. package/src/Push/utils/push-utils.js +9 -9
  102. package/src/User/user-manager.js +32 -32
  103. package/src/User/user.js +71 -71
  104. package/src/common/constants.js +8 -11
  105. package/src/common/content-cards-display.js +32 -32
  106. package/src/common/event-logger.js +10 -10
  107. package/src/common/properties-base.js +16 -16
  108. package/src/l10n/l10n-manager-factory.js +11 -11
  109. package/src/l10n/l10n-manager.js +2 -2
  110. package/src/managers/auth-manager.js +14 -14
  111. package/src/managers/braze-instance.js +163 -159
  112. package/src/managers/device-manager.js +11 -11
  113. package/src/managers/network-manager.js +154 -154
  114. package/src/managers/server-config-manager.js +116 -88
  115. package/src/managers/session-manager.js +41 -41
  116. package/src/managers/storage-manager-factory.js +13 -13
  117. package/src/managers/storage-manager.js +130 -131
  118. package/src/managers/subscription-manager.js +12 -12
  119. package/src/managers/utils.js +1 -1
  120. package/src/models/backend-errors.js +5 -5
  121. package/src/models/braze-event.js +10 -10
  122. package/src/models/device.js +2 -2
  123. package/src/models/identifier.js +17 -17
  124. package/src/models/push-token.js +14 -14
  125. package/src/models/request-result.js +4 -4
  126. package/src/models/server-config.js +41 -37
  127. package/src/request-controller.js +163 -160
  128. package/src/triggers/models/custom-event-data.js +5 -5
  129. package/src/triggers/models/custom-event-property-data.js +6 -6
  130. package/src/triggers/models/filter-set.js +8 -8
  131. package/src/triggers/models/filter.js +7 -7
  132. package/src/triggers/models/in-app-message-click-data.js +13 -13
  133. package/src/triggers/models/purchase-data.js +2 -2
  134. package/src/triggers/models/purchase-property-data.js +6 -6
  135. package/src/triggers/models/push-click-data.js +6 -6
  136. package/src/triggers/models/trigger-condition.js +47 -47
  137. package/src/triggers/models/trigger-events.js +2 -2
  138. package/src/triggers/models/trigger.js +42 -42
  139. package/src/triggers/triggers-provider-factory.js +5 -5
  140. package/src/triggers/triggers-provider.js +66 -66
  141. package/src/ui/js/attach-css.js +3 -3
  142. package/src/ui/js/load-font-awesome.js +2 -2
  143. package/src/util/base-device-parser.js +8 -8
  144. package/src/util/braze-actions.js +5 -5
  145. package/src/util/browser-detector.js +33 -33
  146. package/src/util/client-hints-parser.js +10 -10
  147. package/src/util/component-utils.js +5 -5
  148. package/src/util/dom-utils.js +13 -13
  149. package/src/util/html-display-utils.js +7 -7
  150. package/src/util/key-codes.js +1 -1
  151. package/src/util/net.js +6 -6
  152. package/src/util/request-header-utils.js +26 -26
  153. package/src/util/user-agent-parser.js +20 -20
  154. package/src/util/validation-utils.js +16 -16
  155. package/src/util/window-utils.js +3 -3
@@ -1,13 +1,13 @@
1
1
  import r from "../managers/braze-instance.js";
2
2
  import { MAX_PURCHASE_QUANTITY as or } from "../common/constants.js";
3
- import { logger as E, EventTypes as m } from "../../shared-lib/index.js";
4
- import et from "../triggers/models/trigger-events.js";
5
- import { TriggersProviderFactory as ot } from "../triggers/triggers-provider-factory.js";
3
+ import { logger as E, EventTypes as f } from "../../shared-lib/index.js";
4
+ import ot from "../triggers/models/trigger-events.js";
5
+ import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js";
6
6
  import {
7
- validateCustomProperties as rt,
8
- validateCustomString as nt,
7
+ validateCustomProperties as nt,
8
+ validateCustomString as mt,
9
9
  } from "../util/validation-utils.js";
10
- import c from "../common/event-logger.js";
10
+ import v from "../common/event-logger.js";
11
11
  export function logPurchase(e, o, i, n, t) {
12
12
  if (!r.rr()) return !1;
13
13
  if (
@@ -19,7 +19,7 @@ export function logPurchase(e, o, i, n, t) {
19
19
  ),
20
20
  !1
21
21
  );
22
- if (!nt(e, "log purchase", "the purchase name")) return !1;
22
+ if (!mt(e, "log purchase", "the purchase name")) return !1;
23
23
  if (null == o || isNaN(parseFloat(o.toString())))
24
24
  return (
25
25
  E.error(`logPurchase requires a numeric price, got ${o}, ignoring.`), !1
@@ -219,7 +219,7 @@ export function logPurchase(e, o, i, n, t) {
219
219
  E.error(`logPurchase requires a valid currencyCode, got ${i}, ignoring.`),
220
220
  !1
221
221
  );
222
- const [u, a] = rt(
222
+ const [u, a] = nt(
223
223
  t,
224
224
  "logPurchase",
225
225
  "purchaseProperties",
@@ -230,10 +230,10 @@ export function logPurchase(e, o, i, n, t) {
230
230
  const g = r.l();
231
231
  if (g && g.Dr(e))
232
232
  return E.info(`Purchase "${e}" is blocklisted, ignoring.`), !1;
233
- const P = c.rt(m.Pr, { pid: e, c: i, p: s, q: D, pr: a });
233
+ const P = v.lt(f.Pr, { pid: e, c: i, p: s, q: D, pr: a });
234
234
  if (P.W) {
235
235
  E.info(`Logged ${D} purchase${D > 1 ? "s" : ""} of "${e}" for ${i} ${s}.`);
236
- for (const r of P.ue) ot.o().ve(et.Rr, [e, t], r);
236
+ for (const r of P.Ee) rt.o().he(ot.Rr, [e, t], r);
237
237
  }
238
238
  return P.W;
239
239
  }
@@ -1,23 +1,23 @@
1
1
  import r from "../managers/braze-instance.js";
2
- import { logger as E, IndexedDBAdapter as it } from "../../shared-lib/index.js";
3
- import et from "../triggers/models/trigger-events.js";
4
- import { TriggersProviderFactory as ot } from "../triggers/triggers-provider-factory.js";
2
+ import { logger as E, IndexedDBAdapter as et } from "../../shared-lib/index.js";
3
+ import ot from "../triggers/models/trigger-events.js";
4
+ import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js";
5
5
  export function openSession() {
6
6
  if (!r.rr()) return;
7
7
  const i = r.nn();
8
8
  if (!i) return;
9
9
  i.openSession();
10
- const t = it.Us.Rs,
11
- o = new it(t, E);
10
+ const t = et.Us.Rs,
11
+ o = new et(t, E);
12
12
  o.kr(t.Fs.vr, (r, n) => {
13
13
  const e = n.lastClick,
14
14
  s = n.trackingString;
15
15
  E.info(`Firing push click trigger from ${s} push click at ${e}`);
16
16
  const c = i.$r(e, s),
17
17
  g = function () {
18
- ot.o().ve(et.wr, [s], c);
18
+ rt.o().he(ot.wr, [s], c);
19
19
  };
20
- i.yr(g, g), o.be(t.Fs.vr, r);
20
+ i.yr(g, g), o.je(t.Fs.vr, r);
21
21
  }),
22
22
  o.Ds(t.Fs.zr, function (r) {
23
23
  i.Fr(r);
@@ -1,8 +1,8 @@
1
1
  import r from "../managers/braze-instance.js";
2
- import { validateStandardString as er } from "../util/validation-utils.js";
2
+ import { validateStandardString as ir } from "../util/validation-utils.js";
3
3
  export function setSdkAuthenticationSignature(t) {
4
4
  if (!r.rr()) return !1;
5
- if ("" === t || !er(t, "set signature", "signature", !1)) return !1;
5
+ if ("" === t || !ir(t, "set signature", "signature", !1)) return !1;
6
6
  const i = r.Sr();
7
7
  return !!i && (i.setSdkAuthenticationSignature(t), !0);
8
8
  }
@@ -1,16 +1,16 @@
1
1
  import r from "../managers/braze-instance.js";
2
2
  import { keys as C } from "../util/code-utils.js";
3
- import { logger as E, IndexedDBAdapter as it } from "../../shared-lib/index.js";
4
- import { BRAZE_MUST_BE_INITIALIZED_ERROR as w } from "../common/constants.js";
3
+ import { logger as E, IndexedDBAdapter as et } from "../../shared-lib/index.js";
4
+ import { CoreStrings as z } from "../common/constants.js";
5
5
  export function wipeData() {
6
6
  const o = r.p();
7
- if (null == o) return void E.warn(w);
7
+ if (null == o) return void E.warn(z.ee);
8
8
  o.clearData();
9
- const t = C(it.Us);
9
+ const t = C(et.Us);
10
10
  for (let o = 0; o < t.length; o++) {
11
11
  const n = t[o],
12
- r = it.Us[n];
13
- new it(r, E).clearData();
12
+ r = et.Us[n];
13
+ new et(r, E).clearData();
14
14
  }
15
15
  if (r.rr()) for (const o of r.gr()) o.clearData(!0);
16
16
  const n = r.m();
@@ -0,0 +1,23 @@
1
+ export const MIN_BACKOFF_MS = 1e4;
2
+ export const MAX_BACKOFF_MS = 3e5;
3
+ export const BACKOFF_SCALE_FACTOR = 3;
4
+ export const MAX_RETRIES = 5;
5
+ export function randomInRange(t, e) {
6
+ return Math.floor(Math.random() * (e - t + 1)) + t;
7
+ }
8
+ export function calculateBackoff(t) {
9
+ let e = t;
10
+ return (
11
+ (null === e || e < 1e4) && (e = 1e4),
12
+ Math.min(3e5, randomInRange(1e4, 3 * e))
13
+ );
14
+ }
15
+ export function buildSseUrl(t, e, n, o, r) {
16
+ const c = /^https?:\/\//i.test(t) ? t : `https://${t}`;
17
+ let p = `mite=${encodeURIComponent(e)}&attempts=${n}`;
18
+ return (
19
+ o && (p += `&auth=${encodeURIComponent(o)}`),
20
+ r && (p += `&rcs=${encodeURIComponent(r)}`),
21
+ `${c}/sse?${p}`
22
+ );
23
+ }
@@ -1,20 +1,22 @@
1
1
  import r from "../managers/braze-instance.js";
2
2
  import tr from "./dust-provider.js";
3
- const ir = {
3
+ const nr = {
4
4
  i: !1,
5
5
  provider: null,
6
6
  o: () => {
7
- if ((ir.t(), !ir.provider)) {
8
- const t = r.ee("dustHost");
9
- (ir.provider = new tr(r.m(), r.p(), t)), r.v(ir.provider);
7
+ if ((nr.t(), !nr.provider)) {
8
+ const t = r.re("dustHost");
9
+ (nr.provider = new tr(r.m(), r.p(), r.l(), t)),
10
+ r.v(nr.provider),
11
+ nr.provider.Hr();
10
12
  }
11
- return ir.provider;
13
+ return nr.provider;
12
14
  },
13
15
  t: () => {
14
- ir.i || (r.g(ir), (ir.i = !0));
16
+ nr.i || (r.g(nr), (nr.i = !0));
15
17
  },
16
18
  destroy: () => {
17
- ir.provider && ir.provider.destroy(), (ir.provider = null), (ir.i = !1);
19
+ nr.provider && nr.provider.destroy(), (nr.provider = null), (nr.i = !1);
18
20
  },
19
21
  };
20
- export default ir;
22
+ export default nr;