twilio-taskrouter 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.commonjs2.js.LICENSE.txt */
2
- /*! twilio-taskrouter.js 0.8.0 */(()=>{var e={349:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Supervisor:()=>Ce,TaskRouterEventHandler:()=>Re,Worker:()=>Oe,Workspace:()=>ze});const i=require("lodash");var s=r.n(i);const n=r(142).Gf,o=r(622),a=["trace","debug","info","warn","error","silent"];class d{constructor(e,t){if(!e)throw n.INVALID_ARGUMENT.clone("Error instantiating Logger. <string>moduleName is a required parameter.");this._log=o.getLogger(e),a.forEach(function(e){this[e]=(...t)=>this._log[e](this._getTimestamp(),...t)}.bind(this)),t&&this.setLevel(t)}setLevel(e){if(-1===a.indexOf(e))throw n.INVALID_ARGUMENT.clone("Error setting Logger level. <string>level must be one of ['trace', 'debug', 'info', 'warn', 'error', 'silent']");this._log.setLevel(e,!1),this._log.setDefaultLevel(e)}getLevel(){return a[this._log.getLevel()]}_getTimestamp(){return`[${(new Date).toISOString()}]`}}class c{constructor(e,t={}){if(!s().isString(e))throw new TypeError("Failed to initialize Configuration. <string>token is a required parameter.");if(this.logIdentifier=t.logIdentifier||+new Date,this._logLevel=t.logLevel,this._log=new d(`Configuration-${this.logIdentifier}`,this._logLevel),this.token=e,this.EB_SERVER=t.ebServer,this.WS_SERVER=t.wsServer,t.ebServer||t.wsServer)return this._log.warn('"ebServer" and "wsServer" parameter will be removed in next major version. You may start using "region" and "edge".');let r="";t.region&&"us1"!==t.region&&(r+=`.${t.region}`),this.EB_SERVER=`https://event-bridge${r}.twilio.com/v1/wschannels`,this.WS_SERVER=`wss://event-bridge${r}.twilio.com/v1/wschannels`}updateToken(e){if(!s().isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this.token=e}getLogIdentifier(){return this.logIdentifier}}var h=r(142);const l=require("events");var u=r(813);const p="0.8.0",g=global.window||global,_=g.WebSocket?g.WebSocket:r(352),k=p;class f extends l.EventEmitter{constructor(e,t={}){if(super(),!(e&&e instanceof Oe))throw h.Gf.INVALID_ARGUMENT.clone("<Worker>worker is a required parameter to construct EventBridgeSignaling.");const r=e.getLogger(`EventBridgeSignaling-${e.sid}`);if(!s().isNil(t.closeExistingSessions)&&!s().isBoolean(t.closeExistingSessions))throw new TypeError("Invalid type passed for <boolean>closeExistingSessions");this._heartbeat=null,this.webSocket=null,this._log=r,this._worker=e,this.closeExistingSessions=t.closeExistingSessions||!1,this._config=e._config,this.reconnect=!1,this.tokenTimer=null,this.setUpWebSocket()}updateToken(e){if(!e)throw h.Gf.INVALID_ARGUMENT.clone("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this.setTokenExpirationEvent(),this._log.info("Updated token for Worker "+this._worker.sid),this.reconnect=!0,this.webSocket.readyState!==this.webSocket.CLOSING&&this.webSocket.readyState!==this.webSocket.CLOSED||this.createWebSocket()}setTokenExpirationEvent(){clearTimeout(this.tokenTimer),this.tokenTimer=setTimeout((()=>{this.reconnect=!1,this.emit("tokenExpired")}),this.tokenLifetime-5e3)}setUpWebSocket(){this._heartbeat&&(this._heartbeat.onsleep=()=>{}),this._heartbeat=new u.y({interval:60}),this.createWebSocket()}setLifetime(e){this.tokenLifetime=e,this.setTokenExpirationEvent()}createWebSocket(){this.numAttempts=1,this.reconnect=!0;const e=`?${h.Iv.TOKEN}=${this._config.token}&${h.Iv.CLOSE_EXISTING_SESSIONS}=${this.closeExistingSessions}&${h.Iv.CLIENT_VERSION}=${k}`;this.webSocket=new _(this._config.WS_SERVER+e),this.webSocket.onopen=()=>{this.numAttempts=1,this.emit("connected"),this._heartbeat.onsleep=()=>{this._log.info("Heartbeat not received in the past 60 seconds. Proceeding to disconnect websocket."),this.webSocket.close()},this._heartbeat.beat()},this.webSocket.onmessage=e=>{if(this._log.debug("Received event",e.data),this._heartbeat.beat(),0===e.data.trim().length)return;let t;try{t=JSON.parse(e.data)}catch(t){return this._log.error("Received data is not valid JSON: "+e.data),void this.emit("error",h.Gf.INVALID_GATEWAY_MESSAGE)}this._log.debug("Emitting event: %s with %s",t.event_type,JSON.stringify(t.payload)),this.emit(t.event_type,t.payload||null,t.event_type)},this.webSocket.onerror=e=>{this._log.error("WebSocket error occurred: ",e),this.emit("error",h.Gf.GATEWAY_CONNECTION_FAILED)},this.webSocket.onclose=e=>{this.reconnect?this._log.info("WebSocket connection has closed. Trying to reconnect."):this._log.info("WebSocket connection has closed. Not reconnecting due to token expiration.");let t=e.reason;const r=e.code;if(s().isEmpty(t)&&(t=`Websocket closed with errorCode=${r}`),this.emit("disconnected",{message:t}),this._heartbeat.onsleep=()=>{},this.reconnect){const e=this.generateBackOffInterval(this.numAttempts);setTimeout((()=>{this.numAttempts++,this.createWebSocket()}),e)}}}generateBackOffInterval(e){const t=Math.ceil(800),r=Math.floor(1e3*Math.min(30,Math.pow(2,e)-1));return Math.round(Math.floor(Math.random()*(r-t+1))+t)}disconnect(){this._log.info("Disconnecting websocket"),null!==this.webSocket&&(["onmessage","onclose","onopen","onerror"].forEach((e=>{this.webSocket[e]=null})),this._heartbeat.onsleep=()=>{},this.webSocket.close()),this.emit("disconnected",{message:"SDK Disconnect"})}}const w=require("axios"),v=require("https"),m={GET:"GET",POST:"POST"};Object.freeze(m);const S=p;class E{constructor(e){if(!(e instanceof c))throw new TypeError("Failed to initialize Request. <Configuration>config is a required parameter.");const t=new v.Agent({maxVersion:"TLSv1.2",minVersion:"TLSv1.2"});this._config=e,this._postClient=w.create({method:m.POST,timeout:h.jz,headers:{clientVersion:S},httpsAgent:t})}post(e,t,r,i){if(!e)throw new Error("Failed to make POST request. <string>url is a required parameter.");if(!s().isObject(t))throw new Error("Failed to make POST request. <object>paramsJSON is a required parameter.");if(!r)throw new Error("Failed to make POST request. <string>apiVersion is a required parameter.");const n=this.buildRequest(m.POST,e,t);let o={apiVersion:r};return this._postClient.post(this._config.EB_SERVER,n,{headers:o}).then((e=>Promise.resolve(e.data.payload)))}get(e,t,r){if(!e)throw new Error("Failed to make GET request. <string>url is a required parameter.");if(!t)throw new Error("Failed to make GET request. <string>apiVersion is a required parameter.");if(r=r||{},!s().isObject(r))throw new Error("Failed to make GET request. <object>paramsJSON is a required parameter.");const i=this.buildRequest(m.GET,e,r);return this._postClient.post(this._config.EB_SERVER,i,{headers:{apiVersion:t}}).then((e=>Promise.resolve(e.data.payload)))}buildRequest(e,t,r){return JSON.stringify({url:t,method:e,params:r,token:this._config.token})}}class T{#e;#t;constructor(e=800,t=3e3){this.#r(e)&&(this.#e=e),this.#r(t)&&(this.#t=t)}#r(e){return Number.isFinite(e)&&e>0}#i(e=100){return Math.ceil(Math.random()*e)}generateBackoffInterval(e){if(!this.#r(e))throw new Error("Interval count should be a positive finite number");const t=Math.max(this.#e,this.#e*(Math.pow(2,e)-1)/2);return Math.min(Math.max(this.#e,t),this.#t)+this.#i()}whenReady(e){return new Promise((t=>{const r=this.generateBackoffInterval(e);return setTimeout((()=>t(r)),r)}))}}class y{constructor(){this.routes={}}getRoute(e,...t){if(!this.routes[e])throw h.Gf.INVALID_ARGUMENT.clone(`Invalid route fetched <string>route "${e}" does not exist.`);if(t.length){let r=Object.assign({},this.routes[e]);if(t.length!==(r.path.match(/%s/g)||[]).length)throw h.Gf.INVALID_ARGUMENT.clone(`Invalid number of positional arguments supplied for route ${e}`);for(let e of t)r.path=r.path.replace(/%s/,e);return r}return this.routes[e]}}const b=require("path");var R=r.n(b);const W=r(142).Gf,q="reservationList",A="reservationInstance",O="workerInstance",C="taskReservationInstance",x="taskList",F="taskInstance",N="taskTransferList",j="taskTransferInstance",U="workerChannels",I="activitiesList",D="customerParticipantInstance",P="workerParticipantInstance",L="holdWorkerParticipantInstance",$="kickWorkerParticipant";class z extends y{constructor(e,t){if(super(),!e||!t)throw W.INVALID_ARGUMENT.clone("Error instantiating Routes class. <string>workspaceSid and <string>workerSid are required parameters.");this.workspaceSid=e,this.workerSid=t,this.routes={[I]:{path:R().join("Workspaces",this.workspaceSid,"Activities")},[O]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid)},[A]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"Reservations","%s")},[q]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"Reservations")},[x]:{path:R().join("Workspaces",this.workspaceSid,"Tasks")},[F]:{path:R().join("Workspaces",this.workspaceSid,"Tasks","%s")},[N]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"Transfers")},[j]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"Transfers","%s")},[C]:{path:R().join("Workspaces",this.workspaceSid,"Tasks","%s","Reservations","%s")},[U]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"WorkerChannels")},[D]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"CustomerParticipant")},[P]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"WorkerParticipant")},[L]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"HoldWorkerParticipant")},[$]:{path:R().join("Workspaces",this.workspaceSid,"Workers",this.workerSid,"KickWorkerParticipant")}}}}var M=r(834);class H{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to create a WorkerDescriptor. <Descriptor>descriptor is a required parameter.");if(!Ae.every((t=>t in e)))throw new TypeError("Failed to create a WorkerDescriptor. The provided <Descriptor>descriptor does not contain all properties of a Worker.");this.accountSid=e.account_sid,this.activityName=e.activity_name,this.activitySid=e.activity_sid,this.attributes=JSON.parse(e.attributes),this.available=e.available,this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateStatusChanged=(0,M.T)(1e3*e.date_status_changed),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.name=e.friendly_name,this.sid=e.sid,this.workspaceSid=e.workspace_sid,this.version=String(e.version),this.workerSid=e.sid,this.workerActivitySid=e.activity_sid,this.dateActivityChanged=(0,M.T)(1e3*e.date_status_changed),this.friendlyName=e.friendly_name}}class B{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to instantiate ActivityDescriptor. <Descriptor>descriptor is required.");if(!V.every((t=>t in e)))throw new TypeError("Failed to instantiate ActivityDescriptor. <Descriptor>descriptor does not contain all properties of an Activity.");this.accountSid=e.account_sid,this.available=e.available,this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.name=e.friendly_name,this.sid=e.sid,this.workspaceSid=e.workspace_sid}}const G=r(834).n;const V=["account_sid","available","date_created","date_updated","friendly_name","sid","workspace_sid"],Q=class{constructor(e,t){if(!s().isObject(e))throw new TypeError("Failed to create an Activity. <Worker>worker is a required parameter.");if(!(t instanceof B))throw new TypeError("Failed to create an Activity. <ActivityDescriptor>descriptor is a required parameter.");Object.assign(this,t),this._worker=e,this._isCurrent=!1}get isCurrent(){return this._isCurrent}setAsCurrent(e={}){if(!G(e,{rejectPendingReservations:e=>s().isBoolean(e)}))throw new TypeError(`Failed to set activity=${this.sid}. The options passed in did not match the required types.`);if(e.rejectPendingReservations&&this.available)throw new Error("Unable to reject pending reservations when updating to an Available activity state.");return this._worker._updateWorkerActivity(this.sid,e).then((()=>this))}},J=r(142).Gf;class K{constructor(e,t,r){if(!e)throw J.INVALID_ARGUMENT.clone("Error instantiating Paginator. <Array>items is a required parameter.");if(!t)throw J.INVALID_ARGUMENT.clone("Error instantiating Paginator. <Function>source is a required parameter.");this._nextToken=r,this._source=t,this.hasNextPage=!!this._nextToken,this.items=e}nextPage(){return this.hasNextPage?this._source(this._nextToken):Promise.reject(J.TASKROUTER_ERROR.clone("Error getting the next page. No next page exists."))}}class X{constructor(e,t,r={}){if(!s().isObject(e))throw new TypeError("Failed to initialize ActivitiesEntity. <Worker>worker is a required parameter.");this._activities=new Map,this._log=e.getLogger(`ActivitiesEntity-${e.sid}`),this._request=t,this._worker=e,this._pageSize=r.pageSize||h.L8,s().inRange(this._pageSize,1,h.L8+1)||(this._log.warn("PageSize range for ActivitiesEntity must be between 1 and %d. Setting pageSize to default size=%d",h.L8,h.L8),this._pageSize=1e3)}get activities(){return this._activities}fetchActivities(){const e=this._getPage();return this._getAllActivities(e)}_getAllActivities(e){return e.then((e=>(e.items.forEach((e=>{this._insertActivity(e)})),e.hasNextPage?this._getAllActivities(e.nextPage()):Promise.resolve())))}_getPage(e){e=e||{};const t=this._worker.getRoutes().getRoute(I).path,r={PageSize:this._pageSize};return e.AfterSid&&(r.AfterSid=e.AfterSid),this._request.get(t,h.x6,r).then((e=>new K(e.contents.map((e=>new B(e))),(e=>this._getPage({AfterSid:e})),e.after_sid)))}_insertActivity(e){const t=e.sid;this._log.trace(`_insertActivity(sid=${t}, data=${JSON.stringify(e)}`);try{const r=new Q(this._worker,e);this._activities.set(t,r)}catch(e){this._log.error(`Unable to create an Activity for sid=${t}. Skipping insert into Activities map. Error: ${e}`)}}}class Y{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to instantiate WorkerChannelDescriptor. <Descriptor>descriptor is required.");if(!te.every((t=>t in e)))throw new TypeError("Failed to create a WorkerChannelDescriptor. <Descriptor>descriptor does not contain all properties of a Channel.");this.accountSid=e.account_sid,this.assignedTasks=e.assigned_tasks,this.available=!!e.available,this.availableCapacityPercentage=e.available_capacity_percentage,this.capacity=e.configured_capacity,this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.lastReservedTime=(0,M.T)(e.last_reserved_time),this.sid=e.sid,this.taskChannelSid=e.task_channel_sid,this.taskChannelUniqueName=e.task_channel_unique_name,this.workerSid=e.worker_sid,this.workspaceSid=e.workspace_sid}}const Z=["capacity","available","assignedTasks","availableCapacityPercentage","dateUpdated","lastReservedTime"];class ee extends l.EventEmitter{constructor(e,t,r){if(super(),!(e instanceof Oe))throw new TypeError("Failed to instantiate Worker. <Worker>worker is a required parameter.");if(!(r instanceof Y))throw new TypeError("Failed to instantiate Channel. <WorkerChannelDescriptor>descriptor is a required parameter.");this._request=t,this._log=e.getLogger(`Channel-${r.sid}`),Object.assign(this,r)}_emitEvent(e,t){if(!s().isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>rawEventData is a required parameter.");this._update(t),this.emit(e,this)}_update(e){try{const t=new Y(e);Z.forEach((e=>{this[e]=t[e]}))}catch(t){this._log.warn("Failed to update Channel sid=%s. Update aborted. Error: %s.",e.sid,t)}return this}}const te=["account_sid","assigned_tasks","available","available_capacity_percentage","configured_capacity","date_created","date_updated","last_reserved_time","sid","task_channel_sid","task_channel_unique_name","worker_sid","workspace_sid"],re=ee;class ie{constructor(e,t,r={}){if(!(e instanceof Oe))throw new TypeError("Failed to initialize ChannelsEntity. <Worker>worker is a required parameter.");this._channels=new Map,this._log=e.getLogger("ChannelsEntity"),this._request=t,this._pageSize=r.pageSize||h.L8,this._worker=e,s().inRange(this._pageSize,1,h.L8+1)||(this._log.warn("PageSize range for ChannelsEntity must be between 1 and %d. Setting pageSize to default size=%d",h.L8,h.L8),this._pageSize=1e3)}get channels(){return this._channels}fetchChannels(){const e=this._getPage();return this._getAllChannels(e)}_getAllChannels(e){return e.then((e=>(e.items.forEach((e=>{this._insertChannel(e)})),e.hasNextPage?this._getAllChannels(e.nextPage()):Promise.resolve())))}_getPage(e){e=e||{};const t=this._worker.getRoutes().getRoute(U).path,r={PageSize:this._pageSize};return e.AfterSid&&(r.AfterSid=e.AfterSid),this._request.get(t,h.x6,r).then((e=>new K(e.contents.map((e=>new Y(e))),(e=>this._getPage({AfterSid:e})),e.after_sid)))}_insertChannel(e){const t=e.sid;this._log.trace(`_insertChannel(sid=${t}, data=${JSON.stringify(e)}`);try{const r=new re(this._worker,this._request,e);this._channels.set(t,r)}catch(e){this._log.error(`Unable to create a Channel for sid=${t}. Skipping insert into Channels map. Error: ${e}`)}}}class se{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to instantiate TransferDescriptor. <Descriptor>descriptor is required.");if(!ae.every((t=>t in e)))throw new TypeError("Failed to instantiate TransferDescriptor. <Descriptor>descriptor does not contain all properties of a Transfer.");this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.mode=e.transfer_mode,this.queueSid=e.initiating_queue_sid,this.reservationSid=e.initiating_reservation_sid,this.to=e.transfer_to,this.transferFailedReason=e.transfer_failed_reason,this.type=e.transfer_type,this.sid=e.sid,this.status=e.transfer_status,this.workerSid=e.initiating_worker_sid,this.workflowSid=e.initiating_workflow_sid}}const ne=["dateUpdated","status","transferFailedReason"];class oe extends l.EventEmitter{constructor(e,t){if(super(),!(t instanceof se))throw new TypeError("Failed to instantiate Transfer. <TransferDescriptor>descriptor is a required parameter.");this._log=e.getLogger(`Transfer-${t.sid}`),Object.assign(this,t)}_update(e){try{const t=new se(e);ne.forEach((e=>{this[e]=t[e]}))}catch(t){throw this._log.error(`Failed to update Transfer sid=${e.sid}. Update aborted.`,t),new Error(`Failed to update Transfer sid=${e.sid}. Update aborted. Error: ${t}.`)}return this}}const ae=["date_created","date_updated","initiating_reservation_sid","initiating_worker_sid","initiating_queue_sid","initiating_workflow_sid","sid","transfer_mode","transfer_to","transfer_type","transfer_status"],de=oe;const ce=class extends de{constructor(e,t){super(e,t)}};const he=class extends de{constructor(e,t,r,i){if(super(e,i),"string"!=typeof r)throw new TypeError("Failed to instantiate OutgoingTransfer. <string>taskSid is a required parameter.");this._worker=e,this._request=t,this.taskSid=r}_emitEvent(e,t){if(this._log.trace(`_emitEvent(${e}, ${JSON.stringify(t)})`),!s().isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");this.emit(e,this)}async cancel(){const e=this._worker.getRoutes().getRoute(j,this.sid).path,t={TaskSid:this.taskSid,TransferStatus:h.Uf.canceled},r=await this._request.post(e,t,h.F3);return this._update(r)}};class le extends l.EventEmitter{constructor(e,t,r){if(super(),!(r instanceof fe))throw new TypeError("Failed to instantiate Transfers. <TaskDescriptor>taskDescriptor is a required parameter.");this._log=e.getLogger(`Transfers-${r.sid}`),this._worker=e,this._request=t,this.incoming=r.incomingTransferDescriptor?new ce(e,r.incomingTransferDescriptor):null,this.outgoing=r.outgoingTransferDescriptor?new he(e,t,r.sid,r.outgoingTransferDescriptor):null}_emitEvent(e,t){if(this._log.trace(`_emitEvent(${e}, ${JSON.stringify(t)})`),!s().isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");const r=h._G[e];this.outgoing?this.outgoing.sid===t.sid?Object.keys(s().pick(h._G,["transfer-attempt-failed","transfer-completed","transfer-failed","transfer-canceled"])).indexOf(e)>-1&&(this._updateOutgoing(t),this.outgoing._emitEvent(r,t)):this._log.warn("The transfer %s specified by Event: transfer.%s does not match the current active outgoing transfer for Worker %s. Skipping event.",t.sid,r,this._worker.sid):this._log.warn("An active outgoing transfer does currently exist in Worker %s transfers map for Event: transfer.%s. Skipping event.",this._worker.sid,r)}_updateOutgoing(e,t=!1){!this.outgoing||t?this.outgoing=new he(this._worker,this._request,e.task_sid,new se(e)):this.outgoing._update(e)}_update(e){if(e.incoming)if(this.incoming)this.incoming._update(e.incoming);else{const t=new se(e.incoming);this.incoming=new ce(this._worker,this._request,e.incoming.task_sid,t)}if(e.outgoing)if(this.outgoing)this.outgoing._update(e.outgoing);else{const t=new se(e.outgoing);this.outgoing=new he(this._worker,this._request,e.outgoing.task_sid,t)}}}const ue=le,pe=["attributes","status","workflowSid","workflowName","queueSid","queueName","priority","reason","routingTarget","timeout","taskChannelSid","taskChannelUniqueName","age","addOns","dateUpdated","transfers","version"];class ge extends l.EventEmitter{constructor(e,t,r,i){if(super(),!(e instanceof Oe))throw new TypeError("Failed to instantiate Task. <Worker>worker is a required parameter.");if(!i)throw new TypeError("Failed to instantiate Task. <TaskDescriptor>descriptor is a required parameter.");if(!(i instanceof fe))throw new TypeError("descriptor should be of type <TaskDescriptor>");if("string"!=typeof r)throw new TypeError("Failed to instantiate Task. <string>reservationSid is a required parameter.");this._worker=e,this._log=e.getLogger(`Task-${i.sid}`),this._request=t,this.transfers=new ue(e,t,i),Object.assign(this,i),this.reservationSid=r}complete(e){if(!s().isString(e))throw new TypeError("Error calling method complete(). <string>reason is a required parameter.");const t=this._worker.getRoutes().getRoute(F,this.sid).path,r={AssignmentStatus:h.Qh,Reason:e};return this._request.post(t,r,h.x6,this.version).then((e=>this._update(e)))}async transfer(e,t={}){if(!s().isString(e))throw new TypeError("Error calling method transfer(). <string>to is a required parameter.");const r=this._worker.getRoutes().getRoute(N).path,i={ReservationSid:this.reservationSid,TaskSid:this.sid,To:e};t.attributes&&(i.Attributes=t.attributes),t.mode&&(i.Mode=t.mode),t.priority&&(i.Priority=t.priority);const n=await this._request.post(r,i,h.F3);return this._log.info(`Received response to transfer request to Worker/TaskQueue=${e}`),this._log.debug("Response object",n),this.transfers._updateOutgoing(n,!0),this}wrapUp(e={}){const t=this._worker.getRoutes().getRoute(F,this.sid).path,r={AssignmentStatus:h.Nt};if(e.reason){if(!s().isString(e.reason))throw new Error(`Failed to call wrapUp() on Task sid=${this.sid}. A <string>reason is required.`);r.Reason=e.reason}return this._request.post(t,r,h.x6,this.version).then((e=>this._update(e)))}setAttributes(e){if(!s().isObject(e))throw new TypeError("Unable to set attributes on Task. <object>attributes is a required parameter.");const t=this._worker.getRoutes().getRoute(F,this.sid).path,r={Attributes:e};return this._request.post(t,r,h.x6,this.version).then((e=>this._update(e)))}updateParticipant(e){const t={hold:e=>s().isBoolean(e),holdUrl:e=>s().isString(e),holdMethod:e=>s().isString(e)};if(!(0,M.n)(e,t))throw new TypeError(`Failed to update Participant tied to Task sid=${this.sid}. The options passed in did not match the required types.`);const r=this._worker.getRoutes().getRoute(D).path,i={TaskSid:this.sid};for(const t in e)i[s().upperFirst(t)]=e[t];return this._request.post(r,i,h.F3).then((e=>this._update(e)))}kick(e){if(!s().isString(e))throw new TypeError("Error calling method kick(). <string>workerSid is a required parameter.");const t=this._worker.getRoutes().getRoute($).path,r={TaskSid:this.sid,TargetWorkerSid:e};return this._request.post(t,r,h.F3).then((e=>this._update(e)))}hold(e,t,r){const i={holdUrl:e=>s().isString(e),holdMethod:e=>s().isString(e)};if(!s().isString(e))throw new TypeError("Error calling method hold(). <string>targetWorkerSid is a required parameter.");if(!s().isBoolean(t))throw new TypeError("Error calling method hold(). <boolean>onHold is a required parameter that is either true or false.");if(!(0,M.n)(r,i))throw new TypeError(`Failed to update Participant tied to Task sid=${this.sid}. The options passed in did not match the required types.`);const n=this._worker.getRoutes().getRoute(L).path,o={TaskSid:this.sid,TargetWorkerSid:e,Hold:t};for(const e in r)o[s().upperFirst(e)]=r[e];return this._request.post(n,o,h.F3).then((e=>this._update(e)))}fetchLatestVersion(){const e=this._worker.getRoutes().getRoute(F,this.sid).path;return this._request.get(e,h.x6).then((e=>this._update(e)))}_emitEvent(e,t){if(this._log.trace(`_emitEvent(${e}, ${JSON.stringify(t)})`),!s().isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");this.emit(e,this,t)}async _emitEventForOutgoingTransfer(e,t){if(this._log.debug(`_emitEventForOutgoingTransfer(${e}, ${JSON.stringify(t)})`),!s().isString(e))throw new TypeError("Error calling _emitEventForOutgoingTransfer(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEventForOutgoingTransfer(). <object>payload is a required parameter.");this.transfers.outgoing||this._log.debug("The transfers.outgoing object is NOT present");let r=0;for(;!this.transfers.outgoing&&r<20;)await new Promise((e=>setTimeout(e,500))),r++,this._log.debug("Transfer event arrived, waiting for API response, because transfer object missing",r);for(r=0;this.transfers.outgoing&&this.transfers.outgoing.sid!==t.sid&&r<20;)await new Promise((e=>setTimeout(e,500))),r++,this._log.debug("Transfer event arrived, waiting for API response to get the correct transfer SID",r);this._log.debug("Transfer sid from API response:",this.transfers&&this.transfers.outgoing?this.transfers.outgoing.sid:"No sid"),this._log.debug("Transfer sid from event:",t.sid),this.transfers.outgoing&&this.transfers.outgoing.sid===t.sid?Object.keys(s().pick(h._G,[h.PQ])).indexOf(e)>-1?(this.transfers._updateOutgoing(t),this.emit(h._G[h.PQ],this.transfers.outgoing)):this.transfers._emitEvent(e,t):this._log.debug(`The transfers.outgoing object is either not present or does not match the transfer sid in the event. ${JSON.stringify(t)}`)}_update(e,t={}){try{const r=new fe(e,this._config);pe.forEach((e=>{"transfers"===e?(t.incoming||t.outgoing)&&this.transfers._update(t):this[e]=r[e]}))}catch(t){throw this._log.error(`Failed to update Task sid=${e.sid}. Update aborted.`,t),new Error(`Failed to update Task sid=${e.sid}. Update aborted. Error: ${t}.`)}return this}}const _e=["addons","age","attributes","date_created","date_updated","priority","queue_name","queue_sid","reason","routing_target","sid","assignment_status","task_channel_unique_name","task_channel_sid","timeout","workflow_name","workflow_sid","version"],ke=ge;class fe{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to instantiate TaskDescriptor. <Descriptor>descriptor is required.");if(!_e.every((t=>t in e)))throw new TypeError("Failed to instantiate TaskDescriptor. <Descriptor>descriptor does not contain all properties of a Task.");this.addOns=JSON.parse(e.addons),this.age=e.age,this.attributes=JSON.parse(e.attributes),this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.priority=e.priority,this.queueName=e.queue_name,this.queueSid=e.queue_sid,this.reason=e.reason,this.routingTarget=e.routing_target,this.sid=e.sid,this.status=e.assignment_status,this.taskChannelUniqueName=e.task_channel_unique_name,this.taskChannelSid=e.task_channel_sid,this.timeout=e.timeout,this.workflowName=e.workflow_name,this.workflowSid=e.workflow_sid,this.incomingTransferDescriptor=null,this.outgoingTransferDescriptor=null,this.version=String(e.version)}}class we{constructor(e,t,r=[]){if(!s().isObject(e))throw new TypeError("Failed to instantiate ReservationDescriptor. <Descriptor>descriptor is required.");if(!s().isObject(t))throw new TypeError("Failed to instantiate ReservationDescriptor. <Worker>worker is required.");const i=s().filter(Te,(e=>-1===r.indexOf(e)));if(!s().every(i,(t=>t in e))){const t=s().difference(i,Object.keys(e)).join(", ");throw new TypeError(`Failed to instantiate ReservationDescriptor. <Descriptor>descriptor does not contain all properties of a Reservation. Missing: ${t}`)}this.accountSid=e.account_sid,this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated),this.sid=e.sid,this.status=e.reservation_status,this.timeout=e.reservation_timeout,this.workerSid=e.worker_sid,this.workspaceSid=e.workspace_sid,this.taskDescriptor=null,this.version=String(e.version),e.canceled_reason_code&&(this.canceledReasonCode=e.canceled_reason_code);const n=t.getLogger(`ReservationDescriptor-${this.sid}`);if(-1===r.indexOf("task"))try{this.taskDescriptor=new fe(e.task)}catch(e){throw n.error("Failed to create a ReservationDescriptor. The 'task' property is malformed."),e}if(-1===r.indexOf(h.fc.taskTransfer)&&"object"==typeof e.task_transfer)try{this.taskDescriptor.incomingTransferDescriptor=new se(e.task_transfer),this.transferDescriptor=new se(e.task_transfer)}catch(e){throw n.error("Failed to create a ReservationDescriptor. The 'task_transfer' property is malformed."),e}if(-1===r.indexOf(h.fc.activeOutgoingTaskTransfer)&&"object"==typeof e.active_outgoing_task_transfer)try{this.taskDescriptor.outgoingTransferDescriptor=new se(e.active_outgoing_task_transfer)}catch(e){throw n.error("Failed to create a ReservationDescriptor. The 'active_outgoing_task_transfer' property is malformed."),e}}}const ve=r(834).n,me=["dateUpdated","canceledReasonCode","status","timeout","task","task_transfer","version"],Se=["reservation_timeout","task","canceled_reason_code"];class Ee extends l.EventEmitter{constructor(e,t,r){if(super(),!(e instanceof Oe))throw new TypeError("Failed to instantiate Reservation. <Worker>worker is a required parameter.");if(!(r instanceof we))throw new TypeError("Failed to instantiate Reservation. <ReservationDescriptor>descriptor is a required parameter.");this._worker=e,this._log=e.getLogger(`Reservation-${r.sid}`),this._request=t,this.task=this._createTask(r),r.transferDescriptor&&(this.transfer=this._createTransfer(r)),Object.assign(this,r),delete this.taskDescriptor,delete this.transferDescriptor}accept(){const e=this._worker.getRoutes().getRoute(A,this.sid).path,t={ReservationStatus:h.M0};return this._request.post(e,t,h.x6,this.version).then((e=>this._update(e,Se)))}complete(){const e=this._worker.getRoutes().getRoute(A,this.sid).path,t={ReservationStatus:h.in};return this._request.post(e,t,h.x6,this.version).then((e=>this._update(e,Se)))}reject(e={}){const t=this._worker.getRoutes().getRoute(A,this.sid).path,r={ReservationStatus:h.j3};if(!ve(e,{activitySid:e=>s().isString(e)}))throw new TypeError(`Failed to issue Instruction:reject on Reservation sid=${this.sid}. The options passed in did not match the required types.`);for(const t in e)r[h.iR[t]]=e[t];return this._request.post(t,r,h.x6,this.version).then((e=>this._update(e,Se)))}wrap(){const e=this._worker.getRoutes().getRoute(A,this.sid).path,t={ReservationStatus:h.hO};return this._request.post(e,t,h.x6,this.version).then((e=>this._update(e,Se)))}call(e,t,r={}){if(!s().isString(e))throw new TypeError("Error calling method call(). <string>from is a required parameter.");if(!s().isString(t))throw new TypeError("Error calling method call(). <string>url is a required parameter.");const i=this._worker.getRoutes().getRoute(A,this.sid).path,n={Instruction:h.O,CallFrom:e,CallUrl:t};if(!ve(r,{accept:e=>s().isBoolean(e),record:e=>s().isString(e),statusCallbackUrl:e=>s().isString(e),timeout:e=>s().isInteger(e),to:e=>s().isString(e)}))throw new TypeError(`Failed to issue Instruction:call on Reservation sid=${this.sid}. The options passed in did not match the required types.`);for(const e in r)n[h.xf[e]]=r[e];return this._request.post(i,n,h.x6).then((e=>this._update(e,Se)))}dequeue(e={}){const t=this._worker.getRoutes().getRoute(A,this.sid).path,r={Instruction:h.iz};if(!ve(e,{from:e=>s().isString(e),to:e=>s().isString(e),postWorkActivitySid:e=>s().isString(e),record:e=>s().isString(e),timeout:e=>s().isInteger(e),statusCallbackUrl:e=>s().isString(e),statusCallbackEvents:e=>s().isString(e)}))throw new TypeError(`Failed to issue Instruction:dequeue on Reservation sid=${this.sid}. The options passed in did not match the required types.`);for(const t in e)r[h.EA[t]]=e[t];return this._request.post(t,r,h.x6).then((e=>this._update(e,Se)))}redirect(e,t,r={}){if(!s().isString(e))throw new TypeError("Error calling method redirect(). <string>callSid is a required parameter.");if(!s().isString(t))throw new TypeError("Error calling method redirect(). <string>url is a required parameter.");const i=this._worker.getRoutes().getRoute(A,this.sid).path,n={accept:e=>s().isBoolean(e)},o={Instruction:h.nB,RedirectCallSid:e,RedirectUrl:t};if(!ve(r,n))throw new TypeError(`Failed to issue Instruction:redirect on Reservation sid=${this.sid}. The options passed in did not match the required types.`);for(const e in r)o[h.qG[e]]=r[e];return this._request.post(i,o,h.x6).then((e=>this._update(e,Se)))}conference(e={}){if(!ve(e,{to:e=>s().isString(e),from:e=>s().isString(e),timeout:e=>s().isInteger(e),statusCallback:e=>s().isString(e),statusCallbackMethod:e=>s().isString(e),statusCallbackEvent:e=>s().isString(e),record:e=>s().isString(e),muted:e=>s().isBoolean(e),beep:e=>s().isBoolean(e)||s().isString(e),startConferenceOnEnter:e=>s().isBoolean(e),endConferenceOnExit:e=>s().isBoolean(e),endConferenceOnCustomerExit:e=>s().isBoolean(e),waitUrl:e=>s().isString(e),waitMethod:e=>s().isString(e),earlyMedia:e=>s().isBoolean(e),maxParticipants:e=>s().isInteger(e),conferenceStatusCallback:e=>s().isString(e),conferenceStatusCallbackMethod:e=>s().isString(e),conferenceStatusCallbackEvent:e=>s().isString(e),conferenceRecord:e=>s().isBoolean(e)||s().isString(e),conferenceTrim:e=>s().isString(e),recordingChannels:e=>s().isString(e),recordingStatusCallback:e=>s().isString(e),recordingStatusCallbackMethod:e=>s().isString(e),conferenceRecordingStatusCallback:e=>s().isString(e),conferenceRecordingStatusCallbackMethod:e=>s().isString(e),region:e=>s().isString(e),sipAuthUsername:e=>s().isString(e),sipAuthPassword:e=>s().isString(e)}))throw new TypeError(`Failed to issue Instruction:conference on Reservation sid=${this.sid}. The options passed in did not match the required types.`);const t=this._worker.getRoutes().getRoute(A,this.sid).path,r={Instruction:h.FB};for(const t in e)r[s().upperFirst(t)]=e[t];return this._request.post(t,r,h.x6).then((()=>this))}updateParticipant(e){if(!ve(e,{endConferenceOnExit:e=>s().isBoolean(e),mute:e=>s().isBoolean(e),beepOnExit:e=>s().isBoolean(e)}))throw new TypeError(`Failed to update Worker Participant tied to Reservation sid=${this.sid}. The options passed in did not match the required types.`);const t=this._worker.getRoutes().getRoute(P).path,r={ReservationSid:this.sid};for(const t in e)r[s().upperFirst(t)]=e[t];return this._request.post(t,r,h.F3).then((()=>this))}fetchLatestVersion(){const e=this._worker.getRoutes().getRoute(A,this.sid).path;return this._request.get(e,h.x6).then((e=>this._update(e)))}_createTask(e){if(!(e instanceof we))return this._log.error(`Error calling method _createTask() for Reservation sid=${this.sid}. <ReservationDescriptor>reservationDescriptor is a required parameter.`),{};const t=e.taskDescriptor;try{return new ke(this._worker,this._request,e.sid,t)}catch(e){return this._log.error(`Failed to create a Task for Reservation sid=${this.sid}. Error: ${e}`),{}}}_createTransfer(e){if(!(e instanceof we))return this._log.error(`Error calling method _createTransfer() for Reservation sid=${this.sid}. <ReservationDescriptor>reservationDescriptor is a required parameter.`),{};const t=e.transferDescriptor;try{return new ce(this._worker,t)}catch(e){return this._log.error(`Failed to create a Transfer for Reservation sid=${this.sid}. Error: ${e}`),{}}}_update(e,t=[]){try{const r=new we(e,this._worker,t);me.forEach((i=>{if("task"===i){if(-1===t.indexOf("task")){const t=e.task_transfer,r=e.active_outgoing_task_transfer;this.task._update(e.task,{incoming:t,outgoing:r})}}else"canceledReasonCode"===i?-1===t.indexOf("canceled_reason_code")&&e.canceled_reason_code&&(this[i]=r[i]):"task_transfer"===i&&e.task_transfer?this.transfer._update(e.task_transfer):this[i]=r[i]}))}catch(t){throw this._log.error(`Failed to update Reservation sid=${e.sid}. Update aborted. Error: ${t}.`),t}return this}_emitEvent(e,t){if(!s().isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!s().isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>rawEventData is a required parameter.");this._update(t),this.emit(e,this)}}const Te=["account_sid","date_created","date_updated","reservation_status","sid","task","reservation_timeout","worker_sid","workspace_sid","version"],ye=Ee;class be extends l.EventEmitter{constructor(e,t,r={}){if(super(),!(e instanceof Oe))throw new TypeError("Failed to initialize ReservationsEntity. <Worker>worker is a required parameter.");this._worker=e,this._log=e.getLogger("ReservationsEntity"),this._request=t,this._reservations=new Map,this._reservationSidsByTask=new Map,this._pageSize=r.pageSize||h.L8,s().inRange(this._pageSize,1,h.L8+1)||(this._log.warn("PageSize range for ReservationsEntity must be between 1 and %d. Setting pageSize to default size=%d",h.L8,h.L8),this._pageSize=1e3)}get reservations(){return new Map(Array.from(this._reservations).filter((e=>!e[1][1])).map((e=>[e[0],e[1][0]])))}fetchReservations(){const e=this._getPage();return this._reservations.clear(),this._getAllReservations(e)}_getAllReservations(e){return e.then((e=>{e.items.forEach((e=>{this._insertReservation(e)})),e.hasNextPage&&this._getAllReservations(e.nextPage())}))}_getPage(e){e=e||{};const t=this._worker.getRoutes().getRoute(q).path,r={Active:"true",PageSize:this._pageSize};return e.AfterSid&&(r.AfterSid=e.AfterSid),this._request.get(t,h.F3,r).then((e=>new K(e.contents.map((e=>new we(e,this._worker))),(e=>this._getPage({AfterSid:e})),e.after_sid)))}_insertReservation(e){const t=e.sid;this._log.trace("_insertReservation(sid=%s, data=%s)",t,JSON.stringify(e)),this._reservations.has(t)&&this._log.debug("Reservation %s already exists for Worker %s. Attempting to overwrite it.",t,this._worker.sid);try{const r=new ye(this._worker,this._request,e);return this._reservations.set(t,[r,!1]),this._reservationSidsByTask.has(r.task.sid)?this._reservationSidsByTask.get(r.task.sid).add(r.sid):this._reservationSidsByTask.set(r.task.sid,new Set([r.sid])),this._log.debug("Successfully created and inserted %s for %s to Task-Reservation lookup. Contents: %s",r.sid,r.task.sid,this._reservationSidsByTask.get(r.task.sid)),r}catch(e){throw this._log.error("Unable to create a Reservation for sid=%s. Skipping insert into Reservations map. Error: %s",t,e),e}}insert(e){this._log.trace("_insertReservation(sid=%s, data=%s)",e.sid,JSON.stringify(e));const t=new we(e,this._worker);return this._insertReservation(t)}getTasks(e){if(!this._reservationSidsByTask.has(e))return null;const t=this._reservationSidsByTask.get(e),r=[];return t.forEach((e=>{const t=this._reservations.get(e);t&&t[0].task&&r.push(t[0].task)})),r}_deleteByReservationSid(e){this._log.trace("_deleteByReservationSid(sid=%s)",e);const t=this.reservations.get(e);t?(this._log.info("Found Reservation sid=%s for Worker %s. Removing reservation and task.",e,this._worker.sid),this._cleanUpReservationAndTask(t)):this._log.info("Reservation with sid=%s not found. Unable to remove Reservation.",e)}_cleanUpReservationAndTask(e){this._log.debug("Soft deleting Reservation sid=%s for Worker %s",e.sid,this._worker.sid),this._reservations.set(e.sid,[e,!0]),setTimeout((()=>{this._log.debug("Hard deleting of Reservation sid=%s for Worker %s",e.sid,this._worker.sid),this._reservations.delete(e.sid)||this._log.warn("Failed to hard delete Reservation sid=%s for Worker %s",e.sid,this._worker.sid)}),5e3)}}class Re{constructor(e,t={}){this._worker=e,this._logLevel=t.logLevel||"error",this._log=new d("WorkerEventHandler",this._logLevel)}getTREventsToHandlerMapping(){return{"worker.activity.update":"_workerActivityUpdateHandler","worker.attributes.update":"_workerAttributesUpdateHandler","worker.capacity.update":"_workerCapacityUpdateHandler","worker.channel.availability.update":"_workerChannelAvailabilityUpdateHandler","reservation.created":"_reservationCreatedHandler","reservation.failed":"_reservationFailedHandler","reservation.accepted":"_reservationUpdateHandler","reservation.wrapup":"_reservationUpdateHandler","reservation.completed":"_reservationCleanupEventsHandler","reservation.rejected":"_reservationCleanupEventsHandler","reservation.timeout":"_reservationCleanupEventsHandler","reservation.canceled":"_reservationCleanupEventsHandler","reservation.rescinded":"_reservationCleanupEventsHandler","task.updated":"_taskTypeEventHandler","task.canceled":"_taskTypeEventHandler","task.completed":"_taskTypeEventHandler","task.wrapup":"_taskTypeEventHandler","task.transfer-attempt-failed":"_transferTaskEventHandler","task.transfer-completed":"_transferTaskEventHandler","task.transfer-failed":"_transferTaskEventHandler","task.transfer-initiated":"_transferTaskEventHandler","task.transfer-canceled":"_transferTaskEventHandler"}}_workerActivityUpdateHandler(e){if(this._log.info("Worker %s received Event: worker.activity.update. Proceeding to update ...",this._worker.sid),!e.activity_sid)throw this._log.error("Event: worker.activity.update did not contain an activity_sid. Unable to update Worker %s.",this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} activity.`);{const t=this._worker.activities.get(e.activity_sid);if(!t)throw this._log.error("The Activity sid=%s specified in Event: worker.activity.update does not exist in the Worker's map of Activities. Unable to update Worker %s activity.",e.activity_sid,this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} activity.`);this._worker.activity._isCurrent=!1,this._worker.activity=t,t._isCurrent=!0,this._worker.emit("activityUpdated",this._worker._update(e))}}_workerAttributesUpdateHandler(e){this._log.info(`Worker ${this._worker.sid} received Event: worker.attributes.update. Proceeding to update ...`),this._worker.emit("attributesUpdated",this._worker._update(e))}_workerCapacityUpdateHandler(e){if(this._log.info(`Worker ${this._worker.sid} received Event: worker.capacity.update.`),!e.sid)throw this._log.error("Event: worker.capacity.update did not contain a Channel sid. Unable to update Channel for Worker %s.",this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} channel.`);{const t=this._worker.channels.get(e.sid);if(!t)throw this._log.error("The Channel sid=%s specified in Event: worker.capacity.update does not exist in the Worker's map of Channels. Unable to update Worker %s channel.",e.sid,this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} channel.`);t._emitEvent("capacityUpdated",e)}}_workerChannelAvailabilityUpdateHandler(e){if(this._log.info("Worker %s received Event: worker.channel.availability.update.",this._worker.sid),!e.sid)throw this._log.error("Event: worker.capacity.update did not contain a Channel sid. Unable to update Channel for Worker %s.",this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} channel.`);{const t=this._worker.channels.get(e.sid);if(!t)throw this._log.error("The Channel sid=%s specified in Event: worker.channel.availability.update does not exist in the Worker's map of Channels. Unable to update Worker %s channel.",e.sid,this._worker.sid),new Error(`Failed to update Worker ${this._worker.sid} channel.`);t._emitEvent("availabilityUpdated",e)}}_reservationCreatedHandler(e){if(this._log.info("Worker %s received Event: reservation.created.",this._worker.sid),!e.sid)throw this._log.error("Event: reservationCreated did not contain a Reservation sid. Unable to create a Reservation for Worker %s.",this._worker.sid),new Error(`Failed to create Reservation for Worker ${this._worker.sid}.`);try{this._log.info("Attempting to create and insert Reservation into Worker %s reservations map.",this._worker.sid);const t=this._worker._dataServices.reservationsEntity.insert(e);this._worker._bumpVersion(),this._worker.emit("reservationCreated",t)}catch(e){throw this._log.info("Failed to create and insert Reservation into Worker %s reservations map.",this._worker.sid),new Error(`Failed to create a Reservation for Worker ${this._worker.sid} on Event: reservationCreated. Error: ${e}`)}}_reservationFailedHandler(e){this._log.info("Worker %s received Event: reservation.failed.",this._worker.sid),this._worker.emit("reservationFailed",e)}_reservationUpdateHandler(e,t){const r=h.zb[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error(`Event: reservation.${r} did not contain a Reservation sid. Unable to update Reservation for Worker ${this._worker.sid}`),new Error(`Failed to update Reservation for Worker ${this._worker.sid}.`);{const t=this._worker.reservations.get(e.sid);if(!t)throw this._log.error(`The Resevation sid=${e.sid} specified in Event: reservation.${r} does not exist in the Worker's map of Reservations. Unable to update Worker ${this._worker.sid} reservation.`),new Error(`Failed to update Worker ${this._worker.sid} reservation.`);t._emitEvent(r,e)}}_reservationCleanupEventsHandler(e,t){const r=h.zb[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error("Event: reservation.%s did not contain a Reservation sid. Unable to update Reservation for Worker %s.",r,this._worker.sid),new Error(`Failed to update Reservation for Worker ${this._worker.sid}.`);{const t=this._worker.reservations.get(e.sid);t?(this._worker._dataServices.reservationsEntity._deleteByReservationSid(e.sid),t._emitEvent(r,e)):this._log.warn("The reservation specified by Event: reservation.%s does not exist in Worker %s Reservations map. Skipping event.",r,this._worker.sid)}}_taskTypeEventHandler(e,t){const r=h.L3[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error("Event: task.%s did not contain a Task sid. Unable to emit event for Worker %s.",r,this._worker.sid),new Error(`Failed to emit event for Worker ${this._worker.sid}.`);{const t=this._worker._dataServices.reservationsEntity.getTasks(e.sid);t&&t.length>0?t.forEach((t=>{t._update(e),t._emitEvent(r,e)})):this._log.warn("The task specified by Event: task.%s does not exist in Worker %s Reservations map. Skipping event.",r,this._worker.sid)}}_transferTaskEventHandler(e,t){const r=h.l4[t];if(this._log.info("Worker %s received Event: % mapped to %s.",this._worker.sid,t,r),!e.initiating_reservation_sid||!e.task_sid)throw this._log.error("Event: task.%s did not contain a Reservation sid or Task sid. Unable to emit event for Worker %s.",r,this._worker.sid),new Error(`Failed to emit event for Worker ${this._worker.sid}.`);{const t=this._worker.reservations.get(e.initiating_reservation_sid);t?t.task.sid===e.task_sid?t.task._emitEventForOutgoingTransfer(r,e):this._log.warn("The task %s related to Event: task.%s does not match the expected owning Reservation %s for Worker %s. Skipping event.",e.task_sid,r,t.sid,this._worker.sid):this._log.warn("The reservation %s related to Event: task.%s does not exist in Worker %s Reservations map. Skipping event.",e.initiating_reservation_sid,r,this._worker.sid)}}}const We=["dateUpdated","dateStatusChanged","attributes","name","available","version"];class qe extends l.EventEmitter{constructor(e,t={},r={Request:E,EventBridgeSignaling:f}){if(super(),!s().isString(e))throw new TypeError("Failed to instantiate Worker. <string>token is a required parameter.");const i={connectActivitySid:e=>s().isString(e),closeExistingSessions:e=>s().isBoolean(e),logLevel:e=>s().isString(e),ebServer:e=>s().isString(e),wsServer:e=>s().isString(e),region:e=>s().isString(e)};let n;(0,M.n)(t,i),this._connectActivitySid=t.connectActivitySid,this._closeExistingSessions=t.closeExistingSessions,this._logLevel=t.logLevel||"error",this._config=new c(e,t),this._log=new d(`Worker-${this._config.getLogIdentifier()}`,this._logLevel),this._request=new r.Request(this._config),this._dataServices={activitiesEntity:new X(this,this._request),channelsEntity:new ie(this,this._request),reservationsEntity:new be(this,this._request)},this._signaling=new r.EventBridgeSignaling(this,{closeExistingSessions:t.closeExistingSessions}),this._subscribeToSignalingEvents(),this.retryUtil=new T,n=t.eventHandlerClass?new t.eventHandlerClass(this):new Re(this),this.taskRouterEventHandler=n}createTask(e,t,r,i,n={}){if(!s().isString(e))throw new TypeError("Error calling method createTask(). <string>to is a required parameter.");if(!s().isString(t))throw new TypeError("Error calling method createTask(). <string>from is a required parameter.");if(!s().isString(r))throw new TypeError("Error calling method createTask(). <string>workflowSid is a required parameter.");if(!s().isString(i))throw new TypeError("Error calling method createTask(). <string>taskQueueSid is a required parameter.");const o={attributes:e=>s().isObject(e),taskChannelUniqueName:e=>s().isString(e),taskChannelSid:e=>s().isString(e)};if(!(0,M.n)(n,o))throw new TypeError(`Failed to create a Task for Worker ${this.sid}. The options passed in did not match the required types.`);const a=this.getRoutes().getRoute(x).path,d={WorkflowSid:r,TaskQueueSid:i,RoutingTarget:this.sid};for(const e in n)"attributes"===e||(d[h.VH[e]]=n[e]);const c={outbound_to:e,from:t};return d.Attributes=Object.assign({},n.attributes,c),this._request.post(a,d,h.x6).then((e=>e.sid))}getLogger(e){return new d(`${e}-${this.sid}`,this._config._logLevel)}setAttributes(e){if(!s().isObject(e))throw new TypeError("Unable to set attributes on Worker. <object>attributes is a required parameter.");const t=this.getRoutes().getRoute(O).path,r={Attributes:e};return this._request.post(t,r,h.x6,this.version).then((e=>this._update(e)))}_bumpVersion(){this.version&&(this.version=String(Number(this.version)+1))}updateToken(e){if(!s().isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this._log.info("Proceeding to update the Worker's current active token with a new token."),this._log.debug("New token: "+e);try{this._config.updateToken(e),this._signaling.updateToken(e),this.emit("tokenUpdated")}catch(e){this.emit("error",e)}}fetchLatestVersion(){const e=this.getRoutes().getRoute(O).path;return this._request.get(e,h.x6).then((e=>this._update(e)))}_subscribeToSignalingEvents(){this._log.info("Subscribing to Signaling events .... "),this._signaling.on("connected",(()=>{this._log.info("Received Event: 'connected' from Signaling layer. Pending initialization.",this.sid)})),this._signaling.on("disconnected",(e=>{this._log.info("Received Event: 'disconnected' from Signaling layer for Worker %s. %s",this.sid,e),this._unSubscribeFromTaskRouterEvents(),this.emit("disconnected",e)})),this._signaling.on("init",(e=>{this._log.info("Received Event: 'init' from Signaling layer. Proceeding to initialize Worker %s.",e.channel_id),this.sid=e.channel_id,this.accountSid=e.account_sid,this.workspaceSid=e.workspace_sid,this._signaling.setLifetime(e.token_lifetime),this._initialize()})),this._signaling.on("error",(e=>{this._log.info("Received Event: 'error' from Signaling layer for Worker %s.",this.sid),this.emit("error",e)})),this._signaling.on("tokenExpired",(()=>{this._log.info("Received Event: 'tokenExpired' for for Worker %s. Please update the token. Websocket will not reconnect automatically until token is updated.",this.sid),this.emit("tokenExpired")}))}_subscribeToTaskRouterEvents(){this._log.info("Subscribing to TaskRouter events ... ");for(let[e,t]of Object.entries(this.taskRouterEventHandler.getTREventsToHandlerMapping()))this._signaling.on(e,this.taskRouterEventHandler[t])}_unSubscribeFromTaskRouterEvents(){this._log.info("Unsubscribing from TaskRouter events ... ");for(let[e,t]of Object.entries(this.taskRouterEventHandler.getTREventsToHandlerMapping()))this._signaling.removeListener(e,this.taskRouterEventHandler[t])}_initialize(){this._routes=new z(this.workspaceSid,this.sid),this._log.info("Initializing Worker %s...",this.sid);const e=this.getRoutes().getRoute(O).path;let t;this._request.get(e,h.x6).then((e=>{const r=new H(e);return t=r.activitySid,delete r.activityName,delete r.activitySid,delete r.available,Object.assign(this,r),Promise.all([this._dataServices.activitiesEntity.fetchActivities(),this._dataServices.channelsEntity.fetchChannels(),this._dataServices.reservationsEntity.fetchReservations()])})).then((()=>{this._log.info("Worker %s activities, channels and pending reservations initialized",this.sid),this._setCurrentActivity(t),this._connectActivitySid?this._setWorkerConnectActivity().then((()=>{this._log.info("Successfully updated Worker on connect to Activity=%s",this._connectActivitySid),this._log.info("Worker %s successfully initialized",this.sid)})):this._log.info("Worker %s successfully initialized",this.sid),this._subscribeToTaskRouterEvents(),this.emit("ready",this)})).catch((e=>{this._log.error("Failed to initialize Worker %s. Error: %s",this.sid,e),this.emit("error",`Failed to initialize Worker ${this.sid}`)}))}get channels(){return this._dataServices.channelsEntity.channels}get activities(){return this._dataServices.activitiesEntity.activities}get reservations(){return this._dataServices.reservationsEntity.reservations}_setCurrentActivity(e){const t=this.activities.get(e);if(!t)throw new Error(`Unable to set the current Activity sid=${e} on the Worker.`);t._isCurrent=!0,this.activity=t,this.activity._isCurrent=!0}_setWorkerConnectActivity(){if(!s().isString(this._connectActivitySid))throw new TypeError("Failed to set the Worker's activity to the provided optional connectActivitySid. <string>connectActivitySid must be a string.");return this._updateWorkerActivity(this._connectActivitySid).then((()=>(this._log.info("Successfully set the Worker's activity to the provided connectActivitySid=%s on connection.",this._connectActivitySid),this._connectRetry=0,this))).catch((e=>{if(this._connectRetry>=3)throw this._log.error("Unable to set Worker %s activity to the provided %s on successful connection. %s",this.sid,this._connectActivitySid,e),e;return this._connectRetry=this._connectRetry>0?this._connectRetry+1:1,this.retryUtil.whenReady(this._connectRetry).then((e=>(this._log.info(`Retrying Update Worker Activity after backoff time: ${e}ms for retryCount: ${this._connectRetry}`),this._setWorkerConnectActivity.bind(this)())))}))}_updateWorkerActivity(e,t={}){if(!s().isString(e))throw new TypeError("Error updating Worker Activity: <string>activitySid is a required parameter");const r=this.getRoutes().getRoute(O).path,i={ActivitySid:e};for(const e in t)i[h.UA[e]]=t[e];return this._request.post(r,i,h.x6,this.version).then((t=>{try{this._update(t),this.activity._isCurrent=!1;const e=this.activities.get(t.activity_sid);this.activity=e,this.activity._isCurrent=!0}catch(t){throw this._log.error("Failed to update the Worker's activity to sid=%s. Error: %s",e,t),t}return this}))}_update(e){this._log.trace("Attempting to update Worker %s with latest Worker data=%s",this.sid,JSON.stringify(e));try{const t=new H(e);We.forEach((e=>{this[e]=t[e]}))}catch(t){this._log.error("Failed to update Worker sid=%s. Update aborted. Error: %s.",e.sid,t)}return this}disconnect(){this._signaling.disconnect()}getRoutes(){return this._routes}}const Ae=["account_sid","activity_name","activity_sid","attributes","available","date_created","date_status_changed","date_updated","friendly_name","sid","workspace_sid","version"],Oe=qe;const Ce=class extends Oe{monitor(e,t,r){if(!s().isString(e))throw new TypeError("Error monitoring reservation: <string>taskSid is a required parameter");if(!s().isString(t))throw new TypeError("Error monitoring reservation: <string>reservationSid is a required parameter");if(r&&!s().isObject(r))throw new TypeError("Error monitoring reservation: <string>extraParams must be an object");return this._supervise("monitor",e,t,r)}_supervise(e,t,r,i){const s=this.getRoutes().getRoute(C,t,r).path,n=Object.assign({},i,{Instruction:"supervise",Supervisor:this.sid,SupervisorMode:e});return this._request.post(s,n,h.x6).then((()=>{}))}};const xe=["friendly_name","reservation_activity_name","assignment_activity_name","target_workers","max_reserved_workers","task_order","reservation_activity_sid","assignment_activity_sid","workspace_sid","account_sid","sid","date_created","date_updated","lifo_queue"],Fe=class{constructor(e){if(!(e instanceof Ne))throw new TypeError("Failed to create a TaskQueue. <TaskQueueDescriptor>descriptor is a required parameter.");Object.assign(this,e)}};class Ne{constructor(e){if(!s().isObject(e))throw new TypeError("Failed to instantiate TaskQueueDescriptor. <Descriptor>descriptor is required.");if(!xe.every((t=>t in e)))throw new TypeError("Failed to instantiate TaskQueueDescriptor. <Descriptor>descriptor does not contain all properties of a TaskQueue.");this.sid=e.sid,this.queueSid=e.sid,this.accountSid=e.account_sid,this.workspaceSid=e.workspace_sid,this.name=e.friendly_name,this.queueName=e.friendly_name,this.assignmentActivityName=e.assignment_activity_name,this.reservationActivityName=e.reservation_activity_name,this.assignmentActivitySid=e.assignment_activity_sid,this.reservationActivitySid=e.reservation_activity_sid,this.targetWorkers=e.target_workers,this.maxReservedWorkers=e.max_reserved_workers,this.taskOrder=e.task_order,this.dateCreated=(0,M.T)(1e3*e.date_created),this.dateUpdated=(0,M.T)(1e3*e.date_updated)}}const je=class{constructor(e){if(!(e instanceof H))throw new TypeError("Failed to create a WorkerContainer. <WorkerDescriptor>descriptor is a required parameter.");Object.assign(this,e)}},Ue="workerList",Ie="taskQueueList";class De extends y{constructor(e){if(super(),!e)throw h.Gf.INVALID_ARGUMENT.clone("Error instantiating WorkspaceRoutes class. <string>workspaceSid is required.");this.workspaceSid=e,this.routes={[Ue]:{path:R().join("Workspaces",this.workspaceSid,"Workers")},[Ie]:{path:R().join("Workspaces",this.workspaceSid,"TaskQueues")}}}}class Pe{constructor(e,t,r={}){this._Workers=new Map,this._TaskQueues=new Map,this._routes=new De(e),this._request=t,this._log=new d(`WorkspaceEntity-${e}`,r.logLevel),this._pageSize=r.pageSize||h.L8,s().inRange(this._pageSize,1,h.L8+1)||(this._log.warn("PageSize range for WorkspaceEntity must be between 1 and %d. Setting pageSize to default size=%d",h.L8,h.L8),this._pageSize=h.L8)}get Workers(){return this._Workers}get TaskQueues(){return this._TaskQueues}fetchWorker(e){const t=R().join(this._routes.getRoute(Ue).path,e);return this._request.get(t,h.x6).then((e=>new je(new H(e))))}fetchWorkers(e){this._Workers=new Map;const{MaxWorkers:t,...r}=e||{};return this._getAllWorkers(this._getWorkerPage(r),t)}fetchTaskQueue(e){const t=R().join(this._routes.getRoute(Ie).path,e);return this._request.get(t,h.x6).then((e=>new Fe(new Ne(e))))}fetchTaskQueues(e){return this._TaskQueues=new Map,this._getAllTaskQueues(this._getTaskQueuePage(e))}_getAllWorkers(e,t=h.hS){return e.then((async e=>{for(const r of e.items){if(this._Workers.size>=t)break;this._insertWorker(r)}e.hasNextPage&&(this._Workers.size>=t||await this._getAllWorkers(e.nextPage(),t))}))}_getWorkerPage(e){e=e||{};const t=this._routes.getRoute(Ue).path,r={PageSize:this._pageSize};return["AfterSid","FriendlyName","ActivitySid","ActivityName","Ordering","TargetWorkersExpression","NextToken"].forEach((t=>{e[t]&&(r[t]=e[t])})),this._request.get(t,h.x6,r).then((e=>{const{Ordering:t,...i}=r,s=t?"NextToken":"AfterSid";return new K(e.contents.map((e=>new H(e))),(e=>this._getWorkerPage({...i,Ordering:t,[s]:e})),t?e.meta.next_token:e.after_sid)}))}_insertWorker(e){const t=e.sid;this._log.trace("_insertWorker(sid=%s, data=%s)",t,JSON.stringify(e));try{this._Workers.set(t,new je(e))}catch(e){this._log.error("Unable to create a Worker for sid=%s. Skipping insert into Worker map. Error: %s",t,e)}}async _getAllTaskQueues(e){return e.then((async e=>{e.items.forEach((e=>this._insertTaskQueue(e))),e.hasNextPage&&await this._getAllTaskQueues(e.nextPage())}))}_getTaskQueuePage(e){e=e||{};const t=this._routes.getRoute(Ie).path,r={PageSize:this._pageSize};return["AfterSid","FriendlyName","Ordering","NextToken"].forEach((t=>{e[t]&&(r[t]=e[t])})),this._request.get(t,h.x6,r).then((e=>{const{Ordering:t,...i}=r,s=t?"NextToken":"AfterSid";return new K(e.contents.map((e=>new Ne(e))),(e=>this._getTaskQueuePage({...i,Ordering:t,[s]:e})),t?e.meta.next_token:e.after_sid)}))}_insertTaskQueue(e){const t=e.sid;this._log.trace("_insertTaskQueue(sid=%s, data=%s",t,JSON.stringify(e));try{this._TaskQueues.set(t,new Fe(e))}catch(e){this._log.error("Unable to create a TaskQueue for sid=%s. Skipping insert into TaskQueue map. Error: %s",t,e)}}}const Le=require("jwt-decode");var $e=r.n(Le);const ze=class{constructor(e,t={},r){this._config=new c(e,t),this._request=new E(this._config),this._logLevel=t.logLevel||"error",this._log=new d(`Workspace-${this._config.getLogIdentifier()}`,this._logLevel),this.shouldDecodeToken=!r,this.workspaceSid=r,this._updateJWTProperties(e),this.workspaceEntity=new Pe(this.workspaceSid,this._request,t)}fetchWorker(e){return this.workspaceEntity.fetchWorker(e)}fetchWorkers(e){return this.workspaceEntity.fetchWorkers(e).then((()=>this.workspaceEntity.Workers))}fetchTaskQueue(e){return this.workspaceEntity.fetchTaskQueue(e)}fetchTaskQueues(e){return this.workspaceEntity.fetchTaskQueues(e).then((()=>this.workspaceEntity.TaskQueues))}updateToken(e){if(!s().isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this._config.updateToken(e),this._updateJWTProperties(e)}_updateJWTProperties(e){if(!this.shouldDecodeToken)return;const t=$e()(e);this.jwt=t,this.accountSid=t.sub,this.workspaceSid=t.grants.task_router.workspace_sid,this.workerSid=t.grants.task_router.worker_sid,this.role=t.grants.task_router.role}}},142:(e,t,r)=>{"use strict";r.d(t,{M0:()=>i,in:()=>s,j3:()=>n,hO:()=>o,O:()=>a,iz:()=>d,nB:()=>c,FB:()=>h,Uf:()=>l,iR:()=>u,UA:()=>p,xf:()=>g,EA:()=>_,qG:()=>k,VH:()=>f,Qh:()=>w,Nt:()=>v,L3:()=>m,zb:()=>S,fc:()=>E,PQ:()=>T,_G:()=>y,l4:()=>b,x6:()=>R,F3:()=>W,L8:()=>q,hS:()=>A,jz:()=>O,Iv:()=>C,Gf:()=>F});const i="accepted",s="completed",n="rejected",o="wrapping",a="call",d="dequeue",c="redirect",h="conference",l=Object.freeze({canceled:"canceled",complete:"complete",failed:"failed",initiated:"initiated"}),u={activitySid:"WorkerActivitySid"};Object.freeze(u);const p={rejectPendingReservations:"RejectPendingReservations"};Object.freeze(p);const g={accept:"CallAccept",record:"CallRecord",statusCallbackUrl:"CallStatusCallbackUrl",timeout:"CallTimeout",to:"CallTo"};Object.freeze(g);const _={to:"DequeueTo",from:"DequeueFrom",postWorkActivitySid:"DequeuePostWorkActivitySid",record:"DequeueRecord",timeout:"DequeueTimeout",statusCallbackUrl:"DequeueStatusCallbackUrl",statusCallbackEvents:"DequeueStatusCallbackEvents"};Object.freeze(_);const k={accept:"RedirectAccept"};Object.freeze(k);const f={taskChannelUniqueName:"TaskChannelUniqueName",taskChannelSid:"TaskChannelSid",attributes:"Attributes"},w="completed",v="wrapping";Object.freeze({accepted:0,rejected:1,timeout:2,canceled:3,rescinded:4,completed:5,wrapup:6});const m={"task.updated":"updated","task.canceled":"canceled","task.completed":"completed","task.wrapup":"wrapup"};Object.freeze(m);const S={"reservation.completed":"completed","reservation.rejected":"rejected","reservation.timeout":"timeout","reservation.canceled":"canceled","reservation.rescinded":"rescinded","reservation.accepted":"accepted","reservation.wrapup":"wrapup"};Object.freeze(S);const E=Object.freeze({taskTransfer:"task_transfer",activeOutgoingTaskTransfer:"active_outgoing_task_transfer"}),T="transfer-initiated",y={"transfer-attempt-failed":"attemptFailed","transfer-completed":"completed","transfer-failed":"failed","transfer-initiated":"transferInitiated","transfer-canceled":"canceled"};Object.freeze(y);const b={"task.transfer-attempt-failed":"transfer-attempt-failed","task.transfer-completed":"transfer-completed","task.transfer-failed":"transfer-failed","task.transfer-initiated":"transfer-initiated","task.transfer-canceled":"transfer-canceled"};Object.freeze(b);const R="v1",W="v2",q=1e3,A=1e3,O=5e3,C={TOKEN:"token",CLOSE_EXISTING_SESSIONS:"closeExistingSessions",CLIENT_VERSION:"clientVersion"},x=r(830),F=[{name:"INVALID_ARGUMENT",message:"One or more arguments passed were invalid."},{name:"INVALID_TOKEN",message:"The token is invalid or malformed."},{name:"TOKEN_EXPIRED",message:"Worker's active token has expired."},{name:"GATEWAY_CONNECTION_FAILED",message:"Could not connect to Twilio's servers."},{name:"GATEWAY_DISCONNECTED",message:"Connection to Twilio's servers was lost."},{name:"INVALID_GATEWAY_MESSAGE",message:"The JSON message received was malformed."},{name:"TASKROUTER_ERROR",message:"TaskRouter failed to complete the request."}].reduce(((e,t)=>(e[t.name]=new x(t),e)),{})},813:(e,t)=>{function r(e){if(!(this instanceof r))return new r(e);e=e||{};const t=function(){},i={interval:10,now:function(){return(new Date).getTime()},repeat:function(e,t){return setInterval(e,t)},stop:function(e,t){return clearInterval(e,t)},onsleep:t,onwakeup:t};for(let t in i)t in e||(e[t]=i[t]);this.interval=e.interval,this.lastbeat=0,this.pintvl=null,this.onsleep=e.onsleep,this.onwakeup=e.onwakeup,this.repeat=e.repeat,this.stop=e.stop,this.now=e.now}r.toString=function(){return"[Twilio.Heartbeat class]"},r.prototype.toString=function(){return"[Twilio.Heartbeat instance]"},r.prototype.beat=function(){if(this.lastbeat=this.now(),this.sleeping()){this.onwakeup&&this.onwakeup();var e=this;this.pintvl=this.repeat.call(null,(function(){e.check()}),1e3*this.interval)}},r.prototype.check=function(){const e=this.now()-this.lastbeat;!this.sleeping()&&e>=1e3*this.interval&&(this.onsleep&&this.onsleep(),this.stop.call(null,this.pintvl),this.pintvl=null)},r.prototype.sleeping=function(){return null===this.pintvl},t.y=r},834:(e,t,r)=>{"use strict";function i(e){try{return new Date(e)}catch(e){return null}}function s(e,t){for(const r in e)if(r in t&&!t[r](e[r]))throw new TypeError(`Option key: ${r} does not meet the required type.`);return!0}r.d(t,{T:()=>i,n:()=>s})},830:(e,t,r)=>{function i(e,t){Object.defineProperties(this,{_errorData:{value:e},name:{value:e.name},message:{value:t||e.message}})}(0,r(464).inherits)(i,Error),i.prototype.clone=function(e){return new i(this._errorData,e)},e.exports=i},622:e=>{"use strict";e.exports=require("loglevel")},464:e=>{"use strict";e.exports=require("util")},352:e=>{"use strict";e.exports=require("ws")}},t={};function r(i){var s=t[i];if(void 0!==s)return s.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i=r(349);module.exports=i})();
2
+ /*! twilio-taskrouter.js 0.8.2 */(()=>{"use strict";var e={7480:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ActivityProperties=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=i(r(6517)),u=i(r(9097)),c=r(3410).validateOptions,d=function(){function e(t,r){if((0,a.default)(this,e),!s.default.isObject(t))throw new TypeError("Failed to create an Activity. <Worker>worker is a required parameter.");if(!(r instanceof u.default))throw new TypeError("Failed to create an Activity. <ActivityDescriptor>descriptor is a required parameter.");(0,n.default)(this,r),this._worker=t,this._isCurrent=!1}return(0,o.default)(e,[{key:"isCurrent",get:function(){return this._isCurrent}},{key:"setAsCurrent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r={rejectPendingReservations:function(e){return s.default.isBoolean(e)}};if(!c(t,r))throw new TypeError("Failed to set activity=".concat(this.sid,". The options passed in did not match the required types."));if(t.rejectPendingReservations&&this.available)throw new Error("Unable to reject pending reservations when updating to an Available activity state.");return this._worker._updateWorkerActivity(this.sid,t).then((function(){return e}))}}]),e}();t.ActivityProperties=["account_sid","available","date_created","date_updated","friendly_name","sid","workspace_sid"];var l=d;t.default=l},803:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ChannelProperties=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=i(r(7431)),u=i(r(5370)),c=i(r(9548)),d=i(r(3761)),l=i(r(6517)),f=r(1239),h=i(r(7467)),p=i(r(4981));function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,d.default)(e);if(t){var n=(0,d.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,c.default)(this,r)}}var _=["capacity","available","assignedTasks","availableCapacityPercentage","dateUpdated","lastReservedTime"],g=function(e){(0,u.default)(r,e);var t=v(r);function r(e,i,o){var u;if((0,a.default)(this,r),u=t.call(this),!(e instanceof p.default))throw new TypeError("Failed to instantiate Worker. <Worker>worker is a required parameter.");if(!(o instanceof h.default))throw new TypeError("Failed to instantiate Channel. <WorkerChannelDescriptor>descriptor is a required parameter.");return u._request=i,u._log=e.getLogger("Channel-".concat(o.sid)),(0,n.default)((0,s.default)(u),o),u}return(0,o.default)(r,[{key:"_emitEvent",value:function(e,t){if(!l.default.isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!l.default.isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>rawEventData is a required parameter.");this._update(t),this.emit(e,this)}},{key:"_update",value:function(e){var t=this;try{var r=new h.default(e);_.forEach((function(e){t[e]=r[e]}))}catch(t){this._log.warn("Failed to update Channel sid=%s. Update aborted. Error: %s.",e.sid,t)}return this}}]),r}(f.EventEmitter);t.ChannelProperties=["account_sid","assigned_tasks","available","available_capacity_percentage","configured_capacity","date_created","date_updated","last_reserved_time","sid","task_channel_sid","task_channel_unique_name","worker_sid","workspace_sid"];var k=g;t.default=k},9222:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ReservationProperties=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=i(r(7431)),u=i(r(5370)),c=i(r(9548)),d=i(r(3761)),l=i(r(6517)),f=r(568),h=r(1239),p=i(r(3171)),v=r(6997),_=i(r(9655)),g=i(r(4364)),k=i(r(4981));function E(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,d.default)(e);if(t){var n=(0,d.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,c.default)(this,r)}}var w=r(3410).validateOptions,T=["dateUpdated","canceledReasonCode","status","timeout","task","task_transfer","version"],y=["reservation_timeout","task","canceled_reason_code"],S=function(e){(0,u.default)(r,e);var t=E(r);function r(e,i,o){var u;if((0,a.default)(this,r),u=t.call(this),!(e instanceof k.default))throw new TypeError("Failed to instantiate Reservation. <Worker>worker is a required parameter.");if(!(o instanceof p.default))throw new TypeError("Failed to instantiate Reservation. <ReservationDescriptor>descriptor is a required parameter.");return u._worker=e,u._log=e.getLogger("Reservation-".concat(o.sid)),u._request=i,u.task=u._createTask(o),o.transferDescriptor&&(u.transfer=u._createTransfer(o)),(0,n.default)((0,s.default)(u),o),delete u.taskDescriptor,delete u.transferDescriptor,u}return(0,o.default)(r,[{key:"accept",value:function(){var e=this,t=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,r={ReservationStatus:f.RESERVATION_STATUS_ACCEPTED};return this._request.post(t,r,f.API_V1,this.version).then((function(t){return e._update(t,y)}))}},{key:"complete",value:function(){var e=this,t=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,r={ReservationStatus:f.RESERVATION_STATUS_COMPLETED};return this._request.post(t,r,f.API_V1,this.version).then((function(t){return e._update(t,y)}))}},{key:"reject",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,i={ReservationStatus:f.RESERVATION_STATUS_REJECTED},n={activitySid:function(e){return l.default.isString(e)}};if(!w(t,n))throw new TypeError("Failed to issue Instruction:reject on Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));for(var a in t)i[f.RESERVATION_REJECT_OPTIONS[a]]=t[a];return this._request.post(r,i,f.API_V1,this.version).then((function(t){return e._update(t,y)}))}},{key:"wrap",value:function(){var e=this,t=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,r={ReservationStatus:f.RESERVATION_STATUS_WRAPPING};return this._request.post(t,r,f.API_V1,this.version).then((function(t){return e._update(t,y)}))}},{key:"call",value:function(e,t){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!l.default.isString(e))throw new TypeError("Error calling method call(). <string>from is a required parameter.");if(!l.default.isString(t))throw new TypeError("Error calling method call(). <string>url is a required parameter.");var n=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,a={Instruction:f.RESERVATION_INSTRUCTION_CALL,CallFrom:e,CallUrl:t},o={accept:function(e){return l.default.isBoolean(e)},record:function(e){return l.default.isString(e)},statusCallbackUrl:function(e){return l.default.isString(e)},timeout:function(e){return l.default.isInteger(e)},to:function(e){return l.default.isString(e)}};if(!w(i,o))throw new TypeError("Failed to issue Instruction:call on Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));for(var s in i)a[f.RESERVATION_CALL_OPTIONS[s]]=i[s];return this._request.post(n,a,f.API_V1).then((function(e){return r._update(e,y)}))}},{key:"dequeue",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,i={Instruction:f.RESERVATION_INSTRUCTION_DEQUEUE},n={from:function(e){return l.default.isString(e)},to:function(e){return l.default.isString(e)},postWorkActivitySid:function(e){return l.default.isString(e)},record:function(e){return l.default.isString(e)},timeout:function(e){return l.default.isInteger(e)},statusCallbackUrl:function(e){return l.default.isString(e)},statusCallbackEvents:function(e){return l.default.isString(e)}};if(!w(t,n))throw new TypeError("Failed to issue Instruction:dequeue on Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));for(var a in t)i[f.RESERVATION_DEQUEUE_OPTIONS[a]]=t[a];return this._request.post(r,i,f.API_V1).then((function(t){return e._update(t,y)}))}},{key:"redirect",value:function(e,t){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!l.default.isString(e))throw new TypeError("Error calling method redirect(). <string>callSid is a required parameter.");if(!l.default.isString(t))throw new TypeError("Error calling method redirect(). <string>url is a required parameter.");var n=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,a={accept:function(e){return l.default.isBoolean(e)}},o={Instruction:f.RESERVATION_INSTRUCTION_REDIRECT,RedirectCallSid:e,RedirectUrl:t};if(!w(i,a))throw new TypeError("Failed to issue Instruction:redirect on Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));for(var s in i)o[f.RESERVATION_REDIRECT_OPTIONS[s]]=i[s];return this._request.post(n,o,f.API_V1).then((function(e){return r._update(e,y)}))}},{key:"conference",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r={to:function(e){return l.default.isString(e)},from:function(e){return l.default.isString(e)},timeout:function(e){return l.default.isInteger(e)},statusCallback:function(e){return l.default.isString(e)},statusCallbackMethod:function(e){return l.default.isString(e)},statusCallbackEvent:function(e){return l.default.isString(e)},record:function(e){return l.default.isString(e)},muted:function(e){return l.default.isBoolean(e)},beep:function(e){return l.default.isBoolean(e)||l.default.isString(e)},startConferenceOnEnter:function(e){return l.default.isBoolean(e)},endConferenceOnExit:function(e){return l.default.isBoolean(e)},endConferenceOnCustomerExit:function(e){return l.default.isBoolean(e)},waitUrl:function(e){return l.default.isString(e)},waitMethod:function(e){return l.default.isString(e)},earlyMedia:function(e){return l.default.isBoolean(e)},maxParticipants:function(e){return l.default.isInteger(e)},conferenceStatusCallback:function(e){return l.default.isString(e)},conferenceStatusCallbackMethod:function(e){return l.default.isString(e)},conferenceStatusCallbackEvent:function(e){return l.default.isString(e)},conferenceRecord:function(e){return l.default.isBoolean(e)||l.default.isString(e)},conferenceTrim:function(e){return l.default.isString(e)},recordingChannels:function(e){return l.default.isString(e)},recordingStatusCallback:function(e){return l.default.isString(e)},recordingStatusCallbackMethod:function(e){return l.default.isString(e)},conferenceRecordingStatusCallback:function(e){return l.default.isString(e)},conferenceRecordingStatusCallbackMethod:function(e){return l.default.isString(e)},region:function(e){return l.default.isString(e)},sipAuthUsername:function(e){return l.default.isString(e)},sipAuthPassword:function(e){return l.default.isString(e)}};if(!w(t,r))throw new TypeError("Failed to issue Instruction:conference on Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));var i=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path,n={Instruction:f.RESERVATION_INSTRUCTION_CONFERENCE};for(var a in t)n[l.default.upperFirst(a)]=t[a];return this._request.post(i,n,f.API_V1).then((function(){return e}))}},{key:"updateParticipant",value:function(e){var t=this;if(!w(e,{endConferenceOnExit:function(e){return l.default.isBoolean(e)},mute:function(e){return l.default.isBoolean(e)},beepOnExit:function(e){return l.default.isBoolean(e)}}))throw new TypeError("Failed to update Worker Participant tied to Reservation sid=".concat(this.sid,". The options passed in did not match the required types."));var r=this._worker.getRoutes().getRoute(v.WORKER_PARTICIPANT_INSTANCE).path,i={ReservationSid:this.sid};for(var n in e)i[l.default.upperFirst(n)]=e[n];return this._request.post(r,i,f.API_V2).then((function(){return t}))}},{key:"fetchLatestVersion",value:function(){var e=this,t=this._worker.getRoutes().getRoute(v.RESERVATION_INSTANCE,this.sid).path;return this._request.get(t,f.API_V1).then((function(t){return e._update(t)}))}},{key:"_createTask",value:function(e){if(!(e instanceof p.default))return this._log.error("Error calling method _createTask() for Reservation sid=".concat(this.sid,". <ReservationDescriptor>reservationDescriptor is a required parameter.")),{};var t=e.taskDescriptor;try{return new _.default(this._worker,this._request,e.sid,t)}catch(e){return this._log.error("Failed to create a Task for Reservation sid=".concat(this.sid,". Error: ").concat(e)),{}}}},{key:"_createTransfer",value:function(e){if(!(e instanceof p.default))return this._log.error("Error calling method _createTransfer() for Reservation sid=".concat(this.sid,". <ReservationDescriptor>reservationDescriptor is a required parameter.")),{};var t=e.transferDescriptor;try{return new g.default(this._worker,t)}catch(e){return this._log.error("Failed to create a Transfer for Reservation sid=".concat(this.sid,". Error: ").concat(e)),{}}}},{key:"_update",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{var i=new p.default(e,this._worker,r);T.forEach((function(n){if("task"===n){if(-1===r.indexOf("task")){var a=e.task_transfer,o=e.active_outgoing_task_transfer;t.task._update(e.task,{incoming:a,outgoing:o})}}else"canceledReasonCode"===n?-1===r.indexOf("canceled_reason_code")&&e.canceled_reason_code&&(t[n]=i[n]):"task_transfer"===n&&e.task_transfer?t.transfer._update(e.task_transfer):t[n]=i[n]}))}catch(t){throw this._log.error("Failed to update Reservation sid=".concat(e.sid,". Update aborted. Error: ").concat(t,".")),t}return this}},{key:"_emitEvent",value:function(e,t){if(!l.default.isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!l.default.isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>rawEventData is a required parameter.");this._update(t),this.emit(e,this)}}]),r}(h.EventEmitter);t.ReservationProperties=["account_sid","date_created","date_updated","reservation_status","sid","task","reservation_timeout","worker_sid","workspace_sid","version"];var m=S;t.default=m},7071:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.SuperviseModes=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=i(r(5370)),u=i(r(9548)),c=i(r(3761)),d=i(r(6517)),l=i(r(4981)),f=r(568),h=r(6997);function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,c.default)(e);if(t){var n=(0,c.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,u.default)(this,r)}}t.SuperviseModes=["monitor","barge","whisper"];var v=function(e){(0,s.default)(r,e);var t=p(r);function r(){return(0,a.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"monitor",value:function(e,t,r){if(!d.default.isString(e))throw new TypeError("Error monitoring reservation: <string>taskSid is a required parameter");if(!d.default.isString(t))throw new TypeError("Error monitoring reservation: <string>reservationSid is a required parameter");if(r&&!d.default.isObject(r))throw new TypeError("Error monitoring reservation: <string>extraParams must be an object");return this._supervise("monitor",e,t,r)}},{key:"_supervise",value:function(e,t,r,i){var a=this.getRoutes().getRoute(h.TASK_RESERVATION_INSTANCE,t,r).path,o=(0,n.default)({},i,{Instruction:"supervise",Supervisor:this.sid,SupervisorMode:e});return this._request.post(a,o,f.API_V1).then((function(){}))}}]),r}(l.default);t.default=v},9655:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.TaskProperties=void 0;var n=i(r(1307)),a=i(r(9591)),o=i(r(8213)),s=i(r(7537)),u=i(r(8765)),c=i(r(7431)),d=i(r(5370)),l=i(r(9548)),f=i(r(3761)),h=i(r(6517)),p=r(568),v=r(1239),_=i(r(2903)),g=i(r(4981)),k=r(6997),E=i(r(9127)),w=r(3410);function T(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,f.default)(e);if(t){var n=(0,f.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,l.default)(this,r)}}var y=["attributes","status","workflowSid","workflowName","queueSid","queueName","priority","reason","routingTarget","timeout","taskChannelSid","taskChannelUniqueName","age","addOns","dateUpdated","transfers","version"],S=function(e){(0,d.default)(l,e);var t,r,i=T(l);function l(e,t,r,n){var a;if((0,s.default)(this,l),a=i.call(this),!(e instanceof g.default))throw new TypeError("Failed to instantiate Task. <Worker>worker is a required parameter.");if(!n)throw new TypeError("Failed to instantiate Task. <TaskDescriptor>descriptor is a required parameter.");if(!(n instanceof _.default))throw new TypeError("descriptor should be of type <TaskDescriptor>");if("string"!=typeof r)throw new TypeError("Failed to instantiate Task. <string>reservationSid is a required parameter.");return a._worker=e,a._log=e.getLogger("Task-".concat(n.sid)),a._request=t,a.transfers=new E.default(e,t,n),(0,o.default)((0,c.default)(a),n),a.reservationSid=r,a}return(0,u.default)(l,[{key:"complete",value:function(e){var t=this;if(!h.default.isString(e))throw new TypeError("Error calling method complete(). <string>reason is a required parameter.");var r=this._worker.getRoutes().getRoute(k.TASK_INSTANCE,this.sid).path,i={AssignmentStatus:p.TASK_STATUS_COMPLETED,Reason:e};return this._request.post(r,i,p.API_V1,this.version).then((function(e){return t._update(e)}))}},{key:"transfer",value:(r=(0,a.default)(n.default.mark((function e(t){var r,i,a,o,s=arguments;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=s.length>1&&void 0!==s[1]?s[1]:{},h.default.isString(t)){e.next=3;break}throw new TypeError("Error calling method transfer(). <string>to is a required parameter.");case 3:return i=this._worker.getRoutes().getRoute(k.TASK_TRANSFER_LIST).path,a={ReservationSid:this.reservationSid,TaskSid:this.sid,To:t},r.attributes&&(a.Attributes=r.attributes),r.mode&&(a.Mode=r.mode),r.priority&&(a.Priority=r.priority),e.next=10,this._request.post(i,a,p.API_V2);case 10:return o=e.sent,this._log.info("Received response to transfer request to Worker/TaskQueue=".concat(t)),this._log.debug("Response object",o),this.transfers._updateOutgoing(o,!0),e.abrupt("return",this);case 15:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"wrapUp",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this._worker.getRoutes().getRoute(k.TASK_INSTANCE,this.sid).path,i={AssignmentStatus:p.TASK_STATUS_WRAPPING};if(t.reason){if(!h.default.isString(t.reason))throw new Error("Failed to call wrapUp() on Task sid=".concat(this.sid,". A <string>reason is required."));i.Reason=t.reason}return this._request.post(r,i,p.API_V1,this.version).then((function(t){return e._update(t)}))}},{key:"setAttributes",value:function(e){var t=this;if(!h.default.isObject(e))throw new TypeError("Unable to set attributes on Task. <object>attributes is a required parameter.");var r=this._worker.getRoutes().getRoute(k.TASK_INSTANCE,this.sid).path,i={Attributes:e};return this._request.post(r,i,p.API_V1,this.version).then((function(e){return t._update(e)}))}},{key:"updateParticipant",value:function(e){var t=this,r={hold:function(e){return h.default.isBoolean(e)},holdUrl:function(e){return h.default.isString(e)},holdMethod:function(e){return h.default.isString(e)}};if(!(0,w.validateOptions)(e,r))throw new TypeError("Failed to update Participant tied to Task sid=".concat(this.sid,". The options passed in did not match the required types."));var i=this._worker.getRoutes().getRoute(k.CUSTOMER_PARTICIPANT_INSTANCE).path,n={TaskSid:this.sid};for(var a in e)n[h.default.upperFirst(a)]=e[a];return this._request.post(i,n,p.API_V2).then((function(e){return t._update(e)}))}},{key:"kick",value:function(e){var t=this;if(!h.default.isString(e))throw new TypeError("Error calling method kick(). <string>workerSid is a required parameter.");var r=this._worker.getRoutes().getRoute(k.KICK_WORKER_PARTICIPANT).path,i={TaskSid:this.sid,TargetWorkerSid:e};return this._request.post(r,i,p.API_V2).then((function(e){return t._update(e)}))}},{key:"hold",value:function(e,t,r){var i=this,n={holdUrl:function(e){return h.default.isString(e)},holdMethod:function(e){return h.default.isString(e)}};if(!h.default.isString(e))throw new TypeError("Error calling method hold(). <string>targetWorkerSid is a required parameter.");if(!h.default.isBoolean(t))throw new TypeError("Error calling method hold(). <boolean>onHold is a required parameter that is either true or false.");if(!(0,w.validateOptions)(r,n))throw new TypeError("Failed to update Participant tied to Task sid=".concat(this.sid,". The options passed in did not match the required types."));var a=this._worker.getRoutes().getRoute(k.HOLD_WORKER_PARTICIPANT_INSTANCE).path,o={TaskSid:this.sid,TargetWorkerSid:e,Hold:t};for(var s in r)o[h.default.upperFirst(s)]=r[s];return this._request.post(a,o,p.API_V2).then((function(e){return i._update(e)}))}},{key:"fetchLatestVersion",value:function(){var e=this,t=this._worker.getRoutes().getRoute(k.TASK_INSTANCE,this.sid).path;return this._request.get(t,p.API_V1).then((function(t){return e._update(t)}))}},{key:"_emitEvent",value:function(e,t){if(this._log.trace("_emitEvent(".concat(e,", ").concat(JSON.stringify(t),")")),!h.default.isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!h.default.isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");this.emit(e,this,t)}},{key:"_emitEventForOutgoingTransfer",value:(t=(0,a.default)(n.default.mark((function e(t,r){var i;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._log.debug("_emitEventForOutgoingTransfer(".concat(t,", ").concat(JSON.stringify(r),")")),h.default.isString(t)){e.next=3;break}throw new TypeError("Error calling _emitEventForOutgoingTransfer(). <string>eventType is a required parameter.");case 3:if(h.default.isObject(r)){e.next=5;break}throw new TypeError("Error calling method _emitEventForOutgoingTransfer(). <object>payload is a required parameter.");case 5:this.transfers.outgoing||this._log.debug("The transfers.outgoing object is NOT present"),i=0;case 7:if(this.transfers.outgoing||!(i<20)){e.next=14;break}return e.next=10,new Promise((function(e){return setTimeout(e,500)}));case 10:i++,this._log.debug("Transfer event arrived, waiting for API response, because transfer object missing",i),e.next=7;break;case 14:i=0;case 15:if(!(this.transfers.outgoing&&this.transfers.outgoing.sid!==r.sid&&i<20)){e.next=22;break}return e.next=18,new Promise((function(e){return setTimeout(e,500)}));case 18:i++,this._log.debug("Transfer event arrived, waiting for API response to get the correct transfer SID",i),e.next=15;break;case 22:this._log.debug("Transfer sid from API response:",this.transfers&&this.transfers.outgoing?this.transfers.outgoing.sid:"No sid"),this._log.debug("Transfer sid from event:",r.sid),this.transfers.outgoing&&this.transfers.outgoing.sid===r.sid?Object.keys(h.default.pick(p.taskTransferEventTypes,[p.TRANSFER_INITIATED])).indexOf(t)>-1?(this.transfers._updateOutgoing(r),this.emit(p.taskTransferEventTypes[p.TRANSFER_INITIATED],this.transfers.outgoing)):this.transfers._emitEvent(t,r):this._log.debug("The transfers.outgoing object is either not present or does not match the transfer sid in the event. ".concat(JSON.stringify(r)));case 25:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"_update",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var i=new _.default(e,this._config);y.forEach((function(e){"transfers"===e?(r.incoming||r.outgoing)&&t.transfers._update(r):t[e]=i[e]}))}catch(t){throw this._log.error("Failed to update Task sid=".concat(e.sid,". Update aborted."),t),new Error("Failed to update Task sid=".concat(e.sid,". Update aborted. Error: ").concat(t,"."))}return this}}]),l}(v.EventEmitter);t.TaskProperties=["addons","age","attributes","date_created","date_updated","priority","queue_name","queue_sid","reason","routing_target","sid","assignment_status","task_channel_unique_name","task_channel_sid","timeout","workflow_name","workflow_sid","version"];var m=S;t.default=m},5058:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.TaskQueueProperties=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(7531));t.TaskQueueProperties=["friendly_name","reservation_activity_name","assignment_activity_name","target_workers","max_reserved_workers","task_order","reservation_activity_sid","assignment_activity_sid","workspace_sid","account_sid","sid","date_created","date_updated","lifo_queue"];var s=function e(t){if((0,a.default)(this,e),!(t instanceof o.default))throw new TypeError("Failed to create a TaskQueue. <TaskQueueDescriptor>descriptor is a required parameter.");(0,n.default)(this,t)};t.default=s},4981:(e,t,r)=>{var i=r(7880),n=r(9293);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.WorkerProperties=void 0;var a=i(r(353)),o=i(r(8213)),s=i(r(7537)),u=i(r(8765)),c=i(r(7431)),d=i(r(5370)),l=i(r(9548)),f=i(r(3761)),h=i(r(6517)),p=i(r(1910)),v=i(r(3130)),_=r(1239),g=i(r(6427)),k=i(r(2732)),E=i(r(2063)),w=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=O(t);if(r&&r.has(e))return r.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,r&&r.set(e,i);return i}(r(6997)),T=i(r(2129)),y=r(568),S=i(r(276)),m=i(r(5422)),R=i(r(1531)),b=r(3410),A=i(r(4634));function O(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(O=function(e){return e?r:t})(e)}function I(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,f.default)(e);if(t){var n=(0,f.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,l.default)(this,r)}}var P=["dateUpdated","dateStatusChanged","attributes","name","available","version"],N=function(e){(0,d.default)(r,e);var t=I(r);function r(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{Request:k.default,EventBridgeSignaling:v.default};if((0,s.default)(this,r),i=t.call(this),!h.default.isString(e))throw new TypeError("Failed to instantiate Worker. <string>token is a required parameter.");var o,u={connectActivitySid:function(e){return h.default.isString(e)},closeExistingSessions:function(e){return h.default.isBoolean(e)},logLevel:function(e){return h.default.isString(e)},ebServer:function(e){return h.default.isString(e)},wsServer:function(e){return h.default.isString(e)},region:function(e){return h.default.isString(e)}};return(0,b.validateOptions)(n,u),i._connectActivitySid=n.connectActivitySid,i._closeExistingSessions=n.closeExistingSessions,i._logLevel=n.logLevel||"error",i._config=new p.default(e,n),i._log=new g.default("Worker-".concat(i._config.getLogIdentifier()),i._logLevel),i._request=new a.Request(i._config),i._dataServices={activitiesEntity:new S.default((0,c.default)(i),i._request),channelsEntity:new m.default((0,c.default)(i),i._request),reservationsEntity:new R.default((0,c.default)(i),i._request)},i._signaling=new a.EventBridgeSignaling((0,c.default)(i),{closeExistingSessions:n.closeExistingSessions}),i._subscribeToSignalingEvents(),i.retryUtil=new E.default,o=n.eventHandlerClass?new n.eventHandlerClass((0,c.default)(i)):new A.default((0,c.default)(i)),i.taskRouterEventHandler=o,i}return(0,u.default)(r,[{key:"createTask",value:function(e,t,r,i){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!h.default.isString(e))throw new TypeError("Error calling method createTask(). <string>to is a required parameter.");if(!h.default.isString(t))throw new TypeError("Error calling method createTask(). <string>from is a required parameter.");if(!h.default.isString(r))throw new TypeError("Error calling method createTask(). <string>workflowSid is a required parameter.");if(!h.default.isString(i))throw new TypeError("Error calling method createTask(). <string>taskQueueSid is a required parameter.");var a={attributes:function(e){return h.default.isObject(e)},taskChannelUniqueName:function(e){return h.default.isString(e)},taskChannelSid:function(e){return h.default.isString(e)}};if(!(0,b.validateOptions)(n,a))throw new TypeError("Failed to create a Task for Worker ".concat(this.sid,". The options passed in did not match the required types."));var s=this.getRoutes().getRoute(w.TASK_LIST).path,u={WorkflowSid:r,TaskQueueSid:i,RoutingTarget:this.sid};for(var c in n)"attributes"===c||(u[y.CREATE_TASK_OPTIONS[c]]=n[c]);var d={outbound_to:e,from:t};return u.Attributes=(0,o.default)({},n.attributes,d),this._request.post(s,u,y.API_V1).then((function(e){return e.sid}))}},{key:"getLogger",value:function(e){return new g.default("".concat(e,"-").concat(this.sid),this._config._logLevel)}},{key:"setAttributes",value:function(e){var t=this;if(!h.default.isObject(e))throw new TypeError("Unable to set attributes on Worker. <object>attributes is a required parameter.");var r=this.getRoutes().getRoute(w.WORKER_INSTANCE).path,i={Attributes:e};return this._request.post(r,i,y.API_V1,this.version).then((function(e){return t._update(e)}))}},{key:"_bumpVersion",value:function(){this.version&&(this.version=String(Number(this.version)+1))}},{key:"updateToken",value:function(e){if(!h.default.isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this._log.info("Proceeding to update the Worker's current active token with a new token."),this._log.debug("New token: "+e);try{this._config.updateToken(e),this._signaling.updateToken(e),this.emit("tokenUpdated")}catch(e){this.emit("error",e)}}},{key:"fetchLatestVersion",value:function(){var e=this,t=this.getRoutes().getRoute(w.WORKER_INSTANCE).path;return this._request.get(t,y.API_V1).then((function(t){return e._update(t)}))}},{key:"_subscribeToSignalingEvents",value:function(){var e=this;this._log.info("Subscribing to Signaling events .... "),this._signaling.on("connected",(function(){e._log.info("Received Event: 'connected' from Signaling layer. Pending initialization.",e.sid)})),this._signaling.on("disconnected",(function(t){e._log.info("Received Event: 'disconnected' from Signaling layer for Worker %s. %s",e.sid,t),e._unSubscribeFromTaskRouterEvents(),e.emit("disconnected",t)})),this._signaling.on("init",(function(t){e._log.info("Received Event: 'init' from Signaling layer. Proceeding to initialize Worker %s.",t.channel_id),e.sid=t.channel_id,e.accountSid=t.account_sid,e.workspaceSid=t.workspace_sid,e._signaling.setLifetime(t.token_lifetime),e._initialize()})),this._signaling.on("error",(function(t){e._log.info("Received Event: 'error' from Signaling layer for Worker %s.",e.sid),e.emit("error",t)})),this._signaling.on("tokenExpired",(function(){e._log.info("Received Event: 'tokenExpired' for for Worker %s. Please update the token. Websocket will not reconnect automatically until token is updated.",e.sid),e.emit("tokenExpired")}))}},{key:"_subscribeToTaskRouterEvents",value:function(){this._log.info("Subscribing to TaskRouter events ... ");for(var e=0,t=Object.entries(this.taskRouterEventHandler.getTREventsToHandlerMapping());e<t.length;e++){var r=(0,a.default)(t[e],2),i=r[0],n=r[1];this._signaling.on(i,this.taskRouterEventHandler[n])}}},{key:"_unSubscribeFromTaskRouterEvents",value:function(){this._log.info("Unsubscribing from TaskRouter events ... ");for(var e=0,t=Object.entries(this.taskRouterEventHandler.getTREventsToHandlerMapping());e<t.length;e++){var r=(0,a.default)(t[e],2),i=r[0],n=r[1];this._signaling.removeListener(i,this.taskRouterEventHandler[n])}}},{key:"_initialize",value:function(){var e=this;this._routes=new w.default(this.workspaceSid,this.sid),this._log.info("Initializing Worker %s...",this.sid);var t,r=this.getRoutes().getRoute(w.WORKER_INSTANCE).path;this._request.get(r,y.API_V1).then((function(r){var i=new T.default(r);return t=i.activitySid,delete i.activityName,delete i.activitySid,delete i.available,(0,o.default)(e,i),Promise.all([e._dataServices.activitiesEntity.fetchActivities(),e._dataServices.channelsEntity.fetchChannels(),e._dataServices.reservationsEntity.fetchReservations()])})).then((function(){e._log.info("Worker %s activities, channels and pending reservations initialized",e.sid),e._setCurrentActivity(t),e._connectActivitySid?e._setWorkerConnectActivity().then((function(){e._log.info("Successfully updated Worker on connect to Activity=%s",e._connectActivitySid),e._log.info("Worker %s successfully initialized",e.sid)})):e._log.info("Worker %s successfully initialized",e.sid),e._subscribeToTaskRouterEvents(),e.emit("ready",e)})).catch((function(t){e._log.error("Failed to initialize Worker %s. Error: %s",e.sid,t),e.emit("error","Failed to initialize Worker ".concat(e.sid))}))}},{key:"channels",get:function(){return this._dataServices.channelsEntity.channels}},{key:"activities",get:function(){return this._dataServices.activitiesEntity.activities}},{key:"reservations",get:function(){return this._dataServices.reservationsEntity.reservations}},{key:"_setCurrentActivity",value:function(e){var t=this.activities.get(e);if(!t)throw new Error("Unable to set the current Activity sid=".concat(e," on the Worker."));t._isCurrent=!0,this.activity=t,this.activity._isCurrent=!0}},{key:"_setWorkerConnectActivity",value:function(){var e=this;if(!h.default.isString(this._connectActivitySid))throw new TypeError("Failed to set the Worker's activity to the provided optional connectActivitySid. <string>connectActivitySid must be a string.");return this._updateWorkerActivity(this._connectActivitySid).then((function(){return e._log.info("Successfully set the Worker's activity to the provided connectActivitySid=%s on connection.",e._connectActivitySid),e._connectRetry=0,e})).catch((function(t){var r=(0,b.getStatusCodeFromError)(t);if(e._connectRetry>=3||![0,429,500,502,503,504].includes(r))throw e._log.error("Unable to set Worker %s activity to the provided %s on successful connection. %s",e.sid,e._connectActivitySid,t),t;return e._connectRetry=e._connectRetry>0?e._connectRetry+1:1,e.retryUtil.whenReady(e._connectRetry).then((function(t){return e._log.info("Retrying Update Worker Activity after backoff time: ".concat(t,"ms for retryCount: ").concat(e._connectRetry)),e._setWorkerConnectActivity.bind(e)()}))}))}},{key:"_updateWorkerActivity",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!h.default.isString(e))throw new TypeError("Error updating Worker Activity: <string>activitySid is a required parameter");var i=this.getRoutes().getRoute(w.WORKER_INSTANCE).path,n={ActivitySid:e};for(var a in r)n[y.WORKER_UPDATE_OPTIONS[a]]=r[a];return this._request.post(i,n,y.API_V1,this.version).then((function(r){try{t._update(r),t.activity._isCurrent=!1;var i=t.activities.get(r.activity_sid);t.activity=i,t.activity._isCurrent=!0}catch(r){throw t._log.error("Failed to update the Worker's activity to sid=%s. Error: %s",e,r),r}return t}))}},{key:"_update",value:function(e){var t=this;this._log.trace("Attempting to update Worker %s with latest Worker data=%s",this.sid,JSON.stringify(e));try{var r=new T.default(e);P.forEach((function(e){t[e]=r[e]}))}catch(t){this._log.error("Failed to update Worker sid=%s. Update aborted. Error: %s.",e.sid,t)}return this}},{key:"disconnect",value:function(){this._signaling.disconnect()}},{key:"getRoutes",value:function(){return this._routes}}]),r}(_.EventEmitter);t.WorkerProperties=["account_sid","activity_name","activity_sid","attributes","available","date_created","date_status_changed","date_updated","friendly_name","sid","workspace_sid","version"];var C=N;t.default=C},1145:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(2129)),s=function e(t){if((0,a.default)(this,e),!(t instanceof o.default))throw new TypeError("Failed to create a WorkerContainer. <WorkerDescriptor>descriptor is a required parameter.");(0,n.default)(this,t)};t.default=s},9921:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(4378)),s=i(r(6517)),u=i(r(2732)),c=i(r(1910)),d=i(r(5567)),l=i(r(6427)),f=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;(0,n.default)(this,e),this._config=new c.default(t,r),this._request=new u.default(this._config),this._logLevel=r.logLevel||"error",this._log=new l.default("Workspace-".concat(this._config.getLogIdentifier()),this._logLevel),this.shouldDecodeToken=!i,this.workspaceSid=i,this._updateJWTProperties(t),this.workspaceEntity=new o.default(this.workspaceSid,this._request,r)}return(0,a.default)(e,[{key:"fetchWorker",value:function(e){return this.workspaceEntity.fetchWorker(e)}},{key:"fetchWorkers",value:function(e){var t=this;return this.workspaceEntity.fetchWorkers(e).then((function(){return t.workspaceEntity.Workers}))}},{key:"fetchTaskQueue",value:function(e){return this.workspaceEntity.fetchTaskQueue(e)}},{key:"fetchTaskQueues",value:function(e){var t=this;return this.workspaceEntity.fetchTaskQueues(e).then((function(){return t.workspaceEntity.TaskQueues}))}},{key:"updateToken",value:function(e){if(!s.default.isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this._config.updateToken(e),this._updateJWTProperties(e)}},{key:"_updateJWTProperties",value:function(e){if(this.shouldDecodeToken){var t=(0,d.default)(e);this.jwt=t,this.accountSid=t.sub,this.workspaceSid=t.grants.task_router.workspace_sid,this.workerSid=t.grants.task_router.worker_sid,this.role=t.grants.task_router.role}}}]),e}();t.default=f},4364:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(5370)),o=i(r(9548)),s=i(r(3761));function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,s.default)(e);if(t){var n=(0,s.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,o.default)(this,r)}}var c=function(e){(0,a.default)(r,e);var t=u(r);function r(e,i){return(0,n.default)(this,r),t.call(this,e,i)}return r}(i(r(2381)).default);t.default=c},3694:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(1307)),a=i(r(9591)),o=i(r(7537)),s=i(r(8765)),u=i(r(5370)),c=i(r(9548)),d=i(r(3761)),l=i(r(6517)),f=i(r(2381)),h=r(568),p=r(6997);function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,d.default)(e);if(t){var n=(0,d.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,c.default)(this,r)}}var _=function(e){(0,u.default)(i,e);var t,r=v(i);function i(e,t,n,a){var s;if((0,o.default)(this,i),s=r.call(this,e,a),"string"!=typeof n)throw new TypeError("Failed to instantiate OutgoingTransfer. <string>taskSid is a required parameter.");return s._worker=e,s._request=t,s.taskSid=n,s}return(0,s.default)(i,[{key:"_emitEvent",value:function(e,t){if(this._log.trace("_emitEvent(".concat(e,", ").concat(JSON.stringify(t),")")),!l.default.isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!l.default.isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");this.emit(e,this)}},{key:"cancel",value:(t=(0,a.default)(n.default.mark((function e(){var t,r,i;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._worker.getRoutes().getRoute(p.TASK_TRANSFER_INSTANCE,this.sid).path,r={TaskSid:this.taskSid,TransferStatus:h.TRANSFER_STATUS.canceled},e.next=4,this._request.post(t,r,h.API_V2);case 4:return i=e.sent,e.abrupt("return",this._update(i));case 6:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})}]),i}(f.default);t.default=_},2381:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.TransferProperties=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=i(r(7431)),u=i(r(5370)),c=i(r(9548)),d=i(r(3761)),l=r(1239),f=i(r(3119));function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,d.default)(e);if(t){var n=(0,d.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,c.default)(this,r)}}var p=["dateUpdated","status","transferFailedReason"],v=function(e){(0,u.default)(r,e);var t=h(r);function r(e,i){var o;if((0,a.default)(this,r),o=t.call(this),!(i instanceof f.default))throw new TypeError("Failed to instantiate Transfer. <TransferDescriptor>descriptor is a required parameter.");return o._log=e.getLogger("Transfer-".concat(i.sid)),(0,n.default)((0,s.default)(o),i),o}return(0,o.default)(r,[{key:"_update",value:function(e){var t=this;try{var r=new f.default(e);p.forEach((function(e){t[e]=r[e]}))}catch(t){throw this._log.error("Failed to update Transfer sid=".concat(e.sid,". Update aborted."),t),new Error("Failed to update Transfer sid=".concat(e.sid,". Update aborted. Error: ").concat(t,"."))}return this}}]),r}(l.EventEmitter);t.TransferProperties=["date_created","date_updated","initiating_reservation_sid","initiating_worker_sid","initiating_queue_sid","initiating_workflow_sid","sid","transfer_mode","transfer_to","transfer_type","transfer_status"];var _=v;t.default=_},9127:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(5370)),s=i(r(9548)),u=i(r(3761)),c=i(r(6517)),d=r(1239),l=r(568),f=i(r(4364)),h=i(r(3694)),p=i(r(2903)),v=i(r(3119));function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,u.default)(e);if(t){var n=(0,u.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,s.default)(this,r)}}var g=function(e){(0,o.default)(r,e);var t=_(r);function r(e,i,a){var o;if((0,n.default)(this,r),o=t.call(this),!(a instanceof p.default))throw new TypeError("Failed to instantiate Transfers. <TaskDescriptor>taskDescriptor is a required parameter.");return o._log=e.getLogger("Transfers-".concat(a.sid)),o._worker=e,o._request=i,o.incoming=a.incomingTransferDescriptor?new f.default(e,a.incomingTransferDescriptor):null,o.outgoing=a.outgoingTransferDescriptor?new h.default(e,i,a.sid,a.outgoingTransferDescriptor):null,o}return(0,a.default)(r,[{key:"_emitEvent",value:function(e,t){if(this._log.trace("_emitEvent(".concat(e,", ").concat(JSON.stringify(t),")")),!c.default.isString(e))throw new TypeError("Error calling _emitEvent(). <string>eventType is a required parameter.");if(!c.default.isObject(t))throw new TypeError("Error calling method _emitEvent(). <object>payload is a required parameter.");var r=l.taskTransferEventTypes[e];this.outgoing?this.outgoing.sid===t.sid?Object.keys(c.default.pick(l.taskTransferEventTypes,["transfer-attempt-failed","transfer-completed","transfer-failed","transfer-canceled"])).indexOf(e)>-1&&(this._updateOutgoing(t),this.outgoing._emitEvent(r,t)):this._log.warn("The transfer %s specified by Event: transfer.%s does not match the current active outgoing transfer for Worker %s. Skipping event.",t.sid,r,this._worker.sid):this._log.warn("An active outgoing transfer does currently exist in Worker %s transfers map for Event: transfer.%s. Skipping event.",this._worker.sid,r)}},{key:"_updateOutgoing",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];!this.outgoing||t?this.outgoing=new h.default(this._worker,this._request,e.task_sid,new v.default(e)):this.outgoing._update(e)}},{key:"_update",value:function(e){if(e.incoming)if(this.incoming)this.incoming._update(e.incoming);else{var t=new v.default(e.incoming);this.incoming=new f.default(this._worker,this._request,e.incoming.task_sid,t)}if(e.outgoing)if(this.outgoing)this.outgoing._update(e.outgoing);else{var r=new v.default(e.outgoing);this.outgoing=new h.default(this._worker,this._request,e.outgoing.task_sid,r)}}}]),r}(d.EventEmitter);t.default=g},276:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(6517)),s=i(r(7480)),u=i(r(9097)),c=r(568),d=i(r(7136)),l=r(6997),f=function(){function e(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,n.default)(this,e),!o.default.isObject(t))throw new TypeError("Failed to initialize ActivitiesEntity. <Worker>worker is a required parameter.");this._activities=new Map,this._log=t.getLogger("ActivitiesEntity-".concat(t.sid)),this._request=r,this._worker=t,this._pageSize=i.pageSize||c.DEFAULT_PAGE_SIZE,o.default.inRange(this._pageSize,1,c.DEFAULT_PAGE_SIZE+1)||(this._log.warn("PageSize range for ActivitiesEntity must be between 1 and %d. Setting pageSize to default size=%d",c.DEFAULT_PAGE_SIZE,c.DEFAULT_PAGE_SIZE),this._pageSize=1e3)}return(0,a.default)(e,[{key:"activities",get:function(){return this._activities}},{key:"fetchActivities",value:function(){var e=this._getPage();return this._getAllActivities(e)}},{key:"_getAllActivities",value:function(e){var t=this;return e.then((function(e){return e.items.forEach((function(e){t._insertActivity(e)})),e.hasNextPage?t._getAllActivities(e.nextPage()):Promise.resolve()}))}},{key:"_getPage",value:function(e){var t=this;e=e||{};var r=this._worker.getRoutes().getRoute(l.ACTIVITIES_LIST).path,i={PageSize:this._pageSize};return e.AfterSid&&(i.AfterSid=e.AfterSid),this._request.get(r,c.API_V1,i).then((function(e){return new d.default(e.contents.map((function(e){return new u.default(e)})),(function(e){return t._getPage({AfterSid:e})}),e.after_sid)}))}},{key:"_insertActivity",value:function(e){var t=e.sid;this._log.trace("_insertActivity(sid=".concat(t,", data=").concat(JSON.stringify(e)));try{var r=new s.default(this._worker,e);this._activities.set(t,r)}catch(e){this._log.error("Unable to create an Activity for sid=".concat(t,". Skipping insert into Activities map. Error: ").concat(e))}}}]),e}();t.default=f},5422:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(6517)),s=r(568),u=i(r(803)),c=i(r(7467)),d=i(r(7136)),l=i(r(4981)),f=r(6997),h=function(){function e(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,n.default)(this,e),!(t instanceof l.default))throw new TypeError("Failed to initialize ChannelsEntity. <Worker>worker is a required parameter.");this._channels=new Map,this._log=t.getLogger("ChannelsEntity"),this._request=r,this._pageSize=i.pageSize||s.DEFAULT_PAGE_SIZE,this._worker=t,o.default.inRange(this._pageSize,1,s.DEFAULT_PAGE_SIZE+1)||(this._log.warn("PageSize range for ChannelsEntity must be between 1 and %d. Setting pageSize to default size=%d",s.DEFAULT_PAGE_SIZE,s.DEFAULT_PAGE_SIZE),this._pageSize=1e3)}return(0,a.default)(e,[{key:"channels",get:function(){return this._channels}},{key:"fetchChannels",value:function(){var e=this._getPage();return this._getAllChannels(e)}},{key:"_getAllChannels",value:function(e){var t=this;return e.then((function(e){return e.items.forEach((function(e){t._insertChannel(e)})),e.hasNextPage?t._getAllChannels(e.nextPage()):Promise.resolve()}))}},{key:"_getPage",value:function(e){var t=this;e=e||{};var r=this._worker.getRoutes().getRoute(f.WORKER_CHANNELS).path,i={PageSize:this._pageSize};return e.AfterSid&&(i.AfterSid=e.AfterSid),this._request.get(r,s.API_V1,i).then((function(e){return new d.default(e.contents.map((function(e){return new c.default(e)})),(function(e){return t._getPage({AfterSid:e})}),e.after_sid)}))}},{key:"_insertChannel",value:function(e){var t=e.sid;this._log.trace("_insertChannel(sid=".concat(t,", data=").concat(JSON.stringify(e)));try{var r=new u.default(this._worker,this._request,e);this._channels.set(t,r)}catch(e){this._log.error("Unable to create a Channel for sid=".concat(t,". Skipping insert into Channels map. Error: ").concat(e))}}}]),e}();t.default=h},1531:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(5370)),s=i(r(9548)),u=i(r(3761)),c=i(r(6517)),d=r(568),l=r(1239),f=i(r(7136)),h=i(r(9222)),p=i(r(3171)),v=i(r(4981)),_=r(6997);function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,u.default)(e);if(t){var n=(0,u.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,s.default)(this,r)}}var k=function(e){(0,o.default)(r,e);var t=g(r);function r(e,i){var a,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,n.default)(this,r),a=t.call(this),!(e instanceof v.default))throw new TypeError("Failed to initialize ReservationsEntity. <Worker>worker is a required parameter.");return a._worker=e,a._log=e.getLogger("ReservationsEntity"),a._request=i,a._reservations=new Map,a._reservationSidsByTask=new Map,a._pageSize=o.pageSize||d.DEFAULT_PAGE_SIZE,c.default.inRange(a._pageSize,1,d.DEFAULT_PAGE_SIZE+1)||(a._log.warn("PageSize range for ReservationsEntity must be between 1 and %d. Setting pageSize to default size=%d",d.DEFAULT_PAGE_SIZE,d.DEFAULT_PAGE_SIZE),a._pageSize=1e3),a}return(0,a.default)(r,[{key:"reservations",get:function(){return new Map(Array.from(this._reservations).filter((function(e){return!e[1][1]})).map((function(e){return[e[0],e[1][0]]})))}},{key:"fetchReservations",value:function(){var e=this._getPage();return this._reservations.clear(),this._getAllReservations(e)}},{key:"_getAllReservations",value:function(e){var t=this;return e.then((function(e){e.items.forEach((function(e){t._insertReservation(e)})),e.hasNextPage&&t._getAllReservations(e.nextPage())}))}},{key:"_getPage",value:function(e){var t=this;e=e||{};var r=this._worker.getRoutes().getRoute(_.RESERVATION_LIST).path,i={Active:"true",PageSize:this._pageSize};return e.AfterSid&&(i.AfterSid=e.AfterSid),this._request.get(r,d.API_V2,i).then((function(e){return new f.default(e.contents.map((function(e){return new p.default(e,t._worker)})),(function(e){return t._getPage({AfterSid:e})}),e.after_sid)}))}},{key:"_insertReservation",value:function(e){var t=e.sid;this._log.trace("_insertReservation(sid=%s, data=%s)",t,JSON.stringify(e)),this._reservations.has(t)&&this._log.debug("Reservation %s already exists for Worker %s. Attempting to overwrite it.",t,this._worker.sid);try{var r=new h.default(this._worker,this._request,e);return this._reservations.set(t,[r,!1]),this._reservationSidsByTask.has(r.task.sid)?this._reservationSidsByTask.get(r.task.sid).add(r.sid):this._reservationSidsByTask.set(r.task.sid,new Set([r.sid])),this._log.debug("Successfully created and inserted %s for %s to Task-Reservation lookup. Contents: %s",r.sid,r.task.sid,this._reservationSidsByTask.get(r.task.sid)),r}catch(e){throw this._log.error("Unable to create a Reservation for sid=%s. Skipping insert into Reservations map. Error: %s",t,e),e}}},{key:"insert",value:function(e){this._log.trace("_insertReservation(sid=%s, data=%s)",e.sid,JSON.stringify(e));var t=new p.default(e,this._worker);return this._insertReservation(t)}},{key:"getTasks",value:function(e){var t=this;if(!this._reservationSidsByTask.has(e))return null;var r=this._reservationSidsByTask.get(e),i=[];return r.forEach((function(e){var r=t._reservations.get(e);r&&r[0].task&&i.push(r[0].task)})),i}},{key:"_deleteByReservationSid",value:function(e){this._log.trace("_deleteByReservationSid(sid=%s)",e);var t=this.reservations.get(e);t?(this._log.info("Found Reservation sid=%s for Worker %s. Removing reservation and task.",e,this._worker.sid),this._cleanUpReservationAndTask(t)):this._log.info("Reservation with sid=%s not found. Unable to remove Reservation.",e)}},{key:"_cleanUpReservationAndTask",value:function(e){var t=this;this._log.debug("Soft deleting Reservation sid=%s for Worker %s",e.sid,this._worker.sid),this._reservations.set(e.sid,[e,!0]),setTimeout((function(){t._log.debug("Hard deleting of Reservation sid=%s for Worker %s",e.sid,t._worker.sid),t._reservations.delete(e.sid)||t._log.warn("Failed to hard delete Reservation sid=%s for Worker %s",e.sid,t._worker.sid)}),5e3)}}]),r}(l.EventEmitter);t.default=k},4378:(e,t,r)=>{var i=r(7880),n=r(9293);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=i(r(1307)),o=i(r(8779)),s=i(r(9591)),u=i(r(3838)),c=i(r(7537)),d=i(r(8765)),l=i(r(6517)),f=r(568),h=i(r(2129)),p=i(r(7531)),v=i(r(1145)),_=i(r(5058)),g=i(r(7136)),k=i(r(6427)),E=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=m(t);if(r&&r.has(e))return r.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,r&&r.set(e,i);return i}(r(3739)),w=i(r(1017)),T=["MaxWorkers"],y=["Ordering"],S=["Ordering"];function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(m=function(e){return e?r:t})(e)}function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?R(Object(r),!0).forEach((function(t){(0,o.default)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function A(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return O(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return O(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var i=0,n=function(){};return{s:n,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}var I=function(){function e(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,c.default)(this,e),this._Workers=new Map,this._TaskQueues=new Map,this._routes=new E.default(t),this._request=r,this._log=new k.default("WorkspaceEntity-".concat(t),i.logLevel),this._pageSize=i.pageSize||f.DEFAULT_PAGE_SIZE,l.default.inRange(this._pageSize,1,f.DEFAULT_PAGE_SIZE+1)||(this._log.warn("PageSize range for WorkspaceEntity must be between 1 and %d. Setting pageSize to default size=%d",f.DEFAULT_PAGE_SIZE,f.DEFAULT_PAGE_SIZE),this._pageSize=f.DEFAULT_PAGE_SIZE)}var t;return(0,d.default)(e,[{key:"Workers",get:function(){return this._Workers}},{key:"TaskQueues",get:function(){return this._TaskQueues}},{key:"fetchWorker",value:function(e){var t=w.default.join(this._routes.getRoute(E.WORKER_LIST).path,e);return this._request.get(t,f.API_V1).then((function(e){return new v.default(new h.default(e))}))}},{key:"fetchWorkers",value:function(e){this._Workers=new Map;var t=e||{},r=t.MaxWorkers,i=(0,u.default)(t,T);return this._getAllWorkers(this._getWorkerPage(i),r)}},{key:"fetchTaskQueue",value:function(e){var t=w.default.join(this._routes.getRoute(E.TASKQUEUE_LIST).path,e);return this._request.get(t,f.API_V1).then((function(e){return new _.default(new p.default(e))}))}},{key:"fetchTaskQueues",value:function(e){return this._TaskQueues=new Map,this._getAllTaskQueues(this._getTaskQueuePage(e))}},{key:"_getAllWorkers",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.DEFAULT_MAX_WORKERS;return e.then(function(){var e=(0,s.default)(a.default.mark((function e(i){var n,o,s;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=A(i.items),e.prev=1,n.s();case 3:if((o=n.n()).done){e.next=10;break}if(s=o.value,!(t._Workers.size>=r)){e.next=7;break}return e.abrupt("break",10);case 7:t._insertWorker(s);case 8:e.next=3;break;case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(1),n.e(e.t0);case 15:return e.prev=15,n.f(),e.finish(15);case 18:if(i.hasNextPage){e.next=20;break}return e.abrupt("return");case 20:if(!(t._Workers.size>=r)){e.next=22;break}return e.abrupt("return");case 22:return e.next=24,t._getAllWorkers(i.nextPage(),r);case 24:case"end":return e.stop()}}),e,null,[[1,12,15,18]])})));return function(t){return e.apply(this,arguments)}}())}},{key:"_getWorkerPage",value:function(e){var t=this;e=e||{};var r=this._routes.getRoute(E.WORKER_LIST).path,i={PageSize:this._pageSize};return["AfterSid","FriendlyName","ActivitySid","ActivityName","Ordering","TargetWorkersExpression","NextToken"].forEach((function(t){e[t]&&(i[t]=e[t])})),this._request.get(r,f.API_V1,i).then((function(e){var r=i.Ordering,n=(0,u.default)(i,y),a=r?"NextToken":"AfterSid";return new g.default(e.contents.map((function(e){return new h.default(e)})),(function(e){return t._getWorkerPage(b(b({},n),{},(0,o.default)({Ordering:r},a,e)))}),r?e.meta.next_token:e.after_sid)}))}},{key:"_insertWorker",value:function(e){var t=e.sid;this._log.trace("_insertWorker(sid=%s, data=%s)",t,JSON.stringify(e));try{this._Workers.set(t,new v.default(e))}catch(e){this._log.error("Unable to create a Worker for sid=%s. Skipping insert into Worker map. Error: %s",t,e)}}},{key:"_getAllTaskQueues",value:(t=(0,s.default)(a.default.mark((function e(t){var r=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t.then(function(){var e=(0,s.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.items.forEach((function(e){return r._insertTaskQueue(e)})),t.hasNextPage){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,r._getAllTaskQueues(t.nextPage());case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)})},{key:"_getTaskQueuePage",value:function(e){var t=this;e=e||{};var r=this._routes.getRoute(E.TASKQUEUE_LIST).path,i={PageSize:this._pageSize};return["AfterSid","FriendlyName","Ordering","NextToken"].forEach((function(t){e[t]&&(i[t]=e[t])})),this._request.get(r,f.API_V1,i).then((function(e){var r=i.Ordering,n=(0,u.default)(i,S),a=r?"NextToken":"AfterSid";return new g.default(e.contents.map((function(e){return new p.default(e)})),(function(e){return t._getTaskQueuePage(b(b({},n),{},(0,o.default)({Ordering:r},a,e)))}),r?e.meta.next_token:e.after_sid)}))}},{key:"_insertTaskQueue",value:function(e){var t=e.sid;this._log.trace("_insertTaskQueue(sid=%s, data=%s",t,JSON.stringify(e));try{this._TaskQueues.set(t,new _.default(e))}catch(e){this._log.error("Unable to create a TaskQueue for sid=%s. Skipping insert into TaskQueue map. Error: %s",t,e)}}}]),e}();t.default=I},9097:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(7480),s=r(3410);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to instantiate ActivityDescriptor. <Descriptor>descriptor is required.");if(!o.ActivityProperties.every((function(e){return e in t})))throw new TypeError("Failed to instantiate ActivityDescriptor. <Descriptor>descriptor does not contain all properties of an Activity.");this.accountSid=t.account_sid,this.available=t.available,this.dateCreated=(0,s.parseTime)(1e3*t.date_created),this.dateUpdated=(0,s.parseTime)(1e3*t.date_updated),this.name=t.friendly_name,this.sid=t.sid,this.workspaceSid=t.workspace_sid}},3171:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(9293)),a=i(r(7537)),o=i(r(6517)),s=r(3410),u=r(9222),c=i(r(2903)),d=i(r(3119)),l=r(568);t.default=function e(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if((0,a.default)(this,e),!o.default.isObject(t))throw new TypeError("Failed to instantiate ReservationDescriptor. <Descriptor>descriptor is required.");if(!o.default.isObject(r))throw new TypeError("Failed to instantiate ReservationDescriptor. <Worker>worker is required.");var f=o.default.filter(u.ReservationProperties,(function(e){return-1===i.indexOf(e)}));if(!o.default.every(f,(function(e){return e in t}))){var h=o.default.difference(f,Object.keys(t)).join(", ");throw new TypeError("Failed to instantiate ReservationDescriptor. <Descriptor>descriptor does not contain all properties of a Reservation. Missing: ".concat(h))}this.accountSid=t.account_sid,this.dateCreated=(0,s.parseTime)(1e3*t.date_created),this.dateUpdated=(0,s.parseTime)(1e3*t.date_updated),this.sid=t.sid,this.status=t.reservation_status,this.timeout=t.reservation_timeout,this.workerSid=t.worker_sid,this.workspaceSid=t.workspace_sid,this.taskDescriptor=null,this.version=String(t.version),t.canceled_reason_code&&(this.canceledReasonCode=t.canceled_reason_code);var p=r.getLogger("ReservationDescriptor-".concat(this.sid));if(-1===i.indexOf("task"))try{this.taskDescriptor=new c.default(t.task)}catch(e){throw p.error("Failed to create a ReservationDescriptor. The 'task' property is malformed."),e}if(-1===i.indexOf(l.transferFields.taskTransfer)&&"object"===(0,n.default)(t.task_transfer))try{this.taskDescriptor.incomingTransferDescriptor=new d.default(t.task_transfer),this.transferDescriptor=new d.default(t.task_transfer)}catch(e){throw p.error("Failed to create a ReservationDescriptor. The 'task_transfer' property is malformed."),e}if(-1===i.indexOf(l.transferFields.activeOutgoingTaskTransfer)&&"object"===(0,n.default)(t.active_outgoing_task_transfer))try{this.taskDescriptor.outgoingTransferDescriptor=new d.default(t.active_outgoing_task_transfer)}catch(e){throw p.error("Failed to create a ReservationDescriptor. The 'active_outgoing_task_transfer' property is malformed."),e}}},2903:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(3410),s=r(9655);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to instantiate TaskDescriptor. <Descriptor>descriptor is required.");if(!s.TaskProperties.every((function(e){return e in t})))throw new TypeError("Failed to instantiate TaskDescriptor. <Descriptor>descriptor does not contain all properties of a Task.");this.addOns=JSON.parse(t.addons),this.age=t.age,this.attributes=JSON.parse(t.attributes),this.dateCreated=(0,o.parseTime)(1e3*t.date_created),this.dateUpdated=(0,o.parseTime)(1e3*t.date_updated),this.priority=t.priority,this.queueName=t.queue_name,this.queueSid=t.queue_sid,this.reason=t.reason,this.routingTarget=t.routing_target,this.sid=t.sid,this.status=t.assignment_status,this.taskChannelUniqueName=t.task_channel_unique_name,this.taskChannelSid=t.task_channel_sid,this.timeout=t.timeout,this.workflowName=t.workflow_name,this.workflowSid=t.workflow_sid,this.incomingTransferDescriptor=null,this.outgoingTransferDescriptor=null,this.version=String(t.version)}},7531:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(3410),s=r(5058);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to instantiate TaskQueueDescriptor. <Descriptor>descriptor is required.");if(!s.TaskQueueProperties.every((function(e){return e in t})))throw new TypeError("Failed to instantiate TaskQueueDescriptor. <Descriptor>descriptor does not contain all properties of a TaskQueue.");this.sid=t.sid,this.queueSid=t.sid,this.accountSid=t.account_sid,this.workspaceSid=t.workspace_sid,this.name=t.friendly_name,this.queueName=t.friendly_name,this.assignmentActivityName=t.assignment_activity_name,this.reservationActivityName=t.reservation_activity_name,this.assignmentActivitySid=t.assignment_activity_sid,this.reservationActivitySid=t.reservation_activity_sid,this.targetWorkers=t.target_workers,this.maxReservedWorkers=t.max_reserved_workers,this.taskOrder=t.task_order,this.dateCreated=(0,o.parseTime)(1e3*t.date_created),this.dateUpdated=(0,o.parseTime)(1e3*t.date_updated)}},3119:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(3410),s=r(2381);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to instantiate TransferDescriptor. <Descriptor>descriptor is required.");if(!s.TransferProperties.every((function(e){return e in t})))throw new TypeError("Failed to instantiate TransferDescriptor. <Descriptor>descriptor does not contain all properties of a Transfer.");this.dateCreated=(0,o.parseTime)(1e3*t.date_created),this.dateUpdated=(0,o.parseTime)(1e3*t.date_updated),this.mode=t.transfer_mode,this.queueSid=t.initiating_queue_sid,this.reservationSid=t.initiating_reservation_sid,this.to=t.transfer_to,this.transferFailedReason=t.transfer_failed_reason,this.type=t.transfer_type,this.sid=t.sid,this.status=t.transfer_status,this.workerSid=t.initiating_worker_sid,this.workflowSid=t.initiating_workflow_sid}},7467:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(803),s=r(3410);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to instantiate WorkerChannelDescriptor. <Descriptor>descriptor is required.");if(!o.ChannelProperties.every((function(e){return e in t})))throw new TypeError("Failed to create a WorkerChannelDescriptor. <Descriptor>descriptor does not contain all properties of a Channel.");this.accountSid=t.account_sid,this.assignedTasks=t.assigned_tasks,this.available=!!t.available,this.availableCapacityPercentage=t.available_capacity_percentage,this.capacity=t.configured_capacity,this.dateCreated=(0,s.parseTime)(1e3*t.date_created),this.dateUpdated=(0,s.parseTime)(1e3*t.date_updated),this.lastReservedTime=(0,s.parseTime)(t.last_reserved_time),this.sid=t.sid,this.taskChannelSid=t.task_channel_sid,this.taskChannelUniqueName=t.task_channel_unique_name,this.workerSid=t.worker_sid,this.workspaceSid=t.workspace_sid}},2129:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(6517)),o=r(3410),s=r(4981);t.default=function e(t){if((0,n.default)(this,e),!a.default.isObject(t))throw new TypeError("Failed to create a WorkerDescriptor. <Descriptor>descriptor is a required parameter.");if(!s.WorkerProperties.every((function(e){return e in t})))throw new TypeError("Failed to create a WorkerDescriptor. The provided <Descriptor>descriptor does not contain all properties of a Worker.");this.accountSid=t.account_sid,this.activityName=t.activity_name,this.activitySid=t.activity_sid,this.attributes=JSON.parse(t.attributes),this.available=t.available,this.dateCreated=(0,o.parseTime)(1e3*t.date_created),this.dateStatusChanged=(0,o.parseTime)(1e3*t.date_status_changed),this.dateUpdated=(0,o.parseTime)(1e3*t.date_updated),this.name=t.friendly_name,this.sid=t.sid,this.workspaceSid=t.workspace_sid,this.version=String(t.version),this.workerSid=t.sid,this.workerActivitySid=t.activity_sid,this.dateActivityChanged=(0,o.parseTime)(1e3*t.date_status_changed),this.friendlyName=t.friendly_name}},4634:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(6427)),s=r(568),u=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,n.default)(this,e),this._worker=t,this._logLevel=r.logLevel||"error",this._log=new o.default("WorkerEventHandler",this._logLevel)}return(0,a.default)(e,[{key:"getTREventsToHandlerMapping",value:function(){return{"worker.activity.update":"_workerActivityUpdateHandler","worker.attributes.update":"_workerAttributesUpdateHandler","worker.capacity.update":"_workerCapacityUpdateHandler","worker.channel.availability.update":"_workerChannelAvailabilityUpdateHandler","reservation.created":"_reservationCreatedHandler","reservation.failed":"_reservationFailedHandler","reservation.accepted":"_reservationUpdateHandler","reservation.wrapup":"_reservationUpdateHandler","reservation.completed":"_reservationCleanupEventsHandler","reservation.rejected":"_reservationCleanupEventsHandler","reservation.timeout":"_reservationCleanupEventsHandler","reservation.canceled":"_reservationCleanupEventsHandler","reservation.rescinded":"_reservationCleanupEventsHandler","task.updated":"_taskTypeEventHandler","task.canceled":"_taskTypeEventHandler","task.completed":"_taskTypeEventHandler","task.wrapup":"_taskTypeEventHandler","task.transfer-attempt-failed":"_transferTaskEventHandler","task.transfer-completed":"_transferTaskEventHandler","task.transfer-failed":"_transferTaskEventHandler","task.transfer-initiated":"_transferTaskEventHandler","task.transfer-canceled":"_transferTaskEventHandler"}}},{key:"_workerActivityUpdateHandler",value:function(e){if(this._log.info("Worker %s received Event: worker.activity.update. Proceeding to update ...",this._worker.sid),!e.activity_sid)throw this._log.error("Event: worker.activity.update did not contain an activity_sid. Unable to update Worker %s.",this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," activity."));var t=this._worker.activities.get(e.activity_sid);if(!t)throw this._log.error("The Activity sid=%s specified in Event: worker.activity.update does not exist in the Worker's map of Activities. Unable to update Worker %s activity.",e.activity_sid,this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," activity."));this._worker.activity._isCurrent=!1,this._worker.activity=t,t._isCurrent=!0,this._worker.emit("activityUpdated",this._worker._update(e))}},{key:"_workerAttributesUpdateHandler",value:function(e){this._log.info("Worker ".concat(this._worker.sid," received Event: worker.attributes.update. Proceeding to update ...")),this._worker.emit("attributesUpdated",this._worker._update(e))}},{key:"_workerCapacityUpdateHandler",value:function(e){if(this._log.info("Worker ".concat(this._worker.sid," received Event: worker.capacity.update.")),!e.sid)throw this._log.error("Event: worker.capacity.update did not contain a Channel sid. Unable to update Channel for Worker %s.",this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," channel."));var t=this._worker.channels.get(e.sid);if(!t)throw this._log.error("The Channel sid=%s specified in Event: worker.capacity.update does not exist in the Worker's map of Channels. Unable to update Worker %s channel.",e.sid,this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," channel."));t._emitEvent("capacityUpdated",e)}},{key:"_workerChannelAvailabilityUpdateHandler",value:function(e){if(this._log.info("Worker %s received Event: worker.channel.availability.update.",this._worker.sid),!e.sid)throw this._log.error("Event: worker.capacity.update did not contain a Channel sid. Unable to update Channel for Worker %s.",this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," channel."));var t=this._worker.channels.get(e.sid);if(!t)throw this._log.error("The Channel sid=%s specified in Event: worker.channel.availability.update does not exist in the Worker's map of Channels. Unable to update Worker %s channel.",e.sid,this._worker.sid),new Error("Failed to update Worker ".concat(this._worker.sid," channel."));t._emitEvent("availabilityUpdated",e)}},{key:"_reservationCreatedHandler",value:function(e){if(this._log.info("Worker %s received Event: reservation.created.",this._worker.sid),!e.sid)throw this._log.error("Event: reservationCreated did not contain a Reservation sid. Unable to create a Reservation for Worker %s.",this._worker.sid),new Error("Failed to create Reservation for Worker ".concat(this._worker.sid,"."));try{this._log.info("Attempting to create and insert Reservation into Worker %s reservations map.",this._worker.sid);var t=this._worker._dataServices.reservationsEntity.insert(e);this._worker._bumpVersion(),this._worker.emit("reservationCreated",t)}catch(e){throw this._log.info("Failed to create and insert Reservation into Worker %s reservations map.",this._worker.sid),new Error("Failed to create a Reservation for Worker ".concat(this._worker.sid," on Event: reservationCreated. Error: ").concat(e))}}},{key:"_reservationFailedHandler",value:function(e){this._log.info("Worker %s received Event: reservation.failed.",this._worker.sid),this._worker.emit("reservationFailed",e)}},{key:"_reservationUpdateHandler",value:function(e,t){var r=s.reservationToSDKEventsMapping[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error("Event: reservation.".concat(r," did not contain a Reservation sid. Unable to update Reservation for Worker ").concat(this._worker.sid)),new Error("Failed to update Reservation for Worker ".concat(this._worker.sid,"."));var i=this._worker.reservations.get(e.sid);if(!i)throw this._log.error("The Resevation sid=".concat(e.sid," specified in Event: reservation.").concat(r," does not exist in the Worker's map of Reservations. Unable to update Worker ").concat(this._worker.sid," reservation.")),new Error("Failed to update Worker ".concat(this._worker.sid," reservation."));i._emitEvent(r,e)}},{key:"_reservationCleanupEventsHandler",value:function(e,t){var r=s.reservationToSDKEventsMapping[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error("Event: reservation.%s did not contain a Reservation sid. Unable to update Reservation for Worker %s.",r,this._worker.sid),new Error("Failed to update Reservation for Worker ".concat(this._worker.sid,"."));var i=this._worker.reservations.get(e.sid);i?(this._worker._dataServices.reservationsEntity._deleteByReservationSid(e.sid),i._emitEvent(r,e)):this._log.warn("The reservation specified by Event: reservation.%s does not exist in Worker %s Reservations map. Skipping event.",r,this._worker.sid)}},{key:"_taskTypeEventHandler",value:function(e,t){var r=s.taskEventTypes[t];if(this._log.info("Worker %s received Event: %s mapped to %s.",this._worker.sid,t,r),!e.sid)throw this._log.error("Event: task.%s did not contain a Task sid. Unable to emit event for Worker %s.",r,this._worker.sid),new Error("Failed to emit event for Worker ".concat(this._worker.sid,"."));var i=this._worker._dataServices.reservationsEntity.getTasks(e.sid);i&&i.length>0?i.forEach((function(t){t._update(e),t._emitEvent(r,e)})):this._log.warn("The task specified by Event: task.%s does not exist in Worker %s Reservations map. Skipping event.",r,this._worker.sid)}},{key:"_transferTaskEventHandler",value:function(e,t){var r=s.taskTransferEventEmitterMapping[t];if(this._log.info("Worker %s received Event: % mapped to %s.",this._worker.sid,t,r),!e.initiating_reservation_sid||!e.task_sid)throw this._log.error("Event: task.%s did not contain a Reservation sid or Task sid. Unable to emit event for Worker %s.",r,this._worker.sid),new Error("Failed to emit event for Worker ".concat(this._worker.sid,"."));var i=this._worker.reservations.get(e.initiating_reservation_sid);i?i.task.sid===e.task_sid?i.task._emitEventForOutgoingTransfer(r,e):this._log.warn("The task %s related to Event: task.%s does not match the expected owning Reservation %s for Worker %s. Skipping event.",e.task_sid,r,i.sid,this._worker.sid):this._log.warn("The reservation %s related to Event: task.%s does not exist in Worker %s Reservations map. Skipping event.",e.initiating_reservation_sid,r,this._worker.sid)}}]),e}();t.default=u},3130:(e,t,r)=>{var i=r(7880),n=r(9293);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=i(r(7537)),o=i(r(8765)),s=i(r(5370)),u=i(r(9548)),c=i(r(3761)),d=i(r(6517)),l=r(568),f=r(1239),h=r(7677),p=i(r(4981)),v=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=_(t);if(r&&r.has(e))return r.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,r&&r.set(e,i);return i}(r(4147));function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_=function(e){return e?r:t})(e)}function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,c.default)(e);if(t){var n=(0,c.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,u.default)(this,r)}}var k=global.window||global,E=k.WebSocket?k.WebSocket:r(5352),w=v.version,T=function(e){(0,s.default)(r,e);var t=g(r);function r(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,a.default)(this,r),i=t.call(this),!(e&&e instanceof p.default))throw l.twilioErrors.INVALID_ARGUMENT.clone("<Worker>worker is a required parameter to construct EventBridgeSignaling.");var o=e.getLogger("EventBridgeSignaling-".concat(e.sid));if(!d.default.isNil(n.closeExistingSessions)&&!d.default.isBoolean(n.closeExistingSessions))throw new TypeError("Invalid type passed for <boolean>closeExistingSessions");return i._heartbeat=null,i.webSocket=null,i._log=o,i._worker=e,i.closeExistingSessions=n.closeExistingSessions||!1,i._config=e._config,i.reconnect=!1,i.tokenTimer=null,i.setUpWebSocket(),i}return(0,o.default)(r,[{key:"updateToken",value:function(e){if(!e)throw l.twilioErrors.INVALID_ARGUMENT.clone("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this.setTokenExpirationEvent(),this._log.info("Updated token for Worker "+this._worker.sid),this.reconnect=!0,this.webSocket.readyState!==this.webSocket.CLOSING&&this.webSocket.readyState!==this.webSocket.CLOSED||this.createWebSocket()}},{key:"setTokenExpirationEvent",value:function(){var e=this;clearTimeout(this.tokenTimer),this.tokenTimer=setTimeout((function(){e.reconnect=!1,e.emit("tokenExpired")}),this.tokenLifetime-5e3)}},{key:"setUpWebSocket",value:function(){this._heartbeat&&(this._heartbeat.onsleep=function(){}),this._heartbeat=new h.Heartbeat({interval:60}),this.createWebSocket()}},{key:"setLifetime",value:function(e){this.tokenLifetime=e,this.setTokenExpirationEvent()}},{key:"createWebSocket",value:function(){var e=this;this.numAttempts=1,this.reconnect=!0;var t="?".concat(l.EB_URL_PARAMS.TOKEN,"=").concat(this._config.token,"&").concat(l.EB_URL_PARAMS.CLOSE_EXISTING_SESSIONS,"=").concat(this.closeExistingSessions,"&").concat(l.EB_URL_PARAMS.CLIENT_VERSION,"=").concat(w);this.webSocket=new E(this._config.WS_SERVER+t),this.webSocket.onopen=function(){e.numAttempts=1,e.emit("connected"),e._heartbeat.onsleep=function(){e._log.info("Heartbeat not received in the past 60 seconds. Proceeding to disconnect websocket."),e.webSocket.close()},e._heartbeat.beat()},this.webSocket.onmessage=function(t){if(e._log.debug("Received event",t.data),e._heartbeat.beat(),0!==t.data.trim().length){var r;try{r=JSON.parse(t.data)}catch(r){return e._log.error("Received data is not valid JSON: "+t.data),void e.emit("error",l.twilioErrors.INVALID_GATEWAY_MESSAGE)}e._log.debug("Emitting event: %s with %s",r.event_type,JSON.stringify(r.payload)),e.emit(r.event_type,r.payload||null,r.event_type)}},this.webSocket.onerror=function(t){e._log.error("WebSocket error occurred: ",t),e.emit("error",l.twilioErrors.GATEWAY_CONNECTION_FAILED)},this.webSocket.onclose=function(t){e.reconnect?e._log.info("WebSocket connection has closed. Trying to reconnect."):e._log.info("WebSocket connection has closed. Not reconnecting due to token expiration.");var r=t.reason,i=t.code;if(d.default.isEmpty(r)&&(r="Websocket closed with errorCode=".concat(i)),e.emit("disconnected",{message:r}),e._heartbeat.onsleep=function(){},e.reconnect){var n=e.generateBackOffInterval(e.numAttempts);setTimeout((function(){e.numAttempts++,e.createWebSocket()}),n)}}}},{key:"generateBackOffInterval",value:function(e){var t=Math.ceil(800),r=Math.floor(1e3*Math.min(30,Math.pow(2,e)-1));return Math.round(Math.floor(Math.random()*(r-t+1))+t)}},{key:"disconnect",value:function(){var e=this;this._log.info("Disconnecting websocket"),null!==this.webSocket&&(["onmessage","onclose","onopen","onerror"].forEach((function(t){e.webSocket[t]=null})),this._heartbeat.onsleep=function(){},this.webSocket.close()),this.emit("disconnected",{message:"SDK Disconnect"})}}]),r}(f.EventEmitter);t.default=T},7681:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(8213)),a=i(r(7537)),o=i(r(8765)),s=r(568);function u(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var i=0,n=function(){};return{s:n,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}var d=function(){function e(){(0,a.default)(this,e),this.routes={}}return(0,o.default)(e,[{key:"getRoute",value:function(e){if(!this.routes[e])throw s.twilioErrors.INVALID_ARGUMENT.clone('Invalid route fetched <string>route "'.concat(e,'" does not exist.'));for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];if(r.length){var a=(0,n.default)({},this.routes[e]);if(r.length!==(a.path.match(/%s/g)||[]).length)throw s.twilioErrors.INVALID_ARGUMENT.clone("Invalid number of positional arguments supplied for route ".concat(e));var o,c=u(r);try{for(c.s();!(o=c.n()).done;){var d=o.value;a.path=a.path.replace(/%s/,d)}}catch(e){c.e(e)}finally{c.f()}return a}return this.routes[e]}}]),e}();t.default=d},1910:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(6427)),s=i(r(6517)),u=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,n.default)(this,e),!s.default.isString(t))throw new TypeError("Failed to initialize Configuration. <string>token is a required parameter.");if(this.logIdentifier=r.logIdentifier||+new Date,this._logLevel=r.logLevel,this._log=new o.default("Configuration-".concat(this.logIdentifier),this._logLevel),this.token=t,this.EB_SERVER=r.ebServer,this.WS_SERVER=r.wsServer,r.ebServer||r.wsServer)return this._log.warn('"ebServer" and "wsServer" parameter will be removed in next major version. You may start using "region" and "edge".');var i="";r.region&&"us1"!==r.region&&(i+=".".concat(r.region)),this.EB_SERVER="https://event-bridge".concat(i,".twilio.com/v1/wschannels"),this.WS_SERVER="wss://event-bridge".concat(i,".twilio.com/v1/wschannels")}return(0,a.default)(e,[{key:"updateToken",value:function(e){if(!s.default.isString(e))throw new TypeError("To update the Twilio token, a new Twilio token must be passed in. <string>newToken is a required parameter.");this.token=e}},{key:"getLogIdentifier",value:function(){return this.logIdentifier}}]),e}();t.default=u},568:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.twilioErrors=t.transferFields=t.taskTransferEventTypes=t.taskTransferEventEmitterMapping=t.taskEventTypes=t.reservationToSDKEventsMapping=t.reservationEventTypes=t.WORKER_UPDATE_OPTIONS=t.TRANSFER_STATUS=t.TRANSFER_INITIATED=t.TASK_STATUS_WRAPPING=t.TASK_STATUS_COMPLETED=t.RESERVATION_STATUS_WRAPPING=t.RESERVATION_STATUS_REJECTED=t.RESERVATION_STATUS_COMPLETED=t.RESERVATION_STATUS_ACCEPTED=t.RESERVATION_REJECT_OPTIONS=t.RESERVATION_REDIRECT_OPTIONS=t.RESERVATION_INSTRUCTION_REDIRECT=t.RESERVATION_INSTRUCTION_DEQUEUE=t.RESERVATION_INSTRUCTION_CONFERENCE=t.RESERVATION_INSTRUCTION_CALL=t.RESERVATION_DEQUEUE_OPTIONS=t.RESERVATION_CALL_OPTIONS=t.EB_URL_PARAMS=t.DEFAULT_PAGE_SIZE=t.DEFAULT_MAX_WORKERS=t.DEFAULT_HTTP_TIMEOUT=t.CREATE_TASK_OPTIONS=t.API_V2=t.API_V1=void 0;t.RESERVATION_STATUS_ACCEPTED="accepted";t.RESERVATION_STATUS_COMPLETED="completed";t.RESERVATION_STATUS_REJECTED="rejected";t.RESERVATION_STATUS_WRAPPING="wrapping";t.RESERVATION_INSTRUCTION_CALL="call";t.RESERVATION_INSTRUCTION_DEQUEUE="dequeue";t.RESERVATION_INSTRUCTION_REDIRECT="redirect";t.RESERVATION_INSTRUCTION_CONFERENCE="conference";var i=Object.freeze({canceled:"canceled",complete:"complete",failed:"failed",initiated:"initiated"});t.TRANSFER_STATUS=i;var n={activitySid:"WorkerActivitySid"};t.RESERVATION_REJECT_OPTIONS=n,Object.freeze(n);var a={rejectPendingReservations:"RejectPendingReservations"};t.WORKER_UPDATE_OPTIONS=a,Object.freeze(a);var o={accept:"CallAccept",record:"CallRecord",statusCallbackUrl:"CallStatusCallbackUrl",timeout:"CallTimeout",to:"CallTo"};t.RESERVATION_CALL_OPTIONS=o,Object.freeze(o);var s={to:"DequeueTo",from:"DequeueFrom",postWorkActivitySid:"DequeuePostWorkActivitySid",record:"DequeueRecord",timeout:"DequeueTimeout",statusCallbackUrl:"DequeueStatusCallbackUrl",statusCallbackEvents:"DequeueStatusCallbackEvents"};t.RESERVATION_DEQUEUE_OPTIONS=s,Object.freeze(s);var u={accept:"RedirectAccept"};t.RESERVATION_REDIRECT_OPTIONS=u,Object.freeze(u);t.CREATE_TASK_OPTIONS={taskChannelUniqueName:"TaskChannelUniqueName",taskChannelSid:"TaskChannelSid",attributes:"Attributes"};t.TASK_STATUS_COMPLETED="completed";t.TASK_STATUS_WRAPPING="wrapping";var c={accepted:0,rejected:1,timeout:2,canceled:3,rescinded:4,completed:5,wrapup:6};t.reservationEventTypes=c,Object.freeze(c);var d={"task.updated":"updated","task.canceled":"canceled","task.completed":"completed","task.wrapup":"wrapup"};t.taskEventTypes=d,Object.freeze(d);var l={"reservation.completed":"completed","reservation.rejected":"rejected","reservation.timeout":"timeout","reservation.canceled":"canceled","reservation.rescinded":"rescinded","reservation.accepted":"accepted","reservation.wrapup":"wrapup"};t.reservationToSDKEventsMapping=l,Object.freeze(l);var f=Object.freeze({taskTransfer:"task_transfer",activeOutgoingTaskTransfer:"active_outgoing_task_transfer"});t.transferFields=f;t.TRANSFER_INITIATED="transfer-initiated";var h={"transfer-attempt-failed":"attemptFailed","transfer-completed":"completed","transfer-failed":"failed","transfer-initiated":"transferInitiated","transfer-canceled":"canceled"};t.taskTransferEventTypes=h,Object.freeze(h);var p={"task.transfer-attempt-failed":"transfer-attempt-failed","task.transfer-completed":"transfer-completed","task.transfer-failed":"transfer-failed","task.transfer-initiated":"transfer-initiated","task.transfer-canceled":"transfer-canceled"};t.taskTransferEventEmitterMapping=p,Object.freeze(p);t.API_V1="v1";t.API_V2="v2";t.DEFAULT_PAGE_SIZE=1e3;t.DEFAULT_MAX_WORKERS=1e3;t.DEFAULT_HTTP_TIMEOUT=5e3;t.EB_URL_PARAMS={TOKEN:"token",CLOSE_EXISTING_SESSIONS:"closeExistingSessions",CLIENT_VERSION:"clientVersion"};var v=r(5600),_=[{name:"INVALID_ARGUMENT",message:"One or more arguments passed were invalid."},{name:"INVALID_TOKEN",message:"The token is invalid or malformed."},{name:"TOKEN_EXPIRED",message:"Worker's active token has expired."},{name:"GATEWAY_CONNECTION_FAILED",message:"Could not connect to Twilio's servers."},{name:"GATEWAY_DISCONNECTED",message:"Connection to Twilio's servers was lost."},{name:"INVALID_GATEWAY_MESSAGE",message:"The JSON message received was malformed."},{name:"TASKROUTER_ERROR",message:"TaskRouter failed to complete the request."}].reduce((function(e,t){return e[t.name]=new v(t),e}),{});t.twilioErrors=_},7677:(e,t)=>{function r(e){if(!(this instanceof r))return new r(e);e=e||{};var t=function(){},i={interval:10,now:function(){return(new Date).getTime()},repeat:function(e,t){return setInterval(e,t)},stop:function(e,t){return clearInterval(e,t)},onsleep:t,onwakeup:t};for(var n in i)n in e||(e[n]=i[n]);this.interval=e.interval,this.lastbeat=0,this.pintvl=null,this.onsleep=e.onsleep,this.onwakeup=e.onwakeup,this.repeat=e.repeat,this.stop=e.stop,this.now=e.now}r.toString=function(){return"[Twilio.Heartbeat class]"},r.prototype.toString=function(){return"[Twilio.Heartbeat instance]"},r.prototype.beat=function(){if(this.lastbeat=this.now(),this.sleeping()){this.onwakeup&&this.onwakeup();var e=this;this.pintvl=this.repeat.call(null,(function(){e.check()}),1e3*this.interval)}},r.prototype.check=function(){var e=this.now()-this.lastbeat;!this.sleeping()&&e>=1e3*this.interval&&(this.onsleep&&this.onsleep(),this.stop.call(null,this.pintvl),this.pintvl=null)},r.prototype.sleeping=function(){return null===this.pintvl},t.Heartbeat=r},6427:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=r(568).twilioErrors,s=r(6622),u=["trace","debug","info","warn","error","silent"],c=function(){function e(t,r){if((0,n.default)(this,e),!t)throw o.INVALID_ARGUMENT.clone("Error instantiating Logger. <string>moduleName is a required parameter.");this._log=s.getLogger(t),u.forEach(function(e){var t=this;this[e]=function(){for(var r,i=arguments.length,n=new Array(i),a=0;a<i;a++)n[a]=arguments[a];return(r=t._log)[e].apply(r,[t._getTimestamp()].concat(n))}}.bind(this)),r&&this.setLevel(r)}return(0,a.default)(e,[{key:"setLevel",value:function(e){if(-1===u.indexOf(e))throw o.INVALID_ARGUMENT.clone("Error setting Logger level. <string>level must be one of ['trace', 'debug', 'info', 'warn', 'error', 'silent']");this._log.setLevel(e,!1),this._log.setDefaultLevel(e)}},{key:"getLevel",value:function(){return u[this._log.getLevel()]}},{key:"_getTimestamp",value:function(){return"[".concat((new Date).toISOString(),"]")}}]),e}();t.default=c},7136:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=r(568).twilioErrors,s=function(){function e(t,r,i){if((0,n.default)(this,e),!t)throw o.INVALID_ARGUMENT.clone("Error instantiating Paginator. <Array>items is a required parameter.");if(!r)throw o.INVALID_ARGUMENT.clone("Error instantiating Paginator. <Function>source is a required parameter.");this._nextToken=i,this._source=r,this.hasNextPage=!!this._nextToken,this.items=t}return(0,a.default)(e,[{key:"nextPage",value:function(){return this.hasNextPage?this._source(this._nextToken):Promise.reject(o.TASKROUTER_ERROR.clone("Error getting the next page. No next page exists."))}}]),e}();t.default=s},2732:(e,t,r)=>{var i=r(7880),n=r(9293);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=i(r(7537)),o=i(r(8765)),s=i(r(6517)),u=p(r(2167)),c=p(r(5687)),d=i(r(1910)),l=r(568),f=p(r(4147));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(h=function(e){return e?r:t})(e)}function p(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=h(t);if(r&&r.has(e))return r.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}return i.default=e,r&&r.set(e,i),i}var v={GET:"GET",POST:"POST"};Object.freeze(v);var _=f.version,g=function(){function e(t){if((0,a.default)(this,e),!(t instanceof d.default))throw new TypeError("Failed to initialize Request. <Configuration>config is a required parameter.");var r=new c.Agent({maxVersion:"TLSv1.2",minVersion:"TLSv1.2"});this._config=t,this._postClient=u.create({method:v.POST,timeout:l.DEFAULT_HTTP_TIMEOUT,headers:{clientVersion:_},httpsAgent:r})}return(0,o.default)(e,[{key:"post",value:function(e,t,r,i){if(!e)throw new Error("Failed to make POST request. <string>url is a required parameter.");if(!s.default.isObject(t))throw new Error("Failed to make POST request. <object>paramsJSON is a required parameter.");if(!r)throw new Error("Failed to make POST request. <string>apiVersion is a required parameter.");var n=this.buildRequest(v.POST,e,t),a={apiVersion:r};return this._postClient.post(this._config.EB_SERVER,n,{headers:a}).then((function(e){return Promise.resolve(e.data.payload)}))}},{key:"get",value:function(e,t,r){if(!e)throw new Error("Failed to make GET request. <string>url is a required parameter.");if(!t)throw new Error("Failed to make GET request. <string>apiVersion is a required parameter.");if(r=r||{},!s.default.isObject(r))throw new Error("Failed to make GET request. <object>paramsJSON is a required parameter.");var i=this.buildRequest(v.GET,e,r);return this._postClient.post(this._config.EB_SERVER,i,{headers:{apiVersion:t}}).then((function(e){return Promise.resolve(e.data.payload)}))}},{key:"buildRequest",value:function(e,t,r){return JSON.stringify({url:t,method:e,params:r,token:this._config.token})}}]),e}();t.default=g},2063:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(7537)),a=i(r(8765)),o=i(r(6116)),s=i(r(8640)),u=i(r(6427));function c(e,t){l(e,t),t.add(e)}function d(e,t,r){l(e,t),t.set(e,r)}function l(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function f(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r}var h=new WeakMap,p=new WeakMap,v=new WeakSet,_=new WeakSet,g=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:800,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e3;(0,n.default)(this,e),c(this,_),c(this,v),d(this,h,{writable:!0,value:void 0}),d(this,p,{writable:!0,value:void 0}),f(this,v,k).call(this,t)&&(0,s.default)(this,h,t),f(this,v,k).call(this,r)&&(0,s.default)(this,p,r),this._log=new u.default("RetryUtil")}return(0,a.default)(e,[{key:"generateBackoffInterval",value:function(e){f(this,v,k).call(this,e)||(this._log.warn("Interval count should be a positive finite number. Resetting retryCount to 1, Current value:"+e),e=1);var t=Math.max((0,o.default)(this,h),(0,o.default)(this,h)*(Math.pow(2,e)-1)/2);return Math.min(Math.max((0,o.default)(this,h),t),(0,o.default)(this,p))+f(this,_,E).call(this)}},{key:"whenReady",value:function(e){var t=this;return new Promise((function(r){var i=t.generateBackoffInterval(e);return setTimeout((function(){return r(i)}),i)}))}}]),e}();function k(e){return Number.isFinite(e)&&e>0}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100;return Math.ceil(Math.random()*e)}t.default=g},6997:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.WORKER_PARTICIPANT_INSTANCE=t.WORKER_INSTANCE=t.WORKER_CHANNELS=t.TASK_TRANSFER_LIST=t.TASK_TRANSFER_INSTANCE=t.TASK_RESERVATION_INSTANCE=t.TASK_LIST=t.TASK_INSTANCE=t.RESERVATION_LIST=t.RESERVATION_INSTANCE=t.KICK_WORKER_PARTICIPANT=t.HOLD_WORKER_PARTICIPANT_INSTANCE=t.CUSTOMER_PARTICIPANT_INSTANCE=t.ACTIVITIES_LIST=void 0;var n=i(r(8779)),a=i(r(7537)),o=i(r(5370)),s=i(r(9548)),u=i(r(3761)),c=i(r(7681)),d=i(r(1017));function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,u.default)(e);if(t){var n=(0,u.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,s.default)(this,r)}}var f=r(568).twilioErrors,h="reservationList";t.RESERVATION_LIST=h;var p="reservationInstance";t.RESERVATION_INSTANCE=p;var v="workerInstance";t.WORKER_INSTANCE=v;var _="taskReservationInstance";t.TASK_RESERVATION_INSTANCE=_;var g="taskList";t.TASK_LIST=g;var k="taskInstance";t.TASK_INSTANCE=k;var E="taskTransferList";t.TASK_TRANSFER_LIST=E;var w="taskTransferInstance";t.TASK_TRANSFER_INSTANCE=w;var T="workerChannels";t.WORKER_CHANNELS=T;var y="activitiesList";t.ACTIVITIES_LIST=y;var S="customerParticipantInstance";t.CUSTOMER_PARTICIPANT_INSTANCE=S;var m="workerParticipantInstance";t.WORKER_PARTICIPANT_INSTANCE=m;var R="holdWorkerParticipantInstance";t.HOLD_WORKER_PARTICIPANT_INSTANCE=R;var b="kickWorkerParticipant";t.KICK_WORKER_PARTICIPANT=b;var A=function(e){(0,o.default)(r,e);var t=l(r);function r(e,i){var o,s;if((0,a.default)(this,r),s=t.call(this),!e||!i)throw f.INVALID_ARGUMENT.clone("Error instantiating Routes class. <string>workspaceSid and <string>workerSid are required parameters.");return s.workspaceSid=e,s.workerSid=i,s.routes=(o={},(0,n.default)(o,y,{path:d.default.join("Workspaces",s.workspaceSid,"Activities")}),(0,n.default)(o,v,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid)}),(0,n.default)(o,p,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"Reservations","%s")}),(0,n.default)(o,h,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"Reservations")}),(0,n.default)(o,g,{path:d.default.join("Workspaces",s.workspaceSid,"Tasks")}),(0,n.default)(o,k,{path:d.default.join("Workspaces",s.workspaceSid,"Tasks","%s")}),(0,n.default)(o,E,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"Transfers")}),(0,n.default)(o,w,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"Transfers","%s")}),(0,n.default)(o,_,{path:d.default.join("Workspaces",s.workspaceSid,"Tasks","%s","Reservations","%s")}),(0,n.default)(o,T,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"WorkerChannels")}),(0,n.default)(o,S,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"CustomerParticipant")}),(0,n.default)(o,m,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"WorkerParticipant")}),(0,n.default)(o,R,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"HoldWorkerParticipant")}),(0,n.default)(o,b,{path:d.default.join("Workspaces",s.workspaceSid,"Workers",s.workerSid,"KickWorkerParticipant")}),o),s}return r}(c.default);t.default=A},3410:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getStatusCodeFromError=function(e){var t;return null==e||null===(t=e.response)||void 0===t?void 0:t.status},t.parseTime=function(e){try{return new Date(e)}catch(e){return null}},t.validateOptions=function(e,t){for(var r in e)if(r in t&&!t[r](e[r]))throw new TypeError("Option key: ".concat(r," does not meet the required type."));return!0}},5600:(e,t,r)=>{function i(e,t){Object.defineProperties(this,{_errorData:{value:e},name:{value:e.name},message:{value:t||e.message}})}(0,r(6464).inherits)(i,Error),i.prototype.clone=function(e){return new i(this._errorData,e)},e.exports=i},3739:(e,t,r)=>{var i=r(7880);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.WORKER_LIST=t.TASKQUEUE_LIST=void 0;var n=i(r(8779)),a=i(r(7537)),o=i(r(5370)),s=i(r(9548)),u=i(r(3761)),c=i(r(7681)),d=r(568),l=i(r(1017));function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,i=(0,u.default)(e);if(t){var n=(0,u.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,s.default)(this,r)}}var h="workerList";t.WORKER_LIST=h;var p="taskQueueList";t.TASKQUEUE_LIST=p;var v=function(e){(0,o.default)(r,e);var t=f(r);function r(e){var i,o;if((0,a.default)(this,r),o=t.call(this),!e)throw d.twilioErrors.INVALID_ARGUMENT.clone("Error instantiating WorkspaceRoutes class. <string>workspaceSid is required.");return o.workspaceSid=e,o.routes=(i={},(0,n.default)(i,h,{path:l.default.join("Workspaces",o.workspaceSid,"Workers")}),(0,n.default)(i,p,{path:l.default.join("Workspaces",o.workspaceSid,"TaskQueues")}),i),o}return r}(c.default);t.default=v},7431:e=>{e.exports=require("@babel/runtime/helpers/assertThisInitialized")},9591:e=>{e.exports=require("@babel/runtime/helpers/asyncToGenerator")},7537:e=>{e.exports=require("@babel/runtime/helpers/classCallCheck")},6116:e=>{e.exports=require("@babel/runtime/helpers/classPrivateFieldGet")},8640:e=>{e.exports=require("@babel/runtime/helpers/classPrivateFieldSet")},8765:e=>{e.exports=require("@babel/runtime/helpers/createClass")},8779:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},8213:e=>{e.exports=require("@babel/runtime/helpers/extends")},3761:e=>{e.exports=require("@babel/runtime/helpers/getPrototypeOf")},5370:e=>{e.exports=require("@babel/runtime/helpers/inherits")},7880:e=>{e.exports=require("@babel/runtime/helpers/interopRequireDefault")},3838:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},9548:e=>{e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},353:e=>{e.exports=require("@babel/runtime/helpers/slicedToArray")},9293:e=>{e.exports=require("@babel/runtime/helpers/typeof")},1307:e=>{e.exports=require("@babel/runtime/regenerator")},2167:e=>{e.exports=require("axios")},1239:e=>{e.exports=require("events")},5567:e=>{e.exports=require("jwt-decode")},6517:e=>{e.exports=require("lodash")},6622:e=>{e.exports=require("loglevel")},6464:e=>{e.exports=require("util")},5352:e=>{e.exports=require("ws")},5687:e=>{e.exports=require("https")},1017:e=>{e.exports=require("path")},4147:e=>{e.exports=JSON.parse('{"name":"twilio-taskrouter","title":"Twilio TaskRouter","version":"0.8.2","description":"Twilio TaskRouter JavaScript library","homepage":"https://www.twilio.com","author":"Wanjun Li <wli@twilio.com>","contributors":["Martin Amps <martin@twilio.com>","Mehul Chopra <mchopra@twilio.com>","Alex Laird <alaird@twilio.com>"],"license":"MIT","keywords":["twilio","library","javascript","taskrouter","worker"],"files":["dist"],"main":"./dist/index.commonjs2.js","browser":"./dist/index.window.js","scripts":{"webpack":"webpack --config ./webpack.config.js --progress --mode","mocha":"mocha --require @babel/register --exit $1","clean":"rm -rf ./coverage ./dist ./node_modules","lint":"eslint ./lib ./test/integration","test:unit":"mocha --full-trace --check-leaks --require @babel/register ./test/unit/index.js --exit","test:integration":"mocha --full-trace --check-leaks --require @babel/register -r ./test/mocha/no-unicode-reporter.js -r ./test/mocha/fetch.js ./test/integration/index.js --reporter mochawesome --reporter-options reportDir=reports,reportFilename=e2e-test-report --timeout 40000 --exit","test:integration-six-sigma":"mocha --full-trace --check-leaks --require @babel/register -r ./test/mocha/no-unicode-reporter.js -r ./test/mocha/fetch.js ./test/integration/index.js --reporter mochawesome --reporter-options reportDir=reports,reportFilename=e2e-test-report --timeout 40000 --exit -g \'@SixSigma\'","test:integration:voice":"mocha --full-trace --check-leaks --require @babel/register ./test/voice/index.js --timeout 40000 --exit","test:integration:media":"mocha --full-trace --check-leaks --require @babel/register ./test/media/index.js --timeout 40000 --exit","test":"npm run test:unit && npm run test:integration","build:dev":"npm run webpack development","build:prod":"npm run webpack production","prebuild":"npm run clean && yarn install","build":"npm run lint && npm run build:prod","postbuild":"npm run docs && npm run coverage","docs":"node ./scripts/docs.js ./dist/docs","coverage":"nyc --report-dir coverage --reporter lcov --reporter text-summary yarn test:unit","test:setup":"node test/integration_test_setup/IntegrationTestSetup.js"},"repository":{"type":"git","url":"https://github.com/twilio/twilio-taskrouter.js.git"},"dependencies":{"jwt-decode":"^3.1.2","lodash":"^4.17.5","loglevel":"^1.4.1","path-browserify":"^1.0.1","util":"^0.12.4","ws":"^7.4.6","xmlhttprequest":"^1.8.0"},"devDependencies":{"@babel/core":"^7.16.0","@babel/plugin-transform-modules-commonjs":"^7.21.2","@babel/plugin-transform-object-assign":"^7.16.0","@babel/plugin-transform-runtime":"^7.16.4","@babel/preset-env":"^7.16.4","@babel/register":"^7.16.0","@babel/runtime":"^7.16.3","@types/express":"^4.17.7","@types/qs":"^6.9.4","async-test-tools":"^1.0.7","axios":"^0.21.2","babel-eslint":"^10.1.0","babel-loader":"^8.2.3","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-datetime":"^1.4.1","cheerio":"^1.0.0-rc.10","copy-webpack-plugin":"^6.4.1","dotenv":"16.0.1","eslint":"^7.32.0","ink-docstrap":"^1.3.2","isomorphic-fetch":"^3.0.0","jsdoc":"^3.6.7","license-info-webpack-plugin":"^1.0.0","mocha":"^9.1.3","mochawesome":"^7.1.3","mock-socket":"^7.1.0","npm":"^7.24.2","nyc":"^15.1.0","sinon":"^7.5.0","sinon-chai":"^3.5.0","twilio":"^3.71.3","twilio-sync":"^2.0.1","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"resolutions":{"nyc/**/y18n":"^4.0.1"},"engines":{"node":">=12"},"types":"./dist/types.d.ts"}')}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i](a,a.exports,r),a.exports}var i={};(()=>{var e=i,t=r(7880);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"Supervisor",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"TaskRouterEventHandler",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"Worker",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"Workspace",{enumerable:!0,get:function(){return o.default}});var n=t(r(7071)),a=t(r(4981)),o=t(r(9921)),s=t(r(4634))})(),module.exports=i})();
@@ -1 +1 @@
1
- /*! twilio-taskrouter.js 0.8.0 */
1
+ /*! twilio-taskrouter.js 0.8.2 */