@brainfish-ai/widgets-initiator 1.3.0-beta.3 → 1.3.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.
@@ -1 +1 @@
1
- export declare const initBrainfishAnalytics: (widgetKey: string, accessKey: string, apiHost: string, analyticsApiHost?: string) => Promise<void>;
1
+ export declare const initBrainfishAnalytics: (widgetKey: string, accessKey: string, apiHost: string, analyticsApiHost?: string, enableRecording?: boolean) => Promise<void>;
package/dist/web.cjs.js CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var C=Object.defineProperty,I=Object.defineProperties;var N=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;var p=(t,n,s)=>n in t?C(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s,m=(t,n)=>{for(var s in n||(n={}))L.call(n,s)&&p(t,s,n[s]);if(B)for(var s of B(n))_.call(n,s)&&p(t,s,n[s]);return t},b=(t,n)=>I(t,N(n));var K=(t,n,s)=>p(t,typeof n!="symbol"?n+"":n,s);var f=(t,n,s)=>new Promise((d,i)=>{var r=c=>{try{a(s.next(c))}catch(o){i(o)}},e=c=>{try{a(s.throw(c))}catch(o){i(o)}},a=c=>c.done?d(c.value):Promise.resolve(c.value).then(r,e);a((s=s.apply(t,n)).next())});var w,A;(function(){try{var t=typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},n=new t.Error().stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="5bbba469-c7ed-47c8-a25f-cdbc24bb7d2a",t._sentryDebugIdIdentifier="sentry-dbid-5bbba469-c7ed-47c8-a25f-cdbc24bb7d2a")}catch(s){}})(),Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),(typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{}).SENTRY_RELEASE={id:"c36c4cf2d8ecb908e550a91798616c5171c4ad47"},function(t){t.Sidebar="sidebar",t.Searchbar="searchbar"}(w||(w={})),w.Sidebar,w.Searchbar;class E extends Error{constructor(s,d){super(s,d);K(this,"cause");this.name="BrainfishWidgetError",this.cause=d==null?void 0:d.cause,Error.captureStackTrace&&Error.captureStackTrace(this,E),this.cause instanceof Error&&this.cause.stack&&(this.stack=this.stack+`
2
- Caused by: `+this.cause.stack)}toJSON(){return{name:this.name,message:this.message,stack:this.stack,cause:this.cause instanceof Error?{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}:this.cause}}}(function(t){t.LINK="link",t.CALLBACK="callback",t.EMAIL="email",t.PHONE="phone"})(A||(A={}));const h=(t,n,s,d)=>{let i=s,r={};if(n instanceof Error)try{r=JSON.parse(n.message),i+=` - ${r.message||n.message}`}catch(e){i+=` - ${n.message}`}else i+=` - ${String(n)}`;((e,a,c)=>{if(!navigator||navigator.userAgent.toLowerCase().includes("headless"))return;const o=a.toJSON();fetch(`${e||"https://app.brainfi.sh"}/api/trackError.widget.create`,{method:"POST",headers:{"Content-Type":"application/json","api-key":c},body:JSON.stringify({error:`WebWidgetVersion: 1.3.0-beta.3. ${a.message}`,stack:a.stack,cause:{message:o.message,stack:o.stack,cause:o.cause}})})})(t,new E(i,{cause:r}),d)},F=t=>f(exports,null,function*(){let{widgetKey:n,apiHost:s}=t;return function(d,i,r){return f(this,null,function*(){return fetch(`${d}${i}`,{method:"POST",headers:{"Content-Type":"application/json","api-key":r}}).then(e=>{if(!e.ok)throw new Error(`API call failed with status: ${e.status}`);return e.json()}).then(e=>{if(!e)throw new Error("Error loading config: empty response");return e}).catch(e=>{h(d,e,"Error fetching config",r)})})}(s,"/api/searchWidgets.getConfigByKey",n)}),J=t=>{let{config:n,apiKey:s,apiHost:d}=t;const i=n.settings||{};return["bodyActionButtons","footerActionButtons","nextBestActions"].forEach(r=>{i[r]&&(i[r]=i[r].map(e=>e.type===A.CALLBACK&&e.value?b(m({},e),{value:new Function(`return ${e.value}`)()}):e))}),b(m({},n),{settings:i,apiHost:d,widgetMode:n.widgetType,apiKey:s})},$=t=>(t==null?void 0:t.apiHost)||"https://app.brainfi.sh",H=t=>(t==null?void 0:t.analyticsApiHost)||void 0,v=(()=>{if(typeof window=="undefined")return;const t=window.navigator.userAgent;if(!(t.match(/iPad/i)||t.match(/iPhone/i)))return!1;const n=t.match(/OS (\d+)_/i);return n&&parseInt(n[1],10)<=14})(),M=t=>f(exports,null,function*(){let{apiHost:n,widgetKey:s,version:d}=t;try{const i=`https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${d}/dist/web.js`,r=v?i.replace("web.js","web.umd.js"):i;return{widget:yield(a=>f(exports,null,function*(){return document.getElementById("brainfish-widget")?window.Brainfish:new Promise((c,o)=>{const u=document.createElement("script");u.id="brainfish-widget",u.src=a,u.type=v?"text/javascript":"module",u.async=!0,u.crossOrigin="anonymous",u.onload=()=>{setTimeout(()=>{const l=window.Brainfish;l?c(l):o(new Error("Failed to load Brainfish module"))},200)},u.onerror=l=>{const g=l,j={message:`Failed to load script: ${a}`,type:g.type,fileName:g.filename,lineNumber:g.lineno,columnNumber:g.colno,error:g.error?g.error.toString():"Unknown error"};o(new Error(JSON.stringify(j)))},v||document.head.appendChild(u)})}))(r)}}catch(i){h(n,i,i.message,s)}}),T=new Set,W=(t,n)=>f(exports,null,function*(){const s=$(t.overrides);try{if(T.has(t.widgetKey))return;const d=yield M({apiHost:s,widgetKey:t.widgetKey,version:n.version||"latest"});if(d){const{widget:i}=d,r=J({config:n,apiKey:t.widgetKey,apiHost:s});return t.overrides&&n.settings&&Object.entries(t.overrides).forEach(e=>{let[a,c]=e;n.settings&&a in n.settings&&(n.settings[a]=function(){let o=arguments.length>1?arguments[1]:void 0;const u=new Map((arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(l=>[l.label,l]));return o.forEach(l=>u.set(l.label,l)),Array.from(u.values())}(n.settings[a],c))}),function(e,a){a.widgetType===w.Searchbar||a.widgetType==="Search"?e.SearchWidget.initStandard(a):e.HelpWidget.initPopup(a)}(i,r),T.add(t.widgetKey),i}}catch(d){h(s,d,d.message,t.widgetKey)}});let O=!1;const P=function(d,i,r){return f(this,arguments,function*(t,n,s){let e=arguments.length>3&&arguments[3]!==void 0?arguments[3]:void 0;if(n||h(s,new Error("Access key is required"),"Access key is required",t),!O)try{window.BrainfishAnalytics("init",{apiUrl:e,accessKey:n,trackScreenViews:!0,trackAttributes:!0,trackOutgoingLinks:!0}),O=!0,yield((a,c)=>f(this,null,function*(){if(document.getElementById("brainfish-analytics"))return window.BrainfishAnalytics;const o=document.createElement("script");o.id="brainfish-analytics",o.src="https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js",o.type="module",o.async=!0,o.crossOrigin="anonymous",o.onerror=()=>{h(a,new Error(`Failed to load script: ${o.src}`),`Failed to load script: ${o.src}`,c)},document.head.appendChild(o)}))(s,t)}catch(a){h(s,a,"Failed to initialize BrainfishAnalytics",t)}})};let y=null;const S=typeof window!="undefined"&&window.Brainfish?window.Brainfish:(y||(y=function(){let t=[],n=null;function s(i,r){if(n){const e=i.split(".");let a=n;for(let o=0;o<e.length-1;o++)a=a[e[o]];const c=a[e[e.length-1]];if(typeof c=="function")return c.apply(a,r)}else t.push([i,r])}return{Widgets:{init:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("Widgets.init",r)}},SearchWidget:{initStandard:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("SearchWidget.initStandard",r)}},HelpWidget:{initPopup:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("HelpWidget.initPopup",r)},close:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("HelpWidget.close",r)},open:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("HelpWidget.open",r)},toggle:function(){for(var i=arguments.length,r=new Array(i),e=0;e<i;e++)r[e]=arguments[e];return s("HelpWidget.toggle",r)}},_setRealBrainfish:function(i){for(n=i;t.length>0;){const[r,e]=t.shift();s(r,e)}}}}(),typeof window!="undefined"&&(window.Brainfish=y)),y);let k=null;S.Widgets.init=t=>f(exports,null,function*(){var n;window&&(window.BrainfishAnalytics=window.BrainfishAnalytics||function(){for(var e=arguments.length,a=new Array(e),c=0;c<e;c++)a[c]=arguments[c];(window.BrainfishAnalytics.q=window.BrainfishAnalytics.q||[]).push(a)});const s=$(t.overrides),d=H(t.overrides),{config:i}=yield F({widgetKey:t.widgetKey,apiHost:s});k||(k=function(e,a,c,o){return f(this,null,function*(){var u;const l=[W(e,a)];(u=a.settings)!==null&&u!==void 0&&u.enableTracking&&l.push(P(e.widgetKey,a.trackingToken||"",c,o));const[g]=yield Promise.allSettled(l);g.status==="fulfilled"&&g.value&&S._setRealBrainfish(g.value)})}(t,i,s,d)),yield k;const r=[W(t,i)];if((n=i.settings)!==null&&n!==void 0&&n.enableTracking){const e=H(t.overrides);r.push(P(t.widgetKey,i.trackingToken||"",s,e))}yield Promise.allSettled(r)});exports.BrainfishAnalytics=function(){typeof window!="undefined"&&window.BrainfishAnalytics&&window.BrainfishAnalytics(...arguments)},exports.default=S;
1
+ "use strict";var j=Object.defineProperty,P=Object.defineProperties;var C=Object.getOwnPropertyDescriptors;var H=Object.getOwnPropertySymbols;var I=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var b=(t,n,r)=>n in t?j(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,v=(t,n)=>{for(var r in n||(n={}))I.call(n,r)&&b(t,r,n[r]);if(H)for(var r of H(n))N.call(n,r)&&b(t,r,n[r]);return t},A=(t,n)=>P(t,C(n));var W=(t,n,r)=>b(t,typeof n!="symbol"?n+"":n,r);var g=(t,n,r)=>new Promise((o,i)=>{var s=d=>{try{a(r.next(d))}catch(u){i(u)}},e=d=>{try{a(r.throw(d))}catch(u){i(u)}},a=d=>d.done?o(d.value):Promise.resolve(d.value).then(s,e);a((r=r.apply(t,n)).next())});var w,E;(function(){try{var t=typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},n=new t.Error().stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="053bf5f5-5be3-4ad4-989d-8ee484c5eca8",t._sentryDebugIdIdentifier="sentry-dbid-053bf5f5-5be3-4ad4-989d-8ee484c5eca8")}catch(r){}})(),Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),(typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{}).SENTRY_RELEASE={id:"ac9cf9209e95255630df49da6d6d074c4194baba"},function(t){t.Sidebar="sidebar",t.Searchbar="searchbar"}(w||(w={})),w.Sidebar,w.Searchbar;class K extends Error{constructor(r,o){super(r,o);W(this,"cause");this.name="BrainfishWidgetError",this.cause=o==null?void 0:o.cause,Error.captureStackTrace&&Error.captureStackTrace(this,K),this.cause instanceof Error&&this.cause.stack&&(this.stack=this.stack+`
2
+ Caused by: `+this.cause.stack)}toJSON(){return{name:this.name,message:this.message,stack:this.stack,cause:this.cause instanceof Error?{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}:this.cause}}}(function(t){t.LINK="link",t.CALLBACK="callback",t.EMAIL="email",t.PHONE="phone"})(E||(E={}));const h=(t,n,r,o)=>{let i=r,s={};if(n instanceof Error)try{s=JSON.parse(n.message),i+=` - ${s.message||n.message}`}catch(e){i+=` - ${n.message}`}else i+=` - ${String(n)}`;((e,a,d)=>{if(!navigator||navigator.userAgent.toLowerCase().includes("headless"))return;const u=a.toJSON();fetch(`${e||"https://app.brainfi.sh"}/api/trackError.widget.create`,{method:"POST",headers:{"Content-Type":"application/json","api-key":d},body:JSON.stringify({error:`WebWidgetVersion: 1.3.1. ${a.message}`,stack:a.stack,cause:{message:u.message,stack:u.stack,cause:u.cause}})})})(t,new K(i,{cause:s}),o)},L=t=>g(exports,null,function*(){let{widgetKey:n,apiHost:r}=t;return function(o,i,s){return g(this,null,function*(){return fetch(`${o}${i}`,{method:"POST",headers:{"Content-Type":"application/json","api-key":s}}).then(e=>{if(!e.ok)throw new Error(`API call failed with status: ${e.status}`);return e.json()}).then(e=>{if(!e)throw new Error("Error loading config: empty response");return e}).catch(e=>{h(o,e,"Error fetching config",s)})})}(r,"/api/searchWidgets.getConfigByKey",n)}),_=t=>{let{config:n,apiKey:r,apiHost:o}=t;const i=n.settings||{};return["bodyActionButtons","footerActionButtons","nextBestActions"].forEach(s=>{i[s]&&(i[s]=i[s].map(e=>e.type===E.CALLBACK&&e.value?A(v({},e),{value:new Function(`return ${e.value}`)()}):e))}),A(v({},n),{settings:i,apiHost:o,widgetMode:n.widgetType,apiKey:r})},$=t=>(t==null?void 0:t.apiHost)||"https://app.brainfi.sh",k=(()=>{if(typeof window=="undefined")return;const t=window.navigator.userAgent;if(!(t.match(/iPad/i)||t.match(/iPhone/i)))return!1;const n=t.match(/OS (\d+)_/i);return n&&parseInt(n[1],10)<=14})(),R=t=>g(exports,null,function*(){let{apiHost:n,widgetKey:r,version:o}=t;try{const i=`https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${o}/dist/web.js`,s=k?i.replace("web.js","web.umd.js"):i;return{widget:yield(a=>g(exports,null,function*(){return document.getElementById("brainfish-widget")?window.Brainfish:new Promise((d,u)=>{const c=document.createElement("script");c.id="brainfish-widget",c.src=a,c.type=k?"text/javascript":"module",c.async=!0,c.crossOrigin="anonymous",c.onload=()=>{setTimeout(()=>{const l=window.Brainfish;l?d(l):u(new Error("Failed to load Brainfish module"))},200)},c.onerror=l=>{const f=l,y={message:`Failed to load script: ${a}`,type:f.type,fileName:f.filename,lineNumber:f.lineno,columnNumber:f.colno,error:f.error?f.error.toString():"Unknown error"};u(new Error(JSON.stringify(y)))},k||document.head.appendChild(c)})}))(s)}}catch(i){h(n,i,i.message,r)}}),O=new Set,F=(t,n)=>g(exports,null,function*(){const r=$(t.overrides);try{if(O.has(t.widgetKey))return;const o=yield R({apiHost:r,widgetKey:t.widgetKey,version:n.version||"latest"});if(o){const{widget:i}=o,s=_({config:n,apiKey:t.widgetKey,apiHost:r});return t.overrides&&n.settings&&Object.entries(t.overrides).forEach(e=>{let[a,d]=e;n.settings&&a in n.settings&&(n.settings[a]=function(){let u=arguments.length>1?arguments[1]:void 0;const c=new Map((arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(l=>[l.label,l]));return u.forEach(l=>c.set(l.label,l)),Array.from(c.values())}(n.settings[a],d))}),function(e,a){a.widgetType===w.Searchbar||a.widgetType==="Search"?e.SearchWidget.initStandard(a):e.HelpWidget.initPopup(a)}(i,s),O.add(t.widgetKey),i}}catch(o){h(r,o,o.message,t.widgetKey)}});let T=!1;const J=function(o,i,s){return g(this,arguments,function*(t,n,r){let e=arguments.length>3&&arguments[3]!==void 0?arguments[3]:void 0,a=arguments.length>4&&arguments[4]!==void 0&&arguments[4];if(n||h(r,new Error("Access key is required"),"Access key is required",t),!T)try{window.BrainfishAnalytics("init",{apiUrl:e,accessKey:n,trackScreenViews:!0,trackAttributes:!0,trackOutgoingLinks:!0,enableRecording:a}),T=!0,yield((d,u)=>g(this,null,function*(){if(document.getElementById("brainfish-analytics"))return window.BrainfishAnalytics;const c=document.createElement("script");c.id="brainfish-analytics",c.src="https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js",c.type="module",c.async=!0,c.crossOrigin="anonymous",c.onerror=()=>{h(d,new Error(`Failed to load script: ${c.src}`),`Failed to load script: ${c.src}`,u)},document.head.appendChild(c)}))(r,t)}catch(d){h(r,d,"Failed to initialize BrainfishAnalytics",t)}})};let p=null;const B=typeof window!="undefined"&&window.Brainfish?window.Brainfish:(p||(p=function(){let t=[],n=null;function r(i,s){if(n){const e=i.split(".");let a=n;for(let u=0;u<e.length-1;u++)a=a[e[u]];const d=a[e[e.length-1]];if(typeof d=="function")return d.apply(a,s)}else t.push([i,s])}return{Widgets:{init:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("Widgets.init",s)}},SearchWidget:{initStandard:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("SearchWidget.initStandard",s)}},HelpWidget:{initPopup:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("HelpWidget.initPopup",s)},close:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("HelpWidget.close",s)},open:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("HelpWidget.open",s)},toggle:function(){for(var i=arguments.length,s=new Array(i),e=0;e<i;e++)s[e]=arguments[e];return r("HelpWidget.toggle",s)}},_setRealBrainfish:function(i){for(n=i;t.length>0;){const[s,e]=t.shift();r(s,e)}}}}(),typeof window!="undefined"&&(window.Brainfish=p)),p);let S=null;B.Widgets.init=t=>g(exports,null,function*(){window&&(window.BrainfishAnalytics=window.BrainfishAnalytics||function(){for(var s=arguments.length,e=new Array(s),a=0;a<s;a++)e[a]=arguments[a];(window.BrainfishAnalytics.q=window.BrainfishAnalytics.q||[]).push(e)});const n=$(t.overrides),r=((o=t.overrides)==null?void 0:o.analyticsApiHost)||void 0;var o;const{config:i}=yield L({widgetKey:t.widgetKey,apiHost:n});S||(S=function(s,e,a,d){return g(this,null,function*(){var u,c,l;const f=((u=s.overrides)===null||u===void 0?void 0:u.enableRecording)||(e==null||(c=e.settings)===null||c===void 0?void 0:c.enableRecording)||!1,y=[F(s,e)];e!=null&&(l=e.settings)!==null&&l!==void 0&&l.enableTracking&&y.push(J(s.widgetKey,e.trackingToken||"",a,d,f));const[m]=yield Promise.allSettled(y);m.status==="fulfilled"&&m.value&&B._setRealBrainfish(m.value)})}(t,i,n,r)),yield S});exports.BrainfishAnalytics=function(){typeof window!="undefined"&&window.BrainfishAnalytics&&window.BrainfishAnalytics(...arguments)},exports.default=B;
3
3
  //# sourceMappingURL=web.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.cjs.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n return fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n return response.json();\n })\n .then((data) => {\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n return data;\n })\n .catch((error) => {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n });\n}\n","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: true,\n trackAttributes: true,\n trackOutgoingLinks: true,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n if (config.settings?.enableTracking) {\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost\n ) // Even if this fails, it won't block the widget\n );\n }\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (widgetPromise.status === 'fulfilled' && widgetPromise.value) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (options: {\n widgetKey: string;\n overrides?: any;\n}): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n const { config } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n\n // Initialize this specific widget and analytics in parallel\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n if (config.settings?.enableTracking) {\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost\n ) // Even if this fails, it won't block the widget\n );\n }\n\n await Promise.allSettled(initPromises);\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","message","options","super","cause","this","name","captureStackTrace","stack","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","navigator","userAgent","toLowerCase","includes","errorData","toJSON","fetch","method","headers","body","stringify","getConfigByKey","_ref","async","endpoint","__async","then","response","ok","status","json","data","catch","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","i","getApiHost","overrides","getAnalyticsApiHost","analyticsApiHost","useUMD","window","ua","match","version","parseInt","init","url","scriptUrl","replace","widget","document","getElementById","Brainfish","Promise","resolve","reject","script","createElement","id","src","crossOrigin","onload","setTimeout","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","loadSearchWidgetScript","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","undefined","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","globalBrainfish","queue","realBrainfish","queueOrExecute","args","parts","split","obj","fn","apply","push","Widgets","_len","_key","_len2","_key2","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","createBrainfishQueue","initializationPromise","_config$settings2","q","_config$settings","initPromises","enableTracking","trackingToken","widgetPromise","allSettled"],"mappings":"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"}
1
+ {"version":3,"file":"web.cjs.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n return fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n return response.json();\n })\n .then((data) => {\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n return data;\n })\n .catch((error) => {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n });\n}\n","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n // TODO: should we make this configurable for local testing?\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST,\n enableRecording: boolean = false\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: true,\n trackAttributes: true,\n trackOutgoingLinks: true,\n enableRecording,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const enableRecording =\n options.overrides?.enableRecording ||\n config?.settings?.enableRecording ||\n false;\n\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n\n if (config?.settings?.enableTracking) {\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost,\n enableRecording\n ) // Even if this fails, it won't block the widget\n );\n }\n\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (widgetPromise.status === 'fulfilled' && widgetPromise.value) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (options: {\n widgetKey: string;\n overrides?: any;\n}): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n const { config } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","cause","message","options","super","this","name","captureStackTrace","stack","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","sendErrors","navigator","userAgent","toLowerCase","includes","errorData","toJSON","fetch","method","headers","body","stringify","getConfigByKey","e","__async","_ref","async","endpoint","then","response","ok","status","json","data","catch","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","getApiHost","overrides","useUMD","isIOS14OrBelow","window","ua","match","version","parseInt","init","url","scriptUrl","replace","widget","document","getElementById","Brainfish","Promise","resolve","reject","script","createElement","id","src","crossOrigin","onload","setTimeout","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","undefined","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","analyticsApiHost","enableRecording","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","globalBrainfish","queue","realBrainfish","queueOrExecute","args","parts","split","obj","i","fn","apply","push","Widgets","_len","_key","_len2","_key2","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","createBrainfishQueue","initializationPromise","q","_options$overrides","_config$settings","_config$settings2","initPromises","enableTracking","trackingToken","widgetPromise","allSettled"],"mappings":"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"}
package/dist/web.js CHANGED
@@ -1,47 +1,47 @@
1
- var C = Object.defineProperty, I = Object.defineProperties;
2
- var N = Object.getOwnPropertyDescriptors;
3
- var S = Object.getOwnPropertySymbols;
4
- var L = Object.prototype.hasOwnProperty, _ = Object.prototype.propertyIsEnumerable;
5
- var y = (t, n, s) => n in t ? C(t, n, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[n] = s, m = (t, n) => {
6
- for (var s in n || (n = {}))
7
- L.call(n, s) && y(t, s, n[s]);
8
- if (S)
9
- for (var s of S(n))
10
- _.call(n, s) && y(t, s, n[s]);
1
+ var j = Object.defineProperty, C = Object.defineProperties;
2
+ var I = Object.getOwnPropertyDescriptors;
3
+ var K = Object.getOwnPropertySymbols;
4
+ var N = Object.prototype.hasOwnProperty, P = Object.prototype.propertyIsEnumerable;
5
+ var b = (t, n, r) => n in t ? j(t, n, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[n] = r, v = (t, n) => {
6
+ for (var r in n || (n = {}))
7
+ N.call(n, r) && b(t, r, n[r]);
8
+ if (K)
9
+ for (var r of K(n))
10
+ P.call(n, r) && b(t, r, n[r]);
11
11
  return t;
12
- }, b = (t, n) => I(t, N(n));
13
- var B = (t, n, s) => y(t, typeof n != "symbol" ? n + "" : n, s);
14
- var f = (t, n, s) => new Promise((d, i) => {
15
- var r = (c) => {
12
+ }, A = (t, n) => C(t, I(n));
13
+ var H = (t, n, r) => b(t, typeof n != "symbol" ? n + "" : n, r);
14
+ var g = (t, n, r) => new Promise((o, i) => {
15
+ var s = (d) => {
16
16
  try {
17
- a(s.next(c));
18
- } catch (o) {
19
- i(o);
17
+ a(r.next(d));
18
+ } catch (u) {
19
+ i(u);
20
20
  }
21
- }, e = (c) => {
21
+ }, e = (d) => {
22
22
  try {
23
- a(s.throw(c));
24
- } catch (o) {
25
- i(o);
23
+ a(r.throw(d));
24
+ } catch (u) {
25
+ i(u);
26
26
  }
27
- }, a = (c) => c.done ? d(c.value) : Promise.resolve(c.value).then(r, e);
28
- a((s = s.apply(t, n)).next());
27
+ }, a = (d) => d.done ? o(d.value) : Promise.resolve(d.value).then(s, e);
28
+ a((r = r.apply(t, n)).next());
29
29
  });
30
- var w, A;
30
+ var w, S;
31
31
  (function() {
32
32
  try {
33
33
  var t = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}, n = new t.Error().stack;
34
- n && (t._sentryDebugIds = t._sentryDebugIds || {}, t._sentryDebugIds[n] = "3b2289d9-84fc-43e7-9533-124f5c0b541e", t._sentryDebugIdIdentifier = "sentry-dbid-3b2289d9-84fc-43e7-9533-124f5c0b541e");
35
- } catch (s) {
34
+ n && (t._sentryDebugIds = t._sentryDebugIds || {}, t._sentryDebugIds[n] = "fe6f8df6-897e-40ff-926a-d1174f8d92a8", t._sentryDebugIdIdentifier = "sentry-dbid-fe6f8df6-897e-40ff-926a-d1174f8d92a8");
35
+ } catch (r) {
36
36
  }
37
- })(), (typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}).SENTRY_RELEASE = { id: "c36c4cf2d8ecb908e550a91798616c5171c4ad47" }, function(t) {
37
+ })(), (typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}).SENTRY_RELEASE = { id: "ac9cf9209e95255630df49da6d6d074c4194baba" }, function(t) {
38
38
  t.Sidebar = "sidebar", t.Searchbar = "searchbar";
39
39
  }(w || (w = {})), w.Sidebar, w.Searchbar;
40
- class E extends Error {
41
- constructor(s, d) {
42
- super(s, d);
43
- B(this, "cause");
44
- this.name = "BrainfishWidgetError", this.cause = d == null ? void 0 : d.cause, Error.captureStackTrace && Error.captureStackTrace(this, E), this.cause instanceof Error && this.cause.stack && (this.stack = this.stack + `
40
+ class B extends Error {
41
+ constructor(r, o) {
42
+ super(r, o);
43
+ H(this, "cause");
44
+ this.name = "BrainfishWidgetError", this.cause = o == null ? void 0 : o.cause, Error.captureStackTrace && Error.captureStackTrace(this, B), this.cause instanceof Error && this.cause.stack && (this.stack = this.stack + `
45
45
  Caused by: ` + this.cause.stack);
46
46
  }
47
47
  toJSON() {
@@ -50,173 +50,168 @@ Caused by: ` + this.cause.stack);
50
50
  }
51
51
  (function(t) {
52
52
  t.LINK = "link", t.CALLBACK = "callback", t.EMAIL = "email", t.PHONE = "phone";
53
- })(A || (A = {}));
54
- const h = (t, n, s, d) => {
55
- let i = s, r = {};
53
+ })(S || (S = {}));
54
+ const h = (t, n, r, o) => {
55
+ let i = r, s = {};
56
56
  if (n instanceof Error) try {
57
- r = JSON.parse(n.message), i += ` - ${r.message || n.message}`;
57
+ s = JSON.parse(n.message), i += ` - ${s.message || n.message}`;
58
58
  } catch (e) {
59
59
  i += ` - ${n.message}`;
60
60
  }
61
61
  else i += ` - ${String(n)}`;
62
- ((e, a, c) => {
62
+ ((e, a, d) => {
63
63
  if (!navigator || navigator.userAgent.toLowerCase().includes("headless")) return;
64
- const o = a.toJSON();
65
- fetch(`${e || "https://app.brainfi.sh"}/api/trackError.widget.create`, { method: "POST", headers: { "Content-Type": "application/json", "api-key": c }, body: JSON.stringify({ error: `WebWidgetVersion: 1.3.0-beta.3. ${a.message}`, stack: a.stack, cause: { message: o.message, stack: o.stack, cause: o.cause } }) });
66
- })(t, new E(i, { cause: r }), d);
67
- }, F = (t) => f(void 0, null, function* () {
68
- let { widgetKey: n, apiHost: s } = t;
69
- return function(d, i, r) {
70
- return f(this, null, function* () {
71
- return fetch(`${d}${i}`, { method: "POST", headers: { "Content-Type": "application/json", "api-key": r } }).then((e) => {
64
+ const u = a.toJSON();
65
+ fetch(`${e || "https://app.brainfi.sh"}/api/trackError.widget.create`, { method: "POST", headers: { "Content-Type": "application/json", "api-key": d }, body: JSON.stringify({ error: `WebWidgetVersion: 1.3.1. ${a.message}`, stack: a.stack, cause: { message: u.message, stack: u.stack, cause: u.cause } }) });
66
+ })(t, new B(i, { cause: s }), o);
67
+ }, L = (t) => g(void 0, null, function* () {
68
+ let { widgetKey: n, apiHost: r } = t;
69
+ return function(o, i, s) {
70
+ return g(this, null, function* () {
71
+ return fetch(`${o}${i}`, { method: "POST", headers: { "Content-Type": "application/json", "api-key": s } }).then((e) => {
72
72
  if (!e.ok) throw new Error(`API call failed with status: ${e.status}`);
73
73
  return e.json();
74
74
  }).then((e) => {
75
75
  if (!e) throw new Error("Error loading config: empty response");
76
76
  return e;
77
77
  }).catch((e) => {
78
- h(d, e, "Error fetching config", r);
78
+ h(o, e, "Error fetching config", s);
79
79
  });
80
80
  });
81
- }(s, "/api/searchWidgets.getConfigByKey", n);
82
- }), J = (t) => {
83
- let { config: n, apiKey: s, apiHost: d } = t;
81
+ }(r, "/api/searchWidgets.getConfigByKey", n);
82
+ }), R = (t) => {
83
+ let { config: n, apiKey: r, apiHost: o } = t;
84
84
  const i = n.settings || {};
85
- return ["bodyActionButtons", "footerActionButtons", "nextBestActions"].forEach((r) => {
86
- i[r] && (i[r] = i[r].map((e) => e.type === A.CALLBACK && e.value ? b(m({}, e), { value: new Function(`return ${e.value}`)() }) : e));
87
- }), b(m({}, n), { settings: i, apiHost: d, widgetMode: n.widgetType, apiKey: s });
88
- }, P = (t) => (t == null ? void 0 : t.apiHost) || "https://app.brainfi.sh", K = (t) => (t == null ? void 0 : t.analyticsApiHost) || void 0, v = (() => {
85
+ return ["bodyActionButtons", "footerActionButtons", "nextBestActions"].forEach((s) => {
86
+ i[s] && (i[s] = i[s].map((e) => e.type === S.CALLBACK && e.value ? A(v({}, e), { value: new Function(`return ${e.value}`)() }) : e));
87
+ }), A(v({}, n), { settings: i, apiHost: o, widgetMode: n.widgetType, apiKey: r });
88
+ }, $ = (t) => (t == null ? void 0 : t.apiHost) || "https://app.brainfi.sh", k = (() => {
89
89
  if (typeof window == "undefined") return;
90
90
  const t = window.navigator.userAgent;
91
91
  if (!(t.match(/iPad/i) || t.match(/iPhone/i))) return !1;
92
92
  const n = t.match(/OS (\d+)_/i);
93
93
  return n && parseInt(n[1], 10) <= 14;
94
- })(), q = (t) => f(void 0, null, function* () {
95
- let { apiHost: n, widgetKey: s, version: d } = t;
94
+ })(), _ = (t) => g(void 0, null, function* () {
95
+ let { apiHost: n, widgetKey: r, version: o } = t;
96
96
  try {
97
- const i = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${d}/dist/web.js`, r = v ? i.replace("web.js", "web.umd.js") : i;
98
- return { widget: yield ((a) => f(void 0, null, function* () {
99
- return document.getElementById("brainfish-widget") ? window.Brainfish : new Promise((c, o) => {
100
- const u = document.createElement("script");
101
- u.id = "brainfish-widget", u.src = a, u.type = v ? "text/javascript" : "module", u.async = !0, u.crossOrigin = "anonymous", u.onload = () => {
97
+ const i = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${o}/dist/web.js`, s = k ? i.replace("web.js", "web.umd.js") : i;
98
+ return { widget: yield ((a) => g(void 0, null, function* () {
99
+ return document.getElementById("brainfish-widget") ? window.Brainfish : new Promise((d, u) => {
100
+ const c = document.createElement("script");
101
+ c.id = "brainfish-widget", c.src = a, c.type = k ? "text/javascript" : "module", c.async = !0, c.crossOrigin = "anonymous", c.onload = () => {
102
102
  setTimeout(() => {
103
103
  const l = window.Brainfish;
104
- l ? c(l) : o(new Error("Failed to load Brainfish module"));
104
+ l ? d(l) : u(new Error("Failed to load Brainfish module"));
105
105
  }, 200);
106
- }, u.onerror = (l) => {
107
- const g = l, j = { message: `Failed to load script: ${a}`, type: g.type, fileName: g.filename, lineNumber: g.lineno, columnNumber: g.colno, error: g.error ? g.error.toString() : "Unknown error" };
108
- o(new Error(JSON.stringify(j)));
109
- }, v || document.head.appendChild(u);
106
+ }, c.onerror = (l) => {
107
+ const f = l, p = { message: `Failed to load script: ${a}`, type: f.type, fileName: f.filename, lineNumber: f.lineno, columnNumber: f.colno, error: f.error ? f.error.toString() : "Unknown error" };
108
+ u(new Error(JSON.stringify(p)));
109
+ }, k || document.head.appendChild(c);
110
110
  });
111
- }))(r) };
111
+ }))(s) };
112
112
  } catch (i) {
113
- h(n, i, i.message, s);
113
+ h(n, i, i.message, r);
114
114
  }
115
- }), H = /* @__PURE__ */ new Set(), W = (t, n) => f(void 0, null, function* () {
116
- const s = P(t.overrides);
115
+ }), W = /* @__PURE__ */ new Set(), F = (t, n) => g(void 0, null, function* () {
116
+ const r = $(t.overrides);
117
117
  try {
118
- if (H.has(t.widgetKey)) return;
119
- const d = yield q({ apiHost: s, widgetKey: t.widgetKey, version: n.version || "latest" });
120
- if (d) {
121
- const { widget: i } = d, r = J({ config: n, apiKey: t.widgetKey, apiHost: s });
118
+ if (W.has(t.widgetKey)) return;
119
+ const o = yield _({ apiHost: r, widgetKey: t.widgetKey, version: n.version || "latest" });
120
+ if (o) {
121
+ const { widget: i } = o, s = R({ config: n, apiKey: t.widgetKey, apiHost: r });
122
122
  return t.overrides && n.settings && Object.entries(t.overrides).forEach((e) => {
123
- let [a, c] = e;
123
+ let [a, d] = e;
124
124
  n.settings && a in n.settings && (n.settings[a] = function() {
125
- let o = arguments.length > 1 ? arguments[1] : void 0;
126
- const u = new Map((arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []).map((l) => [l.label, l]));
127
- return o.forEach((l) => u.set(l.label, l)), Array.from(u.values());
128
- }(n.settings[a], c));
125
+ let u = arguments.length > 1 ? arguments[1] : void 0;
126
+ const c = new Map((arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []).map((l) => [l.label, l]));
127
+ return u.forEach((l) => c.set(l.label, l)), Array.from(c.values());
128
+ }(n.settings[a], d));
129
129
  }), function(e, a) {
130
130
  a.widgetType === w.Searchbar || a.widgetType === "Search" ? e.SearchWidget.initStandard(a) : e.HelpWidget.initPopup(a);
131
- }(i, r), H.add(t.widgetKey), i;
131
+ }(i, s), W.add(t.widgetKey), i;
132
132
  }
133
- } catch (d) {
134
- h(s, d, d.message, t.widgetKey);
133
+ } catch (o) {
134
+ h(r, o, o.message, t.widgetKey);
135
135
  }
136
136
  });
137
- let T = !1;
138
- const O = function(d, i, r) {
139
- return f(this, arguments, function* (t, n, s) {
140
- let e = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : void 0;
141
- if (n || h(s, new Error("Access key is required"), "Access key is required", t), !T) try {
142
- window.BrainfishAnalytics("init", { apiUrl: e, accessKey: n, trackScreenViews: !0, trackAttributes: !0, trackOutgoingLinks: !0 }), T = !0, yield ((a, c) => f(this, null, function* () {
137
+ let O = !1;
138
+ const J = function(o, i, s) {
139
+ return g(this, arguments, function* (t, n, r) {
140
+ let e = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : void 0, a = arguments.length > 4 && arguments[4] !== void 0 && arguments[4];
141
+ if (n || h(r, new Error("Access key is required"), "Access key is required", t), !O) try {
142
+ window.BrainfishAnalytics("init", { apiUrl: e, accessKey: n, trackScreenViews: !0, trackAttributes: !0, trackOutgoingLinks: !0, enableRecording: a }), O = !0, yield ((d, u) => g(this, null, function* () {
143
143
  if (document.getElementById("brainfish-analytics")) return window.BrainfishAnalytics;
144
- const o = document.createElement("script");
145
- o.id = "brainfish-analytics", o.src = "https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js", o.type = "module", o.async = !0, o.crossOrigin = "anonymous", o.onerror = () => {
146
- h(a, new Error(`Failed to load script: ${o.src}`), `Failed to load script: ${o.src}`, c);
147
- }, document.head.appendChild(o);
148
- }))(s, t);
149
- } catch (a) {
150
- h(s, a, "Failed to initialize BrainfishAnalytics", t);
144
+ const c = document.createElement("script");
145
+ c.id = "brainfish-analytics", c.src = "https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js", c.type = "module", c.async = !0, c.crossOrigin = "anonymous", c.onerror = () => {
146
+ h(d, new Error(`Failed to load script: ${c.src}`), `Failed to load script: ${c.src}`, u);
147
+ }, document.head.appendChild(c);
148
+ }))(r, t);
149
+ } catch (d) {
150
+ h(r, d, "Failed to initialize BrainfishAnalytics", t);
151
151
  }
152
152
  });
153
153
  };
154
- let p = null;
155
- const $ = typeof window != "undefined" && window.Brainfish ? window.Brainfish : (p || (p = /* @__PURE__ */ function() {
154
+ let y = null;
155
+ const T = typeof window != "undefined" && window.Brainfish ? window.Brainfish : (y || (y = /* @__PURE__ */ function() {
156
156
  let t = [], n = null;
157
- function s(i, r) {
157
+ function r(i, s) {
158
158
  if (n) {
159
159
  const e = i.split(".");
160
160
  let a = n;
161
- for (let o = 0; o < e.length - 1; o++) a = a[e[o]];
162
- const c = a[e[e.length - 1]];
163
- if (typeof c == "function") return c.apply(a, r);
164
- } else t.push([i, r]);
161
+ for (let u = 0; u < e.length - 1; u++) a = a[e[u]];
162
+ const d = a[e[e.length - 1]];
163
+ if (typeof d == "function") return d.apply(a, s);
164
+ } else t.push([i, s]);
165
165
  }
166
166
  return { Widgets: { init: function() {
167
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
168
- return s("Widgets.init", r);
167
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
168
+ return r("Widgets.init", s);
169
169
  } }, SearchWidget: { initStandard: function() {
170
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
171
- return s("SearchWidget.initStandard", r);
170
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
171
+ return r("SearchWidget.initStandard", s);
172
172
  } }, HelpWidget: { initPopup: function() {
173
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
174
- return s("HelpWidget.initPopup", r);
173
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
174
+ return r("HelpWidget.initPopup", s);
175
175
  }, close: function() {
176
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
177
- return s("HelpWidget.close", r);
176
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
177
+ return r("HelpWidget.close", s);
178
178
  }, open: function() {
179
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
180
- return s("HelpWidget.open", r);
179
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
180
+ return r("HelpWidget.open", s);
181
181
  }, toggle: function() {
182
- for (var i = arguments.length, r = new Array(i), e = 0; e < i; e++) r[e] = arguments[e];
183
- return s("HelpWidget.toggle", r);
182
+ for (var i = arguments.length, s = new Array(i), e = 0; e < i; e++) s[e] = arguments[e];
183
+ return r("HelpWidget.toggle", s);
184
184
  } }, _setRealBrainfish: function(i) {
185
185
  for (n = i; t.length > 0; ) {
186
- const [r, e] = t.shift();
187
- s(r, e);
186
+ const [s, e] = t.shift();
187
+ r(s, e);
188
188
  }
189
189
  } };
190
- }(), typeof window != "undefined" && (window.Brainfish = p)), p);
191
- let k = null;
192
- $.Widgets.init = (t) => f(void 0, null, function* () {
193
- var n;
190
+ }(), typeof window != "undefined" && (window.Brainfish = y)), y);
191
+ let E = null;
192
+ T.Widgets.init = (t) => g(void 0, null, function* () {
194
193
  window && (window.BrainfishAnalytics = window.BrainfishAnalytics || function() {
195
- for (var e = arguments.length, a = new Array(e), c = 0; c < e; c++) a[c] = arguments[c];
196
- (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(a);
194
+ for (var s = arguments.length, e = new Array(s), a = 0; a < s; a++) e[a] = arguments[a];
195
+ (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(e);
197
196
  });
198
- const s = P(t.overrides), d = K(t.overrides), { config: i } = yield F({ widgetKey: t.widgetKey, apiHost: s });
199
- k || (k = function(e, a, c, o) {
200
- return f(this, null, function* () {
201
- var u;
202
- const l = [W(e, a)];
203
- (u = a.settings) !== null && u !== void 0 && u.enableTracking && l.push(O(e.widgetKey, a.trackingToken || "", c, o));
204
- const [g] = yield Promise.allSettled(l);
205
- g.status === "fulfilled" && g.value && $._setRealBrainfish(g.value);
197
+ const n = $(t.overrides), r = ((o = t.overrides) == null ? void 0 : o.analyticsApiHost) || void 0;
198
+ var o;
199
+ const { config: i } = yield L({ widgetKey: t.widgetKey, apiHost: n });
200
+ E || (E = function(s, e, a, d) {
201
+ return g(this, null, function* () {
202
+ var u, c, l;
203
+ const f = ((u = s.overrides) === null || u === void 0 ? void 0 : u.enableRecording) || (e == null || (c = e.settings) === null || c === void 0 ? void 0 : c.enableRecording) || !1, p = [F(s, e)];
204
+ e != null && (l = e.settings) !== null && l !== void 0 && l.enableTracking && p.push(J(s.widgetKey, e.trackingToken || "", a, d, f));
205
+ const [m] = yield Promise.allSettled(p);
206
+ m.status === "fulfilled" && m.value && T._setRealBrainfish(m.value);
206
207
  });
207
- }(t, i, s, d)), yield k;
208
- const r = [W(t, i)];
209
- if ((n = i.settings) !== null && n !== void 0 && n.enableTracking) {
210
- const e = K(t.overrides);
211
- r.push(O(t.widgetKey, i.trackingToken || "", s, e));
212
- }
213
- yield Promise.allSettled(r);
208
+ }(t, i, n, r)), yield E;
214
209
  });
215
- const D = function() {
210
+ const x = function() {
216
211
  typeof window != "undefined" && window.BrainfishAnalytics && window.BrainfishAnalytics(...arguments);
217
212
  };
218
213
  export {
219
- D as BrainfishAnalytics,
220
- $ as default
214
+ x as BrainfishAnalytics,
215
+ T as default
221
216
  };
222
217
  //# sourceMappingURL=web.js.map
package/dist/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n return fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n return response.json();\n })\n .then((data) => {\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n return data;\n })\n .catch((error) => {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n });\n}\n","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: true,\n trackAttributes: true,\n trackOutgoingLinks: true,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n if (config.settings?.enableTracking) {\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost\n ) // Even if this fails, it won't block the widget\n );\n }\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (widgetPromise.status === 'fulfilled' && widgetPromise.value) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (options: {\n widgetKey: string;\n overrides?: any;\n}): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n const { config } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n\n // Initialize this specific widget and analytics in parallel\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n if (config.settings?.enableTracking) {\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost\n ) // Even if this fails, it won't block the widget\n );\n }\n\n await Promise.allSettled(initPromises);\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","cause","message","options","super","this","name","captureStackTrace","stack","toJSON","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","sendErrors","navigator","userAgent","toLowerCase","includes","errorData","fetch","method","headers","body","stringify","getConfigByKey","async","_ref","endpoint","then","response","ok","status","json","data","catch","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","i","getApiHost","overrides","getAnalyticsApiHost","analyticsApiHost","undefined","useUMD","isIOS14OrBelow","window","ua","match","version","parseInt","init","e","__async","url","scriptUrl","replace","widget","document","getElementById","Brainfish","Promise","resolve","reject","script","createElement","id","src","crossOrigin","onload","setTimeout","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","loadSearchWidgetScript","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","globalBrainfish","queue","realBrainfish","queueOrExecute","args","parts","split","obj","fn","apply","push","Widgets","_len","_key","_len2","_key2","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","initializationPromise","_config$settings2","q","_config$settings","initPromises","enableTracking","trackingToken","widgetPromise","allSettled"],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n return fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n return response.json();\n })\n .then((data) => {\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n return data;\n })\n .catch((error) => {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n });\n}\n","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n // TODO: should we make this configurable for local testing?\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST,\n enableRecording: boolean = false\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: true,\n trackAttributes: true,\n trackOutgoingLinks: true,\n enableRecording,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const enableRecording =\n options.overrides?.enableRecording ||\n config?.settings?.enableRecording ||\n false;\n\n const initPromises: Promise<Brainfish | undefined | void>[] = [\n initSearchWidget(options, config),\n ];\n\n if (config?.settings?.enableTracking) {\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost,\n enableRecording\n ) // Even if this fails, it won't block the widget\n );\n }\n\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (widgetPromise.status === 'fulfilled' && widgetPromise.value) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (options: {\n widgetKey: string;\n overrides?: any;\n}): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n const { config } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","message","options","super","this","cause","name","captureStackTrace","stack","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","sendErrors","navigator","userAgent","toLowerCase","includes","errorData","toJSON","fetch","method","headers","body","stringify","getConfigByKey","async","_ref","endpoint","__async","then","response","ok","status","json","data","catch","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","getApiHost","overrides","useUMD","window","ua","match","version","parseInt","init","url","scriptUrl","replace","widget","document","getElementById","Brainfish","Promise","resolve","reject","script","createElement","id","src","crossOrigin","onload","setTimeout","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","analyticsApiHost","undefined","enableRecording","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","globalBrainfish","queue","realBrainfish","queueOrExecute","args","parts","split","obj","i","fn","apply","push","Widgets","_len","_key","_len2","_key2","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","initializationPromise","q","_options$overrides","_config$settings","_config$settings2","initPromises","enableTracking","trackingToken","widgetPromise","allSettled"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainfish-ai/widgets-initiator",
3
- "version": "1.3.0-beta.3",
3
+ "version": "1.3.1",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "devDependencies": {
23
23
  "@babel/plugin-transform-nullish-coalescing-operator": "^7.18.6",
24
24
  "@babel/plugin-transform-optional-chaining": "^7.21.0",
25
- "@brainfish-ai/widgets-common": "1.0.7",
25
+ "@brainfish-ai/widgets-common": "0.0.0",
26
26
  "@rollup/plugin-babel": "^6.0.4",
27
27
  "@rollup/plugin-terser": "^0.4.4",
28
28
  "@sentry/vite-plugin": "^2.22.4",