@braze/web-sdk 6.7.1 → 6.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.
Files changed (138) hide show
  1. package/index.d.ts +165 -38
  2. package/package.json +1 -1
  3. package/shared-lib/encoding-utils.js +2 -2
  4. package/shared-lib/event-types.js +16 -16
  5. package/shared-lib/indexed-db-adapter.js +65 -65
  6. package/shared-lib/logger.js +18 -18
  7. package/shared-lib/supported-options.js +1 -1
  8. package/src/Banner/banner-provider.js +67 -59
  9. package/src/Banner/banner.js +40 -19
  10. package/src/Banner/dismiss-banner.js +4 -0
  11. package/src/Banner/display/banner-to-html.js +10 -10
  12. package/src/Banner/display/destroy-banner-html.js +2 -2
  13. package/src/Banner/get-all-banners.js +6 -6
  14. package/src/Banner/get-banner.js +6 -6
  15. package/src/Banner/index.js +1 -0
  16. package/src/Banner/log-banner-click.js +7 -7
  17. package/src/Banner/log-banner-dismissal.js +7 -7
  18. package/src/Banner/log-banner-impressions.js +27 -18
  19. package/src/Banner/request-banners-refresh.js +8 -8
  20. package/src/Banner/subscribe-to-banners-updates.js +5 -5
  21. package/src/Banner/ui/insert-banner.js +8 -8
  22. package/src/Card/card-manager.js +31 -31
  23. package/src/Card/log-card-dismissal.js +2 -2
  24. package/src/Card/log-content-card-click.js +2 -2
  25. package/src/Card/log-content-card-impressions.js +4 -4
  26. package/src/Card/models/captioned-image.js +15 -15
  27. package/src/Card/models/card.js +89 -89
  28. package/src/Card/models/classic-card.js +16 -16
  29. package/src/Card/models/control-card.js +7 -7
  30. package/src/Card/models/image-only.js +13 -13
  31. package/src/Card/util/card-factory.js +32 -32
  32. package/src/ContentCards/content-cards-provider-factory.js +13 -11
  33. package/src/ContentCards/content-cards-provider.js +105 -105
  34. package/src/ContentCards/get-cached-content-cards.js +2 -2
  35. package/src/ContentCards/request-content-cards-refresh.js +2 -2
  36. package/src/ContentCards/subscribe-to-content-cards-updates.js +10 -10
  37. package/src/ContentCards/ui/show-content-cards.js +7 -7
  38. package/src/Core/add-sdk-metadata.js +2 -2
  39. package/src/Core/change-user.js +5 -5
  40. package/src/Core/destroy.js +2 -2
  41. package/src/Core/disable-sdk.js +4 -4
  42. package/src/Core/enable-sdk.js +4 -4
  43. package/src/Core/get-device-id.js +2 -2
  44. package/src/Core/handle-braze-action.js +5 -5
  45. package/src/Core/index.js +1 -0
  46. package/src/Core/log-custom-event.js +5 -5
  47. package/src/Core/log-ecommerce-event.js +29 -0
  48. package/src/Core/log-purchase.js +23 -198
  49. package/src/Core/open-session.js +10 -10
  50. package/src/Core/set-logger.js +2 -2
  51. package/src/Core/set-sdk-authentication-signature.js +1 -1
  52. package/src/Core/subscribe-to-sdk-authentication-failures.js +1 -1
  53. package/src/Core/toggle-logging.js +2 -2
  54. package/src/Core/wipe-data.js +6 -6
  55. package/src/DUST/dust-connection-core.js +1 -0
  56. package/src/DUST/dust-provider-factory.js +10 -10
  57. package/src/DUST/dust-provider.js +258 -226
  58. package/src/DUST/dust-shared-worker-code.js +1 -1
  59. package/src/DUST/dust-shared-worker-impl.js +97 -103
  60. package/src/DUST/dust-worker-bridge.js +55 -40
  61. package/src/DUST/subscribe-to-dust.js +7 -7
  62. package/src/FeatureFlags/feature-flag-factory.js +8 -8
  63. package/src/FeatureFlags/feature-flag.js +3 -3
  64. package/src/FeatureFlags/feature-flags-provider.js +21 -21
  65. package/src/FeatureFlags/log-feature-flag-impression.js +5 -5
  66. package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +1 -1
  67. package/src/InAppMessage/constants.js +3 -3
  68. package/src/InAppMessage/defer-in-app-message.js +3 -3
  69. package/src/InAppMessage/display/html-message-to-html.js +4 -4
  70. package/src/InAppMessage/display/in-app-message-to-html.js +32 -32
  71. package/src/InAppMessage/display/modal-utils.js +2 -2
  72. package/src/InAppMessage/in-app-message-factory.js +36 -36
  73. package/src/InAppMessage/in-app-message-manager.js +35 -35
  74. package/src/InAppMessage/log-in-app-message-button-click.js +3 -3
  75. package/src/InAppMessage/log-in-app-message-click.js +3 -3
  76. package/src/InAppMessage/log-in-app-message-html-click.js +3 -3
  77. package/src/InAppMessage/log-in-app-message-impression.js +3 -3
  78. package/src/InAppMessage/models/control-message.js +4 -4
  79. package/src/InAppMessage/models/full-screen-message.js +9 -9
  80. package/src/InAppMessage/models/html-message.js +2 -2
  81. package/src/InAppMessage/models/in-app-message-button.js +4 -4
  82. package/src/InAppMessage/models/in-app-message.js +34 -34
  83. package/src/InAppMessage/models/modal-message.js +7 -7
  84. package/src/InAppMessage/models/slide-up-message.js +8 -8
  85. package/src/InAppMessage/ui/show-in-app-message.js +20 -20
  86. package/src/Push/push-manager.js +44 -44
  87. package/src/User/user-manager.js +19 -19
  88. package/src/User/user.js +17 -17
  89. package/src/common/base-provider.js +1 -1
  90. package/src/common/constants.js +1 -0
  91. package/src/common/content-cards-display.js +6 -6
  92. package/src/common/event-logger.js +3 -3
  93. package/src/common/properties-base.js +3 -3
  94. package/src/l10n/l10n-manager.js +2 -2
  95. package/src/managers/auth-manager.js +11 -11
  96. package/src/managers/braze-instance.js +59 -59
  97. package/src/managers/device-manager.js +9 -9
  98. package/src/managers/network-manager.js +65 -63
  99. package/src/managers/server-config-manager.js +110 -93
  100. package/src/managers/session-manager.js +20 -20
  101. package/src/managers/storage-manager-factory.js +9 -9
  102. package/src/managers/storage-manager.js +137 -137
  103. package/src/managers/subscription-manager.js +2 -2
  104. package/src/managers/utils.js +1 -1
  105. package/src/models/braze-event.js +2 -2
  106. package/src/models/identifier.js +5 -5
  107. package/src/models/push-token.js +8 -8
  108. package/src/models/request-result.js +1 -1
  109. package/src/models/server-config.js +46 -28
  110. package/src/request-controller.js +124 -124
  111. package/src/triggers/models/custom-event-data.js +4 -4
  112. package/src/triggers/models/custom-event-property-data.js +5 -5
  113. package/src/triggers/models/filter-set.js +2 -2
  114. package/src/triggers/models/filter.js +1 -1
  115. package/src/triggers/models/in-app-message-click-data.js +5 -5
  116. package/src/triggers/models/purchase-data.js +1 -1
  117. package/src/triggers/models/purchase-property-data.js +2 -2
  118. package/src/triggers/models/push-click-data.js +5 -5
  119. package/src/triggers/models/trigger-condition.js +45 -45
  120. package/src/triggers/models/trigger-events.js +3 -3
  121. package/src/triggers/models/trigger.js +30 -30
  122. package/src/triggers/triggers-provider.js +63 -63
  123. package/src/types.js +5 -1
  124. package/src/ui/js/attach-css.js +1 -1
  125. package/src/util/braze-actions.js +6 -6
  126. package/src/util/browser-detector.js +13 -13
  127. package/src/util/client-hints-parser.js +5 -5
  128. package/src/util/code-utils.js +2 -2
  129. package/src/util/deprecation-utils.js +2 -2
  130. package/src/util/dom-utils.js +8 -8
  131. package/src/util/ecommerce-event-validation.js +343 -0
  132. package/src/util/html-display-utils.js +11 -11
  133. package/src/util/iso-4217-currency-codes.js +176 -0
  134. package/src/util/net.js +4 -4
  135. package/src/util/request-header-utils.js +10 -10
  136. package/src/util/string-utils.js +2 -2
  137. package/src/util/user-agent-parser.js +15 -15
  138. package/src/util/validation-utils.js +14 -14
@@ -0,0 +1,29 @@
1
+ import { EventTypes as p, logger as b } from "../../shared-lib/index.js";
2
+ import v from "../common/event-logger.js";
3
+ import r from "../managers/braze-instance.js";
4
+ import ot from "../triggers/models/trigger-events.js";
5
+ import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js";
6
+ import { sanitizeEcommerceEvent as re } from "../util/ecommerce-event-validation.js";
7
+ export function logEcommerceEvent(e) {
8
+ if (!r.rr()) return !1;
9
+ if (null == e || "object" != typeof e || null == e.name)
10
+ return (
11
+ b.error(
12
+ 'logEcommerceEvent requires an event object with a "name" field.',
13
+ ),
14
+ !1
15
+ );
16
+ const o = re(e);
17
+ if (null == o) return !1;
18
+ const t = r.l();
19
+ if (t && t.$e(e.name))
20
+ return (
21
+ b.info(`The eCommerce event "${e.name}" is blocklisted, ignoring.`), !1
22
+ );
23
+ const n = v.Dt(p.CustomEvent, { n: e.name, p: o });
24
+ if (n.lt) {
25
+ b.info(`Logged eCommerce event "${e.name}".`);
26
+ for (const r of n.Ce) rt.o().Ee(ot.he, [e.name, e.properties], r);
27
+ }
28
+ return n.lt;
29
+ }
@@ -1,20 +1,21 @@
1
+ import { EventTypes as p, logger as b } from "../../shared-lib/index.js";
2
+ import { isValidIso4217CurrencyCode as or } from "../util/iso-4217-currency-codes.js";
3
+ import { MAX_PURCHASE_QUANTITY as nr } from "../common/constants.js";
4
+ import v from "../common/event-logger.js";
1
5
  import r from "../managers/braze-instance.js";
2
- import { MAX_PURCHASE_QUANTITY as or } from "../common/constants.js";
3
- import { logger as E, EventTypes as p } from "../../shared-lib/index.js";
4
6
  import ot from "../triggers/models/trigger-events.js";
5
7
  import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js";
6
8
  import {
7
9
  validateCustomProperties as nt,
8
10
  validateCustomString as mt,
9
11
  } from "../util/validation-utils.js";
10
- import v from "../common/event-logger.js";
11
12
  export function logPurchase(e, o, i, n, t) {
12
13
  if (!r.rr()) return !1;
13
14
  if (
14
15
  (null == i && (i = "USD"), null == n && (n = 1), null == e || e.length <= 0)
15
16
  )
16
17
  return (
17
- E.error(
18
+ b.error(
18
19
  `logPurchase requires a non-empty productId, got "${e}", ignoring.`,
19
20
  ),
20
21
  !1
@@ -22,218 +23,42 @@ export function logPurchase(e, o, i, n, t) {
22
23
  if (!mt(e, "log purchase", "the purchase name")) return !1;
23
24
  if (null == o || isNaN(parseFloat(o.toString())))
24
25
  return (
25
- E.error(`logPurchase requires a numeric price, got ${o}, ignoring.`), !1
26
+ b.error(`logPurchase requires a numeric price, got ${o}, ignoring.`), !1
26
27
  );
27
28
  const s = parseFloat(o.toString()).toFixed(2);
28
29
  if (null == n || isNaN(parseInt(n.toString())))
29
30
  return (
30
- E.error(`logPurchase requires an integer quantity, got ${n}, ignoring.`),
31
+ b.error(`logPurchase requires an integer quantity, got ${n}, ignoring.`),
31
32
  !1
32
33
  );
33
- const D = parseInt(n.toString());
34
- if (D < 1 || D > or)
34
+ const u = parseInt(n.toString());
35
+ if (u < 1 || u > nr)
35
36
  return (
36
- E.error(
37
- `logPurchase requires a quantity >1 and <${or}, got ${D}, ignoring.`,
37
+ b.error(
38
+ `logPurchase requires a quantity >1 and <${nr}, got ${u}, ignoring.`,
38
39
  ),
39
40
  !1
40
41
  );
41
- i = null != i ? i.toUpperCase() : i;
42
- if (
43
- -1 ===
44
- [
45
- "AED",
46
- "AFN",
47
- "ALL",
48
- "AMD",
49
- "ANG",
50
- "AOA",
51
- "ARS",
52
- "AUD",
53
- "AWG",
54
- "AZN",
55
- "BAM",
56
- "BBD",
57
- "BDT",
58
- "BGN",
59
- "BHD",
60
- "BIF",
61
- "BMD",
62
- "BND",
63
- "BOB",
64
- "BRL",
65
- "BSD",
66
- "BTC",
67
- "BTN",
68
- "BWP",
69
- "BYR",
70
- "BZD",
71
- "CAD",
72
- "CDF",
73
- "CHF",
74
- "CLF",
75
- "CLP",
76
- "CNY",
77
- "COP",
78
- "CRC",
79
- "CUC",
80
- "CUP",
81
- "CVE",
82
- "CZK",
83
- "DJF",
84
- "DKK",
85
- "DOP",
86
- "DZD",
87
- "EEK",
88
- "EGP",
89
- "ERN",
90
- "ETB",
91
- "EUR",
92
- "FJD",
93
- "FKP",
94
- "GBP",
95
- "GEL",
96
- "GGP",
97
- "GHS",
98
- "GIP",
99
- "GMD",
100
- "GNF",
101
- "GTQ",
102
- "GYD",
103
- "HKD",
104
- "HNL",
105
- "HRK",
106
- "HTG",
107
- "HUF",
108
- "IDR",
109
- "ILS",
110
- "IMP",
111
- "INR",
112
- "IQD",
113
- "IRR",
114
- "ISK",
115
- "JEP",
116
- "JMD",
117
- "JOD",
118
- "JPY",
119
- "KES",
120
- "KGS",
121
- "KHR",
122
- "KMF",
123
- "KPW",
124
- "KRW",
125
- "KWD",
126
- "KYD",
127
- "KZT",
128
- "LAK",
129
- "LBP",
130
- "LKR",
131
- "LRD",
132
- "LSL",
133
- "LTL",
134
- "LVL",
135
- "LYD",
136
- "MAD",
137
- "MDL",
138
- "MGA",
139
- "MKD",
140
- "MMK",
141
- "MNT",
142
- "MOP",
143
- "MRO",
144
- "MTL",
145
- "MUR",
146
- "MVR",
147
- "MWK",
148
- "MXN",
149
- "MYR",
150
- "MZN",
151
- "NAD",
152
- "NGN",
153
- "NIO",
154
- "NOK",
155
- "NPR",
156
- "NZD",
157
- "OMR",
158
- "PAB",
159
- "PEN",
160
- "PGK",
161
- "PHP",
162
- "PKR",
163
- "PLN",
164
- "PYG",
165
- "QAR",
166
- "RON",
167
- "RSD",
168
- "RUB",
169
- "RWF",
170
- "SAR",
171
- "SBD",
172
- "SCR",
173
- "SDG",
174
- "SEK",
175
- "SGD",
176
- "SHP",
177
- "SLL",
178
- "SOS",
179
- "SRD",
180
- "STD",
181
- "SVC",
182
- "SYP",
183
- "SZL",
184
- "THB",
185
- "TJS",
186
- "TMT",
187
- "TND",
188
- "TOP",
189
- "TRY",
190
- "TTD",
191
- "TWD",
192
- "TZS",
193
- "UAH",
194
- "UGX",
195
- "USD",
196
- "UYU",
197
- "UZS",
198
- "VEF",
199
- "VND",
200
- "VUV",
201
- "WST",
202
- "XAF",
203
- "XAG",
204
- "XAU",
205
- "XCD",
206
- "XDR",
207
- "XOF",
208
- "XPD",
209
- "XPF",
210
- "XPT",
211
- "YER",
212
- "ZAR",
213
- "ZMK",
214
- "ZMW",
215
- "ZWL",
216
- ].indexOf(i)
217
- )
42
+ if (((i = null != i ? i.toUpperCase() : i), !or(i)))
218
43
  return (
219
- E.error(`logPurchase requires a valid currencyCode, got ${i}, ignoring.`),
44
+ b.error(`logPurchase requires a valid currencyCode, got ${i}, ignoring.`),
220
45
  !1
221
46
  );
222
- const [u, a] = nt(
47
+ const [a, g] = nt(
223
48
  t,
224
49
  "logPurchase",
225
50
  "purchaseProperties",
226
51
  `log purchase "${e}"`,
227
52
  "purchase",
228
53
  );
229
- if (!u) return !1;
230
- const g = r.l();
231
- if (g && g.Dr(e))
232
- return E.info(`Purchase "${e}" is blocklisted, ignoring.`), !1;
233
- const P = v.wt(p.Pr, { pid: e, c: i, p: s, q: D, pr: a });
234
- if (P.lt) {
235
- E.info(`Logged ${D} purchase${D > 1 ? "s" : ""} of "${e}" for ${i} ${s}.`);
236
- for (const r of P.Ce) rt.o().Ee(ot.Rr, [e, t], r);
54
+ if (!a) return !1;
55
+ const c = r.l();
56
+ if (c && c.$r(e))
57
+ return b.info(`Purchase "${e}" is blocklisted, ignoring.`), !1;
58
+ const l = v.Dt(p.Pr, { pid: e, c: i, p: s, q: u, pr: g });
59
+ if (l.lt) {
60
+ b.info(`Logged ${u} purchase${u > 1 ? "s" : ""} of "${e}" for ${i} ${s}.`);
61
+ for (const r of l.Ce) rt.o().Ee(ot.qr, [e, t], r);
237
62
  }
238
- return P.lt;
63
+ return l.lt;
239
64
  }
@@ -1,5 +1,5 @@
1
1
  import r from "../managers/braze-instance.js";
2
- import { logger as E, IndexedDBAdapter as et } from "../../shared-lib/index.js";
2
+ import { logger as b, IndexedDBAdapter as et } from "../../shared-lib/index.js";
3
3
  import ot from "../triggers/models/trigger-events.js";
4
4
  import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js";
5
5
  export function openSession() {
@@ -7,19 +7,19 @@ export function openSession() {
7
7
  const i = r.nn();
8
8
  if (!i) return;
9
9
  i.openSession();
10
- const t = et.Ps.$s,
11
- o = new et(t, E);
12
- o.kr(t.Os.$r, (r, n) => {
10
+ const t = et._s.Xs,
11
+ o = new et(t, b);
12
+ o.kr(t.Ws.yr, (r, n) => {
13
13
  const e = n.lastClick,
14
14
  s = n.trackingString;
15
- E.info(`Firing push click trigger from ${s} push click at ${e}`);
16
- const c = i.yr(e, s),
15
+ b.info(`Firing push click trigger from ${s} push click at ${e}`);
16
+ const c = i.Fr(e, s),
17
17
  g = function () {
18
- rt.o().Ee(ot.Fr, [s], c);
18
+ rt.o().Ee(ot.Sr, [s], c);
19
19
  };
20
- i.Sr(g, g), o.ge(t.Os.$r, r);
20
+ i.Ar(g, g), o.ge(t.Ws.yr, r);
21
21
  }),
22
- o.Xs(t.Os.qr, function (r) {
23
- i.Ar(r);
22
+ o.Qs(t.Ws.Br, function (r) {
23
+ i.Dr(r);
24
24
  });
25
25
  }
@@ -1,4 +1,4 @@
1
- import { logger as E } from "../../shared-lib/index.js";
1
+ import { logger as b } from "../../shared-lib/index.js";
2
2
  export function setLogger(e) {
3
- E.setLogger(e);
3
+ b.setLogger(e);
4
4
  }
@@ -3,6 +3,6 @@ import { validateStandardString as tr } from "../util/validation-utils.js";
3
3
  export function setSdkAuthenticationSignature(t) {
4
4
  if (!r.rr()) return !1;
5
5
  if ("" === t || !tr(t, "set signature", "signature", !1)) return !1;
6
- const i = r.Br();
6
+ const i = r.Er();
7
7
  return !!i && (i.setSdkAuthenticationSignature(t), !0);
8
8
  }
@@ -2,7 +2,7 @@ import r from "../managers/braze-instance.js";
2
2
  export function subscribeToSdkAuthenticationFailures(i) {
3
3
  var n;
4
4
  if (r.rr())
5
- return null === (n = r.Br()) || void 0 === n
5
+ return null === (n = r.Er()) || void 0 === n
6
6
  ? void 0
7
7
  : n.subscribeToSdkAuthenticationFailures(i);
8
8
  }
@@ -1,4 +1,4 @@
1
- import { logger as E } from "../../shared-lib/index.js";
1
+ import { logger as b } from "../../shared-lib/index.js";
2
2
  export function toggleLogging() {
3
- E.toggleLogging();
3
+ b.toggleLogging();
4
4
  }
@@ -1,16 +1,16 @@
1
1
  import r from "../managers/braze-instance.js";
2
- import { keys as D } from "../util/code-utils.js";
3
- import { logger as E, IndexedDBAdapter as et } from "../../shared-lib/index.js";
2
+ import { keys as C } from "../util/code-utils.js";
3
+ import { logger as b, IndexedDBAdapter as et } from "../../shared-lib/index.js";
4
4
  import { CoreStrings as R } from "../common/constants.js";
5
5
  export function wipeData() {
6
6
  const o = r.p();
7
- if (null == o) return void E.warn(R.ee);
7
+ if (null == o) return void b.warn(R.ee);
8
8
  o.clearData();
9
- const t = D(et.Ps);
9
+ const t = C(et._s);
10
10
  for (let o = 0; o < t.length; o++) {
11
11
  const n = t[o],
12
- r = et.Ps[n];
13
- new et(r, E).clearData();
12
+ r = et._s[n];
13
+ new et(r, b).clearData();
14
14
  }
15
15
  if (r.rr()) for (const o of r.vr()) o.clearData(!0);
16
16
  const n = r.m();
@@ -2,6 +2,7 @@ export const MIN_BACKOFF_MS = 1e4;
2
2
  export const MAX_BACKOFF_MS = 3e5;
3
3
  export const BACKOFF_SCALE_FACTOR = 3;
4
4
  export const MAX_RETRIES = 5;
5
+ export const CONNECTION_VALID_THRESHOLD_MS = 3e3;
5
6
  export function randomInRange(t, e) {
6
7
  return Math.floor(Math.random() * (e - t + 1)) + t;
7
8
  }
@@ -1,22 +1,22 @@
1
1
  import r from "../managers/braze-instance.js";
2
- import nr from "./dust-provider.js";
3
- const sr = {
2
+ import sr from "./dust-provider.js";
3
+ const dr = {
4
4
  i: !1,
5
5
  provider: null,
6
6
  o: () => {
7
- if ((sr.t(), !sr.provider)) {
7
+ if ((dr.t(), !dr.provider)) {
8
8
  const t = r.er("dustHost");
9
- (sr.provider = new nr(r.m(), r.p(), r.l(), t)),
10
- r.v(sr.provider),
11
- sr.provider.Hr();
9
+ (dr.provider = new sr(r.m(), r.p(), r.l(), t)),
10
+ r.v(dr.provider),
11
+ dr.provider.Hr();
12
12
  }
13
- return sr.provider;
13
+ return dr.provider;
14
14
  },
15
15
  t: () => {
16
- sr.i || (r.g(sr), (sr.i = !0));
16
+ dr.i || (r.g(dr), (dr.i = !0));
17
17
  },
18
18
  destroy: () => {
19
- sr.provider && sr.provider.destroy(), (sr.provider = null), (sr.i = !1);
19
+ dr.provider && dr.provider.destroy(), (dr.provider = null), (dr.i = !1);
20
20
  },
21
21
  };
22
- export default sr;
22
+ export default dr;