@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 +1 -1
- package/dist/jsd.js +114 -52
- package/dist/types/lib/commands/jsd/applications/vision.d.ts +10 -10
- package/dist/types/lib/commands/jsd/applications/vision.d.ts.map +1 -1
- package/dist/types/lib/commands/jsd/types/visionClient.types.d.ts +13 -1
- package/dist/types/lib/commands/jsd/types/visionClient.types.d.ts.map +1 -1
- package/dist/types/lib/serial/jsd.d.ts +1 -0
- package/dist/types/lib/serial/jsd.d.ts.map +1 -1
- package/package.json +2 -2
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
|
|
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
|
|
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,
|
|
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 = (
|
|
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 = (
|
|
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
|
|
491
|
-
return this.transport.buildPacket(r.defineSpecialCharacteristicsSelection,
|
|
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(
|
|
703
|
-
if (
|
|
704
|
-
throw new Error(`Token must be max 5 characters, got ${
|
|
705
|
-
return
|
|
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
|
|
708
|
+
let p;
|
|
709
709
|
do {
|
|
710
710
|
const e = new Uint8Array(2);
|
|
711
|
-
|
|
712
|
-
} while (
|
|
713
|
-
return q(
|
|
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(
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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((
|
|
1136
|
-
this._dispensingTokens[o].resolve =
|
|
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({
|
|
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(
|
|
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(
|
|
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
|
|
1349
|
+
const d = this._getMachineIndex(e), l = _(), m = this.cmd.dispenseFromChannelExtended({
|
|
1303
1350
|
token: l,
|
|
1304
|
-
machine:
|
|
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
|
-
},
|
|
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),
|
|
1519
|
+
this.setMachineStatus(parseInt(t, 10), d), this.emit("machine-status", {
|
|
1473
1520
|
machine: parseInt(t, 10) + 1,
|
|
1474
|
-
...
|
|
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", [
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
1663
|
+
const [h, d, l] = o.split(":");
|
|
1611
1664
|
return {
|
|
1612
1665
|
machine: parseInt(h, 10) + 1,
|
|
1613
|
-
tray: parseInt(
|
|
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 [
|
|
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,
|
|
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[
|
|
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 = (
|
|
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"),
|
|
1950
|
-
return `${o}/${h}/${
|
|
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 = (
|
|
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], [
|
|
2228
|
-
if (
|
|
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,
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EACV,+BAA+B,EAC/B,0CAA0C,EAC1C,iCAAiC,EACjC,4CAA4C,EAC5C,4BAA4B,EAC5B,qBAAqB,EAGrB,YAAY,EACZ,QAAQ,EACR,oCAAoC,EACpC,4BAA4B,EAC5B,KAAK,EACL,sCAAsC,EAMvC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,4BAA4B,EAE5B,kCAAkC,EAElC,kCAAkC,EAClC,0BAA0B,EAC1B,eAAe,EAEf,aAAa,EAKb,gCAAgC,EAChC,UAAU,EACV,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAY9C;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,GAAG,CAAM;IAEjB,SAAgB,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,CAAiB;IAE7D,OAAO,CAAC,cAAc,CAKpB;gBAEU,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB;IAKlD,OAAO,CAAC,4BAA4B,CAIlC;IAEF,OAAO,CAAC,iBAAiB,
|
|
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
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,
|
|
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;
|
|
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.
|
|
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.
|
|
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"
|