@cimulate/copilot-sdk 3.9.0 → 3.10.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.
package/README.md CHANGED
@@ -189,6 +189,22 @@ const client = new CimulateCopilot<SearchReturnedFields[]>({
189
189
  });
190
190
  ```
191
191
 
192
+ ### Defining Browse Returned Fields Types
193
+ ```typescript
194
+ interface BrowseReturnedFields {
195
+ id: string,
196
+ title: string,
197
+ image_url: string,
198
+ price: number,
199
+ }
200
+ ```
201
+
202
+ // Instantiate client object
203
+ const client = new CimulateCopilot<BrowseReturnedFields[]>({
204
+ apiKey: "your-api-key",
205
+ baseUrl: "https://cimulate.copilot.url",
206
+ });
207
+
192
208
  ### Handling Request Ack Failure
193
209
  ```typescript
194
210
  import {
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("socket.io-client")):"function"==typeof define&&define.amd?define(["exports","socket.io-client"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).CimulateCopilot={},t.io)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=n(e),o=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===s}(t)}(t)};var s="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function c(t,e){return!1!==e.clone&&e.isMergeableObject(t)?h((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function i(t,e,n){return t.concat(e).map((function(t){return c(t,n)}))}function a(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(e){return Object.propertyIsEnumerable.call(t,e)})):[]}(t))}function l(t,e){try{return e in t}catch(t){return!1}}function u(t,e,n){var r={};return n.isMergeableObject(t)&&a(t).forEach((function(e){r[e]=c(t[e],n)})),a(e).forEach((function(o){(function(t,e){return l(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,o)||(l(t,o)&&n.isMergeableObject(e[o])?r[o]=function(t,e){if(!e.customMerge)return h;var n=e.customMerge(t);return"function"==typeof n?n:h}(o,n)(t[o],e[o],n):r[o]=c(e[o],n))})),r}function h(t,e,n){(n=n||{}).arrayMerge=n.arrayMerge||i,n.isMergeableObject=n.isMergeableObject||o,n.cloneUnlessOtherwiseSpecified=c;var r=Array.isArray(e);return r===Array.isArray(t)?r?n.arrayMerge(t,e,n):u(t,e,n):c(e,n)}h.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return h(t,n,e)}),{})};var f=h;class p{constructor(t){Object.assign(this,t)}}function y(t){if(t)return function(t){for(var e in y.prototype)t[e]=y.prototype[e];return t}(t)}y.prototype.on=y.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},y.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},y.prototype.off=y.prototype.removeListener=y.prototype.removeAllListeners=y.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o<r.length;o++)if((n=r[o])===e||n.fn===e){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},y.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,e)}return this},y.prototype.emitReserved=y.prototype.emit,y.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},y.prototype.hasListeners=function(t){return!!this.listeners(t).length};const d="function"==typeof ArrayBuffer,m=Object.prototype.toString,b="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===m.call(Blob),A="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===m.call(File);function k(t){return d&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||b&&t instanceof Blob||A&&t instanceof File}function g(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(g(t[e]))return!0;return!1}if(k(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return g(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&g(t[e]))return!0;return!1}function E(t){const e=[],n=t.data,r=t;return r.data=C(n,e),r.attachments=e.length,{packet:r,buffers:e}}function C(t,e){if(!t)return t;if(k(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=C(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=C(t[r],e));return n}return t}function v(t,e){return t.data=N(t.data,e),delete t.attachments,t}function N(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=N(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=N(t[n],e));return t}const w=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var _;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(_||(_={}));class O{constructor(t){this.replacer=t}encode(t){return t.type!==_.EVENT&&t.type!==_.ACK||!g(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===_.EVENT?_.BINARY_EVENT:_.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==_.BINARY_EVENT&&t.type!==_.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=E(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function R(t){return"[object Object]"===Object.prototype.toString.call(t)}class T extends y{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===_.BINARY_EVENT;n||e.type===_.BINARY_ACK?(e.type=n?_.EVENT:_.ACK,this.reconstructor=new j(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!k(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===_[n.type])throw new Error("unknown packet type "+n.type);if(n.type===_.BINARY_EVENT||n.type===_.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const o=t.substring(r,e);if(o!=Number(o)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e;){if(","===t.charAt(e))break;if(e===t.length)break}n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!T.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case _.CONNECT:return R(e);case _.DISCONNECT:return void 0===e;case _.CONNECT_ERROR:return"string"==typeof e||R(e);case _.EVENT:case _.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===w.indexOf(e[0]));case _.ACK:case _.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class j{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=v(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const S=["searchParams.facetFilters","hits","products"];const I=(t,e,n)=>function r(o,s=[]){const c=Object.entries(o).map((([o,c])=>{const i=[...s,e(o)];return[t(o),c instanceof Object&&!n?.includes(i.join("."))?r(c,i):c]}));return Array.isArray(o)?c.map((t=>t[1])):Object.fromEntries(c)},B=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),K=I((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),S),D=I(B,B,S),P={Encoder:class extends O{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],K(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends T{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?D(t):t)):e))}}};const x={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};t.CimulateCopilot=class{constructor({apiKey:t,apiToken:e,baseUrl:n,namespace:o="/copilot",socketOptions:s={}}){if(this.sessionIdKey="x-cimulate-copilot-session-id",this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.maxReconnectDelay=3e4,this.handleConnectAck=t=>{console.log("[Copilot SDK] Connect Ack:",t),this.socket.auth={[this.sessionIdKey]:t.sessionId}},this.handleDisconnect=t=>{console.warn(`[Copilot SDK] Disconnected: ${t}`),"io client disconnect"!==t&&(console.log(`[Copilot SDK] Disconnected due to ${t}. Attempting reconnect...`),this.retryConnect())},this.handleConnectError=t=>{console.error(`[Copilot SDK] Connect error: ${t.message}`);const e=t.message.match(/['"]error['"]:\s*['"](\w+)['"]/),n=e?.[1];n&&["InvalidApiKey","InvalidToken","BadRequest"].includes(n)?this.disconnect():this.socket.connected||this.socket.active||(console.log("[Copilot SDK] Retrying connect attempt..."),this.retryConnect())},this.offInternalHandlers=()=>{this.socket.off("connect_ack",this.handleConnectAck),this.socket.off("disconnect",this.handleDisconnect),this.off("connect_error",this.handleConnectError)},t&&e||!t&&!e)throw new Error("Provide exactly one authentication method: either 'apiKey' or 'apiToken', but not both.");const c=`${n}${o}`,i={};t?i["x-cimulate-api-key"]=t:e&&(i.Authorization=`Bearer ${e}`);const a=[x,s,{parser:P,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=r.default(c,f.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.on("connect_error",this.handleConnectError),this.socket.auth&&this.sessionIdKey in this.socket.auth&&(this.socket.auth={}),this.socket.connect()}retryConnect(){if(!(this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts))if(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.reconnectAttempts<this.maxReconnectAttempts){const t=Math.min(1e3*2**this.reconnectAttempts,this.maxReconnectDelay);console.info(`[Copilot SDK] Retry #${this.reconnectAttempts+1} in ${t}ms...`),this.reconnectTimeout=setTimeout((()=>{this.socket.connected||this.socket.active||(this.reconnectAttempts++,this.reconnect())}),t)}else console.error("[Copilot SDK] Max reconnect attempts reached.")}reconnect(){this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts||(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.socket.connect())}async browse(t,e){return this.asyncResponse("copilot_browse",t,e)}async search(t,e){return this.asyncResponse("copilot_search",t,e)}async facetedNavigation(t,e){return this.asyncResponse("faceted_navigation",t,e)}cancelRequest(t,e){return this.asyncResponse("cancel",t,e)}conversationReset(t,e){return this.asyncResponse("conversation_reset",t,e)}async productView(t,e){return this.asyncResponse("product_view",t,e)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}async getConversationEvents(t,e){return new Promise((n=>{this.socket.emit("conversation_events",t,(t=>{e&&e(t),n(t)}))}))}on(t,e){return this.socket.on(t,e),e}once(t,e){this.socket.once(t,e)}off(t,e){this.socket.off(t,e)}disconnect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}async asyncResponse(t,e,n){if(n)return void this.socket.emit(t,e,n);let r="";const o=async function*(t){const e=[];let n=!1,r=null;const o=await t({emit:t=>{e.push(t),r&&(r(),r=null)},cancel:()=>{n=!0}});try{for(;!n;)e.length>0?yield e.shift():await new Promise((t=>{r=t}));for(;e.length>0;)yield e.shift()}finally{await(o?.())}}((({emit:t,cancel:e})=>{const n=(n,o)=>{["done","error"].includes(o.name)&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise(((n,o)=>this.socket.emit(t,e,(t=>{"error"===t.name?o(new p(t)):(r=t?.id,n(t))})))),events:o}}},t.CimulateCopilotException=p,t.RAW_PROPERTY_VALUES=S,Object.defineProperty(t,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=bundle.cimulate.copilot-sdk.3dd9816e.umd.js.map
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("socket.io-client")):"function"==typeof define&&define.amd?define(["exports","socket.io-client"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).CimulateCopilot={},t.io)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=n(e),o=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===s}(t)}(t)};var s="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function c(t,e){return!1!==e.clone&&e.isMergeableObject(t)?h((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function i(t,e,n){return t.concat(e).map((function(t){return c(t,n)}))}function a(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(e){return Object.propertyIsEnumerable.call(t,e)})):[]}(t))}function l(t,e){try{return e in t}catch(t){return!1}}function u(t,e,n){var r={};return n.isMergeableObject(t)&&a(t).forEach((function(e){r[e]=c(t[e],n)})),a(e).forEach((function(o){(function(t,e){return l(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,o)||(l(t,o)&&n.isMergeableObject(e[o])?r[o]=function(t,e){if(!e.customMerge)return h;var n=e.customMerge(t);return"function"==typeof n?n:h}(o,n)(t[o],e[o],n):r[o]=c(e[o],n))})),r}function h(t,e,n){(n=n||{}).arrayMerge=n.arrayMerge||i,n.isMergeableObject=n.isMergeableObject||o,n.cloneUnlessOtherwiseSpecified=c;var r=Array.isArray(e);return r===Array.isArray(t)?r?n.arrayMerge(t,e,n):u(t,e,n):c(e,n)}h.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return h(t,n,e)}),{})};var f=h;class p{constructor(t){Object.assign(this,t)}}function y(t){if(t)return function(t){for(var e in y.prototype)t[e]=y.prototype[e];return t}(t)}y.prototype.on=y.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},y.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},y.prototype.off=y.prototype.removeListener=y.prototype.removeAllListeners=y.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o<r.length;o++)if((n=r[o])===e||n.fn===e){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},y.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,e)}return this},y.prototype.emitReserved=y.prototype.emit,y.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},y.prototype.hasListeners=function(t){return!!this.listeners(t).length};const d="function"==typeof ArrayBuffer,m=Object.prototype.toString,b="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===m.call(Blob),A="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===m.call(File);function k(t){return d&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||b&&t instanceof Blob||A&&t instanceof File}function g(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(g(t[e]))return!0;return!1}if(k(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return g(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&g(t[e]))return!0;return!1}function E(t){const e=[],n=t.data,r=t;return r.data=C(n,e),r.attachments=e.length,{packet:r,buffers:e}}function C(t,e){if(!t)return t;if(k(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=C(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=C(t[r],e));return n}return t}function v(t,e){return t.data=N(t.data,e),delete t.attachments,t}function N(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=N(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=N(t[n],e));return t}const w=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var _;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(_||(_={}));class O{constructor(t){this.replacer=t}encode(t){return t.type!==_.EVENT&&t.type!==_.ACK||!g(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===_.EVENT?_.BINARY_EVENT:_.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==_.BINARY_EVENT&&t.type!==_.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=E(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function R(t){return"[object Object]"===Object.prototype.toString.call(t)}class T extends y{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===_.BINARY_EVENT;n||e.type===_.BINARY_ACK?(e.type=n?_.EVENT:_.ACK,this.reconstructor=new j(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!k(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===_[n.type])throw new Error("unknown packet type "+n.type);if(n.type===_.BINARY_EVENT||n.type===_.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const o=t.substring(r,e);if(o!=Number(o)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e;){if(","===t.charAt(e))break;if(e===t.length)break}n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!T.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case _.CONNECT:return R(e);case _.DISCONNECT:return void 0===e;case _.CONNECT_ERROR:return"string"==typeof e||R(e);case _.EVENT:case _.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===w.indexOf(e[0]));case _.ACK:case _.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class j{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=v(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const S=["searchParams.facetFilters","browseParams.facetFilters","hits","products"];const I=(t,e,n)=>function r(o,s=[]){const c=Object.entries(o).map((([o,c])=>{const i=[...s,e(o)];return[t(o),c instanceof Object&&!n?.includes(i.join("."))?r(c,i):c]}));return Array.isArray(o)?c.map((t=>t[1])):Object.fromEntries(c)},B=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),K=I((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),S),P=I(B,B,S),D={Encoder:class extends O{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],K(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends T{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?P(t):t)):e))}}};const x={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};t.CimulateCopilot=class{constructor({apiKey:t,apiToken:e,baseUrl:n,namespace:o="/copilot",socketOptions:s={}}){if(this.sessionIdKey="x-cimulate-copilot-session-id",this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.maxReconnectDelay=3e4,this.handleConnectAck=t=>{console.log("[Copilot SDK] Connect Ack:",t),this.socket.auth={[this.sessionIdKey]:t.sessionId}},this.handleDisconnect=t=>{console.warn(`[Copilot SDK] Disconnected: ${t}`),"io client disconnect"!==t&&(console.log(`[Copilot SDK] Disconnected due to ${t}. Attempting reconnect...`),this.retryConnect())},this.handleConnectError=t=>{console.error(`[Copilot SDK] Connect error: ${t.message}`);const e=t.message.match(/['"]error['"]:\s*['"](\w+)['"]/),n=e?.[1];n&&["InvalidApiKey","InvalidToken","BadRequest"].includes(n)?this.disconnect():this.socket.connected||this.socket.active||(console.log("[Copilot SDK] Retrying connect attempt..."),this.retryConnect())},this.offInternalHandlers=()=>{this.socket.off("connect_ack",this.handleConnectAck),this.socket.off("disconnect",this.handleDisconnect),this.off("connect_error",this.handleConnectError)},t&&e||!t&&!e)throw new Error("Provide exactly one authentication method: either 'apiKey' or 'apiToken', but not both.");const c=`${n}${o}`,i={};t?i["x-cimulate-api-key"]=t:e&&(i.Authorization=`Bearer ${e}`);const a=[x,s,{parser:D,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=r.default(c,f.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.on("connect_error",this.handleConnectError),this.socket.auth&&this.sessionIdKey in this.socket.auth&&(this.socket.auth={}),this.socket.connect()}retryConnect(){if(!(this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts))if(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.reconnectAttempts<this.maxReconnectAttempts){const t=Math.min(1e3*2**this.reconnectAttempts,this.maxReconnectDelay);console.info(`[Copilot SDK] Retry #${this.reconnectAttempts+1} in ${t}ms...`),this.reconnectTimeout=setTimeout((()=>{this.socket.connected||this.socket.active||(this.reconnectAttempts++,this.reconnect())}),t)}else console.error("[Copilot SDK] Max reconnect attempts reached.")}reconnect(){this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts||(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.socket.connect())}async browse(t,e){return this.asyncResponse("copilot_browse",t,e)}async search(t,e){return this.asyncResponse("copilot_search",t,e)}async facetedNavigation(t,e){return this.asyncResponse("faceted_navigation",t,e)}cancelRequest(t,e){return this.asyncResponse("cancel",t,e)}conversationReset(t,e){return this.asyncResponse("conversation_reset",t,e)}async productView(t,e){return this.asyncResponse("product_view",t,e)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}async getConversationEvents(t,e){return new Promise((n=>{this.socket.emit("conversation_events",t,(t=>{e&&e(t),n(t)}))}))}on(t,e){return this.socket.on(t,e),e}once(t,e){this.socket.once(t,e)}off(t,e){this.socket.off(t,e)}disconnect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}async asyncResponse(t,e,n){if(n)return void this.socket.emit(t,e,n);let r="";const o=async function*(t){const e=[];let n=!1,r=null;const o=await t({emit:t=>{e.push(t),r&&(r(),r=null)},cancel:()=>{n=!0}});try{for(;!n;)e.length>0?yield e.shift():await new Promise((t=>{r=t}));for(;e.length>0;)yield e.shift()}finally{await(o?.())}}((({emit:t,cancel:e})=>{const n=(n,o)=>{["done","error"].includes(o.name)&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise(((n,o)=>this.socket.emit(t,e,(t=>{"error"===t.name?o(new p(t)):(r=t?.id,n(t))})))),events:o}}},t.CimulateCopilotException=p,t.RAW_PROPERTY_VALUES=S,Object.defineProperty(t,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=bundle.cimulate.copilot-sdk.b3f98cd8.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.cimulate.copilot-sdk.3dd9816e.umd.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/exceptions.ts","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../src/model/customization.ts","../src/parser.ts","../src/copilot.ts","../src/generator.ts"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n",null,"/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n",null,null,null,null],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","mergeObject","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","Error","reduce","prev","next","cjs","CimulateCopilotException","constructor","error","assign","this","Emitter","obj","mixin","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","len","slice","emitReserved","listeners","hasListeners","withNativeArrayBuffer","ArrayBuffer","withNativeBlob","Blob","withNativeFile","File","isBinary","isView","buffer","hasBinary","toJSON","l","deconstructPacket","packet","buffers","packetData","data","pack","_deconstructPacket","attachments","placeholder","_placeholder","num","newData","Date","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","encode","type","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","id","str","JSON","stringify","deconstruction","unshift","isObject","Decoder","reviver","super","add","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","base64","takeBinaryData","p","Number","charAt","undefined","start","buf","substring","c","payload","tryParse","substr","isPayloadValid","parse","e","CONNECT","DISCONNECT","CONNECT_ERROR","indexOf","destroy","finishedReconstruction","reconPack","binData","RAW_PROPERTY_VALUES","keyTransformer","transform","normalize","stopAt","traverse","ancestors","result","entries","path","includes","join","fromEntries","camelCase","replace","toUpperCase","toLowerCase","decode","SnakeCaseParser","socketDefaults","autoConnect","transports","upgrade","timeout","apiKey","apiToken","baseUrl","namespace","socketOptions","sessionIdKey","reconnectAttempts","maxReconnectAttempts","maxReconnectDelay","handleConnectAck","console","log","socket","auth","sessionId","handleDisconnect","reason","warn","retryConnect","handleConnectError","err","message","errorMatch","match","errorType","disconnect","connected","active","offInternalHandlers","socketioEndpoint","extraHeaders","parser","withCredentials","transportOptions","polling","io","connect","reconnectTimeout","clearTimeout","delay","Math","min","info","setTimeout","reconnect","browse","callback","asyncResponse","search","facetedNavigation","cancelRequest","conversationReset","productView","requestSessionInformation","Promise","resolve","response","getConversationEvents","name","handler","onDisconnect","operation","eventSourceId","events","async","subscriber","cancelled","resolveNext","unsubscribe","cancel","shift","asyncGenerator","onAny","offAny","reject","ack"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.cimulate.copilot-sdk.b3f98cd8.umd.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/exceptions.ts","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../src/model/customization.ts","../src/parser.ts","../src/copilot.ts","../src/generator.ts"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n",null,"/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n",null,null,null,null],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","mergeObject","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","Error","reduce","prev","next","cjs","CimulateCopilotException","constructor","error","assign","this","Emitter","obj","mixin","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","len","slice","emitReserved","listeners","hasListeners","withNativeArrayBuffer","ArrayBuffer","withNativeBlob","Blob","withNativeFile","File","isBinary","isView","buffer","hasBinary","toJSON","l","deconstructPacket","packet","buffers","packetData","data","pack","_deconstructPacket","attachments","placeholder","_placeholder","num","newData","Date","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","encode","type","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","id","str","JSON","stringify","deconstruction","unshift","isObject","Decoder","reviver","super","add","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","base64","takeBinaryData","p","Number","charAt","undefined","start","buf","substring","c","payload","tryParse","substr","isPayloadValid","parse","e","CONNECT","DISCONNECT","CONNECT_ERROR","indexOf","destroy","finishedReconstruction","reconPack","binData","RAW_PROPERTY_VALUES","keyTransformer","transform","normalize","stopAt","traverse","ancestors","result","entries","path","includes","join","fromEntries","camelCase","replace","toUpperCase","toLowerCase","decode","SnakeCaseParser","socketDefaults","autoConnect","transports","upgrade","timeout","apiKey","apiToken","baseUrl","namespace","socketOptions","sessionIdKey","reconnectAttempts","maxReconnectAttempts","maxReconnectDelay","handleConnectAck","console","log","socket","auth","sessionId","handleDisconnect","reason","warn","retryConnect","handleConnectError","err","message","errorMatch","match","errorType","disconnect","connected","active","offInternalHandlers","socketioEndpoint","extraHeaders","parser","withCredentials","transportOptions","polling","io","connect","reconnectTimeout","clearTimeout","delay","Math","min","info","setTimeout","reconnect","browse","callback","asyncResponse","search","facetedNavigation","cancelRequest","conversationReset","productView","requestSessionInformation","Promise","resolve","response","getConversationEvents","name","handler","onDisconnect","operation","eventSourceId","events","async","subscriber","cancelled","resolveNext","unsubscribe","cancel","shift","asyncGenerator","onAny","offAny","reject","ack"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t from"socket.io-client";var e=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===n}(t)}(t)};var n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(t,e){return!1!==e.clone&&e.isMergeableObject(t)?a((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function o(t,e,n){return t.concat(e).map((function(t){return r(t,n)}))}function s(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(e){return Object.propertyIsEnumerable.call(t,e)})):[]}(t))}function c(t,e){try{return e in t}catch(t){return!1}}function i(t,e,n){var o={};return n.isMergeableObject(t)&&s(t).forEach((function(e){o[e]=r(t[e],n)})),s(e).forEach((function(s){(function(t,e){return c(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,s)||(c(t,s)&&n.isMergeableObject(e[s])?o[s]=function(t,e){if(!e.customMerge)return a;var n=e.customMerge(t);return"function"==typeof n?n:a}(s,n)(t[s],e[s],n):o[s]=r(e[s],n))})),o}function a(t,n,s){(s=s||{}).arrayMerge=s.arrayMerge||o,s.isMergeableObject=s.isMergeableObject||e,s.cloneUnlessOtherwiseSpecified=r;var c=Array.isArray(n);return c===Array.isArray(t)?c?s.arrayMerge(t,n,s):i(t,n,s):r(n,s)}a.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return a(t,n,e)}),{})};var l=a;class u{constructor(t){Object.assign(this,t)}}function h(t){if(t)return function(t){for(var e in h.prototype)t[e]=h.prototype[e];return t}(t)}h.prototype.on=h.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},h.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},h.prototype.off=h.prototype.removeListener=h.prototype.removeAllListeners=h.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o<r.length;o++)if((n=r[o])===e||n.fn===e){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},h.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,e)}return this},h.prototype.emitReserved=h.prototype.emit,h.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},h.prototype.hasListeners=function(t){return!!this.listeners(t).length};const f="function"==typeof ArrayBuffer,p=Object.prototype.toString,y="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===p.call(Blob),d="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===p.call(File);function m(t){return f&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||y&&t instanceof Blob||d&&t instanceof File}function b(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(b(t[e]))return!0;return!1}if(m(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return b(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&b(t[e]))return!0;return!1}function A(t){const e=[],n=t.data,r=t;return r.data=k(n,e),r.attachments=e.length,{packet:r,buffers:e}}function k(t,e){if(!t)return t;if(m(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=k(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=k(t[r],e));return n}return t}function g(t,e){return t.data=E(t.data,e),delete t.attachments,t}function E(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=E(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=E(t[n],e));return t}const N=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var v;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(v||(v={}));class C{constructor(t){this.replacer=t}encode(t){return t.type!==v.EVENT&&t.type!==v.ACK||!b(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===v.EVENT?v.BINARY_EVENT:v.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==v.BINARY_EVENT&&t.type!==v.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=A(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function w(t){return"[object Object]"===Object.prototype.toString.call(t)}class O extends h{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===v.BINARY_EVENT;n||e.type===v.BINARY_ACK?(e.type=n?v.EVENT:v.ACK,this.reconstructor=new R(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!m(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===v[n.type])throw new Error("unknown packet type "+n.type);if(n.type===v.BINARY_EVENT||n.type===v.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const o=t.substring(r,e);if(o!=Number(o)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e;){if(","===t.charAt(e))break;if(e===t.length)break}n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!O.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case v.CONNECT:return w(e);case v.DISCONNECT:return void 0===e;case v.CONNECT_ERROR:return"string"==typeof e||w(e);case v.EVENT:case v.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===N.indexOf(e[0]));case v.ACK:case v.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class R{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=g(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const _=["searchParams.facetFilters","hits","products"];const T=(t,e,n)=>function r(o,s=[]){const c=Object.entries(o).map((([o,c])=>{const i=[...s,e(o)];return[t(o),c instanceof Object&&!n?.includes(i.join("."))?r(c,i):c]}));return Array.isArray(o)?c.map((t=>t[1])):Object.fromEntries(c)},j=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),I=T((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),_),S=T(j,j,_),B={Encoder:class extends C{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],I(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends O{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?S(t):t)):e))}}};const K={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};class D{constructor({apiKey:e,apiToken:n,baseUrl:r,namespace:o="/copilot",socketOptions:s={}}){if(this.sessionIdKey="x-cimulate-copilot-session-id",this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.maxReconnectDelay=3e4,this.handleConnectAck=t=>{console.log("[Copilot SDK] Connect Ack:",t),this.socket.auth={[this.sessionIdKey]:t.sessionId}},this.handleDisconnect=t=>{console.warn(`[Copilot SDK] Disconnected: ${t}`),"io client disconnect"!==t&&(console.log(`[Copilot SDK] Disconnected due to ${t}. Attempting reconnect...`),this.retryConnect())},this.handleConnectError=t=>{console.error(`[Copilot SDK] Connect error: ${t.message}`);const e=t.message.match(/['"]error['"]:\s*['"](\w+)['"]/),n=e?.[1];n&&["InvalidApiKey","InvalidToken","BadRequest"].includes(n)?this.disconnect():this.socket.connected||this.socket.active||(console.log("[Copilot SDK] Retrying connect attempt..."),this.retryConnect())},this.offInternalHandlers=()=>{this.socket.off("connect_ack",this.handleConnectAck),this.socket.off("disconnect",this.handleDisconnect),this.off("connect_error",this.handleConnectError)},e&&n||!e&&!n)throw new Error("Provide exactly one authentication method: either 'apiKey' or 'apiToken', but not both.");const c=`${r}${o}`,i={};e?i["x-cimulate-api-key"]=e:n&&(i.Authorization=`Bearer ${n}`);const a=[K,s,{parser:B,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=t(c,l.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.on("connect_error",this.handleConnectError),this.socket.auth&&this.sessionIdKey in this.socket.auth&&(this.socket.auth={}),this.socket.connect()}retryConnect(){if(!(this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts))if(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.reconnectAttempts<this.maxReconnectAttempts){const t=Math.min(1e3*2**this.reconnectAttempts,this.maxReconnectDelay);console.info(`[Copilot SDK] Retry #${this.reconnectAttempts+1} in ${t}ms...`),this.reconnectTimeout=setTimeout((()=>{this.socket.connected||this.socket.active||(this.reconnectAttempts++,this.reconnect())}),t)}else console.error("[Copilot SDK] Max reconnect attempts reached.")}reconnect(){this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts||(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.socket.connect())}async browse(t,e){return this.asyncResponse("copilot_browse",t,e)}async search(t,e){return this.asyncResponse("copilot_search",t,e)}async facetedNavigation(t,e){return this.asyncResponse("faceted_navigation",t,e)}cancelRequest(t,e){return this.asyncResponse("cancel",t,e)}conversationReset(t,e){return this.asyncResponse("conversation_reset",t,e)}async productView(t,e){return this.asyncResponse("product_view",t,e)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}async getConversationEvents(t,e){return new Promise((n=>{this.socket.emit("conversation_events",t,(t=>{e&&e(t),n(t)}))}))}on(t,e){return this.socket.on(t,e),e}once(t,e){this.socket.once(t,e)}off(t,e){this.socket.off(t,e)}disconnect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}async asyncResponse(t,e,n){if(n)return void this.socket.emit(t,e,n);let r="";const o=async function*(t){const e=[];let n=!1,r=null;const o=await t({emit:t=>{e.push(t),r&&(r(),r=null)},cancel:()=>{n=!0}});try{for(;!n;)e.length>0?yield e.shift():await new Promise((t=>{r=t}));for(;e.length>0;)yield e.shift()}finally{await(o?.())}}((({emit:t,cancel:e})=>{const n=(n,o)=>{["done","error"].includes(o.name)&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise(((n,o)=>this.socket.emit(t,e,(t=>{"error"===t.name?o(new u(t)):(r=t?.id,n(t))})))),events:o}}}export{D as CimulateCopilot,u as CimulateCopilotException,_ as RAW_PROPERTY_VALUES};
2
- //# sourceMappingURL=bundle.cimulate.copilot-sdk.6b5f7916.esm.js.map
1
+ import t from"socket.io-client";var e=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===n}(t)}(t)};var n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(t,e){return!1!==e.clone&&e.isMergeableObject(t)?a((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function o(t,e,n){return t.concat(e).map((function(t){return r(t,n)}))}function s(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(e){return Object.propertyIsEnumerable.call(t,e)})):[]}(t))}function c(t,e){try{return e in t}catch(t){return!1}}function i(t,e,n){var o={};return n.isMergeableObject(t)&&s(t).forEach((function(e){o[e]=r(t[e],n)})),s(e).forEach((function(s){(function(t,e){return c(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,s)||(c(t,s)&&n.isMergeableObject(e[s])?o[s]=function(t,e){if(!e.customMerge)return a;var n=e.customMerge(t);return"function"==typeof n?n:a}(s,n)(t[s],e[s],n):o[s]=r(e[s],n))})),o}function a(t,n,s){(s=s||{}).arrayMerge=s.arrayMerge||o,s.isMergeableObject=s.isMergeableObject||e,s.cloneUnlessOtherwiseSpecified=r;var c=Array.isArray(n);return c===Array.isArray(t)?c?s.arrayMerge(t,n,s):i(t,n,s):r(n,s)}a.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return a(t,n,e)}),{})};var l=a;class u{constructor(t){Object.assign(this,t)}}function h(t){if(t)return function(t){for(var e in h.prototype)t[e]=h.prototype[e];return t}(t)}h.prototype.on=h.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},h.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},h.prototype.off=h.prototype.removeListener=h.prototype.removeAllListeners=h.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o<r.length;o++)if((n=r[o])===e||n.fn===e){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},h.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,e)}return this},h.prototype.emitReserved=h.prototype.emit,h.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},h.prototype.hasListeners=function(t){return!!this.listeners(t).length};const f="function"==typeof ArrayBuffer,p=Object.prototype.toString,y="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===p.call(Blob),d="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===p.call(File);function m(t){return f&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||y&&t instanceof Blob||d&&t instanceof File}function b(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(b(t[e]))return!0;return!1}if(m(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return b(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&b(t[e]))return!0;return!1}function A(t){const e=[],n=t.data,r=t;return r.data=k(n,e),r.attachments=e.length,{packet:r,buffers:e}}function k(t,e){if(!t)return t;if(m(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=k(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=k(t[r],e));return n}return t}function g(t,e){return t.data=E(t.data,e),delete t.attachments,t}function E(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=E(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=E(t[n],e));return t}const N=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var v;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(v||(v={}));class w{constructor(t){this.replacer=t}encode(t){return t.type!==v.EVENT&&t.type!==v.ACK||!b(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===v.EVENT?v.BINARY_EVENT:v.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==v.BINARY_EVENT&&t.type!==v.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=A(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function C(t){return"[object Object]"===Object.prototype.toString.call(t)}class O extends h{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===v.BINARY_EVENT;n||e.type===v.BINARY_ACK?(e.type=n?v.EVENT:v.ACK,this.reconstructor=new R(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!m(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===v[n.type])throw new Error("unknown packet type "+n.type);if(n.type===v.BINARY_EVENT||n.type===v.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const o=t.substring(r,e);if(o!=Number(o)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e;){if(","===t.charAt(e))break;if(e===t.length)break}n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!O.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case v.CONNECT:return C(e);case v.DISCONNECT:return void 0===e;case v.CONNECT_ERROR:return"string"==typeof e||C(e);case v.EVENT:case v.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===N.indexOf(e[0]));case v.ACK:case v.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class R{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=g(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const _=["searchParams.facetFilters","browseParams.facetFilters","hits","products"];const T=(t,e,n)=>function r(o,s=[]){const c=Object.entries(o).map((([o,c])=>{const i=[...s,e(o)];return[t(o),c instanceof Object&&!n?.includes(i.join("."))?r(c,i):c]}));return Array.isArray(o)?c.map((t=>t[1])):Object.fromEntries(c)},j=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),I=T((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),_),S=T(j,j,_),B={Encoder:class extends w{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],I(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends O{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?S(t):t)):e))}}};const K={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};class D{constructor({apiKey:e,apiToken:n,baseUrl:r,namespace:o="/copilot",socketOptions:s={}}){if(this.sessionIdKey="x-cimulate-copilot-session-id",this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.maxReconnectDelay=3e4,this.handleConnectAck=t=>{console.log("[Copilot SDK] Connect Ack:",t),this.socket.auth={[this.sessionIdKey]:t.sessionId}},this.handleDisconnect=t=>{console.warn(`[Copilot SDK] Disconnected: ${t}`),"io client disconnect"!==t&&(console.log(`[Copilot SDK] Disconnected due to ${t}. Attempting reconnect...`),this.retryConnect())},this.handleConnectError=t=>{console.error(`[Copilot SDK] Connect error: ${t.message}`);const e=t.message.match(/['"]error['"]:\s*['"](\w+)['"]/),n=e?.[1];n&&["InvalidApiKey","InvalidToken","BadRequest"].includes(n)?this.disconnect():this.socket.connected||this.socket.active||(console.log("[Copilot SDK] Retrying connect attempt..."),this.retryConnect())},this.offInternalHandlers=()=>{this.socket.off("connect_ack",this.handleConnectAck),this.socket.off("disconnect",this.handleDisconnect),this.off("connect_error",this.handleConnectError)},e&&n||!e&&!n)throw new Error("Provide exactly one authentication method: either 'apiKey' or 'apiToken', but not both.");const c=`${r}${o}`,i={};e?i["x-cimulate-api-key"]=e:n&&(i.Authorization=`Bearer ${n}`);const a=[K,s,{parser:B,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=t(c,l.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.on("connect_error",this.handleConnectError),this.socket.auth&&this.sessionIdKey in this.socket.auth&&(this.socket.auth={}),this.socket.connect()}retryConnect(){if(!(this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts))if(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.reconnectAttempts<this.maxReconnectAttempts){const t=Math.min(1e3*2**this.reconnectAttempts,this.maxReconnectDelay);console.info(`[Copilot SDK] Retry #${this.reconnectAttempts+1} in ${t}ms...`),this.reconnectTimeout=setTimeout((()=>{this.socket.connected||this.socket.active||(this.reconnectAttempts++,this.reconnect())}),t)}else console.error("[Copilot SDK] Max reconnect attempts reached.")}reconnect(){this.socket.connected||this.socket.active||this.reconnectAttempts>=this.maxReconnectAttempts||(this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0,this.reconnectAttempts=0),this.socket.connect())}async browse(t,e){return this.asyncResponse("copilot_browse",t,e)}async search(t,e){return this.asyncResponse("copilot_search",t,e)}async facetedNavigation(t,e){return this.asyncResponse("faceted_navigation",t,e)}cancelRequest(t,e){return this.asyncResponse("cancel",t,e)}conversationReset(t,e){return this.asyncResponse("conversation_reset",t,e)}async productView(t,e){return this.asyncResponse("product_view",t,e)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}async getConversationEvents(t,e){return new Promise((n=>{this.socket.emit("conversation_events",t,(t=>{e&&e(t),n(t)}))}))}on(t,e){return this.socket.on(t,e),e}once(t,e){this.socket.once(t,e)}off(t,e){this.socket.off(t,e)}disconnect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.socket.disconnect()}onDisconnect(t){this.socket.on("disconnect",t)}async asyncResponse(t,e,n){if(n)return void this.socket.emit(t,e,n);let r="";const o=async function*(t){const e=[];let n=!1,r=null;const o=await t({emit:t=>{e.push(t),r&&(r(),r=null)},cancel:()=>{n=!0}});try{for(;!n;)e.length>0?yield e.shift():await new Promise((t=>{r=t}));for(;e.length>0;)yield e.shift()}finally{await(o?.())}}((({emit:t,cancel:e})=>{const n=(n,o)=>{["done","error"].includes(o.name)&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise(((n,o)=>this.socket.emit(t,e,(t=>{"error"===t.name?o(new u(t)):(r=t?.id,n(t))})))),events:o}}}export{D as CimulateCopilot,u as CimulateCopilotException,_ as RAW_PROPERTY_VALUES};
2
+ //# sourceMappingURL=bundle.cimulate.copilot-sdk.e5834e33.esm.js.map