@cimulate/copilot-sdk 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +27 -0
  2. package/dist/bundle.cimulate.copilot-sdk.2d2eeac4.umd.js +2 -0
  3. package/dist/bundle.cimulate.copilot-sdk.2d2eeac4.umd.js.map +1 -0
  4. package/dist/bundle.cimulate.copilot-sdk.2eb603f8.cjs.js +2 -0
  5. package/dist/bundle.cimulate.copilot-sdk.2eb603f8.cjs.js.map +1 -0
  6. package/dist/bundle.cimulate.copilot-sdk.3d873978.esm.js +2 -0
  7. package/dist/bundle.cimulate.copilot-sdk.3d873978.esm.js.map +1 -0
  8. package/dist/index.cjs.js +1 -1
  9. package/dist/index.cjs.js.map +1 -1
  10. package/dist/index.esm.js +1 -1
  11. package/dist/index.esm.js.map +1 -1
  12. package/dist/index.umd.js +1 -1
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/types/exceptions.d.ts +12 -0
  15. package/dist/types/index.d.ts +2 -1
  16. package/dist/types/model/CancelAck.d.ts +1 -1
  17. package/dist/types/model/ConnectError.d.ts +12 -0
  18. package/dist/types/model/CopilotAPIEvent.d.ts +8 -2
  19. package/dist/types/model/CopilotApiAck.d.ts +9 -0
  20. package/dist/types/model/{Error.d.ts → CopilotError.d.ts} +2 -2
  21. package/dist/types/model/CopilotEvent.d.ts +3 -2
  22. package/dist/types/model/CopilotSearchAck.d.ts +1 -1
  23. package/dist/types/model/FacetedNavigationAck.d.ts +1 -1
  24. package/dist/types/model/OperationAck.d.ts +1 -1
  25. package/dist/types/model/SearchParams.d.ts +1 -0
  26. package/dist/types/model/index.d.ts +3 -1
  27. package/examples/callbacks.ts +37 -14
  28. package/examples/generator.ts +25 -11
  29. package/examples/reconnect.ts +5 -0
  30. package/package.json +1 -1
  31. package/src/copilot.ts +30 -17
  32. package/src/exceptions.ts +16 -0
  33. package/src/index.ts +2 -1
  34. package/src/model/CancelAck.ts +1 -1
  35. package/src/model/ConnectError.ts +12 -0
  36. package/src/model/CopilotAPIEvent.ts +10 -2
  37. package/src/model/CopilotApiAck.ts +14 -0
  38. package/src/model/{Error.ts → CopilotError.ts} +2 -2
  39. package/src/model/CopilotEvent.ts +3 -2
  40. package/src/model/CopilotSearchAck.ts +1 -1
  41. package/src/model/FacetedNavigationAck.ts +1 -1
  42. package/src/model/OperationAck.ts +1 -1
  43. package/src/model/SearchParams.ts +1 -0
  44. package/src/model/index.ts +3 -1
  45. package/dist/bundle.cimulate.copilot-sdk.0e06e483.cjs.js +0 -2
  46. package/dist/bundle.cimulate.copilot-sdk.0e06e483.cjs.js.map +0 -1
  47. package/dist/bundle.cimulate.copilot-sdk.1564b7e1.esm.js +0 -2
  48. package/dist/bundle.cimulate.copilot-sdk.1564b7e1.esm.js.map +0 -1
  49. package/dist/bundle.cimulate.copilot-sdk.7893ae5e.umd.js +0 -2
  50. package/dist/bundle.cimulate.copilot-sdk.7893ae5e.umd.js.map +0 -1
package/src/copilot.ts CHANGED
@@ -4,8 +4,9 @@ import deepmerge from "deepmerge";
4
4
  import type {
5
5
  Cancel,
6
6
  CancelAck,
7
- CommonRequiredFields,
7
+ CopilotAPIAck,
8
8
  ConnectAck,
9
+ ConnectError,
9
10
  CopilotAPIEvent,
10
11
  CopilotEventName,
11
12
  CopilotSearch,
@@ -15,6 +16,7 @@ import type {
15
16
  ReturnedFields,
16
17
  SessionInformation,
17
18
  } from "./model";
19
+ import CimulateCopilotException from "./exceptions";
18
20
  import { SnakeCaseParser } from "./parser";
19
21
  import { asyncGenerator } from "./generator";
20
22
 
@@ -29,7 +31,7 @@ interface CommonOptions {
29
31
  socketOptions?: Omit<SocketIOOptions, "withCredentials" | "parser">;
30
32
  }
31
33
 
32
- type CimulateCopilotOptions = (ApiKeyAuth | ApiTokenAuth) & CommonOptions;
34
+ type CimulateCopilotOptions = (ApiKeyAuth | ApiTokenAuth) & CommonOptions;
33
35
 
34
36
  const socketDefaults: SocketIOOptions = {
35
37
  path: "/api/v1/socket.io",
@@ -96,7 +98,6 @@ export default class CimulateCopilot<
96
98
  this.socket.auth = {
97
99
  [this.sessionIdKey]: event.sessionId,
98
100
  };
99
- this.reconnectAttempts = 0;
100
101
  };
101
102
 
102
103
  private readonly handleDisconnect = (reason: Socket.DisconnectReason) => {
@@ -107,24 +108,29 @@ export default class CimulateCopilot<
107
108
  }
108
109
  };
109
110
 
110
- private readonly handleConnectError = (err: Error) => {
111
+ private readonly handleConnectError = (err: ConnectError) => {
111
112
  console.error(`[Copilot SDK] Connect error: ${err.message}`);
112
113
 
113
- if (err.message === "Invalid API Key") {
114
+ const authErrors = ["InvalidApiKey", "InvalidToken", "BadRequest"];
115
+
116
+ // Use regex to extract error type
117
+ const errorMatch = err.message.match(/['"]error['"]:\s*['"](\w+)['"]/);
118
+ const errorType = errorMatch?.[1];
119
+
120
+ if (errorType && authErrors.includes(errorType)) {
114
121
  this.disconnect();
115
122
  }
116
-
117
123
  // Trigger reconnect logic with backoff
118
- if (!this.socket.connected && !this.socket.active) {
124
+ else if (!this.socket.connected && !this.socket.active) {
119
125
  console.log(`[Copilot SDK] Retrying connect attempt...`);
120
126
  this.retryConnect();
121
127
  }
122
- };
128
+ };
123
129
 
124
130
  private readonly offInternalHandlers = () => {
125
131
  this.socket.off("connect_ack", this.handleConnectAck);
126
132
  this.socket.off("disconnect", this.handleDisconnect);
127
- this.socket.off("connect_error", this.handleConnectError);
133
+ this.off("connect_error", this.handleConnectError);
128
134
  }
129
135
 
130
136
  connect() {
@@ -132,6 +138,7 @@ export default class CimulateCopilot<
132
138
  if (this.reconnectTimeout) {
133
139
  clearTimeout(this.reconnectTimeout);
134
140
  this.reconnectTimeout = undefined;
141
+ this.reconnectAttempts = 0;
135
142
  }
136
143
 
137
144
  // Clear old handlers to avoid duplicates
@@ -140,7 +147,7 @@ export default class CimulateCopilot<
140
147
  // Add fresh handlers
141
148
  this.on("connect_ack", this.handleConnectAck);
142
149
  this.socket.on("disconnect", this.handleDisconnect);
143
- this.socket.on("connect_error", this.handleConnectError);
150
+ this.on("connect_error", this.handleConnectError);
144
151
 
145
152
  // Clear old auth state
146
153
  if (this.socket.auth && this.sessionIdKey in this.socket.auth) {
@@ -186,6 +193,7 @@ export default class CimulateCopilot<
186
193
  if (this.reconnectTimeout) {
187
194
  clearTimeout(this.reconnectTimeout);
188
195
  this.reconnectTimeout = undefined;
196
+ this.reconnectAttempts = 0;
189
197
  }
190
198
 
191
199
  this.socket.connect();
@@ -298,7 +306,7 @@ export default class CimulateCopilot<
298
306
  this.socket.on("disconnect", handler);
299
307
  }
300
308
 
301
- private async asyncResponse<P, A extends CommonRequiredFields>(
309
+ private async asyncResponse<P, A extends CopilotAPIAck>(
302
310
  operation: string,
303
311
  payload: P,
304
312
  handler?: (event: A) => void
@@ -313,9 +321,11 @@ export default class CimulateCopilot<
313
321
  const events = asyncGenerator<CopilotAPIEvent<T>>(({ emit, cancel }) => {
314
322
  const handler = (
315
323
  event: string,
316
- payload: Exclude<CopilotAPIEvent<T>, ConnectAck>
324
+ payload: Exclude<CopilotAPIEvent<T>, ConnectAck | ConnectError>
317
325
  ) => {
318
- if (payload.name == "done") cancel();
326
+ if (["done", "error"].includes(payload.name)) {
327
+ cancel();
328
+ }
319
329
  if (payload.eventSourceId == eventSourceId) emit(payload);
320
330
  };
321
331
 
@@ -326,11 +336,14 @@ export default class CimulateCopilot<
326
336
  };
327
337
  });
328
338
 
329
- const result: A = await new Promise((resolve) =>
330
- // TODO - error handling
339
+ const result: A = await new Promise((resolve, reject) =>
331
340
  this.socket.emit(operation, payload, (ack: A) => {
332
- eventSourceId = ack?.id;
333
- resolve(ack);
341
+ if (ack.name === "error") {
342
+ reject(new CimulateCopilotException(ack));
343
+ } else {
344
+ eventSourceId = ack?.id;
345
+ resolve(ack);
346
+ }
334
347
  })
335
348
  );
336
349
 
@@ -0,0 +1,16 @@
1
+ import type { CopilotError } from "./model";
2
+
3
+ export default class CimulateCopilotException implements CopilotError {
4
+ sessionId!: string;
5
+ id!: string;
6
+ createdAt!: string;
7
+ eventSourceId!: string;
8
+ message!: string;
9
+ status!: number;
10
+ error!: string;
11
+ name!: "error";
12
+
13
+ constructor(error: CopilotError) {
14
+ Object.assign(this, error);
15
+ }
16
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import CimulateCopilot from "./copilot";
2
+ import CimulateCopilotException from "./exceptions";
2
3
  export * from "./model";
3
- export { CimulateCopilot };
4
+ export { CimulateCopilot, CimulateCopilotException };
@@ -5,6 +5,6 @@ interface CancelAck {
5
5
  sessionId: string;
6
6
  id: string;
7
7
  createdAt: string;
8
- status: string;
8
+ status: number;
9
9
  }
10
10
  export { CancelAck };
@@ -0,0 +1,12 @@
1
+ import { ConnectAckMetadata } from './ConnectAckMetadata';
2
+ interface ConnectError {
3
+ sessionId: string;
4
+ id: string;
5
+ createdAt: string;
6
+ status: number;
7
+ error: string;
8
+ message: string;
9
+ metadata: ConnectAckMetadata;
10
+ name: 'connect_error';
11
+ }
12
+ export { ConnectError };
@@ -1,10 +1,16 @@
1
+ /**
2
+ This not generated automatically by the generate model script.
3
+ For any new event, manually create an entry here.
4
+ */
1
5
  import { ConnectAck } from "./ConnectAck";
6
+ import { ConnectError } from "./ConnectError";
7
+ import { CopilotError } from "./CopilotError";
2
8
  import { DisplayProducts } from "./DisplayProducts";
3
9
  import { Done } from "./Done";
4
- import { Error } from "./Error";
5
10
  import { FollowUp } from "./FollowUp";
6
11
  import { Inquiry } from "./Inquiry";
7
12
  import { PartialInquiry } from "./PartialInquiry";
13
+ import { Progress } from "./Progress";
8
14
  import { RefinedSearch } from "./RefinedSearch";
9
15
  import { ReturnedFields } from "./ReturnedFields";
10
16
 
@@ -12,12 +18,14 @@ export type CopilotAPIEvent<
12
18
  TReturnedFields extends ReturnedFields = ReturnedFields
13
19
  > =
14
20
  | ConnectAck
21
+ | ConnectError
15
22
  | DisplayProducts<TReturnedFields>
16
23
  | Done
17
- | Error
24
+ | CopilotError
18
25
  | FollowUp
19
26
  | Inquiry
20
27
  | PartialInquiry
28
+ | Progress
21
29
  | RefinedSearch<TReturnedFields>;
22
30
 
23
31
  export type CopilotEventName = CopilotAPIEvent["name"];
@@ -0,0 +1,14 @@
1
+ /**
2
+ This not generated automatically by the generate model script.
3
+ For any new event, manually create an entry here.
4
+ */
5
+ import { CancelAck } from "./CancelAck";
6
+ import { CopilotError } from "./CopilotError";
7
+ import { CopilotSearchAck } from "./CopilotSearchAck";
8
+ import { FacetedNavigationAck } from "./FacetedNavigationAck";
9
+
10
+ export type CopilotAPIAck =
11
+ | CancelAck
12
+ | CopilotSearchAck
13
+ | FacetedNavigationAck
14
+ | CopilotError;
@@ -1,5 +1,5 @@
1
1
 
2
- interface Error {
2
+ interface CopilotError {
3
3
  sessionId: string;
4
4
  id: string;
5
5
  createdAt: string;
@@ -9,4 +9,4 @@ interface Error {
9
9
  error: string;
10
10
  name: 'error';
11
11
  }
12
- export { Error };
12
+ export { CopilotError };
@@ -1,10 +1,11 @@
1
1
  import { CommonMetadata } from './CommonMetadata';
2
2
  import { ConnectAck } from './ConnectAck';
3
+ import { CopilotError } from './CopilotError';
3
4
  import { DisplayProducts } from './DisplayProducts';
4
5
  import { Done } from './Done';
5
- import { Error } from './Error';
6
6
  import { FollowUp } from './FollowUp';
7
7
  import { Inquiry } from './Inquiry';
8
+ import { Progress } from './Progress';
8
9
  import { RefinedSearch } from './RefinedSearch';
9
10
  import { ReturnedFields } from "./ReturnedFields";
10
11
 
@@ -13,7 +14,7 @@ interface CopilotEvent<TReturnedFields extends ReturnedFields = ReturnedFields>
13
14
  sessionId: string;
14
15
  name: string;
15
16
  eventSourceId: string;
16
- data: ConnectAck | FollowUp | Inquiry | DisplayProducts<TReturnedFields> | RefinedSearch<TReturnedFields> | Done | Error;
17
+ data: ConnectAck | FollowUp | Inquiry | DisplayProducts<TReturnedFields> | RefinedSearch<TReturnedFields> | Progress | Done | CopilotError;
17
18
  createdAt: string;
18
19
  metadata: CommonMetadata;
19
20
  }
@@ -5,6 +5,6 @@ interface CopilotSearchAck {
5
5
  sessionId: string;
6
6
  id: string;
7
7
  createdAt: string;
8
- status: string;
8
+ status: number;
9
9
  }
10
10
  export { CopilotSearchAck };
@@ -5,6 +5,6 @@ interface FacetedNavigationAck {
5
5
  sessionId: string;
6
6
  id: string;
7
7
  createdAt: string;
8
- status: string;
8
+ status: number;
9
9
  }
10
10
  export { FacetedNavigationAck };
@@ -4,7 +4,7 @@ interface OperationAck {
4
4
  id: string;
5
5
  createdAt: string;
6
6
  name: string;
7
- status: string;
7
+ status: number;
8
8
  request: any;
9
9
  }
10
10
  export { OperationAck };
@@ -4,5 +4,6 @@ interface SearchParams {
4
4
  facetFilters?: Record<string, string[]>;
5
5
  pageSize?: number;
6
6
  page?: number;
7
+ includeFacets?: boolean;
7
8
  }
8
9
  export { SearchParams };
@@ -5,7 +5,10 @@ export * from './CommonMetadata';
5
5
  export * from './CommonRequiredFields';
6
6
  export * from './ConnectAck';
7
7
  export * from './ConnectAckMetadata';
8
+ export * from './ConnectError';
8
9
  export * from './CopilotAPIEvent';
10
+ export * from './CopilotApiAck';
11
+ export * from './CopilotError';
9
12
  export * from './CopilotEvent';
10
13
  export * from './CopilotSearch';
11
14
  export * from './CopilotSearchAck';
@@ -13,7 +16,6 @@ export * from './CopilotSearchSuggestion';
13
16
  export * from './customization';
14
17
  export * from './DisplayProducts';
15
18
  export * from './Done';
16
- export * from './Error';
17
19
  export * from './Facet';
18
20
  export * from './FacetedNavigation';
19
21
  export * from './FacetedNavigationAck';
@@ -1,2 +0,0 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("socket.io-client")),n=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===r}(t)}(t)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function o(t,e){return!1!==e.clone&&e.isMergeableObject(t)?l((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function c(t,e,n){return t.concat(e).map((function(t){return o(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 i(t,e){try{return e in t}catch(t){return!1}}function a(t,e,n){var r={};return n.isMergeableObject(t)&&s(t).forEach((function(e){r[e]=o(t[e],n)})),s(e).forEach((function(c){(function(t,e){return i(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,c)||(i(t,c)&&n.isMergeableObject(e[c])?r[c]=function(t,e){if(!e.customMerge)return l;var n=e.customMerge(t);return"function"==typeof n?n:l}(c,n)(t[c],e[c],n):r[c]=o(e[c],n))})),r}function l(t,e,r){(r=r||{}).arrayMerge=r.arrayMerge||c,r.isMergeableObject=r.isMergeableObject||n,r.cloneUnlessOtherwiseSpecified=o;var s=Array.isArray(e);return s===Array.isArray(t)?s?r.arrayMerge(t,e,r):a(t,e,r):o(e,r)}l.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return l(t,n,e)}),{})};var u=l;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 C;!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"}(C||(C={}));class O{constructor(t){this.replacer=t}encode(t){return t.type!==C.EVENT&&t.type!==C.ACK||!b(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===C.EVENT?C.BINARY_EVENT:C.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==C.BINARY_EVENT&&t.type!==C.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 v(t){return"[object Object]"===Object.prototype.toString.call(t)}class _ 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===C.BINARY_EVENT;n||e.type===C.BINARY_ACK?(e.type=n?C.EVENT:C.ACK,this.reconstructor=new w(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===C[n.type])throw new Error("unknown packet type "+n.type);if(n.type===C.BINARY_EVENT||n.type===C.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(!_.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 C.CONNECT:return v(e);case C.DISCONNECT:return void 0===e;case C.CONNECT_ERROR:return"string"==typeof e||v(e);case C.EVENT:case C.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===N.indexOf(e[0]));case C.ACK:case C.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class w{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 R=["searchParams.facetFilters","hits","products"];const T=(t,e,n)=>function r(o,c=[]){const s=Object.entries(o).map((([o,s])=>{const i=[...c,e(o)];return[t(o),s instanceof Object&&!n?.includes(i.join("."))?r(s,i):s]}));return Array.isArray(o)?s.map((t=>t[1])):Object.fromEntries(s)},j=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),S=T((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),R),I=T(j,j,R),B={Encoder:class extends O{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],S(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends _{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?I(t):t)):e))}}};const K={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};exports.CimulateCopilot=class{constructor({apiKey:t,apiToken:n,baseUrl:r,namespace:o="/copilot",socketOptions:c={}}){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.reconnectAttempts=0},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}`),"Invalid API Key"===t.message&&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.socket.off("connect_error",this.handleConnectError)},t&&n||!t&&!n)throw new Error("Provide exactly one authentication method: either 'apiKey' or 'apiToken', but not both.");const s=`${r}${o}`,i={};t?i["x-cimulate-api-key"]=t:n&&(i.Authorization=`Bearer ${n}`);const a=[K,c,{parser:B,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=e.default(s,u.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.socket.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.socket.connect())}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)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}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"==o.name&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise((n=>this.socket.emit(t,e,(t=>{r=t?.id,n(t)})))),events:o}}},exports.RAW_PROPERTY_VALUES=R;
2
- //# sourceMappingURL=bundle.cimulate.copilot-sdk.0e06e483.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.cimulate.copilot-sdk.0e06e483.cjs.js","sources":["../node_modules/deepmerge/dist/cjs.js","../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","/**\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","Emitter","obj","mixin","on","addEventListener","event","fn","this","_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","constructor","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","error","message","disconnect","connected","active","offInternalHandlers","socketioEndpoint","extraHeaders","parser","withCredentials","transportOptions","polling","io","connect","reconnectTimeout","clearTimeout","delay","Math","min","info","setTimeout","reconnect","search","callback","asyncResponse","facetedNavigation","cancelRequest","requestSessionInformation","Promise","resolve","response","name","handler","onDisconnect","operation","eventSourceId","events","async","subscriber","cancelled","resolveNext","unsubscribe","cancel","shift","asyncGenerator","onAny","offAny","ack"],"mappings":"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"}
@@ -1,2 +0,0 @@
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 c(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 s(t,e){try{return e in t}catch(t){return!1}}function i(t,e,n){var o={};return n.isMergeableObject(t)&&c(t).forEach((function(e){o[e]=r(t[e],n)})),c(e).forEach((function(c){(function(t,e){return s(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,c)||(s(t,c)&&n.isMergeableObject(e[c])?o[c]=function(t,e){if(!e.customMerge)return a;var n=e.customMerge(t);return"function"==typeof n?n:a}(c,n)(t[c],e[c],n):o[c]=r(e[c],n))})),o}function a(t,n,c){(c=c||{}).arrayMerge=c.arrayMerge||o,c.isMergeableObject=c.isMergeableObject||e,c.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(n);return s===Array.isArray(t)?s?c.arrayMerge(t,n,c):i(t,n,c):r(n,c)}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;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 u="function"==typeof ArrayBuffer,f=Object.prototype.toString,p="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===f.call(Blob),y="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===f.call(File);function d(t){return u&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||p&&t instanceof Blob||y&&t instanceof File}function m(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(m(t[e]))return!0;return!1}if(d(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return m(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&m(t[e]))return!0;return!1}function b(t){const e=[],n=t.data,r=t;return r.data=A(n,e),r.attachments=e.length,{packet:r,buffers:e}}function A(t,e){if(!t)return t;if(d(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]=A(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]=A(t[r],e));return n}return t}function k(t,e){return t.data=g(t.data,e),delete t.attachments,t}function g(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]=g(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=g(t[n],e));return t}const E=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var N;!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"}(N||(N={}));class C{constructor(t){this.replacer=t}encode(t){return t.type!==N.EVENT&&t.type!==N.ACK||!m(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===N.EVENT?N.BINARY_EVENT:N.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==N.BINARY_EVENT&&t.type!==N.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=b(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function O(t){return"[object Object]"===Object.prototype.toString.call(t)}class v 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===N.BINARY_EVENT;n||e.type===N.BINARY_ACK?(e.type=n?N.EVENT:N.ACK,this.reconstructor=new w(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!d(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[n.type])throw new Error("unknown packet type "+n.type);if(n.type===N.BINARY_EVENT||n.type===N.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(!v.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 N.CONNECT:return O(e);case N.DISCONNECT:return void 0===e;case N.CONNECT_ERROR:return"string"==typeof e||O(e);case N.EVENT:case N.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===E.indexOf(e[0]));case N.ACK:case N.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class w{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=k(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const _=["searchParams.facetFilters","hits","products"];const R=(t,e,n)=>function r(o,c=[]){const s=Object.entries(o).map((([o,s])=>{const i=[...c,e(o)];return[t(o),s instanceof Object&&!n?.includes(i.join("."))?r(s,i):s]}));return Array.isArray(o)?s.map((t=>t[1])):Object.fromEntries(s)},T=t=>t.replace(/_([a-z])/g,((t,e)=>e.toUpperCase())),j=R((t=>t.replace(/([A-Z])/g,"_$1").toLowerCase()),(t=>t),_),I=R(T,T,_),S={Encoder:class extends C{encode(t){return super.encode({...t,data:2==t.data?.length?[t.data[0],j(t.data[1])]:1==t.data?.length?[t.data[0]]:"object"==typeof t.data&&null!=t.data?t.data:void 0})}},Decoder:class extends v{constructor(){super(((t,e)=>""==t&&Array.isArray(e)?e.map((t=>t instanceof Object?I(t):t)):e))}}};const B={path:"/api/v1/socket.io",autoConnect:!1,transports:["polling","websocket"],upgrade:!0,timeout:1e4};class K{constructor({apiKey:e,apiToken:n,baseUrl:r,namespace:o="/copilot",socketOptions:c={}}){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.reconnectAttempts=0},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}`),"Invalid API Key"===t.message&&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.socket.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 s=`${r}${o}`,i={};e?i["x-cimulate-api-key"]=e:n&&(i.Authorization=`Bearer ${n}`);const a=[B,c,{parser:S,withCredentials:!0,transportOptions:{polling:{extraHeaders:i}}}];this.socket=t(s,l.all(a))}connect(){this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.offInternalHandlers(),this.on("connect_ack",this.handleConnectAck),this.socket.on("disconnect",this.handleDisconnect),this.socket.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.socket.connect())}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)}async requestSessionInformation(t){return new Promise((e=>{this.socket.emit("session_info",(n=>{t&&t(n),e(n)}))}))}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"==o.name&&e(),o.eventSourceId==r&&t(o)};return this.socket.onAny(n),async()=>{this.socket.offAny(n)}}));return{result:await new Promise((n=>this.socket.emit(t,e,(t=>{r=t?.id,n(t)})))),events:o}}}export{K as CimulateCopilot,_ as RAW_PROPERTY_VALUES};
2
- //# sourceMappingURL=bundle.cimulate.copilot-sdk.1564b7e1.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.cimulate.copilot-sdk.1564b7e1.esm.js","sources":["../node_modules/deepmerge/dist/cjs.js","../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","/**\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","Emitter","obj","mixin","on","addEventListener","event","fn","this","_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","constructor","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","CimulateCopilot","apiKey","apiToken","baseUrl","namespace","socketOptions","sessionIdKey","reconnectAttempts","maxReconnectAttempts","maxReconnectDelay","handleConnectAck","console","log","socket","auth","sessionId","handleDisconnect","reason","warn","retryConnect","handleConnectError","err","error","message","disconnect","connected","active","offInternalHandlers","socketioEndpoint","extraHeaders","parser","withCredentials","transportOptions","polling","io","connect","reconnectTimeout","clearTimeout","delay","Math","min","info","setTimeout","reconnect","search","callback","asyncResponse","facetedNavigation","cancelRequest","requestSessionInformation","Promise","resolve","response","name","handler","onDisconnect","operation","eventSourceId","events","async","subscriber","cancelled","resolveNext","unsubscribe","cancel","shift","asyncGenerator","onAny","offAny","ack"],"mappings":"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"}