@braze/web-sdk 4.0.3 → 4.0.4

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 (75) hide show
  1. package/index.d.ts +2 -4
  2. package/package.json +1 -1
  3. package/shared-lib/braze-shared-lib.js +1 -1
  4. package/shared-lib/event-types.js +1 -1
  5. package/shared-lib/guid.js +1 -1
  6. package/shared-lib/indexed-db-adapter.js +1 -1
  7. package/shared-lib/logger.js +1 -1
  8. package/shared-lib/supported-options.js +1 -1
  9. package/src/ContentCards/log-content-cards-displayed.js +1 -1
  10. package/src/ContentCards/subscribe-to-content-cards-updates.js +1 -1
  11. package/src/ContentCards/ui/hide-content-cards.js +1 -1
  12. package/src/ContentCards/ui/show-content-cards.js +1 -1
  13. package/src/Core/add-sdk-metadata.js +1 -1
  14. package/src/Core/change-user.js +1 -1
  15. package/src/Core/disable-sdk.js +1 -1
  16. package/src/Core/enable-sdk.js +1 -1
  17. package/src/Core/get-user.js +1 -1
  18. package/src/Core/handle-braze-action.js +1 -1
  19. package/src/Core/is-disabled.js +1 -1
  20. package/src/Core/log-custom-event.js +1 -1
  21. package/src/Core/log-purchase.js +1 -1
  22. package/src/Core/open-session.js +1 -1
  23. package/src/Core/request-immediate-data-flush.js +1 -1
  24. package/src/Core/wipe-data.js +1 -1
  25. package/src/Feed/feed-provider-factory.js +1 -1
  26. package/src/Feed/feed-provider.js +1 -1
  27. package/src/Feed/get-cached-feed.js +1 -1
  28. package/src/Feed/log-feed-displayed.js +1 -1
  29. package/src/Feed/request-feed-refresh.js +1 -1
  30. package/src/Feed/subscribe-to-feed-updates.js +1 -1
  31. package/src/Feed/ui/hide-feed.js +1 -1
  32. package/src/Feed/ui/show-feed.js +1 -1
  33. package/src/InAppMessage/display/html-message-to-html.js +1 -1
  34. package/src/InAppMessage/display/in-app-message-to-html.js +1 -1
  35. package/src/InAppMessage/in-app-message-manager.js +1 -1
  36. package/src/InAppMessage/log-in-app-message-button-click.js +1 -1
  37. package/src/InAppMessage/log-in-app-message-click.js +1 -1
  38. package/src/InAppMessage/log-in-app-message-html-click.js +1 -1
  39. package/src/InAppMessage/log-in-app-message-impression.js +1 -1
  40. package/src/InAppMessage/ui/show-in-app-message.js +1 -1
  41. package/src/Push/push-manager-factory.js +1 -1
  42. package/src/Push/push-manager.js +1 -1
  43. package/src/Push/request-push-permission.js +1 -1
  44. package/src/User/user-manager.js +1 -1
  45. package/src/User/user.js +1 -1
  46. package/src/common/feed-display.js +1 -1
  47. package/src/l10n/l10n-manager-factory.js +1 -1
  48. package/src/managers/auth-manager.js +1 -1
  49. package/src/managers/braze-instance.js +1 -1
  50. package/src/managers/device-manager.js +1 -1
  51. package/src/managers/network-manager.js +1 -1
  52. package/src/managers/server-config-manager.js +1 -1
  53. package/src/managers/session-manager.js +1 -1
  54. package/src/managers/storage-manager-factory.js +1 -1
  55. package/src/managers/storage-manager.js +1 -1
  56. package/src/models/backend-errors.js +1 -1
  57. package/src/models/braze-event.js +1 -1
  58. package/src/models/server-config.js +1 -1
  59. package/src/request-controller.js +1 -1
  60. package/src/triggers/models/filter.js +1 -1
  61. package/src/triggers/models/trigger-condition.js +1 -1
  62. package/src/triggers/models/trigger-events.js +1 -1
  63. package/src/triggers/models/trigger.js +1 -1
  64. package/src/triggers/triggers-provider-factory.js +1 -1
  65. package/src/triggers/triggers-provider.js +1 -1
  66. package/src/ui/js/attach-css.js +1 -1
  67. package/src/ui/js/feed-css.js +1 -1
  68. package/src/ui/js/iam-css.js +1 -1
  69. package/src/ui/js/load-font-awesome.js +1 -1
  70. package/src/util/base-device-parser.js +1 -1
  71. package/src/util/browser-detector.js +1 -1
  72. package/src/util/client-hints-parser.js +1 -1
  73. package/src/util/net.js +1 -1
  74. package/src/util/user-agent-parser.js +1 -1
  75. package/src/util/validation-utils.js +1 -1
@@ -1 +1 @@
1
- import{isArray as p}from"./code-utils.js";export default class Wt{constructor(){}tf(){}ef(){}Ho(t){}static rf(t,e){if(t&&e)if(t=t.toLowerCase(),p(e.if)){for(let r=0;r<e.if.length;r++)if(-1!==t.indexOf(e.if[r].toLowerCase()))return e.identity}else if(-1!==t.indexOf(e.if.toLowerCase()))return e.identity}}
1
+ import{isArray as p}from"./code-utils.js";export default class Vt{constructor(){}tf(){}ef(){}Ko(t){}static rf(t,e){if(t&&e)if(t=t.toLowerCase(),p(e.if)){for(let r=0;r<e.if.length;r++)if(-1!==t.indexOf(e.if[r].toLowerCase()))return e.identity}else if(-1!==t.indexOf(e.if.toLowerCase()))return e.identity}}
@@ -1 +1 @@
1
- import Xt from"./client-hints-parser.js";import Yt from"./user-agent-parser.js";import{Browsers as Zt,OperatingSystems as ot}from"./device-constants.js";class $t{constructor(){const t=navigator.userAgentData?Xt:Yt;this.dg=new t,this.userAgent=navigator.userAgent,this.browser=this.dg.tf(),this.version=this.dg.ef(),this.Ho().then((t=>this.OS=t)),this.language=(navigator.userLanguage||navigator.language||navigator.browserLanguage||navigator.systemLanguage||"").toLowerCase(),this.Mo=$t.Sg(this.userAgent)}bg(){return this.browser!==Zt.vg||this.version>8}Ba(){return this.browser===Zt.yg}qo(){return this.OS||null}Ho(){return this.OS?Promise.resolve(this.OS):this.dg.Ho($t.mg).then((t=>(this.OS=t,t)))}static Sg(t){t=t.toLowerCase();const i=["googlebot","bingbot","slurp","duckduckbot","baiduspider","yandex","facebookexternalhit","sogou","ia_archiver","https://github.com/prerender/prerender","aolbuild","bingpreview","msnbot","adsbot","mediapartners-google","teoma"];for(let n=0;n<i.length;n++)if(-1!==t.indexOf(i[n]))return!0;return!1}}$t.mg=[{string:navigator.platform,if:"Win",identity:ot.Bg},{string:navigator.platform,if:"Mac",identity:ot.Og},{string:navigator.platform,if:"BlackBerry",identity:"BlackBerry"},{string:navigator.platform,if:"FreeBSD",identity:"FreeBSD"},{string:navigator.platform,if:"OpenBSD",identity:"OpenBSD"},{string:navigator.platform,if:"Nintendo",identity:"Nintendo"},{string:navigator.platform,if:"SunOS",identity:"SunOS"},{string:navigator.platform,if:"PlayStation",identity:"PlayStation"},{string:navigator.platform,if:"X11",identity:"X11"},{string:navigator.userAgent,if:["iPhone","iPad","iPod"],identity:ot.ln},{string:navigator.platform,if:"Pike v",identity:ot.ln},{string:navigator.userAgent,if:["Web0S"],identity:"WebOS"},{string:navigator.platform,if:["Linux armv7l","Android"],identity:ot.Pg},{string:navigator.userAgent,if:["Android"],identity:ot.Pg},{string:navigator.platform,if:"Linux",identity:"Linux"}];const et=new $t;export{et as default,$t as BrowserDetector};
1
+ import Wt from"./client-hints-parser.js";import Xt from"./user-agent-parser.js";import{Browsers as Yt,OperatingSystems as ot}from"./device-constants.js";class Zt{constructor(){const t=navigator.userAgentData?Wt:Xt;this.dg=new t,this.userAgent=navigator.userAgent,this.browser=this.dg.tf(),this.version=this.dg.ef(),this.Ko().then((t=>this.OS=t)),this.language=(navigator.userLanguage||navigator.language||navigator.browserLanguage||navigator.systemLanguage||"").toLowerCase(),this.yo=Zt.Sg(this.userAgent)}bg(){return this.browser!==Yt.vg||this.version>8}Fa(){return this.browser===Yt.yg}qo(){return this.OS||null}Ko(){return this.OS?Promise.resolve(this.OS):this.dg.Ko(Zt.mg).then((t=>(this.OS=t,t)))}static Sg(t){t=t.toLowerCase();const i=["googlebot","bingbot","slurp","duckduckbot","baiduspider","yandex","facebookexternalhit","sogou","ia_archiver","https://github.com/prerender/prerender","aolbuild","bingpreview","msnbot","adsbot","mediapartners-google","teoma"];for(let n=0;n<i.length;n++)if(-1!==t.indexOf(i[n]))return!0;return!1}}Zt.mg=[{string:navigator.platform,if:"Win",identity:ot.Bg},{string:navigator.platform,if:"Mac",identity:ot.Og},{string:navigator.platform,if:"BlackBerry",identity:"BlackBerry"},{string:navigator.platform,if:"FreeBSD",identity:"FreeBSD"},{string:navigator.platform,if:"OpenBSD",identity:"OpenBSD"},{string:navigator.platform,if:"Nintendo",identity:"Nintendo"},{string:navigator.platform,if:"SunOS",identity:"SunOS"},{string:navigator.platform,if:"PlayStation",identity:"PlayStation"},{string:navigator.platform,if:"X11",identity:"X11"},{string:navigator.userAgent,if:["iPhone","iPad","iPod"],identity:ot.ln},{string:navigator.platform,if:"Pike v",identity:ot.ln},{string:navigator.userAgent,if:["Web0S"],identity:"WebOS"},{string:navigator.platform,if:["Linux armv7l","Android"],identity:ot.Pg},{string:navigator.userAgent,if:["Android"],identity:ot.Pg},{string:navigator.platform,if:"Linux",identity:"Linux"}];const et=new Zt;export{et as default,Zt as BrowserDetector};
@@ -1 +1 @@
1
- import Wt from"./base-device-parser.js";import{Browsers as Zt}from"./device-constants.js";export default class Xt extends Wt{constructor(){if(super(),this.userAgentData=navigator.userAgentData,this.userAgentData){const t=this.tc();this.browser=t.browser||"Unknown Browser",this.version=t.version||"Unknown Version"}}tf(){return this.browser}ef(){return this.version}Ho(t){if(this.OS)return Promise.resolve(this.OS);const r=r=>{for(let s=0;s<t.length;s++){const e=Xt.rf(r,t[s]);if(e)return this.OS=e,this.OS}return r};return this.userAgentData.platform?Promise.resolve(r(this.userAgentData.platform)):this.rc().then((t=>r(t.platform))).catch((()=>navigator.platform))}tc(){const t={},r=this.userAgentData.brands;if(r&&r.length)for(const s of r){const r=this.sc(Zt),e=s.brand.match(r);if(e&&e.length>0){t.browser=e[0],t.version=s.version;break}}return t}sc(t){const r=[];for(const s in t)t[s]!==Zt.vg&&r.push(t[s]);return new RegExp("("+r.join("|")+")","i")}rc(){return this.userAgentData.getHighEntropyValues?this.userAgentData.getHighEntropyValues(["platform"]):Promise.reject()}}
1
+ import Vt from"./base-device-parser.js";import{Browsers as Yt}from"./device-constants.js";export default class Wt extends Vt{constructor(){if(super(),this.userAgentData=navigator.userAgentData,this.userAgentData){const t=this.rc();this.browser=t.browser||"Unknown Browser",this.version=t.version||"Unknown Version"}}tf(){return this.browser}ef(){return this.version}Ko(t){if(this.OS)return Promise.resolve(this.OS);const r=r=>{for(let s=0;s<t.length;s++){const e=Wt.rf(r,t[s]);if(e)return this.OS=e,this.OS}return r};return this.userAgentData.platform?Promise.resolve(r(this.userAgentData.platform)):this.sc().then((t=>r(t.platform))).catch((()=>navigator.platform))}rc(){const t={},r=this.userAgentData.brands;if(r&&r.length)for(const s of r){const r=this.ic(Yt),e=s.brand.match(r);if(e&&e.length>0){t.browser=e[0],t.version=s.version;break}}return t}ic(t){const r=[];for(const s in t)t[s]!==Yt.vg&&r.push(t[s]);return new RegExp("("+r.join("|")+")","i")}sc(){return this.userAgentData.getHighEntropyValues?this.userAgentData.getHighEntropyValues(["platform"]):Promise.reject()}}
package/src/util/net.js CHANGED
@@ -1 +1 @@
1
- import r from"../../shared-lib/braze-shared-lib.js";import Rt from"../models/backend-errors.js";const b={Fs:e=>{let t,o,n=!1;try{if(window.XMLHttpRequest&&(t=new XMLHttpRequest)&&void 0!==t.withCredentials||("undefined"!=typeof XDomainRequest?(t=new XDomainRequest,t.async=!0,n=!0):r.D.error("This browser does not have any supported ajax options!")),null!=t){const s=()=>{"function"==typeof e.error&&e.error(t.status),"function"==typeof e.gl&&e.gl(!1)};if(t.onload=()=>{let o=!1;if(n)o=!0;else{if(4!==t.readyState)return;o=t.status>=200&&t.status<300||304===t.status}if(o){if("function"==typeof e.S){let o;try{o=JSON.parse(t.responseText)}catch(o){const n={error:""===t.responseText?Rt.Zo:Rt.ia,response:t.responseText};e.S(n)}o&&e.S(o)}"function"==typeof e.gl&&e.gl(!0)}else s()},t.onerror=()=>{s()},t.ontimeout=()=>{s()},o=JSON.stringify(e.data),n)t.onprogress=()=>{},t.open("post",e.url);else{t.open("POST",e.url,!0),t.setRequestHeader("Content-type","application/json"),t.setRequestHeader("X-Requested-With","XMLHttpRequest");const o=e.headers||[];for(let e=0;e<o.length;e++)t.setRequestHeader(o[e][0],o[e][1])}t.send(o)}}catch(e){r.D.error(`Network request error: ${e.message}`)}}};export default b;
1
+ import r from"../../shared-lib/braze-shared-lib.js";import Rt from"../models/backend-errors.js";const b={Fs:e=>{let t,o,n=!1;try{if(window.XMLHttpRequest&&(t=new XMLHttpRequest)&&void 0!==t.withCredentials||("undefined"!=typeof XDomainRequest?(t=new XDomainRequest,t.async=!0,n=!0):r.D.error("This browser does not have any supported ajax options!")),null!=t){const s=()=>{"function"==typeof e.error&&e.error(t.status),"function"==typeof e.gl&&e.gl(!1)};if(t.onload=()=>{let o=!1;if(n)o=!0;else{if(4!==t.readyState)return;o=t.status>=200&&t.status<300||304===t.status}if(o){if("function"==typeof e.S){let o;try{o=JSON.parse(t.responseText)}catch(o){const n={error:""===t.responseText?Rt.sa:Rt.oa,response:t.responseText};e.S(n)}o&&e.S(o)}"function"==typeof e.gl&&e.gl(!0)}else s()},t.onerror=()=>{s()},t.ontimeout=()=>{s()},o=JSON.stringify(e.data),n)t.onprogress=()=>{},t.open("post",e.url);else{t.open("POST",e.url,!0),t.setRequestHeader("Content-type","application/json"),t.setRequestHeader("X-Requested-With","XMLHttpRequest");const o=e.headers||[];for(let e=0;e<o.length;e++)t.setRequestHeader(o[e][0],o[e][1])}t.send(o)}}catch(e){r.D.error(`Network request error: ${e.message}`)}}};export default b;
@@ -1 +1 @@
1
- import Wt from"./base-device-parser.js";import{Browsers as Zt,OperatingSystems as ot}from"./device-constants.js";export default class Yt extends Wt{constructor(){super(),this.eu=Yt.nu(navigator.userAgent||"")}tf(){return this.eu[0]||"Unknown Browser"}ef(){return this.eu[1]||"Unknown Version"}Ho(r){for(let e=0;e<r.length;e++){let n=r[e].string,i=Yt.rf(n,r[e]);if(i)return i===ot.Og&&navigator.maxTouchPoints>1&&(i=ot.ln),Promise.resolve(i)}return Promise.resolve(navigator.platform)}static nu(r){let e,n=r.match(/(samsungbrowser|tizen|roku|konqueror|icab|crios|opera|ucbrowser|chrome|safari|firefox|camino|msie|trident(?=\/))\/?\s*(\.?\d+(\.\d+)*)/i)||[];if(/trident/i.test(n[1]))return e=/\brv[ :]+(\.?\d+(\.\d+)*)/g.exec(r)||[],[Zt.vg,e[1]||""];if(-1!==r.indexOf("(Web0S; Linux/SmartTV)"))return["LG Smart TV",null];if(-1!==r.indexOf("CrKey"))return["Chromecast",null];if(-1!==r.indexOf("BRAVIA")||-1!==r.indexOf("SonyCEBrowser")||-1!==r.indexOf("SonyDTV"))return["Sony Smart TV",null];if(-1!==r.indexOf("PhilipsTV"))return["Philips Smart TV",null];if(r.match(/\b(Roku)\b/))return["Roku",null];if(r.match(/\bAFTM\b/))return["Amazon Fire Stick",null];if(n[1]===Zt.rE&&(e=r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/),null!=e))return e=e.slice(1),e[0]=e[0].replace("OPR",Zt.EE),e[0]=e[0].replace("EdgA",Zt.eE),"Edg"===e[0]&&(e[0]=Zt.eE),[e[0],e[1]];if(n[1]===Zt.yg&&(e=r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/),null!=e))return e=e.slice(1),e[0]=e[0].replace("EdgiOS",Zt.eE),[e[0],e[1]];if(n=n[2]?[n[1],n[2]]:[null,null],n[0]===Zt.yg&&null!=(e=r.match(/version\/(\.?\d+(\.\d+)*)/i))&&n.splice(1,1,e[1]),null!=(e=r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/))&&n.splice(1,1,e[2]),n[0]===Zt.EE&&null!=(e=r.match(/mini\/(\.?\d+(\.\d+)*)/i)))return["Opera Mini",e[1]||""];if(n[0]){const r=n[0].toLowerCase();"msie"===r&&(n[0]=Zt.vg),"crios"===r&&(n[0]=Zt.rE),"tizen"===r&&(n[0]="Samsung Smart TV",n[1]=null),"samsungbrowser"===r&&(n[0]="Samsung Browser")}return n}}
1
+ import Vt from"./base-device-parser.js";import{Browsers as Yt,OperatingSystems as ot}from"./device-constants.js";export default class Xt extends Vt{constructor(){super(),this.eu=Xt.nu(navigator.userAgent||"")}tf(){return this.eu[0]||"Unknown Browser"}ef(){return this.eu[1]||"Unknown Version"}Ko(r){for(let e=0;e<r.length;e++){let n=r[e].string,i=Xt.rf(n,r[e]);if(i)return i===ot.Og&&navigator.maxTouchPoints>1&&(i=ot.ln),Promise.resolve(i)}return Promise.resolve(navigator.platform)}static nu(r){let e,n=r.match(/(samsungbrowser|tizen|roku|konqueror|icab|crios|opera|ucbrowser|chrome|safari|firefox|camino|msie|trident(?=\/))\/?\s*(\.?\d+(\.\d+)*)/i)||[];if(/trident/i.test(n[1]))return e=/\brv[ :]+(\.?\d+(\.\d+)*)/g.exec(r)||[],[Yt.vg,e[1]||""];if(-1!==r.indexOf("(Web0S; Linux/SmartTV)"))return["LG Smart TV",null];if(-1!==r.indexOf("CrKey"))return["Chromecast",null];if(-1!==r.indexOf("BRAVIA")||-1!==r.indexOf("SonyCEBrowser")||-1!==r.indexOf("SonyDTV"))return["Sony Smart TV",null];if(-1!==r.indexOf("PhilipsTV"))return["Philips Smart TV",null];if(r.match(/\b(Roku)\b/))return["Roku",null];if(r.match(/\bAFTM\b/))return["Amazon Fire Stick",null];if(n[1]===Yt.rE&&(e=r.match(/\b(OPR|Edge|EdgA|Edg|UCBrowser)\/(\.?\d+(\.\d+)*)/),null!=e))return e=e.slice(1),e[0]=e[0].replace("OPR",Yt.EE),e[0]=e[0].replace("EdgA",Yt.eE),"Edg"===e[0]&&(e[0]=Yt.eE),[e[0],e[1]];if(n[1]===Yt.yg&&(e=r.match(/\b(EdgiOS)\/(\.?\d+(\.\d+)*)/),null!=e))return e=e.slice(1),e[0]=e[0].replace("EdgiOS",Yt.eE),[e[0],e[1]];if(n=n[2]?[n[1],n[2]]:[null,null],n[0]===Yt.yg&&null!=(e=r.match(/version\/(\.?\d+(\.\d+)*)/i))&&n.splice(1,1,e[1]),null!=(e=r.match(/\b(UCBrowser)\/(\.?\d+(\.\d+)*)/))&&n.splice(1,1,e[2]),n[0]===Yt.EE&&null!=(e=r.match(/mini\/(\.?\d+(\.\d+)*)/i)))return["Opera Mini",e[1]||""];if(n[0]){const r=n[0].toLowerCase();"msie"===r&&(n[0]=Yt.vg),"crios"===r&&(n[0]=Yt.rE),"tizen"===r&&(n[0]="Samsung Smart TV",n[1]=null),"samsungbrowser"===r&&(n[0]="Samsung Browser")}return n}}
@@ -1 +1 @@
1
- import{isArray as p,isDate as bt,isObject as zt,keys as X}from"./code-utils.js";import{getByteLength as U}from"./string-utils.js";import r from"../../shared-lib/braze-shared-lib.js";import{toValidBackendTimeString as gt}from"./date-utils.js";import A from"./braze-actions.js";export const CUSTOM_DATA_REGEX=/^[^\x00-\x1F\x22]+$/;export const EMAIL_ADDRESS_REGEX=new RegExp(/^.+@.+\..+$/);export const CUSTOM_PROPERTIES_MAX_SIZE_BYTES=51200;export const CUSTOM_PROPERTIES_MAX_SIZE_STRING="50KB";export const BRAZE_ACTION_URI_REGEX=/^brazeActions:\/\/v\d+\//;export function _validatePropertyType(e){const t=typeof e;return null==e||"number"===t||"boolean"===t||bt(e)||"string"===t}export function _validateNestedProperties(e,t){if(p(e)&&p(t)){for(let r=0;r<e.length&&r<t.length;r++)if(bt(e[r])&&(t[r]=gt(e[r])),!_validateNestedProperties(e[r],t[r]))return!1}else{if(!zt(e))return _validatePropertyType(e);for(const r of X(e))if(bt(e[r])&&(t[r]=gt(e[r])),!_validateNestedProperties(e[r],t[r]))return!1}return!0}export function _validateEventPropertyValue(e,t,n,o){let i;return i=zt(e)||p(e)?_validateNestedProperties(e,t):_validatePropertyType(e),i||r.D.error(`Cannot ${n} because ${o} "${e}" is invalid.`),i}export function validateStandardString(e,t,n,o){const i="string"==typeof e||null===e&&o;return i||r.D.error(`Cannot ${t} because ${n} "${e}" is invalid.`),i}export function validateCustomString(e,t,n){const o=null!=e&&"string"==typeof e&&(""===e||e.match(CUSTOM_DATA_REGEX));return o||r.D.error(`Cannot ${t} because ${n} "${e}" is invalid.`),o}export function validateCustomProperties(e,t,n,o,i){if(null==e&&(e={}),"object"!=typeof e||p(e))return r.D.error(`${t} requires that ${n} be an object. Ignoring ${i}.`),[!1,null];const a=JSON.stringify(e);if(U(a)>51200)return r.D.error(`Could not ${o} because ${n} was greater than the max size of 50KB.`),[!1,null];let s;try{s=JSON.parse(a)}catch(e){return r.D.error(`Could not ${o} because ${n} did not contain valid JSON.`),[!1,null]}for(let t in e){if(!validateCustomString(t,o,`the ${i} property name`))return[!1,null];const r=e[t];if(null==r){delete e[t],delete s[t];continue}bt(r)&&(s[t]=gt(r));if(!_validateEventPropertyValue(r,s[t],o,`the ${i} property "${t}"`))return[!1,null]}return[!0,s]}export function isValidEmail(e){return"string"==typeof e&&null!=e.toLowerCase().match(EMAIL_ADDRESS_REGEX)}export function isValidBrazeActionJson(e){if(!(A.properties.type in e))return!1;switch(e[A.properties.type]){case A.types.de:if(A.properties.ue in e)return!0;break;case A.types.logCustomEvent:case A.types.setEmailNotificationSubscriptionType:case A.types.setPushNotificationSubscriptionType:case A.types.setCustomUserAttribute:case A.types.addToSubscriptionGroup:case A.types.removeFromSubscriptionGroup:case A.types.addToCustomAttributeArray:case A.types.removeFromCustomAttributeArray:case A.types.me:case A.types.pe:if(A.properties.fe in e)return!0;break;case A.types.requestPushPermission:return!0;default:return!1}return!1}
1
+ import{isArray as p,isDate as bt,isObject as zt,keys as Y}from"./code-utils.js";import{getByteLength as U}from"./string-utils.js";import r from"../../shared-lib/braze-shared-lib.js";import{toValidBackendTimeString as gt}from"./date-utils.js";import F from"./braze-actions.js";export const CUSTOM_DATA_REGEX=/^[^\x00-\x1F\x22]+$/;export const EMAIL_ADDRESS_REGEX=new RegExp(/^.+@.+\..+$/);export const CUSTOM_PROPERTIES_MAX_SIZE_BYTES=51200;export const CUSTOM_PROPERTIES_MAX_SIZE_STRING="50KB";export const BRAZE_ACTION_URI_REGEX=/^brazeActions:\/\/v\d+\//;export function _validatePropertyType(e){const t=typeof e;return null==e||"number"===t||"boolean"===t||bt(e)||"string"===t}export function _validateNestedProperties(e,t){if(p(e)&&p(t)){for(let r=0;r<e.length&&r<t.length;r++)if(bt(e[r])&&(t[r]=gt(e[r])),!_validateNestedProperties(e[r],t[r]))return!1}else{if(!zt(e))return _validatePropertyType(e);for(const r of Y(e))if(bt(e[r])&&(t[r]=gt(e[r])),!_validateNestedProperties(e[r],t[r]))return!1}return!0}export function _validateEventPropertyValue(e,t,n,o){let i;return i=zt(e)||p(e)?_validateNestedProperties(e,t):_validatePropertyType(e),i||r.D.error(`Cannot ${n} because ${o} "${e}" is invalid.`),i}export function validateStandardString(e,t,n,o){const i="string"==typeof e||null===e&&o;return i||r.D.error(`Cannot ${t} because ${n} "${e}" is invalid.`),i}export function validateCustomString(e,t,n){const o=null!=e&&"string"==typeof e&&(""===e||e.match(CUSTOM_DATA_REGEX));return o||r.D.error(`Cannot ${t} because ${n} "${e}" is invalid.`),o}export function validateCustomProperties(e,t,n,o,i){if(null==e&&(e={}),"object"!=typeof e||p(e))return r.D.error(`${t} requires that ${n} be an object. Ignoring ${i}.`),[!1,null];const a=JSON.stringify(e);if(U(a)>51200)return r.D.error(`Could not ${o} because ${n} was greater than the max size of 50KB.`),[!1,null];let s;try{s=JSON.parse(a)}catch(e){return r.D.error(`Could not ${o} because ${n} did not contain valid JSON.`),[!1,null]}for(let t in e){if(!validateCustomString(t,o,`the ${i} property name`))return[!1,null];const r=e[t];if(null==r){delete e[t],delete s[t];continue}bt(r)&&(s[t]=gt(r));if(!_validateEventPropertyValue(r,s[t],o,`the ${i} property "${t}"`))return[!1,null]}return[!0,s]}export function isValidEmail(e){return"string"==typeof e&&null!=e.toLowerCase().match(EMAIL_ADDRESS_REGEX)}export function isValidBrazeActionJson(e){if(!(F.properties.type in e))return!1;switch(e[F.properties.type]){case F.types.de:if(F.properties.ue in e)return!0;break;case F.types.logCustomEvent:case F.types.setEmailNotificationSubscriptionType:case F.types.setPushNotificationSubscriptionType:case F.types.setCustomUserAttribute:case F.types.addToSubscriptionGroup:case F.types.removeFromSubscriptionGroup:case F.types.addToCustomAttributeArray:case F.types.removeFromCustomAttributeArray:case F.types.me:case F.types.pe:if(F.properties.fe in e)return!0;break;case F.types.requestPushPermission:return!0;default:return!1}return!1}