@danidoble/webserial 4.5.0-alpha.0 → 4.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/jsd.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./webserial-core-3UL91lxi.cjs"),k=require("./devices-BndwHuvP.cjs");class T{static USE_BIG_ENDIAN=!0;static USE_REFLECTED=!1;static calculate(e){let t;if(this.USE_REFLECTED){t=0;for(const s of e){t^=s&255;for(let n=0;n<8;n++)t&1?t=t>>1^40961:t>>=1}}else{t=0;for(const s of e){t^=s<<8;for(let n=0;n<8;n++)t&32768?t=(t<<1^32773)&65535:t=t<<1&65535}}return this.USE_BIG_ENDIAN?[t>>8&255,t&255]:[t&255,t>>8&255]}static getConfig(){return{bigEndian:this.USE_BIG_ENDIAN,reflected:this.USE_REFLECTED}}}class b{_name="tcpip";get name(){return this._name}get packetId(){return 0}_overridePacketId(e){console.warn(`TCP/IP transport does not use packet IDs. Ignoring override to ${e}.`)}toLittleEndian(e){return[e&255,e>>8&255]}buildPacket(e,t,s){const n=t?t.split("").map(h=>h.charCodeAt(0)):[],a=6+n.length,i=this.toLittleEndian(a),c=this.toLittleEndian(s),o=this.toLittleEndian(e);return{bytes:[...i,...c,...o,...n],packetId:0}}escapeBytes(e){const t=[];for(const s of e)s===192?t.push(219,220):s===219?t.push(219,221):t.push(s);return t}buildAckPacket(e){const n=[192,2,e],[a,i]=T.calculate(n),c=[2,e,a,i];return[192,...this.escapeBytes(c),192]}}class N extends b{packetIdCounter=1;_name="rs232";get packetId(){return this.packetIdCounter}_overridePacketId(e){this.packetIdCounter=e&255}getNextPacketId(){const e=this.packetIdCounter;return this.packetIdCounter=this.packetIdCounter+1&255,this.packetIdCounter===0&&(this.packetIdCounter=1),e}buildPacket(e,t,s){const i=this.getNextPacketId(),{bytes:c}=super.buildPacket(e,t,s),o=[192,1,i,...c],[h,p]=T.calculate(o),l=[1,i,...c,h,p];return{bytes:[192,...this.escapeBytes(l),192],packetId:i}}}const r={requestMachineStatus:100,requestStatusChannel:101,requestStatusSelection:102,configureSelectionDispense:103,addChannelToSelection:104,requestMachineIdentification:105,programWorkingTemperature:106,programWaitingTimings:107,resetSoldOutChannels:108,programTimeWaitingAfterPickup:109,requestJSDVersion:110,requestFaultMachine:111,manageJSDDispensingQueue:112,defineSpecialCharacteristicsSelection:113,configurePerishableProducts:114,requestActiveFaults:115,configureExtendedDispenseStatusData:116,requestStatusTrayPositioningPhototransistors:117,dispenseFromChannel:150,dispenseFromSelection:151,controlLights:152,resetFaultsAndSelfTest:153,performCollectCycle:154,dispenseFromChannelExtended:155,restartingTheJSDKnowingThatItIsDangerous:156,responseFormatCmdWrong:200,responseMachineStatus:201,responseStatusChannel:202,responseStatusSelection:203,responseDispenseStatus:204,responseConfigurationSelectionDispense:205,responseConfigurationChannelsLinkedToSelection:206,responseMachineIdentification:207,responseCurrentTemperature:208,responseReportEventsAlarmsAndFaults:209,responseNewTimingWaitingForProductCollection:210,responsePerformingProductCollectionCycle:211,responseResetMachineSoldOutChannels:212,responseNewTimingWaitingAfterProductCollection:213,responseJSDVersion:214,responseActiveFaults:215,responseJSDDispensingQueue:216,responseSpecialCharacteristicsSelection:217,responsePerishableProducts:218,responseActiveFaultsList:219,responseJSDResetStatus:220,responseExtendedDispenseStatusData:221,responseTraysPositioningPhototransistorsStatus:222,jsdErrorLicenseTemporarilyBlocked:300,jsdErrorLicenseNotActive:301,jsdErrorCommandNotExecutable:302},C=d=>Object.keys(r).find(t=>r[t]===d)||"Unknown",f={VISION:402,LICENSING:600,MANIFESTS_AND_LOGS:601,SIMULATOR_VISION:1e4},L=d=>[f.VISION,f.SIMULATOR_VISION].includes(d),F=d=>[f.LICENSING].includes(d),w=d=>[f.MANIFESTS_AND_LOGS].includes(d);class u{transport;static APP_ID=f.VISION;constructor(e){this.transport=e}static connection({transport:e,packetId:t}){return e._overridePacketId(t||255),new u(e).requestJSDVersion()}requestMachineStatus({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestMachineStatus,t,u.APP_ID)}requestStatusChannel({machine:e,tray:t,channel:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.requestStatusChannel,n,u.APP_ID)}requestStatusSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.requestStatusSelection,t,u.APP_ID)}configureSelectionDispense({selection:e,speed:t,timePostRun:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.configureSelectionDispense,n,u.APP_ID)}getSelectionDispenseConfig({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.configureSelectionDispense,t,u.APP_ID)}addChannelToSelection({selection:e,machine:t,tray:s,channel:n}){const a=`${e},${t},${s},${n}`;return this.transport.buildPacket(r.addChannelToSelection,a,u.APP_ID)}getChannelsLinkedToSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.addChannelToSelection,t,u.APP_ID)}requestMachineIdentification({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestMachineIdentification,t,u.APP_ID)}formatTemperature(e){const t=e>=0?"+":"-",s=Math.abs(e).toFixed(1).padStart(4,"0");return`${t}${s}`}programWorkingTemperature({machine:e,temperature:t,enable:s}){const n=this.formatTemperature(t),i=`${e},${n},${s?1:0}`;return this.transport.buildPacket(r.programWorkingTemperature,i,u.APP_ID)}getWorkingTemperature({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.programWorkingTemperature,t,u.APP_ID)}programWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.programWaitingTimings,n,u.APP_ID)}getWaitingTimings(){return this.transport.buildPacket(r.programWaitingTimings,"",u.APP_ID)}resetSoldOutChannels({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.resetSoldOutChannels,t,u.APP_ID)}programTimeWaitingAfterPickup({time:e}){const t=`${e}`;return this.transport.buildPacket(r.programTimeWaitingAfterPickup,t,u.APP_ID)}getTimeWaitingAfterPickup(){return this.transport.buildPacket(r.programTimeWaitingAfterPickup,"",u.APP_ID)}requestJSDVersion(){return this.transport.buildPacket(r.requestJSDVersion,"",u.APP_ID)}requestFaultMachine({machine:e,type:t}){const n=`${e},${{"report-active":0,"report-inactive":1,"clear-inactive":2}[t]}`;return this.transport.buildPacket(r.requestFaultMachine,n,u.APP_ID)}requestReportActiveFaults(e){return this.requestFaultMachine({machine:e,type:"report-active"})}requestReportInactiveFaults(e){return this.requestFaultMachine({machine:e,type:"report-inactive"})}requestClearInactiveFaults(e){return this.requestFaultMachine({machine:e,type:"clear-inactive"})}manageJSDDispensingQueue({type:e}){const t=`${e}`;return this.transport.buildPacket(r.manageJSDDispensingQueue,t,u.APP_ID)}requestJSDDispensingQueueStatus(){return this.manageJSDDispensingQueue({type:0})}clearJSDDispensingQueue(){return this.manageJSDDispensingQueue({type:1})}defineSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a}){const p=`${e},${t?1:0},${s?1:0},${n==="lower"?0:1},${a}`;return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection,p,u.APP_ID)}getSpecialCharacteristicsSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection,t,u.APP_ID)}configurePerishableProducts({machine:e,enable:t,temperatureLimit:s,minutesToExpiry:n}){const a=t?1:0,i=this.formatTemperature(s),c=`${e},${a},${i},${n}`;return this.transport.buildPacket(r.configurePerishableProducts,c,u.APP_ID)}requestActiveFaults({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestActiveFaults,t,u.APP_ID)}configureExtendedDispenseStatusData({enable:e}){const s=`${e?1:0}`;return this.transport.buildPacket(r.configureExtendedDispenseStatusData,s,u.APP_ID)}getExtendedDispenseStatusDataConfig(){return this.transport.buildPacket(r.configureExtendedDispenseStatusData,"",u.APP_ID)}requestStatusTrayPositioningPhototransistors({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestStatusTrayPositioningPhototransistors,t,u.APP_ID)}dispenseFromChannel({token:e,machine:t,tray:s,channel:n,speed:a,timePostRun:i}){const c=`${e},${t},${s},${n},${a},${i}`;return this.transport.buildPacket(r.dispenseFromChannel,c,u.APP_ID)}getDispenseStatusFromChannel({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromChannel,t,u.APP_ID)}dispenseFromSelection({token:e,selection:t}){const s=`${e},${t}`;return this.transport.buildPacket(r.dispenseFromSelection,s,u.APP_ID)}getDispenseStatusFromSelection({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromSelection,t,u.APP_ID)}controlLights({machine:e,turnOn:t}){const n=`${e},${t?1:0}`;return this.transport.buildPacket(r.controlLights,n,u.APP_ID)}resetFaultsAndSelfTest({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.resetFaultsAndSelfTest,t,u.APP_ID)}performCollectCycle({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.performCollectCycle,t,u.APP_ID)}dispenseFromChannelExtended({token:e,machine:t,tray:s,channel:n,speed:a,timePostRun:i,fragileOrHeavy:c,typeAdjustElevator:o,timeAdjustElevator:h}){const I=`${e},${t},${s},${n},${a},${i},${c?1:0},${o==="lower"?0:1},${h}`;return this.transport.buildPacket(r.dispenseFromChannelExtended,I,u.APP_ID)}getDispenseStatusFromChannelExtended({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromChannelExtended,t,u.APP_ID)}restartingTheJSDKnowingThatItIsDangerous(){return this.transport.buildPacket(r.restartingTheJSDKnowingThatItIsDangerous,"",u.APP_ID)}}function q(d){if(d.length>5)throw new Error(`Token must be max 5 characters, got ${d.length}`);return d}function _(){let d;do{const e=new Uint8Array(2);d=parseInt(crypto.getRandomValues(e).toString().replaceAll(",","")).toString(36)}while(d.length>5);return q(d)}const E={status:"NO-CONNECTED",machineInService:!1,doorOpen:!1,availabilityToDispense:"NOT-AVAILABLE-TO-DISPENSE",hasLightsOn:!1,temperature:""};class M{_commands;jsd;APP_ID=f.VISION;_machineStatus=[{...E},{...E},{...E},{...E}];constructor(e,t){this._commands=new u(t),this.jsd=e}_performingChannelAssignment={enabled:!1,selections:[],currentSelection:1};_dispensingTokens={};async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}_getMachineIndex(e){return e-1}isAvailableToDispense({machine:e=1}={}){const t=this._getMachineIndex(e);return["ELEVATOR-COLLECTION-POSITION","AVAILABLE-TO-DISPENSE"].includes(this._machineStatus[t]?.availabilityToDispense||"")&&this._machineStatus[t]?.machineInService===!0&&this._machineStatus[t]?.doorOpen===!1&&this._machineStatus[t]?.status==="CONNECTED"}async requestMachineStatus({machine:e=1}={}){const t=this._getMachineIndex(e),s=this.cmd.requestMachineStatus({machine:t});return await this.send(s,{alias:"requestMachineStatus"})}_getTrayChannelFromSelection(e){const t=Math.floor((e-1)/10)+11,s=(e-1)%10;return{tray:t,channel:s}}_getSelectionFromTrayChannel(e,t){return(e-11)*10+t+1}async requestStatusChannel({machine:e,selection:t}){const s=this._getMachineIndex(e),{tray:n,channel:a}=this._getTrayChannelFromSelection(t),i=this.cmd.requestStatusChannel({machine:s,tray:n,channel:a});return await this.send(i,{alias:"requestStatusChannel"})}async assignChannels({machine:e}){if(this._performingChannelAssignment.enabled)throw new Error("Channel assignment already in progress");this._performingChannelAssignment.enabled=!0;for(let t=1;t<=80;t++)await this.requestStatusChannel({machine:e,selection:t});return new Promise(t=>{const s=setInterval(()=>{if(this._performingChannelAssignment.enabled)return;clearInterval(s);const n=this._performingChannelAssignment.selections;this._performingChannelAssignment.selections=[],t(n)},200)})}async requestStatusSelection({selection:e}){const t=this.cmd.requestStatusSelection({selection:e});return await this.send(t,{alias:"requestStatusSelection"})}async configureSelectionDispense({selection:e,speed:t,timePostRun:s}){const n=this.cmd.configureSelectionDispense({selection:e,speed:t,timePostRun:s});return await this.send(n,{alias:"configureSelectionDispense"})}async requestSelectionDispenseConfig({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.getSelectionDispenseConfig({machine:t});return await this.send(s,{alias:"getSelectionDispenseConfig"})}async configureAddChannelToSelection({selection:e,machine:t,tray:s,channel:n}){const a=this._getMachineIndex(t),i=this.cmd.addChannelToSelection({selection:e,machine:a,tray:s,channel:n});return await this.send(i,{alias:"addChannelToSelection"})}async requestChannelsLinkedToSelection({selection:e}){const t=this.cmd.getChannelsLinkedToSelection({selection:e});return await this.send(t,{alias:"getChannelsLinkedToSelection"})}async requestMachineIdentification({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestMachineIdentification({machine:t});return await this.send(s,{alias:"requestMachineIdentification"})}async configureWorkingTemperature({machine:e,temperature:t,enable:s}){const n=this._getMachineIndex(e),a=this.cmd.programWorkingTemperature({machine:n,temperature:t,enable:s});return await this.send(a,{alias:"programWorkingTemperature"})}async requestWorkingTemperature({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.getWorkingTemperature({machine:t});return await this.send(s,{alias:"getWorkingTemperature"})}async configureWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s}){const n=this.cmd.programWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s});return await this.send(n,{alias:"programWaitingTimings"})}async requestWaitingTimings(){const e=this.cmd.getWaitingTimings();return await this.send(e,{alias:"getWaitingTimings"})}async resetSoldOutChannels({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.resetSoldOutChannels({machine:t});return await this.send(s,{alias:"resetSoldOutChannels"})}async resetAllErrors({machine:e}){return await Promise.all([this.clearInactiveFaults({machine:e}),this.resetSoldOutChannels({machine:e}),this.resetFaultsAndSelfTest({machine:e})])}async configureTimeWaitingAfterPickup({time:e}){const t=this.cmd.programTimeWaitingAfterPickup({time:e});return await this.send(t,{alias:"programTimeWaitingAfterPickup"})}async requestTimeWaitingAfterPickup(){const e=this.cmd.getTimeWaitingAfterPickup();return await this.send(e,{alias:"getTimeWaitingAfterPickup"})}async requestJSDVersion(){const e=this.cmd.requestJSDVersion();return await this.send(e,{alias:"requestJSDVersion"})}async requestReportActiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestReportActiveFaults(t);return await this.send(s,{alias:"requestReportActiveFaults"})}async requestReportInactiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestReportInactiveFaults(t);return await this.send(s,{alias:"requestReportInactiveFaults"})}async clearInactiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestClearInactiveFaults(t);return await this.send(s,{alias:"requestClearInactiveFaults"})}async requestJSDDispensingQueueStatus(){const e=this.cmd.requestJSDDispensingQueueStatus();return await this.send(e,{alias:"requestJSDDispensingQueueStatus"})}async clearJSDDispensingQueue(){const e=this.cmd.clearJSDDispensingQueue();return await this.send(e,{alias:"clearJSDDispensingQueue"})}async configureSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a}){const i=this.cmd.defineSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a});return await this.send(i,{alias:"defineSpecialCharacteristicsSelection"})}requestSpecialCharacteristicsSelection({selection:e}){const t=this.cmd.getSpecialCharacteristicsSelection({selection:e});return this.send(t,{alias:"getSpecialCharacteristicsSelection"})}configurePerishableProducts({machine:e,enable:t,temperatureLimit:s,minutesToExpiry:n}){const a=this._getMachineIndex(e),i=this.cmd.configurePerishableProducts({machine:a,enable:t,temperatureLimit:s,minutesToExpiry:n});return this.send(i,{alias:"configurePerishableProducts"})}async requestActiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestActiveFaults({machine:t});return await this.send(s,{alias:"requestActiveFaults"})}async configureExtendedDispenseStatusData({enable:e}){const t=this.cmd.configureExtendedDispenseStatusData({enable:e});return await this.send(t,{alias:"configureExtendedDispenseStatusData"})}async requestExtendedDispenseStatusDataConfig(){const e=this.cmd.getExtendedDispenseStatusDataConfig();return await this.send(e,{alias:"getExtendedDispenseStatusDataConfig"})}async requestStatusTrayPositioningPhototransistors({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestStatusTrayPositioningPhototransistors({machine:t});return await this.send(s,{alias:"requestStatusTrayPositioningPhototransistors"})}async dispenseFromChannel({machine:e,tray:t,channel:s,speed:n,timePostRun:a,cart:i=!1}){if(!this.isAvailableToDispense({machine:e}))throw new Error(`Machine ${e} is not available to dispense`);const c=this._getMachineIndex(e),o=_(),h=this.cmd.dispenseFromChannel({token:o,machine:c,tray:t,channel:s,speed:n,timePostRun:a});return await this.send(h,{alias:"dispenseFromChannel"}),this._dispensingTokens[o]={cart:!!i,resolve:()=>{delete this._dispensingTokens[o]},reject:()=>{}},new Promise((p,l)=>{this._dispensingTokens[o].resolve=p,this._dispensingTokens[o].reject=l})}async dispense({machine:e,selection:t,speed:s,timePostRun:n,cart:a=!1}){const{tray:i,channel:c}=this._getTrayChannelFromSelection(t);return this.dispenseFromChannel({machine:e,tray:i,channel:c,speed:s||5,timePostRun:n||0,cart:!!a})}async dispenseCart(e=[]){const t=[];for(let n=0;n<e.length;n+=10)t.push(e.slice(n,n+10));let s=[];for(const n of t)try{const a=await Promise.all(n.map(o=>this.dispense({machine:o.machine,selection:o.selection,cart:!0}))),i=[...new Set(n.map(o=>o.machine))];await new Promise(o=>{const h=setInterval(()=>{i.every(l=>this.getMachineStatus(l)?.availabilityToDispense==="AVAILABLE-TO-DISPENSE")&&(clearInterval(h),o(!0))},300)});for(const o of i)this._machineStatus[this._getMachineIndex(o)]?.availabilityToDispense==="WAITING-COLLECTION"&&this.emit("waiting-collection",{machine:o!==null?o+1:null});const c=n.map((o,h)=>({machine:o.machine,selection:o.selection,dispensed:a[h]}));s=s.concat(c)}catch(a){console.error("Error sending dispense command:",a)}return s}async requestDispenseStatusFromChannel({token:e}){const t=this.cmd.getDispenseStatusFromChannel({token:e});return await this.send(t,{alias:"getDispenseStatusFromChannel"})}async dispenseFromSelection({selection:e,cart:t=!1}){const s=_(),n=this.cmd.dispenseFromSelection({token:s,selection:e});return await this.send(n,{alias:"dispenseFromSelection"}),this._dispensingTokens[s]={cart:!!t,resolve:()=>{},reject:()=>{}},new Promise((a,i)=>{this._dispensingTokens[s].resolve=a,this._dispensingTokens[s].reject=i})}async requestDispenseStatusFromSelection({token:e}){const t=this.cmd.getDispenseStatusFromSelection({token:e});return await this.send(t,{alias:"getDispenseStatusFromSelection"})}async _configureLights({machine:e,turnOn:t,alias:s}){const n=this._getMachineIndex(e),a=this.cmd.controlLights({machine:n,turnOn:t});return await this.send(a,{alias:s})}async lightsOn({machine:e}){return this._configureLights({machine:e,turnOn:!0,alias:"lightsOn"})}async lightsOff({machine:e}){return this._configureLights({machine:e,turnOn:!1,alias:"lightsOff"})}async resetFaultsAndSelfTest({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.resetFaultsAndSelfTest({machine:t});return await this.send(s,{alias:"resetFaultsAndSelfTest"})}async collect({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.performCollectCycle({machine:t});return await this.send(s,{alias:"performCollectCycle"})}async dispenseFromChannelExtended({machine:e,tray:t,channel:s,speed:n,timePostRun:a,fragileOrHeavy:i,typeAdjustElevator:c,timeAdjustElevator:o,cart:h=!1}){if(!this.isAvailableToDispense({machine:e}))throw new Error(`Machine ${e} is not available to dispense`);const p=this._getMachineIndex(e),l=_(),m=this.cmd.dispenseFromChannelExtended({token:l,machine:p,tray:t,channel:s,speed:n,timePostRun:a,fragileOrHeavy:i,typeAdjustElevator:c,timeAdjustElevator:o});return await this.send(m,{alias:"dispenseFromChannelExtended"}),this._dispensingTokens[l]={cart:!!h,resolve:()=>{},reject:()=>{}},new Promise((I,D)=>{this._dispensingTokens[l].resolve=I,this._dispensingTokens[l].reject=D})}async requestDispenseStatusFromChannelExtended({token:e}){const t=this.cmd.getDispenseStatusFromChannelExtended({token:e});return await this.send(t,{alias:"getDispenseStatusFromChannelExtended"})}async restartJSD(){const e=this.cmd.restartingTheJSDKnowingThatItIsDangerous();return await this.send(e,{alias:"restartingTheJSDKnowingThatItIsDangerous"})}serialMessage(e){switch(e.opcode){case r.responseFormatCmdWrong:this._responseFormatCmdWrong(e);break;case r.responseMachineStatus:this._responseMachineStatus(e);break;case r.responseStatusChannel:this._responseStatusChannel(e);break;case r.responseStatusSelection:this._responseStatusSelection(e);break;case r.responseDispenseStatus:this._responseDispenseStatus(e);break;case r.responseConfigurationSelectionDispense:this._responseConfigurationSelectionDispense(e);break;case r.responseConfigurationChannelsLinkedToSelection:this._responseConfigurationChannelsLinkedToSelection(e);break;case r.responseMachineIdentification:this._responseMachineIdentification(e);break;case r.responseCurrentTemperature:this._responseCurrentTemperature(e);break;case r.responseReportEventsAlarmsAndFaults:this._responseReportEventsAlarmsAndFaults(e);break;case r.responseNewTimingWaitingForProductCollection:this._responseNewTimingWaitingForProductCollection(e);break;case r.responsePerformingProductCollectionCycle:this._responsePerformingProductCollectionCycle(e);break;case r.responseResetMachineSoldOutChannels:this._responseResetMachineSoldOutChannels(e);break;case r.responseNewTimingWaitingAfterProductCollection:this._responseNewTimingWaitingAfterProductCollection(e);break;case r.responseJSDVersion:this._responseJSDVersion(e);break;case r.responseActiveFaults:this._responseActiveFaults(e);break;case r.responseJSDDispensingQueue:this._responseJSDDispensingQueue(e);break;case r.responseSpecialCharacteristicsSelection:this._responseSpecialCharacteristicsSelection(e);break;case r.responsePerishableProducts:this._responsePerishableProducts(e);break;case r.responseActiveFaultsList:this._responseActiveFaultsList(e);break;case r.responseJSDResetStatus:this._responseJSDResetStatus(e);break;case r.responseExtendedDispenseStatusData:this._responseExtendedDispenseStatusData(e);break;case r.responseTraysPositioningPhototransistorsStatus:this._responseTraysPositioningPhototransistorsStatus(e);break;case r.jsdErrorLicenseTemporarilyBlocked:this._responseJsdErrorLicenseTemporarilyBlocked(e);break;case r.jsdErrorLicenseNotActive:this._responseJsdErrorLicenseNotActive(e);break;case r.jsdErrorCommandNotExecutable:this._responseJsdErrorCommandNotExecutable(e);break}}emit(e,...t){this.jsd.dispatch(`vision:${e}`,...t)}_responseFormatCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=C(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}setMachineStatus(e,t){this._machineStatus[e]=t}getMachineStatus(e){const t=this._getMachineIndex(e);return this._machineStatus[t]||null}_getMachineStatusName(e){switch(e){case 0:return"NO-CONNECTED";case 1:return"CONNECTED";case 2:return"LOST"}}_responseMachineStatus(e){const[t,s,n,a,i,c,o]=e.params,h={0:"AVAILABLE-TO-DISPENSE",1:"NOT-AVAILABLE-TO-DISPENSE",2:"ALREADY-DISPENSING",3:"WAITING-COLLECTION",4:"ELEVATOR-COLLECTION-POSITION",5:"UNCOLLECTED"},p={status:this._getMachineStatusName(parseInt(s,10)),machineInService:parseInt(n,10)===1,doorOpen:parseInt(a,10)===0,availabilityToDispense:h[i]||"NOT-AVAILABLE-TO-DISPENSE",hasLightsOn:isNaN(parseInt(c,10))?!1:parseInt(c,10)===1,temperature:o||""};this.setMachineStatus(parseInt(t,10),p),this.emit("machine-status",{machine:parseInt(t,10)+1,...p})}_statusChannelName(e){switch(e){case 0:return"NO-CONNECTED";case 1:return"AVAILABLE";case 2:return"SOLD-OUT";case 3:return"FAULT";default:return"NO-CONNECTED"}}_responseStatusChannel(e){const[t,s,n,a]=e.params,i=this._statusChannelName(parseInt(a,10)),c=this._getSelectionFromTrayChannel(Number(s),Number(n)),o=["AVAILABLE","SOLD-OUT"].includes(i);if(this._performingChannelAssignment.enabled){this._performingChannelAssignment.selections.push({selection:c,active:o,machine:Number(t)+1}),this._performingChannelAssignment.currentSelection=this._performingChannelAssignment.selections.length;const h=this._performingChannelAssignment.currentSelection/80*100;this.emit("channels-progress",{progress:Math.min(100,Math.round(h*100)/100),current:this._performingChannelAssignment.currentSelection,verified:this._performingChannelAssignment.selections.length}),this._performingChannelAssignment.selections.length>=80&&(this.emit("channels",this._performingChannelAssignment.selections),this._performingChannelAssignment.enabled=!1)}else this.emit("channel-status",{machine:Number(t)+1,selection:c,active:o})}_statusSelectionName(e){switch(e){case 0:return"NO-CONFIGURED";case 1:return"ASSOCIATED";case 2:return"NO-ASSOCIATED";case 3:return"NO-VISION-OWNED";case 4:return"EXPIRED";default:return"NO-CONFIGURED"}}_responseStatusSelection(e){const[t,s]=e.params,n=this._statusSelectionName(parseInt(s,10));this.emit("status-selection",{selection:Number(t),status:n})}_responseDispenseStatus(e){const[t,s,n,a]=e.params,i={0:"RECEIVED",1:"IN-PROGRESS",2:"WAITING-COLLECTION",3:"COLLECTED",4:"NO-PERFORMED",5:"TOKEN-NOT-FOUND",6:"QUEUE-FULL",7:"CHANNEL-NO-CONNECTED",8:"SELECTION-UNAVAILABLE",9:"FAILED-DISPENSE",10:"UNCOLLECTED",11:"DISPENSED-CAN-MULTIPLE",12:"DISPENSE-CANCELLED",13:"PRODUCT-EXPIRED"},c=Object.values(i).filter(D=>["NO-PERFORMED","TOKEN-NOT-FOUND","QUEUE-FULL","CHANNEL-NO-CONNECTED","SELECTION-UNAVAILABLE","FAILED-DISPENSE","DISPENSE-CANCELLED","PRODUCT-EXPIRED","UNCOLLECTED"].includes(D)),o={0:"NONE",1:"DOOR-OPEN",2:"MACHINE-NOT-AVAILABLE",3:"ERROR-PHOTOSENSORS",4:"ERROR-MOTOR-POWER-CONSUMPSION-DETECTOR",5:"ALREADY-SOLD-OUT",6:"ERROR-TEST-PRODUCT-DETECTOR",7:"SOLD-OUT",8:"ELEVATOR-CANT-REACH-TRAY",9:"UNCOLLECTED",10:"MACHINE-RESET-DURING-DISPENSE",11:"MACHINE-COMMUNICATION-ERROR",12:"MACHINE-COMMUNICATION-LOST",13:"NO-VISION",14:"PRODUCT-PERISHABLE-EXPIRED",20:"DECIDE"},h=i[parseInt(s,10)]||"UNKNOWN",[p,l,m]=n&&n.trim()!==""?n.split(".").map(D=>parseInt(D,10)):[null,null,null],I=a?o[parseInt(a,10)]||"UNKNOWN":null;this._dispensingTokens[t]&&(this._dispensingTokens[t].cart===!1&&h==="WAITING-COLLECTION"?(this._dispensingTokens[t].resolve(!0),delete this._dispensingTokens[t],this.emit("waiting-collection",{machine:p!==null?p+1:null})):this._dispensingTokens[t].cart===!0&&h==="DISPENSED-CAN-MULTIPLE"?(this._dispensingTokens[t].resolve(!0),delete this._dispensingTokens[t]):c.includes(h)&&(this._dispensingTokens[t].resolve(!1),delete this._dispensingTokens[t])),h==="IN-PROGRESS"&&this.emit("dispensing",{token:t,machine:p!==null?p+1:null,tray:l!==null?l:null,channel:m!==null?m:null,selection:m!==null&&l!==null?this._getSelectionFromTrayChannel(l,m):null}),this.emit("dispense-status",{token:t,status:h,machine:p!==null?p+1:null,tray:l!==null?l:null,channel:m!==null?m:null,extendedStatus:I})}_responseConfigurationSelectionDispense(e){const[t,s,n]=e.params;this.emit("selection-dispense-config",{selection:Number(t),speed:Number(s),timePostRun:Number(n)})}_responseConfigurationChannelsLinkedToSelection(e){const[t,...s]=e.params,a=s[s.length-1].includes(":")?s.pop():null,i={0:"OK",1:"ALREADY-DEFINED",2:"OUT-OF-RANGE"},c=s.map(o=>{const[h,p,l]=o.split(":");return{machine:parseInt(h,10)+1,tray:parseInt(p,10),channel:parseInt(l,10)}});this.emit("channels-linked-to-selection",{selection:Number(t),linkedChannels:c,status:a?i[parseInt(a,10)]||"UNKNOWN":null})}_responseMachineIdentification(e){const[t,s,n,a]=e.params;this.emit("machine-id",{machine:parseInt(t,10)+1,model:s,serialNumber:n,firmwareVersion:a})}_responseCurrentTemperature(e){const[t,s,n,a,i]=e.params,c=parseInt(t,10)+1,o=parseInt(i,10)===1?"ON":"OFF";this.emit("current-temperature",{machine:c,workingTemperature:s,currentTemperatureInsideMachine:n,currentTemperatureAir:a,coolUnitStatus:o})}_responseReportEventsAlarmsAndFaults(e){const[t,s,n]=e.params,a=parseInt(t,10)+1,i={1:"Product detector",2:"None of the motors are connected. Possible control board faulty",3:"Channels jamp detector error",4:"Temperature control error",5:"Elevator faulty",6:"Photosensor, which determine the position of the elevator in relation with the cabinet, faulty",7:"Elevator tester (flap), ES-Plus, faulty",8:"Product expired (perishable)"};this.emit("alarm-faults-events",{machine:a,event:i[parseInt(s,10)]||"UNKNOWN",status:parseInt(n,10)===1?"ACTIVE":"CLEARED"})}_responseNewTimingWaitingForProductCollection(e){const[t,s,n]=e.params;this.emit("time-waiting-for-product-collection",{minutesProductCollection:Number(t),secondsTimeBetweenDispenseManoeuvres:Number(s),secondsBetweenCollectAndStartNextDispense:Number(n)})}_responsePerformingProductCollectionCycle(e){const[t,s]=e.params,n={0:"Manoeuvre has started",1:"Wron machine number",2:"Machine no connected",3:"Wron machine model",4:"Machine cannot perform collection now",5:"Communication error with machine"};this.emit("collect",{machine:parseInt(t,10)+1,status:n[parseInt(s,10)]||"UNKNOWN"})}_responseResetMachineSoldOutChannels(e){const[t,s]=e.params,n={0:"Reset performed",1:"Wrong machine number",2:"Machine not connected",3:"Communication error with machine"};this.emit("reset-sold-out-channels",{machine:parseInt(t,10)+1,status:n[parseInt(s,10)]||"UNKNOWN"})}_responseNewTimingWaitingAfterProductCollection(e){const[t]=e.params;this.emit("time-waiting-after-product-collection",{secondsBetweenCollectAndStartNextDispense:Number(t)})}_responseJSDVersion(e){const[t,s,n,a]=e.params;this.emit("jsd-version",{name:t,compileNumber:s,compileDate:n,description:a})}_responseActiveFaults(e){const[t,s,n,a,i,c,o]=e.params;this.emit("active-faults",{machine:parseInt(t,10)+1,status:parseInt(s,10)===1?"ACTIVE":"CLEARED",fault:parseInt(n,10),appearancesNumber:parseInt(a,10),partialNumberActivated:parseInt(i,10),minutesActive:parseInt(c,10),date:o})}_responseJSDDispensingQueue(e){const[t,s,n]=e.params;this.emit("jsd-dispensing-queue",{free:parseInt(t,10),processed:parseInt(s,10),notProcessed:parseInt(n,10)})}_responseSpecialCharacteristicsSelection(e){const[t,s,n,a,i]=e.params;this.emit("special-characteristics-selection",{selection:Number(t),perishable:parseInt(s,10)===1,fragileOrHeavy:parseInt(n,10)===1,typeAdjustElevator:a==="0"?"lower":"upper",timeAdjustElevator:Number(i)})}_responsePerishableProducts(e){const[t,s,n,a,i]=e.params;this.emit("perishable-products-config",{machine:parseInt(t,10)+1,perishableActive:parseInt(s,10)===1,alarmPerisableTriggered:parseInt(n,10)===1,maxTemperature:a,minutesBeforeExpire:Number(i)})}_responseActiveFaultsList(e){const[t,...s]=e.params,n={1:"Product detector",2:"None of the motors are connected. Possible control board faulty",3:"Channels jamp detector error",4:"Temperature control error",5:"Elevator faulty",6:"Photosensor, which determine the position of the elevator in relation with the cabinet, faulty",7:"Elevator tester (flap), ES-Plus, faulty",8:"Product expired (perishable)"},a=s.map(i=>({code:parseInt(i,10),description:n[parseInt(i,10)]||"UNKNOWN"}));this.emit("active-faults-list",{machine:parseInt(t,10)+1,faults:a,ok:s.length===0})}_responseJSDResetStatus(e){const[t]=e.params,s={0:"RESETED",1:"RECEIVED"};this.emit("jsd-status-reset",{type:s[parseInt(t,10)]||"UNKNOWN"})}_responseExtendedDispenseStatusData(e){const[t]=e.params;this.emit("extended-dispense-status-data",{enabled:parseInt(t,10)===1})}_responseTraysPositioningPhototransistorsStatus(e){const[t,s,n,a,i,c,o,h,p]=e.params,l={0:"OK",C:"SHORT-CIRCUIT",N:"TRAY-NOT-DETECTED"},m={machine:parseInt(t,10)+1,trays:{11:l[s]||null,12:l[n]||null,13:l[a]||null,14:l[i]||null,15:l[c]||null,16:l[o]||null,17:l[h]||null,18:l[p]||null}};this.emit("trays-positioning-phototransistors-status",m)}_responseJsdErrorLicenseTemporarilyBlocked(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"exprired-license",opcode:parseInt(t,10),actionName:C(parseInt(t,10)),params:s})}_responseJsdErrorLicenseNotActive(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"app-number-not-licensed",opcode:parseInt(t,10),actionName:C(parseInt(t,10)),params:s})}_responseJsdErrorCommandNotExecutable(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"price-control-active-direct-dispense-not-allowed",opcode:parseInt(t),actionName:C(parseInt(t,10)),params:s})}}const g={requestLogsEvents:101,requestLogsByDate:102,requestForSendingManifest:110,sendManifestDataBlock:111,responseCmdWrong:200,responseLineLogEvent:201,responseManifestDataBlock:210,responseManifestCompleted:211},x=d=>Object.keys(g).find(t=>g[t]===d)||"Unknown";class P{transport;static APP_ID=f.MANIFESTS_AND_LOGS;constructor(e){this.transport=e}requestLogsEvents(e=!1){const s=`${e?"+":"0"}`;return this.transport.buildPacket(g.requestLogsEvents,s,P.APP_ID)}requestLogsByDate(e,t){const s=`${e},${t}`;return this.transport.buildPacket(g.requestLogsByDate,s,P.APP_ID)}requestForSendingManifest(e,t){const s=`${e},${t}`;return this.transport.buildPacket(g.requestForSendingManifest,s,P.APP_ID)}sendManifestDataBlock(e,t){const s=Array.from(t).map(a=>a.toString(2).padStart(8,"0")).join(" "),n=`${e},${s}`;return this.transport.buildPacket(g.sendManifestDataBlock,n,P.APP_ID)}}class R{_commands;jsd;APP_ID=f.MANIFESTS_AND_LOGS;_logs={status:"idle",data:[]};constructor(e,t){this._commands=new P(t),this.jsd=e}async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}async requestLogsEvent({previous:e}){const t=this.cmd.requestLogsEvents(e);return await this.send(t,{alias:"requestLogsEvents"})}async requestLogs(){if(["fetching","more"].includes(this._logs.status))throw new Error("Already fetching logs");return this._logs.status="fetching",this.requestLogsEvent({previous:!1}),new Promise(e=>{const t=setInterval(()=>{if(this._logs.status==="completed"){clearInterval(t);const s=this._logs.data;e(s)}else this._logs.status==="more"&&(this._logs.status="fetching",this.requestLogsEvent({previous:!0}))},100)})}async requestLogsByDate({since:e,until:t}){const s=c=>{const o=String(c.getMonth()+1).padStart(2,"0"),h=String(c.getDate()).padStart(2,"0"),p=String(c.getHours()).padStart(2,"0"),l=String(c.getMinutes()).padStart(2,"0"),m=String(c.getSeconds()).padStart(2,"0");return`${o}/${h}/${p}/${l}/${m}`},n=s(e),a=s(t),i=this.cmd.requestLogsByDate(n,a);return await this.send(i,{alias:"requestLogsByDate"})}async requestForSendingManifest({fileSizeBytes:e,crc:t}){const s=this.cmd.requestForSendingManifest(e,t);return await this.send(s,{alias:"requestForSendingManifest"})}async sendManifestDataBlock({prevBlockId:e,dataBlock:t}){const s=this.cmd.sendManifestDataBlock(e,t);return await this.send(s,{alias:"sendManifestDataBlock"})}serialMessage(e){switch(e.opcode){case g.responseCmdWrong:this._responseCmdWrong(e);break;case g.responseLineLogEvent:this._responseLineLogEvent(e);break;case g.responseManifestDataBlock:this._responseManifestDataBlock(e);break;case g.responseManifestCompleted:this._responseManifestCompleted(e);break}}emit(e,...t){this.jsd.dispatch(`manifest:${e}`,...t)}_responseCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=x(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}_responseLineLogEvent(e){const[...t]=e.params,s=t[0]==="END_LOG";if(s)this._logs.status="completed";else{const a=t.join(",");this._logs.data.push(a),this._logs.status==="fetching"&&(this._logs.status="more")}const n=s?"end":"log";this.emit("log",{type:n,log:t})}_responseManifestDataBlock(e){const[t,s,n]=e.params;this.emit("block",{blockId:parseInt(t,10),indexFile:parseInt(s,10),quantity:parseInt(n,10)})}_responseManifestCompleted(e){const[t]=e.params,s={0:"Success",1:"CRC Error",2:"Transference interrupted",3:"Reset JSD and try again"};this.emit("completed",{result:s[t]||"Unknown Result",resultKey:parseInt(t,10)})}}const S={requestFeatureStatus:100,requestTemporaryLicenseStatus:101,requestSeedData:102,requestLicenseActivation:110,responseCmdWrong:200,responseFeatureStatus:201,responseSeedData:202,responseTemporaryLicenseStatus:203},B=d=>Object.keys(S).find(t=>S[t]===d)||"Unknown";class y{transport;static APP_ID=f.LICENSING;constructor(e){this.transport=e}requestFeatureStatus(e){const t=`${e}`;return this.transport.buildPacket(S.requestFeatureStatus,t,y.APP_ID)}requestTemporaryLicenseStatus(){return this.transport.buildPacket(S.requestTemporaryLicenseStatus,"",y.APP_ID)}requestSeedData(){return this.transport.buildPacket(S.requestSeedData,"",y.APP_ID)}requestLicenseActivation(e){const t=`${e}`;return this.transport.buildPacket(S.requestLicenseActivation,t,y.APP_ID)}}class ${_commands;jsd;APP_ID=f.LICENSING;constructor(e,t){this._commands=new y(t),this.jsd=e}async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}async requestFeatureStatus({feature:e}){const t=this.cmd.requestFeatureStatus(e);return this.send(t,{alias:"requestFeatureStatus"})}async requestTemporaryLicenseStatus(){const e=this.cmd.requestTemporaryLicenseStatus();return this.send(e,{alias:"requestTemporaryLicenseStatus"})}async requestSeedData(){const e=this.cmd.requestSeedData();return this.send(e,{alias:"requestSeedData"})}async requestLicenseActivation({license:e}){const t=this.cmd.requestLicenseActivation(e);return this.send(t,{alias:"requestLicenseActivation"})}serialMessage(e){switch(e.opcode){case S.responseCmdWrong:this._responseCmdWrong(e);break;case S.responseFeatureStatus:this._responseFeatureStatus(e);break;case S.responseSeedData:this._responseSeedData(e);break;case S.responseTemporaryLicenseStatus:this._responseTemporaryLicenseStatus(e);break}}emit(e,...t){this.jsd.dispatch(`licensing:${e}`,...t)}_responseCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=B(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}_responseFeatureStatus(e){const[t,s]=e.params;this.emit("feature-status",{feature:t,active:s==="1"})}_responseSeedData(e){const[...t]=e.params,s=t.join(","),n=t.map(a=>parseInt(a,10).toString(16).padStart(2,"0")).join(" ");this.emit("seed",{seed:s,hex:n})}_responseTemporaryLicenseStatus(e){const[t,s,n]=e.params,a={0:"Inactive, permanent license",1:"Active",2:"Expired",3:"Blocked up"};this.emit("temporary-license-status",{status:a[t]||"Unknown",remainingDays:parseInt(s,10),daysSinceExpiration:parseInt(n,10)})}}class j{static unescapeBytes(e){const t=[];for(let s=0;s<e.length;s++){const n=e[s];if(n===219){const a=e[s+1];a===220?(t.push(192),s++):a===221?(t.push(219),s++):t.push(n)}else t.push(n)}return t}static parseFrame(e){let t=e;t.length>0&&t[0]===192&&(t=t.slice(1)),t.length>0&&t[t.length-1]===192&&(t=t.slice(0,-1));const s=this.unescapeBytes(t);if(s.length<1)return console.error("Frame too short"),"Frame too short";const n=s[0],a=s[1],i=s.slice(2,-2),c=s[s.length-2],o=s[s.length-1],h=[192,n,a,...i],[p,l]=T.calculate(h);if(p!==c||l!==o)return console.error("CRC mismatch"),"CRC mismatch";if(n===2)return{type:"ACK",id:a};if(n===3)return{type:"NACK",id:a};if(n!==1)return console.warn("Unknown code"),"Unknown code";if(i.length<6)return console.error("JConnect header too short"),"JConnect header too short";const m=i[0]|i[1]<<8,I=i[2]|i[3]<<8,D=i[4]|i[5]<<8,v=i.slice(6),A=String.fromCharCode(...v);return{type:"DATA",opcode:D,appId:I,noBytes:m,params:A?A.split(","):[],id:a,rawAscii:A}}}class W{delimiter;buffer;constructor(e){this.delimiter=e,this.buffer=new Uint8Array(0)}transform(e,t){const s=new Uint8Array(this.buffer.length+e.length);s.set(this.buffer),s.set(e,this.buffer.length),this.buffer=s;let n;for(;(n=this.findDelimiterIndex())!==-1;){const a=this.buffer.slice(0,n);this.buffer=this.buffer.slice(n+this.delimiter.length),t.enqueue(a)}}findDelimiterIndex(){for(let e=0;e<=this.buffer.length-this.delimiter.length;e++){let t=!0;for(let s=0;s<this.delimiter.length;s++)if(this.buffer[e+s]!==this.delimiter[s]){t=!1;break}if(t)return e}return-1}flush(e){this.buffer.length>0&&(e.enqueue(this.buffer),this.buffer=new Uint8Array(0))}}class U extends O.T{_transport;vision;manifest;licensing;_queue=[];_timeoutPacketId=0;_runningQueue=!1;_lastApplicationCode=0;constructor({filters:e=null,config_port:t,no_device:s=1,socket:n=!1,transport:a="rs232"}={}){const i=new Uint8Array([192]),c=new TransformStream(new W(i));if(super({filters:e,config_port:t,no_device:s,socket:n,transformStream:c}),this.__internal__.device.type="jsd",this.__internal__.time.response_general=500,this.__internal__.time.response_engines=500,k.Devices.getCustom(this.typeDevice,s))throw new Error(`Device ${this.typeDevice} ${s} already exists`);k.Devices.add(this),this.#e(),this.getResponseAsUint8Array(),this._transport=a==="rs232"?new N:new b,this.vision=new M(this,this._transport),this.manifest=new R(this,this._transport),this.licensing=new $(this,this._transport)}#e(){const e=["licensing:wrong-cmd","licensing:feature-status","licensing:seed","licensing:temporary-license-status","manifest:wrong-cmd","manifest:log","manifest:block","manifest:completed","vision:wrong-cmd","vision:machine-status","vision:channels-progress","vision:channels","vision:channel-status","vision:status-selection","vision:dispense-status","vision:selection-dispense-config","vision:channels-linked-to-selection","vision:machine-id","vision:current-temperature","vision:alarm-faults-events","vision:time-waiting-for-product-collection","vision:collect","vision:reset-sold-out-channels","vision:time-waiting-after-product-collection","vision:jsd-version","vision:active-faults","vision:jsd-dispensing-queue","vision:special-characteristics-selection","vision:perishable-products-config","vision:active-faults-list","vision:jsd-status-reset","vision:extended-dispense-status-data","vision:trays-positioning-phototransistors-status","vision:jsd-license-error","serial:jsd-error","serial:jsd-ack","serial:jsd-nack","serial:jsd-data"];for(const t of e)this.serialRegisterAvailableListener(t)}serialSetConnectionConstant(){const e=this._transport?this._transport:new N;let t=255;this._transport&&(t=e.packetId,this._transport._overridePacketId(t+1));const{bytes:s}=u.connection({transport:e,packetId:t});return s}send(e,t){return this.appendToQueue(e,t.alias||"unknown")}onEvent(e,t){super.on(e,t)}offEvent(e,t){super.off(e,t)}onceEvent(e,t){const s=((...n)=>{t(...n),this.offEvent(e,s)});this.onEvent(e,s)}get transport(){return this._transport.name}acknowledge(e){return this._transport.buildAckPacket(e)}ack(e){this.isConnected&&this.send(new Uint8Array(this.acknowledge(e)),{alias:"ACK Response"})}_toQueue(e,t){this._queue.push({packetId:e.packetId,data:e.bytes,alias:t?.alias||"unknown",timeout:t?.timeout||500,resendCount:0}),this._runQueue()}_runQueue(){if(this._queue.length===0||this._runningQueue)return;const e=this._queue[0];this.isConnected&&(this.appendToQueue(new Uint8Array(e.data),e.alias||"unknown"),this._runningQueue=!0,this._timeoutPacketId=setTimeout(()=>{const t=this._queue.findIndex(s=>s.packetId===e.packetId);t!==-1&&(e.resendCount<3?(this._queue[t].resendCount+=1,this._runningQueue=!1,this._runQueue()):(this.dispatch("serial:jsd-error",`No response for packet ID ${e.packetId} after 3 attempts.`),this._queue.splice(t,1),this._runningQueue=!1,this._queue.length>0&&this._runQueue()))},e.timeout))}_dequeue(e){const t=this._queue.findIndex(s=>s.packetId===e);t!==-1&&(this._queue.splice(t,1),this._timeoutPacketId&&(clearTimeout(this._timeoutPacketId),this._timeoutPacketId=0),this._runningQueue=!1,this._queue.length>0&&this._runQueue())}serialMessage(e){const t=Array.from(structuredClone(e));if(t.length===0)return;const s=j.parseFrame(t);if(typeof s=="string")this.dispatch("serial:jsd-error",s);else if(s.type==="ACK")this._queue.findIndex(a=>a.packetId===s.id)!==-1&&this._dequeue(s.id),this.dispatch("serial:jsd-ack",s);else if(s.type==="NACK")this.dispatch("serial:jsd-nack",s);else if(s.type==="DATA"){this.ack(s.id),typeof s.appId>"u"&&(s.appId=this._lastApplicationCode);const n=s.appId;L(n)&&this.vision.serialMessage(s),w(n)&&this.manifest.serialMessage(s),F(n)&&this.licensing.serialMessage(s),this.dispatch("serial:jsd-data",s)}this.dispatch("serial:message",{raw:e,parsed:s})}}exports.JSD=U;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./webserial-core-3UL91lxi.cjs"),N=require("./devices-BndwHuvP.cjs");class _{static USE_BIG_ENDIAN=!0;static USE_REFLECTED=!1;static calculate(e){let t;if(this.USE_REFLECTED){t=0;for(const s of e){t^=s&255;for(let n=0;n<8;n++)t&1?t=t>>1^40961:t>>=1}}else{t=0;for(const s of e){t^=s<<8;for(let n=0;n<8;n++)t&32768?t=(t<<1^32773)&65535:t=t<<1&65535}}return this.USE_BIG_ENDIAN?[t>>8&255,t&255]:[t&255,t>>8&255]}static getConfig(){return{bigEndian:this.USE_BIG_ENDIAN,reflected:this.USE_REFLECTED}}}class b{_name="tcpip";get name(){return this._name}get packetId(){return 0}_overridePacketId(e){console.warn(`TCP/IP transport does not use packet IDs. Ignoring override to ${e}.`)}toLittleEndian(e){return[e&255,e>>8&255]}buildPacket(e,t,s){const n=t?t.split("").map(h=>h.charCodeAt(0)):[],a=6+n.length,i=this.toLittleEndian(a),c=this.toLittleEndian(s),o=this.toLittleEndian(e);return{bytes:[...i,...c,...o,...n],packetId:0}}escapeBytes(e){const t=[];for(const s of e)s===192?t.push(219,220):s===219?t.push(219,221):t.push(s);return t}buildAckPacket(e){const n=[192,2,e],[a,i]=_.calculate(n),c=[2,e,a,i];return[192,...this.escapeBytes(c),192]}}class k extends b{packetIdCounter=1;_name="rs232";get packetId(){return this.packetIdCounter}_overridePacketId(e){this.packetIdCounter=e&255}getNextPacketId(){const e=this.packetIdCounter;return this.packetIdCounter=this.packetIdCounter+1&255,this.packetIdCounter===0&&(this.packetIdCounter=1),e}buildPacket(e,t,s){const i=this.getNextPacketId(),{bytes:c}=super.buildPacket(e,t,s),o=[192,1,i,...c],[h,d]=_.calculate(o),l=[1,i,...c,h,d];return{bytes:[192,...this.escapeBytes(l),192],packetId:i}}}const r={requestMachineStatus:100,requestStatusChannel:101,requestStatusSelection:102,configureSelectionDispense:103,addChannelToSelection:104,requestMachineIdentification:105,programWorkingTemperature:106,programWaitingTimings:107,resetSoldOutChannels:108,programTimeWaitingAfterPickup:109,requestJSDVersion:110,requestFaultMachine:111,manageJSDDispensingQueue:112,defineSpecialCharacteristicsSelection:113,configurePerishableProducts:114,requestActiveFaults:115,configureExtendedDispenseStatusData:116,requestStatusTrayPositioningPhototransistors:117,dispenseFromChannel:150,dispenseFromSelection:151,controlLights:152,resetFaultsAndSelfTest:153,performCollectCycle:154,dispenseFromChannelExtended:155,restartingTheJSDKnowingThatItIsDangerous:156,responseFormatCmdWrong:200,responseMachineStatus:201,responseStatusChannel:202,responseStatusSelection:203,responseDispenseStatus:204,responseConfigurationSelectionDispense:205,responseConfigurationChannelsLinkedToSelection:206,responseMachineIdentification:207,responseCurrentTemperature:208,responseReportEventsAlarmsAndFaults:209,responseNewTimingWaitingForProductCollection:210,responsePerformingProductCollectionCycle:211,responseResetMachineSoldOutChannels:212,responseNewTimingWaitingAfterProductCollection:213,responseJSDVersion:214,responseActiveFaults:215,responseJSDDispensingQueue:216,responseSpecialCharacteristicsSelection:217,responsePerishableProducts:218,responseActiveFaultsList:219,responseJSDResetStatus:220,responseExtendedDispenseStatusData:221,responseTraysPositioningPhototransistorsStatus:222,jsdErrorLicenseTemporarilyBlocked:300,jsdErrorLicenseNotActive:301,jsdErrorCommandNotExecutable:302},C=p=>Object.keys(r).find(t=>r[t]===p)||"Unknown",f={VISION:402,LICENSING:600,MANIFESTS_AND_LOGS:601,SIMULATOR_VISION:1e4},L=p=>[f.VISION,f.SIMULATOR_VISION].includes(p),F=p=>[f.LICENSING].includes(p),w=p=>[f.MANIFESTS_AND_LOGS].includes(p);class u{transport;static APP_ID=f.VISION;constructor(e){this.transport=e}static connection({transport:e,packetId:t}){return e._overridePacketId(t||255),new u(e).requestJSDVersion()}requestMachineStatus({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestMachineStatus,t,u.APP_ID)}requestStatusChannel({machine:e,tray:t,channel:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.requestStatusChannel,n,u.APP_ID)}requestStatusSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.requestStatusSelection,t,u.APP_ID)}configureSelectionDispense({selection:e,speed:t,timePostRun:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.configureSelectionDispense,n,u.APP_ID)}getSelectionDispenseConfig({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.configureSelectionDispense,t,u.APP_ID)}addChannelToSelection({selection:e,machine:t,tray:s,channel:n}){const a=`${e},${t},${s},${n}`;return this.transport.buildPacket(r.addChannelToSelection,a,u.APP_ID)}getChannelsLinkedToSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.addChannelToSelection,t,u.APP_ID)}requestMachineIdentification({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestMachineIdentification,t,u.APP_ID)}formatTemperature(e){const t=e>=0?"+":"-",s=Math.abs(e).toFixed(1).padStart(4,"0");return`${t}${s}`}programWorkingTemperature({machine:e,temperature:t,enable:s}){const n=this.formatTemperature(t),i=`${e},${n},${s?1:0}`;return this.transport.buildPacket(r.programWorkingTemperature,i,u.APP_ID)}getWorkingTemperature({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.programWorkingTemperature,t,u.APP_ID)}programWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s}){const n=`${e},${t},${s}`;return this.transport.buildPacket(r.programWaitingTimings,n,u.APP_ID)}getWaitingTimings(){return this.transport.buildPacket(r.programWaitingTimings,"",u.APP_ID)}resetSoldOutChannels({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.resetSoldOutChannels,t,u.APP_ID)}programTimeWaitingAfterPickup({time:e}){const t=`${e}`;return this.transport.buildPacket(r.programTimeWaitingAfterPickup,t,u.APP_ID)}getTimeWaitingAfterPickup(){return this.transport.buildPacket(r.programTimeWaitingAfterPickup,"",u.APP_ID)}requestJSDVersion(){return this.transport.buildPacket(r.requestJSDVersion,"",u.APP_ID)}requestFaultMachine({machine:e,type:t}){const n=`${e},${{"report-active":0,"report-inactive":1,"clear-inactive":2}[t]}`;return this.transport.buildPacket(r.requestFaultMachine,n,u.APP_ID)}requestReportActiveFaults(e){return this.requestFaultMachine({machine:e,type:"report-active"})}requestReportInactiveFaults(e){return this.requestFaultMachine({machine:e,type:"report-inactive"})}requestClearInactiveFaults(e){return this.requestFaultMachine({machine:e,type:"clear-inactive"})}manageJSDDispensingQueue({type:e}){const t=`${e}`;return this.transport.buildPacket(r.manageJSDDispensingQueue,t,u.APP_ID)}requestJSDDispensingQueueStatus(){return this.manageJSDDispensingQueue({type:0})}clearJSDDispensingQueue(){return this.manageJSDDispensingQueue({type:1})}defineSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a}){const d=`${e},${t?1:0},${s?1:0},${n==="lower"?0:1},${a}`;return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection,d,u.APP_ID)}getSpecialCharacteristicsSelection({selection:e}){const t=`${e}`;return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection,t,u.APP_ID)}configurePerishableProducts({machine:e,enable:t,temperatureLimit:s,minutesToExpiry:n}){const a=t?1:0,i=this.formatTemperature(s),c=`${e},${a},${i},${n}`;return this.transport.buildPacket(r.configurePerishableProducts,c,u.APP_ID)}requestActiveFaults({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestActiveFaults,t,u.APP_ID)}configureExtendedDispenseStatusData({enable:e}){const s=`${e?1:0}`;return this.transport.buildPacket(r.configureExtendedDispenseStatusData,s,u.APP_ID)}getExtendedDispenseStatusDataConfig(){return this.transport.buildPacket(r.configureExtendedDispenseStatusData,"",u.APP_ID)}requestStatusTrayPositioningPhototransistors({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.requestStatusTrayPositioningPhototransistors,t,u.APP_ID)}dispenseFromChannel({token:e,machine:t,tray:s,channel:n,speed:a,timePostRun:i}){const c=`${e},${t},${s},${n},${a},${i}`;return this.transport.buildPacket(r.dispenseFromChannel,c,u.APP_ID)}getDispenseStatusFromChannel({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromChannel,t,u.APP_ID)}dispenseFromSelection({token:e,selection:t}){const s=`${e},${t}`;return this.transport.buildPacket(r.dispenseFromSelection,s,u.APP_ID)}getDispenseStatusFromSelection({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromSelection,t,u.APP_ID)}controlLights({machine:e,turnOn:t}){const n=`${e},${t?1:0}`;return this.transport.buildPacket(r.controlLights,n,u.APP_ID)}resetFaultsAndSelfTest({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.resetFaultsAndSelfTest,t,u.APP_ID)}performCollectCycle({machine:e}){const t=`${e}`;return this.transport.buildPacket(r.performCollectCycle,t,u.APP_ID)}dispenseFromChannelExtended({token:e,machine:t,tray:s,channel:n,speed:a,timePostRun:i,fragileOrHeavy:c,typeAdjustElevator:o,timeAdjustElevator:h}){const I=`${e},${t},${s},${n},${a},${i},${c?1:0},${o==="lower"?0:1},${h}`;return this.transport.buildPacket(r.dispenseFromChannelExtended,I,u.APP_ID)}getDispenseStatusFromChannelExtended({token:e}){const t=`${e}`;return this.transport.buildPacket(r.dispenseFromChannelExtended,t,u.APP_ID)}restartingTheJSDKnowingThatItIsDangerous(){return this.transport.buildPacket(r.restartingTheJSDKnowingThatItIsDangerous,"",u.APP_ID)}}function q(p){if(p.length>5)throw new Error(`Token must be max 5 characters, got ${p.length}`);return p}function T(){let p;do{const e=new Uint8Array(2);p=parseInt(crypto.getRandomValues(e).toString().replaceAll(",","")).toString(36)}while(p.length>5);return q(p)}const E={status:"NO-CONNECTED",machineInService:!1,doorOpen:!1,availabilityToDispense:"NOT-AVAILABLE-TO-DISPENSE",hasLightsOn:!1,temperature:""};class M{_commands;jsd;APP_ID=f.VISION;_machineStatus=[{...E},{...E},{...E},{...E}];constructor(e,t){this._commands=new u(t),this.jsd=e}_performingChannelAssignment={enabled:!1,selections:[],currentSelection:1};_dispensingTokens={};async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}_getMachineIndex(e){return e-1}isAvailableToDispense({machine:e=1}={}){const t=this._getMachineIndex(e);return["ELEVATOR-COLLECTION-POSITION","AVAILABLE-TO-DISPENSE"].includes(this._machineStatus[t]?.availabilityToDispense||"")&&this._machineStatus[t]?.machineInService===!0&&this._machineStatus[t]?.doorOpen===!1&&this._machineStatus[t]?.status==="CONNECTED"}async requestMachineStatus({machine:e=1}={}){const t=this._getMachineIndex(e),s=this.cmd.requestMachineStatus({machine:t});return await this.send(s,{alias:"requestMachineStatus"})}_getTrayChannelFromSelection(e){const t=Math.floor((e-1)/10)+11,s=(e-1)%10;return{tray:t,channel:s}}_getSelectionFromTrayChannel(e,t){return(e-11)*10+t+1}async requestStatusChannel({machine:e,selection:t}){const s=this._getMachineIndex(e),{tray:n,channel:a}=this._getTrayChannelFromSelection(t),i=this.cmd.requestStatusChannel({machine:s,tray:n,channel:a});return await this.send(i,{alias:"requestStatusChannel"})}async assignChannels({machine:e}){if(this._performingChannelAssignment.enabled)throw new Error("Channel assignment already in progress");this._performingChannelAssignment.enabled=!0;for(let t=1;t<=80;t++)await this.requestStatusChannel({machine:e,selection:t});return new Promise(t=>{const s=setInterval(()=>{if(this._performingChannelAssignment.enabled)return;clearInterval(s);const n=this._performingChannelAssignment.selections;this._performingChannelAssignment.selections=[],t(n)},200)})}async requestStatusSelection({selection:e}){const t=this.cmd.requestStatusSelection({selection:e});return await this.send(t,{alias:"requestStatusSelection"})}async configureSelectionDispense({selection:e,speed:t,timePostRun:s}){const n=this.cmd.configureSelectionDispense({selection:e,speed:t,timePostRun:s});return await this.send(n,{alias:"configureSelectionDispense"})}async requestSelectionDispenseConfig({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.getSelectionDispenseConfig({machine:t});return await this.send(s,{alias:"getSelectionDispenseConfig"})}async configureAddChannelToSelection({selection:e,machine:t,tray:s,channel:n}){const a=this._getMachineIndex(t),i=this.cmd.addChannelToSelection({selection:e,machine:a,tray:s,channel:n});return await this.send(i,{alias:"addChannelToSelection"})}async requestChannelsLinkedToSelection({selection:e}){const t=this.cmd.getChannelsLinkedToSelection({selection:e});return await this.send(t,{alias:"getChannelsLinkedToSelection"})}async requestMachineIdentification({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestMachineIdentification({machine:t});return await this.send(s,{alias:"requestMachineIdentification"})}async configureWorkingTemperature({machine:e,temperature:t,enable:s}){const n=this._getMachineIndex(e),a=this.cmd.programWorkingTemperature({machine:n,temperature:t,enable:s});return await this.send(a,{alias:"programWorkingTemperature"})}async requestWorkingTemperature({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.getWorkingTemperature({machine:t});return await this.send(s,{alias:"getWorkingTemperature"})}async configureWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s}){const n=this.cmd.programWaitingTimings({collectPosition:e,dispenseManoeuvres:t,afterPickup:s});return await this.send(n,{alias:"programWaitingTimings"})}async requestWaitingTimings(){const e=this.cmd.getWaitingTimings();return await this.send(e,{alias:"getWaitingTimings"})}async resetSoldOutChannels({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.resetSoldOutChannels({machine:t});return await this.send(s,{alias:"resetSoldOutChannels"})}async resetAllErrors({machine:e}){return await Promise.all([this.clearInactiveFaults({machine:e}),this.resetSoldOutChannels({machine:e}),this.resetFaultsAndSelfTest({machine:e})])}async configureTimeWaitingAfterPickup({time:e}){const t=this.cmd.programTimeWaitingAfterPickup({time:e});return await this.send(t,{alias:"programTimeWaitingAfterPickup"})}async requestTimeWaitingAfterPickup(){const e=this.cmd.getTimeWaitingAfterPickup();return await this.send(e,{alias:"getTimeWaitingAfterPickup"})}async requestJSDVersion(){const e=this.cmd.requestJSDVersion();return await this.send(e,{alias:"requestJSDVersion"})}async requestReportActiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestReportActiveFaults(t);return await this.send(s,{alias:"requestReportActiveFaults"})}async requestReportInactiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestReportInactiveFaults(t);return await this.send(s,{alias:"requestReportInactiveFaults"})}async clearInactiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestClearInactiveFaults(t);return await this.send(s,{alias:"requestClearInactiveFaults"})}async requestJSDDispensingQueueStatus(){const e=this.cmd.requestJSDDispensingQueueStatus();return await this.send(e,{alias:"requestJSDDispensingQueueStatus"})}async clearJSDDispensingQueue(){const e=this.cmd.clearJSDDispensingQueue();return await this.send(e,{alias:"clearJSDDispensingQueue"})}async configureSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a}){const i=this.cmd.defineSpecialCharacteristicsSelection({selection:e,perishable:t,fragileOrHeavy:s,typeAdjustElevator:n,timeAdjustElevator:a});return await this.send(i,{alias:"defineSpecialCharacteristicsSelection"})}requestSpecialCharacteristicsSelection({selection:e}){const t=this.cmd.getSpecialCharacteristicsSelection({selection:e});return this.send(t,{alias:"getSpecialCharacteristicsSelection"})}configurePerishableProducts({machine:e,enable:t,temperatureLimit:s,minutesToExpiry:n}){const a=this._getMachineIndex(e),i=this.cmd.configurePerishableProducts({machine:a,enable:t,temperatureLimit:s,minutesToExpiry:n});return this.send(i,{alias:"configurePerishableProducts"})}async requestActiveFaults({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestActiveFaults({machine:t});return await this.send(s,{alias:"requestActiveFaults"})}async configureExtendedDispenseStatusData({enable:e}){const t=this.cmd.configureExtendedDispenseStatusData({enable:e});return await this.send(t,{alias:"configureExtendedDispenseStatusData"})}async requestExtendedDispenseStatusDataConfig(){const e=this.cmd.getExtendedDispenseStatusDataConfig();return await this.send(e,{alias:"getExtendedDispenseStatusDataConfig"})}async requestStatusTrayPositioningPhototransistors({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.requestStatusTrayPositioningPhototransistors({machine:t});return await this.send(s,{alias:"requestStatusTrayPositioningPhototransistors"})}async dispenseFromChannel({machine:e,tray:t,channel:s,speed:n,timePostRun:a,cart:i=!1}){if(!this.isAvailableToDispense({machine:e}))throw new Error(`Machine ${e} is not available to dispense`);const c=this._getMachineIndex(e),o=T(),h=this.cmd.dispenseFromChannel({token:o,machine:c,tray:t,channel:s,speed:n,timePostRun:a});return await this.send(h,{alias:"dispenseFromChannel"}),this._dispensingTokens[o]={cart:!!i,resolve:()=>{delete this._dispensingTokens[o]},reject:()=>{}},new Promise((d,l)=>{this._dispensingTokens[o].resolve=d,this._dispensingTokens[o].reject=l})}async dispense({machine:e,selection:t,speed:s,timePostRun:n,cart:a=!1}){const{tray:i,channel:c}=this._getTrayChannelFromSelection(t);return this.dispenseFromChannel({machine:e,tray:i,channel:c,speed:s||5,timePostRun:n||0,cart:!!a})}async dispenseCart(e=[]){const t=[];for(let n=0;n<e.length;n+=10)t.push(e.slice(n,n+10));let s=[];for(const n of t)try{const a=await Promise.all(n.map(o=>this.dispense({machine:o.machine,selection:o.selection,cart:!0}))),i=[...new Set(n.map(o=>o.machine))];await new Promise(o=>{const h=setInterval(()=>{i.every(l=>this.getMachineStatus(l)?.availabilityToDispense==="AVAILABLE-TO-DISPENSE")&&(clearInterval(h),o(!0))},300)});for(const o of i)this._machineStatus[this._getMachineIndex(o)]?.availabilityToDispense==="WAITING-COLLECTION"&&this.emit("waiting-collection",{machine:o!==null?o+1:null});const c=n.map((o,h)=>({machine:o.machine,selection:o.selection,dispensed:a[h]}));s=s.concat(c)}catch(a){console.error("Error sending dispense command:",a)}return s}async requestDispenseStatusFromChannel({token:e}){const t=this.cmd.getDispenseStatusFromChannel({token:e});return await this.send(t,{alias:"getDispenseStatusFromChannel"})}async dispenseFromSelection({selection:e,cart:t=!1}){const s=T(),n=this.cmd.dispenseFromSelection({token:s,selection:e});return await this.send(n,{alias:"dispenseFromSelection"}),this._dispensingTokens[s]={cart:!!t,resolve:()=>{},reject:()=>{}},new Promise((a,i)=>{this._dispensingTokens[s].resolve=a,this._dispensingTokens[s].reject=i})}async requestDispenseStatusFromSelection({token:e}){const t=this.cmd.getDispenseStatusFromSelection({token:e});return await this.send(t,{alias:"getDispenseStatusFromSelection"})}async _configureLights({machine:e,turnOn:t,alias:s}){const n=this._getMachineIndex(e),a=this.cmd.controlLights({machine:n,turnOn:t});return await this.send(a,{alias:s})}async lightsOn({machine:e}){return this._configureLights({machine:e,turnOn:!0,alias:"lightsOn"})}async lightsOff({machine:e}){return this._configureLights({machine:e,turnOn:!1,alias:"lightsOff"})}async resetFaultsAndSelfTest({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.resetFaultsAndSelfTest({machine:t});return await this.send(s,{alias:"resetFaultsAndSelfTest"})}async collect({machine:e}){const t=this._getMachineIndex(e),s=this.cmd.performCollectCycle({machine:t});return await this.send(s,{alias:"performCollectCycle"})}async dispenseFromChannelExtended({machine:e,tray:t,channel:s,speed:n,timePostRun:a,fragileOrHeavy:i,typeAdjustElevator:c,timeAdjustElevator:o,cart:h=!1}){if(!this.isAvailableToDispense({machine:e}))throw new Error(`Machine ${e} is not available to dispense`);const d=this._getMachineIndex(e),l=T(),m=this.cmd.dispenseFromChannelExtended({token:l,machine:d,tray:t,channel:s,speed:n,timePostRun:a,fragileOrHeavy:i,typeAdjustElevator:c,timeAdjustElevator:o});return await this.send(m,{alias:"dispenseFromChannelExtended"}),this._dispensingTokens[l]={cart:!!h,resolve:()=>{},reject:()=>{}},new Promise((I,D)=>{this._dispensingTokens[l].resolve=I,this._dispensingTokens[l].reject=D})}async requestDispenseStatusFromChannelExtended({token:e}){const t=this.cmd.getDispenseStatusFromChannelExtended({token:e});return await this.send(t,{alias:"getDispenseStatusFromChannelExtended"})}async restartJSD(){const e=this.cmd.restartingTheJSDKnowingThatItIsDangerous();return await this.send(e,{alias:"restartingTheJSDKnowingThatItIsDangerous"})}serialMessage(e){switch(e.opcode){case r.responseFormatCmdWrong:this._responseFormatCmdWrong(e);break;case r.responseMachineStatus:this._responseMachineStatus(e);break;case r.responseStatusChannel:this._responseStatusChannel(e);break;case r.responseStatusSelection:this._responseStatusSelection(e);break;case r.responseDispenseStatus:this._responseDispenseStatus(e);break;case r.responseConfigurationSelectionDispense:this._responseConfigurationSelectionDispense(e);break;case r.responseConfigurationChannelsLinkedToSelection:this._responseConfigurationChannelsLinkedToSelection(e);break;case r.responseMachineIdentification:this._responseMachineIdentification(e);break;case r.responseCurrentTemperature:this._responseCurrentTemperature(e);break;case r.responseReportEventsAlarmsAndFaults:this._responseReportEventsAlarmsAndFaults(e);break;case r.responseNewTimingWaitingForProductCollection:this._responseNewTimingWaitingForProductCollection(e);break;case r.responsePerformingProductCollectionCycle:this._responsePerformingProductCollectionCycle(e);break;case r.responseResetMachineSoldOutChannels:this._responseResetMachineSoldOutChannels(e);break;case r.responseNewTimingWaitingAfterProductCollection:this._responseNewTimingWaitingAfterProductCollection(e);break;case r.responseJSDVersion:this._responseJSDVersion(e);break;case r.responseActiveFaults:this._responseActiveFaults(e);break;case r.responseJSDDispensingQueue:this._responseJSDDispensingQueue(e);break;case r.responseSpecialCharacteristicsSelection:this._responseSpecialCharacteristicsSelection(e);break;case r.responsePerishableProducts:this._responsePerishableProducts(e);break;case r.responseActiveFaultsList:this._responseActiveFaultsList(e);break;case r.responseJSDResetStatus:this._responseJSDResetStatus(e);break;case r.responseExtendedDispenseStatusData:this._responseExtendedDispenseStatusData(e);break;case r.responseTraysPositioningPhototransistorsStatus:this._responseTraysPositioningPhototransistorsStatus(e);break;case r.jsdErrorLicenseTemporarilyBlocked:this._responseJsdErrorLicenseTemporarilyBlocked(e);break;case r.jsdErrorLicenseNotActive:this._responseJsdErrorLicenseNotActive(e);break;case r.jsdErrorCommandNotExecutable:this._responseJsdErrorCommandNotExecutable(e);break}}emit(e,...t){this.jsd.dispatch(`vision:${e}`,...t)}_responseFormatCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=C(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}setMachineStatus(e,t){this._machineStatus[e]=t}getMachineStatus(e){const t=this._getMachineIndex(e);return this._machineStatus[t]||null}_getMachineStatusName(e){switch(e){case 0:return"NO-CONNECTED";case 1:return"CONNECTED";case 2:return"LOST"}}_responseMachineStatus(e){const[t,s,n,a,i,c,o]=e.params,h={0:"AVAILABLE-TO-DISPENSE",1:"NOT-AVAILABLE-TO-DISPENSE",2:"ALREADY-DISPENSING",3:"WAITING-COLLECTION",4:"ELEVATOR-COLLECTION-POSITION",5:"UNCOLLECTED"},d={status:this._getMachineStatusName(parseInt(s,10)),machineInService:parseInt(n,10)===1,doorOpen:parseInt(a,10)===0,availabilityToDispense:h[i]||"NOT-AVAILABLE-TO-DISPENSE",hasLightsOn:isNaN(parseInt(c,10))?!1:parseInt(c,10)===1,temperature:o||""};this.setMachineStatus(parseInt(t,10),d),this.emit("machine-status",{machine:parseInt(t,10)+1,...d}),this.emit("door",{open:d.doorOpen,machine:parseInt(t,10)+1}),this.emit("connection",{connected:d.status==="CONNECTED",machine:parseInt(t,10)+1})}_statusChannelName(e){switch(e){case 0:return"NO-CONNECTED";case 1:return"AVAILABLE";case 2:return"SOLD-OUT";case 3:return"FAULT";default:return"NO-CONNECTED"}}_responseStatusChannel(e){const[t,s,n,a]=e.params,i=this._statusChannelName(parseInt(a,10)),c=this._getSelectionFromTrayChannel(Number(s),Number(n)),o=["AVAILABLE","SOLD-OUT"].includes(i);if(this._performingChannelAssignment.enabled){this._performingChannelAssignment.selections.push({selection:c,active:o,machine:Number(t)+1}),this._performingChannelAssignment.currentSelection=this._performingChannelAssignment.selections.length;const h=this._performingChannelAssignment.currentSelection/80*100;this.emit("channels-progress",{progress:Math.min(100,Math.round(h*100)/100),current:this._performingChannelAssignment.currentSelection,verified:this._performingChannelAssignment.selections.length}),this._performingChannelAssignment.selections.length>=80&&(this.emit("channels",this._performingChannelAssignment.selections),this._performingChannelAssignment.enabled=!1)}else this.emit("channel-status",{machine:Number(t)+1,selection:c,active:o})}_statusSelectionName(e){switch(e){case 0:return"NO-CONFIGURED";case 1:return"ASSOCIATED";case 2:return"NO-ASSOCIATED";case 3:return"NO-VISION-OWNED";case 4:return"EXPIRED";default:return"NO-CONFIGURED"}}_responseStatusSelection(e){const[t,s]=e.params,n=this._statusSelectionName(parseInt(s,10));this.emit("status-selection",{selection:Number(t),status:n})}_responseDispenseStatus(e){const[t,s,n,a]=e.params,i={0:"RECEIVED",1:"IN-PROGRESS",2:"WAITING-COLLECTION",3:"COLLECTED",4:"NO-PERFORMED",5:"TOKEN-NOT-FOUND",6:"QUEUE-FULL",7:"CHANNEL-NO-CONNECTED",8:"SELECTION-UNAVAILABLE",9:"FAILED-DISPENSE",10:"UNCOLLECTED",11:"DISPENSED-CAN-MULTIPLE",12:"DISPENSE-CANCELLED",13:"PRODUCT-EXPIRED"},c=Object.values(i).filter(D=>["NO-PERFORMED","TOKEN-NOT-FOUND","QUEUE-FULL","CHANNEL-NO-CONNECTED","SELECTION-UNAVAILABLE","FAILED-DISPENSE","DISPENSE-CANCELLED","PRODUCT-EXPIRED","UNCOLLECTED"].includes(D)),o={0:"NONE",1:"DOOR-OPEN",2:"MACHINE-NOT-AVAILABLE",3:"ERROR-PHOTOSENSORS",4:"ERROR-MOTOR-POWER-CONSUMPSION-DETECTOR",5:"ALREADY-SOLD-OUT",6:"ERROR-TEST-PRODUCT-DETECTOR",7:"SOLD-OUT",8:"ELEVATOR-CANT-REACH-TRAY",9:"UNCOLLECTED",10:"MACHINE-RESET-DURING-DISPENSE",11:"MACHINE-COMMUNICATION-ERROR",12:"MACHINE-COMMUNICATION-LOST",13:"NO-VISION",14:"PRODUCT-PERISHABLE-EXPIRED",20:"DECIDE"},h=i[parseInt(s,10)]||"UNKNOWN",[d,l,m]=n&&n.trim()!==""?n.split(".").map(D=>parseInt(D,10)):[null,null,null],I=a?o[parseInt(a,10)]||"UNKNOWN":null;this._dispensingTokens[t]&&(this._dispensingTokens[t].cart===!1&&h==="WAITING-COLLECTION"?(this._dispensingTokens[t].resolve(!0),delete this._dispensingTokens[t],this.emit("waiting-collection",{machine:d!==null?d+1:null})):this._dispensingTokens[t].cart===!0&&h==="DISPENSED-CAN-MULTIPLE"?(this._dispensingTokens[t].resolve(!0),delete this._dispensingTokens[t]):c.includes(h)&&(this._dispensingTokens[t].resolve(!1),delete this._dispensingTokens[t])),h==="IN-PROGRESS"&&this.emit("dispensing",{token:t,machine:d!==null?d+1:null,tray:l!==null?l:null,channel:m!==null?m:null,selection:m!==null&&l!==null?this._getSelectionFromTrayChannel(l,m):null}),this.emit("dispense-status",{token:t,status:h,machine:d!==null?d+1:null,tray:l!==null?l:null,channel:m!==null?m:null,extendedStatus:I})}_responseConfigurationSelectionDispense(e){const[t,s,n]=e.params;this.emit("selection-dispense-config",{selection:Number(t),speed:Number(s),timePostRun:Number(n)})}_responseConfigurationChannelsLinkedToSelection(e){const[t,...s]=e.params,a=s[s.length-1].includes(":")?s.pop():null,i={0:"OK",1:"ALREADY-DEFINED",2:"OUT-OF-RANGE"},c=s.map(o=>{const[h,d,l]=o.split(":");return{machine:parseInt(h,10)+1,tray:parseInt(d,10),channel:parseInt(l,10)}});this.emit("channels-linked-to-selection",{selection:Number(t),linkedChannels:c,status:a?i[parseInt(a,10)]||"UNKNOWN":null})}_responseMachineIdentification(e){const[t,s,n,a]=e.params;this.emit("machine-id",{machine:parseInt(t,10)+1,model:s,serialNumber:n,firmwareVersion:a})}_responseCurrentTemperature(e){const[t,s,n,a,i]=e.params,c=parseInt(t,10)+1,o=parseInt(i,10)===1?"ON":"OFF";this.emit("current-temperature",{machine:c,workingTemperature:s,currentTemperatureInsideMachine:n,currentTemperatureAir:a,coolUnitStatus:o})}_responseReportEventsAlarmsAndFaults(e){const[t,s,n]=e.params,a=parseInt(t,10)+1,i={1:"Product detector",2:"None of the motors are connected. Possible control board faulty",3:"Channels jamp detector error",4:"Temperature control error",5:"Elevator faulty",6:"Photosensor, which determine the position of the elevator in relation with the cabinet, faulty",7:"Elevator tester (flap), ES-Plus, faulty",8:"Product expired (perishable)"};this.emit("alarm-faults-events",{machine:a,event:i[parseInt(s,10)]||"UNKNOWN",status:parseInt(n,10)===1?"ACTIVE":"CLEARED"})}_responseNewTimingWaitingForProductCollection(e){const[t,s,n]=e.params;this.emit("time-waiting-for-product-collection",{minutesProductCollection:Number(t),secondsTimeBetweenDispenseManoeuvres:Number(s),secondsBetweenCollectAndStartNextDispense:Number(n)})}_responsePerformingProductCollectionCycle(e){const[t,s]=e.params,n={0:"Manoeuvre has started",1:"Wron machine number",2:"Machine no connected",3:"Wron machine model",4:"Machine cannot perform collection now",5:"Communication error with machine"};this.emit("collect",{machine:parseInt(t,10)+1,status:n[parseInt(s,10)]||"UNKNOWN"})}_responseResetMachineSoldOutChannels(e){const[t,s]=e.params,n={0:"Reset performed",1:"Wrong machine number",2:"Machine not connected",3:"Communication error with machine"};this.emit("reset-sold-out-channels",{machine:parseInt(t,10)+1,status:n[parseInt(s,10)]||"UNKNOWN"})}_responseNewTimingWaitingAfterProductCollection(e){const[t]=e.params;this.emit("time-waiting-after-product-collection",{secondsBetweenCollectAndStartNextDispense:Number(t)})}_responseJSDVersion(e){const[t,s,n,a]=e.params;this.emit("jsd-version",{name:t,compileNumber:s,compileDate:n,description:a})}_responseActiveFaults(e){const[t,s,n,a,i,c,o]=e.params;this.emit("active-faults",{machine:parseInt(t,10)+1,status:parseInt(s,10)===1?"ACTIVE":"CLEARED",fault:parseInt(n,10),appearancesNumber:parseInt(a,10),partialNumberActivated:parseInt(i,10),minutesActive:parseInt(c,10),date:o})}_responseJSDDispensingQueue(e){const[t,s,n]=e.params;this.emit("jsd-dispensing-queue",{free:parseInt(t,10),processed:parseInt(s,10),notProcessed:parseInt(n,10)})}_responseSpecialCharacteristicsSelection(e){const[t,s,n,a,i]=e.params;this.emit("special-characteristics-selection",{selection:Number(t),perishable:parseInt(s,10)===1,fragileOrHeavy:parseInt(n,10)===1,typeAdjustElevator:a==="0"?"lower":"upper",timeAdjustElevator:Number(i)})}_responsePerishableProducts(e){const[t,s,n,a,i]=e.params;this.emit("perishable-products-config",{machine:parseInt(t,10)+1,perishableActive:parseInt(s,10)===1,alarmPerisableTriggered:parseInt(n,10)===1,maxTemperature:a,minutesBeforeExpire:Number(i)})}_responseActiveFaultsList(e){const[t,...s]=e.params,n={1:"Product detector",2:"None of the motors are connected. Possible control board faulty",3:"Channels jamp detector error",4:"Temperature control error",5:"Elevator faulty",6:"Photosensor, which determine the position of the elevator in relation with the cabinet, faulty",7:"Elevator tester (flap), ES-Plus, faulty",8:"Product expired (perishable)"},a=s.map(i=>({code:parseInt(i,10),description:n[parseInt(i,10)]||"UNKNOWN"}));this.emit("active-faults-list",{machine:parseInt(t,10)+1,faults:a,ok:s.length===0})}_responseJSDResetStatus(e){const[t]=e.params,s={0:"RESETED",1:"RECEIVED"};this.emit("jsd-status-reset",{type:s[parseInt(t,10)]||"UNKNOWN"})}_responseExtendedDispenseStatusData(e){const[t]=e.params;this.emit("extended-dispense-status-data",{enabled:parseInt(t,10)===1})}_responseTraysPositioningPhototransistorsStatus(e){const[t,s,n,a,i,c,o,h,d]=e.params,l={0:"OK",C:"SHORT-CIRCUIT",N:"TRAY-NOT-DETECTED"},m={machine:parseInt(t,10)+1,trays:{11:l[s]||null,12:l[n]||null,13:l[a]||null,14:l[i]||null,15:l[c]||null,16:l[o]||null,17:l[h]||null,18:l[d]||null}};this.emit("trays-positioning-phototransistors-status",m)}_responseJsdErrorLicenseTemporarilyBlocked(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"exprired-license",opcode:parseInt(t,10),actionName:C(parseInt(t,10)),params:s})}_responseJsdErrorLicenseNotActive(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"app-number-not-licensed",opcode:parseInt(t,10),actionName:C(parseInt(t,10)),params:s})}_responseJsdErrorCommandNotExecutable(e){const[t,...s]=e.params;this.emit("jsd-license-error",{type:"price-control-active-direct-dispense-not-allowed",opcode:parseInt(t),actionName:C(parseInt(t,10)),params:s})}}const g={requestLogsEvents:101,requestLogsByDate:102,requestForSendingManifest:110,sendManifestDataBlock:111,responseCmdWrong:200,responseLineLogEvent:201,responseManifestDataBlock:210,responseManifestCompleted:211},x=p=>Object.keys(g).find(t=>g[t]===p)||"Unknown";class P{transport;static APP_ID=f.MANIFESTS_AND_LOGS;constructor(e){this.transport=e}requestLogsEvents(e=!1){const s=`${e?"+":"0"}`;return this.transport.buildPacket(g.requestLogsEvents,s,P.APP_ID)}requestLogsByDate(e,t){const s=`${e},${t}`;return this.transport.buildPacket(g.requestLogsByDate,s,P.APP_ID)}requestForSendingManifest(e,t){const s=`${e},${t}`;return this.transport.buildPacket(g.requestForSendingManifest,s,P.APP_ID)}sendManifestDataBlock(e,t){const s=Array.from(t).map(a=>a.toString(2).padStart(8,"0")).join(" "),n=`${e},${s}`;return this.transport.buildPacket(g.sendManifestDataBlock,n,P.APP_ID)}}class R{_commands;jsd;APP_ID=f.MANIFESTS_AND_LOGS;_logs={status:"idle",data:[]};constructor(e,t){this._commands=new P(t),this.jsd=e}async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}async requestLogsEvent({previous:e}){const t=this.cmd.requestLogsEvents(e);return await this.send(t,{alias:"requestLogsEvents"})}async requestLogs(){if(["fetching","more"].includes(this._logs.status))throw new Error("Already fetching logs");return this._logs.status="fetching",this.requestLogsEvent({previous:!1}),new Promise(e=>{const t=setInterval(()=>{if(this._logs.status==="completed"){clearInterval(t);const s=this._logs.data;e(s)}else this._logs.status==="more"&&(this._logs.status="fetching",this.requestLogsEvent({previous:!0}))},100)})}async requestLogsByDate({since:e,until:t}){const s=c=>{const o=String(c.getMonth()+1).padStart(2,"0"),h=String(c.getDate()).padStart(2,"0"),d=String(c.getHours()).padStart(2,"0"),l=String(c.getMinutes()).padStart(2,"0"),m=String(c.getSeconds()).padStart(2,"0");return`${o}/${h}/${d}/${l}/${m}`},n=s(e),a=s(t),i=this.cmd.requestLogsByDate(n,a);return await this.send(i,{alias:"requestLogsByDate"})}async requestForSendingManifest({fileSizeBytes:e,crc:t}){const s=this.cmd.requestForSendingManifest(e,t);return await this.send(s,{alias:"requestForSendingManifest"})}async sendManifestDataBlock({prevBlockId:e,dataBlock:t}){const s=this.cmd.sendManifestDataBlock(e,t);return await this.send(s,{alias:"sendManifestDataBlock"})}serialMessage(e){switch(e.opcode){case g.responseCmdWrong:this._responseCmdWrong(e);break;case g.responseLineLogEvent:this._responseLineLogEvent(e);break;case g.responseManifestDataBlock:this._responseManifestDataBlock(e);break;case g.responseManifestCompleted:this._responseManifestCompleted(e);break}}emit(e,...t){this.jsd.dispatch(`manifest:${e}`,...t)}_responseCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=x(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}_responseLineLogEvent(e){const[...t]=e.params,s=t[0]==="END_LOG";if(s)this._logs.status="completed";else{const a=t.join(",");this._logs.data.push(a),this._logs.status==="fetching"&&(this._logs.status="more")}const n=s?"end":"log";this.emit("log",{type:n,log:t})}_responseManifestDataBlock(e){const[t,s,n]=e.params;this.emit("block",{blockId:parseInt(t,10),indexFile:parseInt(s,10),quantity:parseInt(n,10)})}_responseManifestCompleted(e){const[t]=e.params,s={0:"Success",1:"CRC Error",2:"Transference interrupted",3:"Reset JSD and try again"};this.emit("completed",{result:s[t]||"Unknown Result",resultKey:parseInt(t,10)})}}const S={requestFeatureStatus:100,requestTemporaryLicenseStatus:101,requestSeedData:102,requestLicenseActivation:110,responseCmdWrong:200,responseFeatureStatus:201,responseSeedData:202,responseTemporaryLicenseStatus:203},B=p=>Object.keys(S).find(t=>S[t]===p)||"Unknown";class y{transport;static APP_ID=f.LICENSING;constructor(e){this.transport=e}requestFeatureStatus(e){const t=`${e}`;return this.transport.buildPacket(S.requestFeatureStatus,t,y.APP_ID)}requestTemporaryLicenseStatus(){return this.transport.buildPacket(S.requestTemporaryLicenseStatus,"",y.APP_ID)}requestSeedData(){return this.transport.buildPacket(S.requestSeedData,"",y.APP_ID)}requestLicenseActivation(e){const t=`${e}`;return this.transport.buildPacket(S.requestLicenseActivation,t,y.APP_ID)}}class ${_commands;jsd;APP_ID=f.LICENSING;constructor(e,t){this._commands=new y(t),this.jsd=e}async send(e,t){return this.jsd._lastApplicationCode=this.APP_ID,this.jsd._toQueue(e,{alias:t.alias,waitResponse:t.waitResponse||!1,timeout:t.timeout||500})}get cmd(){return this._commands}async requestFeatureStatus({feature:e}){const t=this.cmd.requestFeatureStatus(e);return this.send(t,{alias:"requestFeatureStatus"})}async requestTemporaryLicenseStatus(){const e=this.cmd.requestTemporaryLicenseStatus();return this.send(e,{alias:"requestTemporaryLicenseStatus"})}async requestSeedData(){const e=this.cmd.requestSeedData();return this.send(e,{alias:"requestSeedData"})}async requestLicenseActivation({license:e}){const t=this.cmd.requestLicenseActivation(e);return this.send(t,{alias:"requestLicenseActivation"})}serialMessage(e){switch(e.opcode){case S.responseCmdWrong:this._responseCmdWrong(e);break;case S.responseFeatureStatus:this._responseFeatureStatus(e);break;case S.responseSeedData:this._responseSeedData(e);break;case S.responseTemporaryLicenseStatus:this._responseTemporaryLicenseStatus(e);break}}emit(e,...t){this.jsd.dispatch(`licensing:${e}`,...t)}_responseCmdWrong(e){const t=parseInt(e.params[0],10),s=e.params.slice(1),n=B(t);this.emit("wrong-cmd",{opcodeName:n,opcode:t,params:s})}_responseFeatureStatus(e){const[t,s]=e.params;this.emit("feature-status",{feature:t,active:s==="1"})}_responseSeedData(e){const[...t]=e.params,s=t.join(","),n=t.map(a=>parseInt(a,10).toString(16).padStart(2,"0")).join(" ");this.emit("seed",{seed:s,hex:n})}_responseTemporaryLicenseStatus(e){const[t,s,n]=e.params,a={0:"Inactive, permanent license",1:"Active",2:"Expired",3:"Blocked up"};this.emit("temporary-license-status",{status:a[t]||"Unknown",remainingDays:parseInt(s,10),daysSinceExpiration:parseInt(n,10)})}}class j{static unescapeBytes(e){const t=[];for(let s=0;s<e.length;s++){const n=e[s];if(n===219){const a=e[s+1];a===220?(t.push(192),s++):a===221?(t.push(219),s++):t.push(n)}else t.push(n)}return t}static parseFrame(e){let t=e;t.length>0&&t[0]===192&&(t=t.slice(1)),t.length>0&&t[t.length-1]===192&&(t=t.slice(0,-1));const s=this.unescapeBytes(t);if(s.length<1)return console.error("Frame too short"),"Frame too short";const n=s[0],a=s[1],i=s.slice(2,-2),c=s[s.length-2],o=s[s.length-1],h=[192,n,a,...i],[d,l]=_.calculate(h);if(d!==c||l!==o)return console.error("CRC mismatch"),"CRC mismatch";if(n===2)return{type:"ACK",id:a};if(n===3)return{type:"NACK",id:a};if(n!==1)return console.warn("Unknown code"),"Unknown code";if(i.length<6)return console.error("JConnect header too short"),"JConnect header too short";const m=i[0]|i[1]<<8,I=i[2]|i[3]<<8,D=i[4]|i[5]<<8,v=i.slice(6),A=String.fromCharCode(...v);return{type:"DATA",opcode:D,appId:I,noBytes:m,params:A?A.split(","):[],id:a,rawAscii:A}}}class W{delimiter;buffer;constructor(e){this.delimiter=e,this.buffer=new Uint8Array(0)}transform(e,t){const s=new Uint8Array(this.buffer.length+e.length);s.set(this.buffer),s.set(e,this.buffer.length),this.buffer=s;let n;for(;(n=this.findDelimiterIndex())!==-1;){const a=this.buffer.slice(0,n);this.buffer=this.buffer.slice(n+this.delimiter.length),t.enqueue(a)}}findDelimiterIndex(){for(let e=0;e<=this.buffer.length-this.delimiter.length;e++){let t=!0;for(let s=0;s<this.delimiter.length;s++)if(this.buffer[e+s]!==this.delimiter[s]){t=!1;break}if(t)return e}return-1}flush(e){this.buffer.length>0&&(e.enqueue(this.buffer),this.buffer=new Uint8Array(0))}}class U extends O.T{_transport;vision;manifest;licensing;_queue=[];_timeoutPacketId=0;_runningQueue=!1;_lastApplicationCode=0;constructor({filters:e=null,config_port:t,no_device:s=1,socket:n=!1,transport:a="rs232"}={}){const i=new Uint8Array([192]),c=new TransformStream(new W(i));if(super({filters:e,config_port:t,no_device:s,socket:n,transformStream:c}),this.__internal__.device.type="jsd",this.__internal__.time.response_general=500,this.__internal__.time.response_engines=500,N.Devices.getCustom(this.typeDevice,s))throw new Error(`Device ${this.typeDevice} ${s} already exists`);N.Devices.add(this),this.#e(),this.getResponseAsUint8Array(),this._transport=a==="rs232"?new k:new b,this.vision=new M(this,this._transport),this.manifest=new R(this,this._transport),this.licensing=new $(this,this._transport),this.afterConnectionSetup()}async afterConnectionSetup(){await new Promise(e=>setTimeout(e,100)),this.vision.requestMachineStatus({machine:1}),this.vision.requestMachineStatus({machine:2}),this.vision.requestMachineStatus({machine:3}),this.vision.requestMachineStatus({machine:4})}#e(){const e=["licensing:wrong-cmd","licensing:feature-status","licensing:seed","licensing:temporary-license-status","manifest:wrong-cmd","manifest:log","manifest:block","manifest:completed","vision:wrong-cmd","vision:machine-status","vision:channels-progress","vision:channels","vision:channel-status","vision:status-selection","vision:dispense-status","vision:selection-dispense-config","vision:channels-linked-to-selection","vision:machine-id","vision:current-temperature","vision:alarm-faults-events","vision:time-waiting-for-product-collection","vision:collect","vision:reset-sold-out-channels","vision:time-waiting-after-product-collection","vision:jsd-version","vision:active-faults","vision:jsd-dispensing-queue","vision:special-characteristics-selection","vision:perishable-products-config","vision:active-faults-list","vision:jsd-status-reset","vision:extended-dispense-status-data","vision:trays-positioning-phototransistors-status","vision:jsd-license-error","serial:jsd-error","serial:jsd-ack","serial:jsd-nack","serial:jsd-data"];for(const t of e)this.serialRegisterAvailableListener(t)}serialSetConnectionConstant(){const e=this._transport?this._transport:new k;let t=255;this._transport&&(t=e.packetId,this._transport._overridePacketId(t+1));const{bytes:s}=u.connection({transport:e,packetId:t});return s}send(e,t){return this.appendToQueue(e,t.alias||"unknown")}onEvent(e,t){super.on(e,t)}offEvent(e,t){super.off(e,t)}onceEvent(e,t){const s=((...n)=>{t(...n),this.offEvent(e,s)});this.onEvent(e,s)}get transport(){return this._transport.name}acknowledge(e){return this._transport.buildAckPacket(e)}ack(e){this.isConnected&&this.send(new Uint8Array(this.acknowledge(e)),{alias:"ACK Response"})}_toQueue(e,t){this._queue.push({packetId:e.packetId,data:e.bytes,alias:t?.alias||"unknown",timeout:t?.timeout||500,resendCount:0}),this._runQueue()}_runQueue(){if(this._queue.length===0||this._runningQueue)return;const e=this._queue[0];this.isConnected&&(this.appendToQueue(new Uint8Array(e.data),e.alias||"unknown"),this._runningQueue=!0,this._timeoutPacketId=setTimeout(()=>{const t=this._queue.findIndex(s=>s.packetId===e.packetId);t!==-1&&(e.resendCount<3?(this._queue[t].resendCount+=1,this._runningQueue=!1,this._runQueue()):(this.dispatch("serial:jsd-error",`No response for packet ID ${e.packetId} after 3 attempts.`),this._queue.splice(t,1),this._runningQueue=!1,this._queue.length>0&&this._runQueue()))},e.timeout))}_dequeue(e){const t=this._queue.findIndex(s=>s.packetId===e);t!==-1&&(this._queue.splice(t,1),this._timeoutPacketId&&(clearTimeout(this._timeoutPacketId),this._timeoutPacketId=0),this._runningQueue=!1,this._queue.length>0&&this._runQueue())}serialMessage(e){const t=Array.from(structuredClone(e));if(t.length===0)return;const s=j.parseFrame(t);if(typeof s=="string")this.dispatch("serial:jsd-error",s);else if(s.type==="ACK")this._queue.findIndex(a=>a.packetId===s.id)!==-1&&this._dequeue(s.id),this.dispatch("serial:jsd-ack",s);else if(s.type==="NACK")this.dispatch("serial:jsd-nack",s);else if(s.type==="DATA"){this.ack(s.id),typeof s.appId>"u"&&(s.appId=this._lastApplicationCode);const n=s.appId;L(n)&&this.vision.serialMessage(s),w(n)&&this.manifest.serialMessage(s),F(n)&&this.licensing.serialMessage(s),this.dispatch("serial:jsd-data",s)}this.dispatch("serial:message",{raw:e,parsed:s})}}exports.JSD=U;
package/dist/jsd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { T as O } from "./webserial-core-DSv1dX3s.js";
2
- import { D as k } from "./devices-CHc7K4eY.js";
2
+ import { D as N } from "./devices-CHc7K4eY.js";
3
3
  class T {
4
4
  /**
5
5
  * Byte order configuration
@@ -120,7 +120,7 @@ class b {
120
120
  return [192, ...this.escapeBytes(c), 192];
121
121
  }
122
122
  }
123
- class N extends b {
123
+ class k extends b {
124
124
  packetIdCounter = 1;
125
125
  _name = "rs232";
126
126
  get packetId() {
@@ -141,7 +141,7 @@ class N extends b {
141
141
  * @returns Array of numbers representing the packet.
142
142
  */
143
143
  buildPacket(e, t, s) {
144
- const i = this.getNextPacketId(), { bytes: c } = super.buildPacket(e, t, s), o = [192, 1, i, ...c], [h, p] = T.calculate(o), l = [1, i, ...c, h, p];
144
+ const i = this.getNextPacketId(), { bytes: c } = super.buildPacket(e, t, s), o = [192, 1, i, ...c], [h, d] = T.calculate(o), l = [1, i, ...c, h, d];
145
145
  return { bytes: [192, ...this.escapeBytes(l), 192], packetId: i };
146
146
  }
147
147
  }
@@ -197,12 +197,12 @@ const r = {
197
197
  jsdErrorLicenseTemporarilyBlocked: 300,
198
198
  jsdErrorLicenseNotActive: 301,
199
199
  jsdErrorCommandNotExecutable: 302
200
- }, C = (d) => Object.keys(r).find((t) => r[t] === d) || "Unknown", f = {
200
+ }, C = (p) => Object.keys(r).find((t) => r[t] === p) || "Unknown", f = {
201
201
  VISION: 402,
202
202
  LICENSING: 600,
203
203
  MANIFESTS_AND_LOGS: 601,
204
204
  SIMULATOR_VISION: 1e4
205
- }, L = (d) => [f.VISION, f.SIMULATOR_VISION].includes(d), F = (d) => [f.LICENSING].includes(d), w = (d) => [f.MANIFESTS_AND_LOGS].includes(d);
205
+ }, L = (p) => [f.VISION, f.SIMULATOR_VISION].includes(p), F = (p) => [f.LICENSING].includes(p), w = (p) => [f.MANIFESTS_AND_LOGS].includes(p);
206
206
  class u {
207
207
  transport;
208
208
  static APP_ID = f.VISION;
@@ -487,8 +487,8 @@ class u {
487
487
  typeAdjustElevator: n,
488
488
  timeAdjustElevator: a
489
489
  }) {
490
- const p = `${e},${t ? 1 : 0},${s ? 1 : 0},${n === "lower" ? 0 : 1},${a}`;
491
- return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection, p, u.APP_ID);
490
+ const d = `${e},${t ? 1 : 0},${s ? 1 : 0},${n === "lower" ? 0 : 1},${a}`;
491
+ return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection, d, u.APP_ID);
492
492
  }
493
493
  /**
494
494
  * Get special characteristics for a selection.
@@ -699,18 +699,18 @@ class u {
699
699
  return this.transport.buildPacket(r.restartingTheJSDKnowingThatItIsDangerous, "", u.APP_ID);
700
700
  }
701
701
  }
702
- function q(d) {
703
- if (d.length > 5)
704
- throw new Error(`Token must be max 5 characters, got ${d.length}`);
705
- return d;
702
+ function q(p) {
703
+ if (p.length > 5)
704
+ throw new Error(`Token must be max 5 characters, got ${p.length}`);
705
+ return p;
706
706
  }
707
707
  function _() {
708
- let d;
708
+ let p;
709
709
  do {
710
710
  const e = new Uint8Array(2);
711
- d = parseInt(crypto.getRandomValues(e).toString().replaceAll(",", "")).toString(36);
712
- } while (d.length > 5);
713
- return q(d);
711
+ p = parseInt(crypto.getRandomValues(e).toString().replaceAll(",", "")).toString(36);
712
+ } while (p.length > 5);
713
+ return q(p);
714
714
  }
715
715
  const E = {
716
716
  status: "NO-CONNECTED",
@@ -759,7 +759,9 @@ class M {
759
759
  */
760
760
  isAvailableToDispense({ machine: e = 1 } = {}) {
761
761
  const t = this._getMachineIndex(e);
762
- return ["ELEVATOR-COLLECTION-POSITION", "AVAILABLE-TO-DISPENSE"].includes(this._machineStatus[t]?.availabilityToDispense || "") && this._machineStatus[t]?.machineInService === !0 && this._machineStatus[t]?.doorOpen === !1 && this._machineStatus[t]?.status === "CONNECTED";
762
+ return ["ELEVATOR-COLLECTION-POSITION", "AVAILABLE-TO-DISPENSE"].includes(
763
+ this._machineStatus[t]?.availabilityToDispense || ""
764
+ ) && this._machineStatus[t]?.machineInService === !0 && this._machineStatus[t]?.doorOpen === !1 && this._machineStatus[t]?.status === "CONNECTED";
763
765
  }
764
766
  /**
765
767
  * Request machine status.
@@ -785,7 +787,10 @@ class M {
785
787
  * @param options.selection Selection number (1-81) to derive tray and channel.
786
788
  * @returns Promise resolving when the command is sent.
787
789
  */
788
- async requestStatusChannel({ machine: e, selection: t }) {
790
+ async requestStatusChannel({
791
+ machine: e,
792
+ selection: t
793
+ }) {
789
794
  const s = this._getMachineIndex(e), { tray: n, channel: a } = this._getTrayChannelFromSelection(t), i = this.cmd.requestStatusChannel({ machine: s, tray: n, channel: a });
790
795
  return await this.send(i, { alias: "requestStatusChannel" });
791
796
  }
@@ -830,7 +835,11 @@ class M {
830
835
  * @param options.timePostRun Time post run.
831
836
  * @returns Promise resolving when the command is sent.
832
837
  */
833
- async configureSelectionDispense({ selection: e, speed: t, timePostRun: s }) {
838
+ async configureSelectionDispense({
839
+ selection: e,
840
+ speed: t,
841
+ timePostRun: s
842
+ }) {
834
843
  const n = this.cmd.configureSelectionDispense({ selection: e, speed: t, timePostRun: s });
835
844
  return await this.send(n, { alias: "configureSelectionDispense" });
836
845
  }
@@ -853,7 +862,12 @@ class M {
853
862
  * @param options.channel Channel number.
854
863
  * @returns Promise resolving when the command is sent.
855
864
  */
856
- async configureAddChannelToSelection({ selection: e, machine: t, tray: s, channel: n }) {
865
+ async configureAddChannelToSelection({
866
+ selection: e,
867
+ machine: t,
868
+ tray: s,
869
+ channel: n
870
+ }) {
857
871
  const a = this._getMachineIndex(t), i = this.cmd.addChannelToSelection({ selection: e, machine: a, tray: s, channel: n });
858
872
  return await this.send(i, { alias: "addChannelToSelection" });
859
873
  }
@@ -885,7 +899,11 @@ class M {
885
899
  * @param options.enable Enable or disable temperature control.
886
900
  * @returns Promise resolving when the command is sent.
887
901
  */
888
- async configureWorkingTemperature({ machine: e, temperature: t, enable: s }) {
902
+ async configureWorkingTemperature({
903
+ machine: e,
904
+ temperature: t,
905
+ enable: s
906
+ }) {
889
907
  const n = this._getMachineIndex(e), a = this.cmd.programWorkingTemperature({ machine: n, temperature: t, enable: s });
890
908
  return await this.send(a, { alias: "programWorkingTemperature" });
891
909
  }
@@ -907,7 +925,11 @@ class M {
907
925
  * @param options.afterPickup Time waiting after pickup.
908
926
  * @returns Promise resolving when the command is sent.
909
927
  */
910
- async configureWaitingTimings({ collectPosition: e, dispenseManoeuvres: t, afterPickup: s }) {
928
+ async configureWaitingTimings({
929
+ collectPosition: e,
930
+ dispenseManoeuvres: t,
931
+ afterPickup: s
932
+ }) {
911
933
  const n = this.cmd.programWaitingTimings({ collectPosition: e, dispenseManoeuvres: t, afterPickup: s });
912
934
  return await this.send(n, { alias: "programWaitingTimings" });
913
935
  }
@@ -1056,7 +1078,12 @@ class M {
1056
1078
  * @param options.minutesToExpiry Minutes to expiry.
1057
1079
  * @returns Promise resolving when the command is sent.
1058
1080
  */
1059
- configurePerishableProducts({ machine: e, enable: t, temperatureLimit: s, minutesToExpiry: n }) {
1081
+ configurePerishableProducts({
1082
+ machine: e,
1083
+ enable: t,
1084
+ temperatureLimit: s,
1085
+ minutesToExpiry: n
1086
+ }) {
1060
1087
  const a = this._getMachineIndex(e), i = this.cmd.configurePerishableProducts({
1061
1088
  machine: a,
1062
1089
  enable: t,
@@ -1081,7 +1108,9 @@ class M {
1081
1108
  * @param options.enable Enable extended data.
1082
1109
  * @returns Promise resolving when the command is sent.
1083
1110
  */
1084
- async configureExtendedDispenseStatusData({ enable: e }) {
1111
+ async configureExtendedDispenseStatusData({
1112
+ enable: e
1113
+ }) {
1085
1114
  const t = this.cmd.configureExtendedDispenseStatusData({ enable: e });
1086
1115
  return await this.send(t, { alias: "configureExtendedDispenseStatusData" });
1087
1116
  }
@@ -1114,7 +1143,14 @@ class M {
1114
1143
  * @param options.cart Cart flag (optional, defaults to false).
1115
1144
  * @returns Promise resolving when the command is sent.
1116
1145
  */
1117
- async dispenseFromChannel({ machine: e, tray: t, channel: s, speed: n, timePostRun: a, cart: i = !1 }) {
1146
+ async dispenseFromChannel({
1147
+ machine: e,
1148
+ tray: t,
1149
+ channel: s,
1150
+ speed: n,
1151
+ timePostRun: a,
1152
+ cart: i = !1
1153
+ }) {
1118
1154
  if (!this.isAvailableToDispense({ machine: e }))
1119
1155
  throw new Error(`Machine ${e} is not available to dispense`);
1120
1156
  const c = this._getMachineIndex(e), o = _(), h = this.cmd.dispenseFromChannel({
@@ -1132,8 +1168,8 @@ class M {
1132
1168
  },
1133
1169
  reject: () => {
1134
1170
  }
1135
- }, new Promise((p, l) => {
1136
- this._dispensingTokens[o].resolve = p, this._dispensingTokens[o].reject = l;
1171
+ }, new Promise((d, l) => {
1172
+ this._dispensingTokens[o].resolve = d, this._dispensingTokens[o].reject = l;
1137
1173
  });
1138
1174
  }
1139
1175
  /**
@@ -1148,7 +1184,14 @@ class M {
1148
1184
  */
1149
1185
  async dispense({ machine: e, selection: t, speed: s, timePostRun: n, cart: a = !1 }) {
1150
1186
  const { tray: i, channel: c } = this._getTrayChannelFromSelection(t);
1151
- return this.dispenseFromChannel({ machine: e, tray: i, channel: c, speed: s || 5, timePostRun: n || 0, cart: !!a });
1187
+ return this.dispenseFromChannel({
1188
+ machine: e,
1189
+ tray: i,
1190
+ channel: c,
1191
+ speed: s || 5,
1192
+ timePostRun: n || 0,
1193
+ cart: !!a
1194
+ });
1152
1195
  }
1153
1196
  /**
1154
1197
  * Dispense multiple selections in a cart.
@@ -1165,10 +1208,14 @@ class M {
1165
1208
  let s = [];
1166
1209
  for (const n of t)
1167
1210
  try {
1168
- const a = await Promise.all(n.map((o) => this.dispense({ machine: o.machine, selection: o.selection, cart: !0 }))), i = [...new Set(n.map((o) => o.machine))];
1211
+ const a = await Promise.all(
1212
+ n.map((o) => this.dispense({ machine: o.machine, selection: o.selection, cart: !0 }))
1213
+ ), i = [...new Set(n.map((o) => o.machine))];
1169
1214
  await new Promise((o) => {
1170
1215
  const h = setInterval(() => {
1171
- i.every((l) => this.getMachineStatus(l)?.availabilityToDispense === "AVAILABLE-TO-DISPENSE") && (clearInterval(h), o(!0));
1216
+ i.every(
1217
+ (l) => this.getMachineStatus(l)?.availabilityToDispense === "AVAILABLE-TO-DISPENSE"
1218
+ ) && (clearInterval(h), o(!0));
1172
1219
  }, 300);
1173
1220
  });
1174
1221
  for (const o of i)
@@ -1299,9 +1346,9 @@ class M {
1299
1346
  }) {
1300
1347
  if (!this.isAvailableToDispense({ machine: e }))
1301
1348
  throw new Error(`Machine ${e} is not available to dispense`);
1302
- const p = this._getMachineIndex(e), l = _(), m = this.cmd.dispenseFromChannelExtended({
1349
+ const d = this._getMachineIndex(e), l = _(), m = this.cmd.dispenseFromChannelExtended({
1303
1350
  token: l,
1304
- machine: p,
1351
+ machine: d,
1305
1352
  tray: t,
1306
1353
  channel: s,
1307
1354
  speed: n,
@@ -1461,7 +1508,7 @@ class M {
1461
1508
  3: "WAITING-COLLECTION",
1462
1509
  4: "ELEVATOR-COLLECTION-POSITION",
1463
1510
  5: "UNCOLLECTED"
1464
- }, p = {
1511
+ }, d = {
1465
1512
  status: this._getMachineStatusName(parseInt(s, 10)),
1466
1513
  machineInService: parseInt(n, 10) === 1,
1467
1514
  doorOpen: parseInt(a, 10) === 0,
@@ -1469,9 +1516,15 @@ class M {
1469
1516
  hasLightsOn: isNaN(parseInt(c, 10)) ? !1 : parseInt(c, 10) === 1,
1470
1517
  temperature: o || ""
1471
1518
  };
1472
- this.setMachineStatus(parseInt(t, 10), p), this.emit("machine-status", {
1519
+ this.setMachineStatus(parseInt(t, 10), d), this.emit("machine-status", {
1473
1520
  machine: parseInt(t, 10) + 1,
1474
- ...p
1521
+ ...d
1522
+ }), this.emit("door", {
1523
+ open: d.doorOpen,
1524
+ machine: parseInt(t, 10) + 1
1525
+ }), this.emit("connection", {
1526
+ connected: d.status === "CONNECTED",
1527
+ machine: parseInt(t, 10) + 1
1475
1528
  });
1476
1529
  }
1477
1530
  _statusChannelName(e) {
@@ -1577,17 +1630,17 @@ class M {
1577
1630
  13: "NO-VISION",
1578
1631
  14: "PRODUCT-PERISHABLE-EXPIRED",
1579
1632
  20: "DECIDE"
1580
- }, h = i[parseInt(s, 10)] || "UNKNOWN", [p, l, m] = n && n.trim() !== "" ? n.split(".").map((D) => parseInt(D, 10)) : [null, null, null], I = a ? o[parseInt(a, 10)] || "UNKNOWN" : null;
1581
- this._dispensingTokens[t] && (this._dispensingTokens[t].cart === !1 && h === "WAITING-COLLECTION" ? (this._dispensingTokens[t].resolve(!0), delete this._dispensingTokens[t], this.emit("waiting-collection", { machine: p !== null ? p + 1 : null })) : this._dispensingTokens[t].cart === !0 && h === "DISPENSED-CAN-MULTIPLE" ? (this._dispensingTokens[t].resolve(!0), delete this._dispensingTokens[t]) : c.includes(h) && (this._dispensingTokens[t].resolve(!1), delete this._dispensingTokens[t])), h === "IN-PROGRESS" && this.emit("dispensing", {
1633
+ }, h = i[parseInt(s, 10)] || "UNKNOWN", [d, l, m] = n && n.trim() !== "" ? n.split(".").map((D) => parseInt(D, 10)) : [null, null, null], I = a ? o[parseInt(a, 10)] || "UNKNOWN" : null;
1634
+ this._dispensingTokens[t] && (this._dispensingTokens[t].cart === !1 && h === "WAITING-COLLECTION" ? (this._dispensingTokens[t].resolve(!0), delete this._dispensingTokens[t], this.emit("waiting-collection", { machine: d !== null ? d + 1 : null })) : this._dispensingTokens[t].cart === !0 && h === "DISPENSED-CAN-MULTIPLE" ? (this._dispensingTokens[t].resolve(!0), delete this._dispensingTokens[t]) : c.includes(h) && (this._dispensingTokens[t].resolve(!1), delete this._dispensingTokens[t])), h === "IN-PROGRESS" && this.emit("dispensing", {
1582
1635
  token: t,
1583
- machine: p !== null ? p + 1 : null,
1636
+ machine: d !== null ? d + 1 : null,
1584
1637
  tray: l !== null ? l : null,
1585
1638
  channel: m !== null ? m : null,
1586
1639
  selection: m !== null && l !== null ? this._getSelectionFromTrayChannel(l, m) : null
1587
1640
  }), this.emit("dispense-status", {
1588
1641
  token: t,
1589
1642
  status: h,
1590
- machine: p !== null ? p + 1 : null,
1643
+ machine: d !== null ? d + 1 : null,
1591
1644
  tray: l !== null ? l : null,
1592
1645
  channel: m !== null ? m : null,
1593
1646
  extendedStatus: I
@@ -1607,10 +1660,10 @@ class M {
1607
1660
  1: "ALREADY-DEFINED",
1608
1661
  2: "OUT-OF-RANGE"
1609
1662
  }, c = s.map((o) => {
1610
- const [h, p, l] = o.split(":");
1663
+ const [h, d, l] = o.split(":");
1611
1664
  return {
1612
1665
  machine: parseInt(h, 10) + 1,
1613
- tray: parseInt(p, 10),
1666
+ tray: parseInt(d, 10),
1614
1667
  channel: parseInt(l, 10)
1615
1668
  };
1616
1669
  });
@@ -1630,7 +1683,13 @@ class M {
1630
1683
  });
1631
1684
  }
1632
1685
  _responseCurrentTemperature(e) {
1633
- const [t, s, n, a, i] = e.params, c = parseInt(t, 10) + 1, o = parseInt(i, 10) === 1 ? "ON" : "OFF";
1686
+ const [
1687
+ t,
1688
+ s,
1689
+ n,
1690
+ a,
1691
+ i
1692
+ ] = e.params, c = parseInt(t, 10) + 1, o = parseInt(i, 10) === 1 ? "ON" : "OFF";
1634
1693
  this.emit("current-temperature", {
1635
1694
  machine: c,
1636
1695
  workingTemperature: s,
@@ -1783,7 +1842,7 @@ class M {
1783
1842
  });
1784
1843
  }
1785
1844
  _responseTraysPositioningPhototransistorsStatus(e) {
1786
- const [t, s, n, a, i, c, o, h, p] = e.params, l = {
1845
+ const [t, s, n, a, i, c, o, h, d] = e.params, l = {
1787
1846
  0: "OK",
1788
1847
  C: "SHORT-CIRCUIT",
1789
1848
  N: "TRAY-NOT-DETECTED"
@@ -1797,7 +1856,7 @@ class M {
1797
1856
  15: l[c] || null,
1798
1857
  16: l[o] || null,
1799
1858
  17: l[h] || null,
1800
- 18: l[p] || null
1859
+ 18: l[d] || null
1801
1860
  }
1802
1861
  };
1803
1862
  this.emit("trays-positioning-phototransistors-status", m);
@@ -1839,7 +1898,7 @@ const g = {
1839
1898
  responseLineLogEvent: 201,
1840
1899
  responseManifestDataBlock: 210,
1841
1900
  responseManifestCompleted: 211
1842
- }, x = (d) => Object.keys(g).find((t) => g[t] === d) || "Unknown";
1901
+ }, x = (p) => Object.keys(g).find((t) => g[t] === p) || "Unknown";
1843
1902
  class P {
1844
1903
  transport;
1845
1904
  static APP_ID = f.MANIFESTS_AND_LOGS;
@@ -1946,8 +2005,8 @@ class R {
1946
2005
  */
1947
2006
  async requestLogsByDate({ since: e, until: t }) {
1948
2007
  const s = (c) => {
1949
- const o = String(c.getMonth() + 1).padStart(2, "0"), h = String(c.getDate()).padStart(2, "0"), p = String(c.getHours()).padStart(2, "0"), l = String(c.getMinutes()).padStart(2, "0"), m = String(c.getSeconds()).padStart(2, "0");
1950
- return `${o}/${h}/${p}/${l}/${m}`;
2008
+ const o = String(c.getMonth() + 1).padStart(2, "0"), h = String(c.getDate()).padStart(2, "0"), d = String(c.getHours()).padStart(2, "0"), l = String(c.getMinutes()).padStart(2, "0"), m = String(c.getSeconds()).padStart(2, "0");
2009
+ return `${o}/${h}/${d}/${l}/${m}`;
1951
2010
  }, n = s(e), a = s(t), i = this.cmd.requestLogsByDate(n, a);
1952
2011
  return await this.send(i, { alias: "requestLogsByDate" });
1953
2012
  }
@@ -2044,7 +2103,7 @@ const S = {
2044
2103
  responseFeatureStatus: 201,
2045
2104
  responseSeedData: 202,
2046
2105
  responseTemporaryLicenseStatus: 203
2047
- }, B = (d) => Object.keys(S).find((t) => S[t] === d) || "Unknown";
2106
+ }, B = (p) => Object.keys(S).find((t) => S[t] === p) || "Unknown";
2048
2107
  class y {
2049
2108
  transport;
2050
2109
  static APP_ID = f.LICENSING;
@@ -2224,8 +2283,8 @@ class j {
2224
2283
  const s = this.unescapeBytes(t);
2225
2284
  if (s.length < 1)
2226
2285
  return console.error("Frame too short"), "Frame too short";
2227
- const n = s[0], a = s[1], i = s.slice(2, -2), c = s[s.length - 2], o = s[s.length - 1], h = [192, n, a, ...i], [p, l] = T.calculate(h);
2228
- if (p !== c || l !== o)
2286
+ const n = s[0], a = s[1], i = s.slice(2, -2), c = s[s.length - 2], o = s[s.length - 1], h = [192, n, a, ...i], [d, l] = T.calculate(h);
2287
+ if (d !== c || l !== o)
2229
2288
  return console.error("CRC mismatch"), "CRC mismatch";
2230
2289
  if (n === 2) return { type: "ACK", id: a };
2231
2290
  if (n === 3) return { type: "NACK", id: a };
@@ -2313,9 +2372,12 @@ class K extends O {
2313
2372
  transport: a = "rs232"
2314
2373
  } = {}) {
2315
2374
  const i = new Uint8Array([192]), c = new TransformStream(new W(i));
2316
- if (super({ filters: e, config_port: t, no_device: s, socket: n, transformStream: c }), this.__internal__.device.type = "jsd", this.__internal__.time.response_general = 500, this.__internal__.time.response_engines = 500, k.getCustom(this.typeDevice, s))
2375
+ if (super({ filters: e, config_port: t, no_device: s, socket: n, transformStream: c }), this.__internal__.device.type = "jsd", this.__internal__.time.response_general = 500, this.__internal__.time.response_engines = 500, N.getCustom(this.typeDevice, s))
2317
2376
  throw new Error(`Device ${this.typeDevice} ${s} already exists`);
2318
- k.add(this), this.#e(), this.getResponseAsUint8Array(), this._transport = a === "rs232" ? new N() : new b(), this.vision = new M(this, this._transport), this.manifest = new R(this, this._transport), this.licensing = new $(this, this._transport);
2377
+ N.add(this), this.#e(), this.getResponseAsUint8Array(), this._transport = a === "rs232" ? new k() : new b(), this.vision = new M(this, this._transport), this.manifest = new R(this, this._transport), this.licensing = new $(this, this._transport), this.afterConnectionSetup();
2378
+ }
2379
+ async afterConnectionSetup() {
2380
+ await new Promise((e) => setTimeout(e, 100)), this.vision.requestMachineStatus({ machine: 1 }), this.vision.requestMachineStatus({ machine: 2 }), this.vision.requestMachineStatus({ machine: 3 }), this.vision.requestMachineStatus({ machine: 4 });
2319
2381
  }
2320
2382
  #e() {
2321
2383
  const e = [
@@ -2362,7 +2424,7 @@ class K extends O {
2362
2424
  this.serialRegisterAvailableListener(t);
2363
2425
  }
2364
2426
  serialSetConnectionConstant() {
2365
- const e = this._transport ? this._transport : new N();
2427
+ const e = this._transport ? this._transport : new k();
2366
2428
  let t = 255;
2367
2429
  this._transport && (t = e.packetId, this._transport._overridePacketId(t + 1));
2368
2430
  const { bytes: s } = u.connection({ transport: e, packetId: t });
@@ -45,7 +45,7 @@ export declare class Vision {
45
45
  * @param options.selection Selection number (1-81) to derive tray and channel.
46
46
  * @returns Promise resolving when the command is sent.
47
47
  */
48
- requestStatusChannel({ machine, selection }: {
48
+ requestStatusChannel({ machine, selection, }: {
49
49
  machine: MachineValid;
50
50
  selection: Range<1, 81>;
51
51
  }): Promise<void>;
@@ -76,7 +76,7 @@ export declare class Vision {
76
76
  * @param options.timePostRun Time post run.
77
77
  * @returns Promise resolving when the command is sent.
78
78
  */
79
- configureSelectionDispense({ selection, speed, timePostRun }: ConfigureSelectionDispenseOptions): Promise<void>;
79
+ configureSelectionDispense({ selection, speed, timePostRun, }: ConfigureSelectionDispenseOptions): Promise<void>;
80
80
  /**
81
81
  * Get current dispense configuration for a selection.
82
82
  * @param options Object containing the machine index.
@@ -95,7 +95,7 @@ export declare class Vision {
95
95
  * @param options.channel Channel number.
96
96
  * @returns Promise resolving when the command is sent.
97
97
  */
98
- configureAddChannelToSelection({ selection, machine, tray, channel }: AddChannelToSelectionOptions): Promise<void>;
98
+ configureAddChannelToSelection({ selection, machine, tray, channel, }: AddChannelToSelectionOptions): Promise<void>;
99
99
  /**
100
100
  * Get channels linked to a selection.
101
101
  * @param options Object containing the selection number.
@@ -120,7 +120,7 @@ export declare class Vision {
120
120
  * @param options.enable Enable or disable temperature control.
121
121
  * @returns Promise resolving when the command is sent.
122
122
  */
123
- configureWorkingTemperature({ machine, temperature, enable }: ProgramWorkingTemperatureOptions): Promise<void>;
123
+ configureWorkingTemperature({ machine, temperature, enable, }: ProgramWorkingTemperatureOptions): Promise<void>;
124
124
  /**
125
125
  * Get working temperature.
126
126
  * @param options Object containing the machine index.
@@ -138,7 +138,7 @@ export declare class Vision {
138
138
  * @param options.afterPickup Time waiting after pickup.
139
139
  * @returns Promise resolving when the command is sent.
140
140
  */
141
- configureWaitingTimings({ collectPosition, dispenseManoeuvres, afterPickup }: ProgramWaitingTimingsOptions): Promise<void>;
141
+ configureWaitingTimings({ collectPosition, dispenseManoeuvres, afterPickup, }: ProgramWaitingTimingsOptions): Promise<void>;
142
142
  /**
143
143
  * Get waiting timings.
144
144
  * @returns Promise resolving when the command is sent.
@@ -223,7 +223,7 @@ export declare class Vision {
223
223
  * @param options.timeAdjustElevator Elevator adjustment time.
224
224
  * @returns Promise resolving when the command is sent.
225
225
  */
226
- configureSpecialCharacteristicsSelection({ selection, perishable, fragileOrHeavy, typeAdjustElevator, timeAdjustElevator }: DefineSpecialCharacteristicsSelectionOptions): Promise<void>;
226
+ configureSpecialCharacteristicsSelection({ selection, perishable, fragileOrHeavy, typeAdjustElevator, timeAdjustElevator, }: DefineSpecialCharacteristicsSelectionOptions): Promise<void>;
227
227
  /**
228
228
  * Get special characteristics for a selection.
229
229
  * @param options Object containing the selection number.
@@ -240,7 +240,7 @@ export declare class Vision {
240
240
  * @param options.minutesToExpiry Minutes to expiry.
241
241
  * @returns Promise resolving when the command is sent.
242
242
  */
243
- configurePerishableProducts({ machine, enable, temperatureLimit, minutesToExpiry }: ConfigurePerishableProductsOptions): Promise<void>;
243
+ configurePerishableProducts({ machine, enable, temperatureLimit, minutesToExpiry, }: ConfigurePerishableProductsOptions): Promise<void>;
244
244
  /**
245
245
  * Request active faults.
246
246
  * @param options Object containing the machine index.
@@ -256,7 +256,7 @@ export declare class Vision {
256
256
  * @param options.enable Enable extended data.
257
257
  * @returns Promise resolving when the command is sent.
258
258
  */
259
- configureExtendedDispenseStatusData({ enable }: ConfigureExtendedDispenseStatusDataOptions): Promise<void>;
259
+ configureExtendedDispenseStatusData({ enable, }: ConfigureExtendedDispenseStatusDataOptions): Promise<void>;
260
260
  /**
261
261
  * Get extended dispense status data configuration.
262
262
  * @returns Promise resolving when the command is sent.
@@ -282,7 +282,7 @@ export declare class Vision {
282
282
  * @param options.cart Cart flag (optional, defaults to false).
283
283
  * @returns Promise resolving when the command is sent.
284
284
  */
285
- dispenseFromChannel({ machine, tray, channel, speed, timePostRun, cart }: DispenseFromChannelOptions): Promise<boolean>;
285
+ dispenseFromChannel({ machine, tray, channel, speed, timePostRun, cart, }: DispenseFromChannelOptions): Promise<boolean>;
286
286
  /**
287
287
  * Dispense from a selection using the channel assignment logic.
288
288
  * @param options Object containing dispense details.
@@ -389,7 +389,7 @@ export declare class Vision {
389
389
  * @param options.cart Cart flag (optional, defaults to false).
390
390
  * @returns Promise resolving when the command is sent.
391
391
  */
392
- dispenseFromChannelExtended({ machine, tray, channel, speed, timePostRun, fragileOrHeavy, typeAdjustElevator, timeAdjustElevator, cart }: DispenseFromChannelExtendedOptions): Promise<boolean>;
392
+ dispenseFromChannelExtended({ machine, tray, channel, speed, timePostRun, fragileOrHeavy, typeAdjustElevator, timeAdjustElevator, cart, }: DispenseFromChannelExtendedOptions): Promise<boolean>;
393
393
  /**
394
394
  * Get dispense status from channel with extended options using a token.
395
395
  * @param options Object containing the token.
@@ -1 +1 @@
1
- {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../../../../../lib/commands/jsd/applications/vision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../../../../../lib/commands/jsd/applications/vision.ts"],"names":[],"mappings":"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"}
@@ -337,7 +337,7 @@ export interface VisionEvents {
337
337
  params: string[];
338
338
  }
339
339
  ];
340
- 'dispensing': [
340
+ dispensing: [
341
341
  data: {
342
342
  token: DispenseToken;
343
343
  machine: MachineValid | null;
@@ -351,6 +351,18 @@ export interface VisionEvents {
351
351
  machine: MachineValid | null;
352
352
  }
353
353
  ];
354
+ door: [
355
+ data: {
356
+ machine: MachineValid;
357
+ open: boolean;
358
+ }
359
+ ];
360
+ connection: [
361
+ data: {
362
+ machine: MachineValid;
363
+ connected: boolean;
364
+ }
365
+ ];
354
366
  }
355
367
  export {};
356
368
  //# sourceMappingURL=visionClient.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visionClient.types.d.ts","sourceRoot":"","sources":["../../../../../../lib/commands/jsd/types/visionClient.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visionClient.types.d.ts","sourceRoot":"","sources":["../../../../../../lib/commands/jsd/types/visionClient.types.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export declare class JSD extends Core {
15
15
  private _runningQueue;
16
16
  _lastApplicationCode: number;
17
17
  constructor({ filters, config_port, no_device, socket, transport, }?: JSDConstructorParams);
18
+ private afterConnectionSetup;
18
19
  serialSetConnectionConstant(): number[];
19
20
  send(bytes: Uint8Array, options: {
20
21
  alias?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"jsd.d.ts","sourceRoot":"","sources":["../../../../lib/serial/jsd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIrG,KAAK,aAAa,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3D,qBAAa,GAAI,SAAQ,IAAI;;IAC3B,OAAO,CAAC,UAAU,CAAgC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IAE5B,OAAO,CAAC,MAAM,CAML;IACT,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAS;IAEvB,oBAAoB,EAAE,MAAM,CAAK;gBAE5B,EACV,OAAc,EACd,WAAW,EACX,SAAa,EACb,MAAc,EACd,SAAmB,GACpB,GAAE,oBAAyB;IAqE5B,2BAA2B;IAWpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAI7F,OAAO,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzF,QAAQ,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3F,SAAS,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IASlG,IAAW,SAAS,WAEnB;IAED,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,GAAG;IASJ,QAAQ,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GACA,IAAI;IAgBP,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,QAAQ;IAiBT,aAAa,CAAC,GAAG,EAAE,UAAU;CA4CrC"}
1
+ {"version":3,"file":"jsd.d.ts","sourceRoot":"","sources":["../../../../lib/serial/jsd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIrG,KAAK,aAAa,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3D,qBAAa,GAAI,SAAQ,IAAI;;IAC3B,OAAO,CAAC,UAAU,CAAgC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IAE5B,OAAO,CAAC,MAAM,CAML;IACT,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAS;IAEvB,oBAAoB,EAAE,MAAM,CAAK;gBAE5B,EACV,OAAc,EACd,WAAW,EACX,SAAa,EACb,MAAc,EACd,SAAmB,GACpB,GAAE,oBAAyB;YAsBd,oBAAoB;IAyDlC,2BAA2B;IAWpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAI7F,OAAO,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzF,QAAQ,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3F,SAAS,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IASlG,IAAW,SAAS,WAEnB;IAED,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,GAAG;IASJ,QAAQ,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GACA,IAAI;IAgBP,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,QAAQ;IAiBT,aAAa,CAAC,GAAG,EAAE,UAAU;CA4CrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danidoble/webserial",
3
- "version": "4.5.0-alpha.0",
3
+ "version": "4.5.0-alpha.1",
4
4
  "author": "danidoble",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "postcss": "^8.5.6",
22
22
  "prettier": "^3.8.1",
23
23
  "typescript": "^5.9.3",
24
- "typescript-eslint": "^8.55.0",
24
+ "typescript-eslint": "^8.56.0",
25
25
  "uuid": "^13.0.0",
26
26
  "vite": "^7.3.1",
27
27
  "webserial-core": "^1.2.1"