@kosdev-code/kos-dispense-sdk 2.0.7 → 2.0.8
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/{dispense-registration-manager-CyWSYz58.cjs → dispense-registration-manager-BSepm8-N.cjs} +2 -2
- package/{dispense-registration-manager-CyWSYz58.cjs.map → dispense-registration-manager-BSepm8-N.cjs.map} +1 -1
- package/{dispense-registration-manager-D-8cc59-.js → dispense-registration-manager-CM5dCYOj.js} +6 -5
- package/{dispense-registration-manager-D-8cc59-.js.map → dispense-registration-manager-CM5dCYOj.js.map} +1 -1
- package/{extension-utils-C-2gmrj8.js → extension-utils-BPMrkQU8.js} +2 -2
- package/{extension-utils-C-2gmrj8.js.map → extension-utils-BPMrkQU8.js.map} +1 -1
- package/{extension-utils-CqxLBpze.cjs → extension-utils-DWDUf_CG.cjs} +2 -2
- package/{extension-utils-CqxLBpze.cjs.map → extension-utils-DWDUf_CG.cjs.map} +1 -1
- package/index.cjs +1 -1
- package/index.js +3 -3
- package/models/models/nozzle/nozzle-model.d.ts.map +1 -1
- package/models.cjs +1 -1
- package/models.js +2 -2
- package/package.json +3 -3
- package/{pump-provider-TiFSFuPe.cjs → pump-provider-CJUtMsmT.cjs} +2 -2
- package/{pump-provider-TiFSFuPe.cjs.map → pump-provider-CJUtMsmT.cjs.map} +1 -1
- package/{pump-provider-DcKQ1ppV.js → pump-provider-DhGo9tIz.js} +2 -2
- package/{pump-provider-DcKQ1ppV.js.map → pump-provider-DhGo9tIz.js.map} +1 -1
- package/ui.cjs +1 -1
- package/ui.js +2 -2
package/{dispense-registration-manager-CyWSYz58.cjs → dispense-registration-manager-BSepm8-N.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Ve=Object.defineProperty;var Ye=(e,t,r)=>t in e?Ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var d=(e,t,r)=>(Ye(e,typeof t!="symbol"?t+"":t,r),r);const s=require("@kosdev-code/kos-ui-sdk");require("react");var u=(e=>(e.IngredientLoader="kos.ingredient.loader",e.IngredientMapper="kos.ingredient.mapper",e.IngredientIndex="kos.ingredient.index",e.IngredientTypeMapper="kos.ingredient.type.mapper",e.HolderTypeMapper="kos.holder.type.mapper",e.HolderMapper="kos.holder.mapper",e.HolderIndex="kos.holder.index",e.HolderIngredientMapper="kos.holder.ingredient.mapper",e.AvailabilityMapper="kos.availability.mapper",e.AvailabilityLoader="kos.availability.loader",e.SelectedPourableMapper="kos.selected.pourable.mapper",e.AssemblyMapper="kos.assembly.mapper",e.BoardMapper="kos.board.mapper",e.BoardIndex="kos.board.index",e.PumpIndex="kos.pump.index",e))(u||{}),I=(e=>(e.Nozzle="nozzle-model",e.Availability="availability-model",e.Holder="holder-model",e.HolderContainer="holder-container-model",e.IngredientContainer="ingredient-container-model",e.Ingredient="ingredient-model",e.Pump="pump-model",e.PumpContainer="pump-container-model",e))(I||{}),Xe=Object.defineProperty,Ze=Object.getOwnPropertyDescriptor,Je=(e,t,r,n)=>{for(var i=n>1?void 0:n?Ze(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Xe(t,r,i),i};const O="ingredient-model";let Q=class{constructor(e,{name:t,type:r,data:n,ingredientId:i,...o}){d(this,"id");d(this,"ingredientId");d(this,"name");d(this,"type");d(this,"data");this.id=e,this.ingredientId=i,this.name=t,this.type=r,this.data=n,Object.assign(this,o)}updateModel({name:e,type:t,data:r,ingredientId:n,...i}){this.name=e,this.type=t,this.ingredientId=n,this.data=r,Object.assign(this,i)}};Q=Je([s.kosModel(O)],Q);const ne={registration:{[O]:{class:Q,singleton:!1}},type:O,predicate:s.isKosModel(O),factory:s.Kos.Factory.create(O)},{URL:_e}=s.resolveServiceUrl("INGREDIENT_SERVICE"),{getOne:qe}=s.ServiceFactory.build({basePath:`${_e}/api/ext/dispense/ingredients`}),Ee=async()=>await qe({urlOverride:`${_e}/api/ext/dispense/ingredients`});var We=Object.defineProperty,Qe=Object.getOwnPropertyDescriptor,Oe=(e,t,r,n)=>{for(var i=n>1?void 0:n?Qe(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&We(t,r,i),i};const w="ingredient-container-model",et=s.KosLog.createLogger({name:"ingredient-container-model"});let j=class{constructor(e,t){d(this,"id");d(this,"ingredients");this.id=e,this.ingredients=new s.KosModelContainer({indexMap:{ingredientType:"type"},extensionId:u.IngredientIndex,parentId:e})}updateModel(){}getIngredientsByType(e){return this.ingredients.getIndexByKey("ingredientType",e)}async load(e){var i;et.debug(`loading ingredient container ${this.id}`);const t=await Ee();if((t==null?void 0:t.status)!==200)throw new Error("Failed to load ingredients");const r=await s.KosExtensionUtils.executeLoaderExtension({context:e,extension:u.IngredientLoader}),n=(t==null?void 0:t.data)??{};for(const o of Object.keys(n))for(const a of((i=t==null?void 0:t.data)==null?void 0:i[o])||[]){const c=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.IngredientMapper,data:a,contextData:r}),l=await s.KosExtensionUtils.executePropertyMapperExtension({extension:u.IngredientTypeMapper,data:a,contextData:r}),g={...a,type:l||a.type,...c,data:c},h=ne.factory(a.id)(g);this.ingredients.addModel(h)}}};Oe([s.kosChild],j.prototype,"ingredients",2);j=Oe([s.kosModel(w)],j);const ie={registration:{[w]:{class:j,singleton:!0}},type:w,predicate:s.isKosModel(w),factory:s.Kos.Singleton.create(w)},{URL:Y}=s.resolveServiceUrl("HOLDER_SERVICE"),{getAll:tt,postModel:we,deleteModel:rt}=s.ServiceFactory.build({basePath:`${Y}/api/kos/holders`}),nt=s.KosLog.createLogger({name:"holder-service",group:"Services"}),it=async()=>await tt({}),Ce=async(e,t)=>{if(!e||!t)throw new Error("Missing holderPath or ingredientId");return await we({model:{holderPath:e,ingredientId:t},urlOverride:`${Y}/api/ext/dispense/assignments`})},$e=async e=>{if(!e)throw new Error("Missing holderPath");return await rt({id:e,urlOverride:`${Y}/api/ext/dispense/assignments/${e}`})},Se=async e=>{if(!e)throw new Error("Missing holderPath");return nt.debug(`sending POST request to /api/ext/dispense/pumpEvents/replaceLine/${e}`),await we({model:{},urlOverride:`${Y}/api/ext/dispense/pumpEvents/replaceLine/${e}`})},{URL:k}=s.resolveServiceUrl("ASSIGNMENT_SERVICE"),{getAll:st,postModel:Re,deleteModel:ot}=s.ServiceFactory.build({destinationAddress:"",basePath:`${k}/api/ext/dispense/assignments`}),H=window.kosUseFos,at=async()=>await st({fos:H}),xe=async(e,t)=>{var i,o,a,c;const r=JSON.stringify(t),n=`${k}/api/ext/dispense/assignments`;try{const l=await Re({model:{holderPath:e,factoryJson:r},urlOverride:n});return(l==null?void 0:l.status)===200&&((i=l==null?void 0:l.data)!=null&&i.error)?[l.data.error||"unknownError",l.data]:[void 0,l==null?void 0:l.data]}catch(l){if(l instanceof s.FetchError)return[((a=(o=l.payload)==null?void 0:o.data)==null?void 0:a.error)||"unknownError",(c=l.payload)==null?void 0:c.data]}return["unknownError",void 0]},dt=async e=>{const t=H?`${k}/api/ingredients/assignments/${e.holderPath}`:`${k}/api/ext/dispense/assignments`;return await Re({model:{...e,fuelGauge:680},fos:H,urlOverride:t})},lt=async e=>await ot({id:e,fos:H});var ct=Object.defineProperty,pt=Object.getOwnPropertyDescriptor,X=(e,t,r,n)=>{for(var i=n>1?void 0:n?pt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&ct(t,r,i),i};const C=I.Holder,fe=s.KosLog.createLogger({name:"holder-model"});s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("holder",async e=>{const t=[];return t.push(...e.data.holderPaths),t});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("pump",async e=>{if(e.data.pumpPath){const{model:t}=s.getKosModelSync(e.data.pumpPath);if(t){const r=t.ingredientId?s.getKosModelSync(t.ingredientId).model:void 0;return{ingredientId:t.ingredientId,ingredientName:(r==null?void 0:r.displayName)??((r==null?void 0:r.name)||""),childPumpName:t.name}}}return{}});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("holder",async e=>e.data.holderNames.length>0?{holderName:e.data.holderNames[0]||""}:{});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("container",async e=>{if(e.data.ingredients.length>0){const t=e.data.ingredients[0],{model:r}=s.getKosModelSync(t);return{ingredientName:(r==null?void 0:r.displayName)??((r==null?void 0:r.name)||""),ingredients:e.data.ingredients?e.data.ingredients:[],unknonwnIngredientId:e.data.unknonwnIngredientId??""}}return{}});class gt extends Error{constructor(r,n){super(n);d(this,"type");this.name="AssignmentError",this.type=r}}let P=class{constructor(e,{path:t,name:r,ingredientSource:n,ingredientId:i,ingredientType:o,slice:a,group:c,data:l,enjoyByDate:g},h){d(this,"id");d(this,"path");d(this,"name");d(this,"ingredientId");d(this,"ingredientType");d(this,"ingredientSource");d(this,"group");d(this,"slice");d(this,"logger");d(this,"data");d(this,"enjoyByDate");d(this,"pumps");d(this,"ingredientContainer");d(this,"troubleContainer");this.id=e,this.path=t,this.name=r,this.ingredientType=o,this.ingredientSource=n,this.ingredientId=i,this.group=c,this.slice=a,this.enjoyByDate=g,this.data=l,this.pumps=new s.KosModelContainer({parentId:e,sortKey:"path"}),this.logger=h.logger}updateModel({path:e,name:t,ingredientSource:r,ingredientId:n,ingredientType:i,group:o,slice:a,enjoyByDate:c,data:l}){this.path=e,this.name=t,this.ingredientId=n,this.ingredientType=i,this.ingredientSource=r,this.enjoyByDate=c,this.slice=a,this.group=o,this.data=l}get hasEnjoyByDate(){return!!this.enjoyByDate&&!this.unassigned}get hasEnjoyByWarning(){var e;return((e=this.troublesByType.EnjoyByTrouble)==null?void 0:e.length)>0}get nozzlePaths(){return this.pumps.data.map(e=>e.nozzlePath)}async cancelPour(){await Promise.all(this.pumps.data.filter(e=>e.isPouring).map(e=>e.cancelPour()))}get canPour(){return this.pumps.data.every(e=>e.canPour)}get isPouring(){const e=this.pumps.data.some(t=>t.isPouring);return this.logger.debug(`isPouring: ${!!e}`),e}async performIntent(e){const t=typeof e=="string"?e:e.intent,r=typeof e=="string"?void 0:e.pumpPath,n=r?this.pumps.getModel(r):this.pumps.data[0];return n==null?void 0:n.performIntent({intent:t})}get pourState(){return this.pumps.data.reduce((t,r)=>r.pouringState?r.pouringState:t,"")}get nozzlePath(){var e;return(e=this.pumps.data[0])==null?void 0:e.nozzlePath}get pumpPaths(){return this.pumps.data.map(e=>e.id)}get sortedPumps(){return this.pumps.data.sort((e,t)=>e.virtual&&!t.virtual?-1:!e.virtual&&t.virtual?1:e.name.localeCompare(t.name))}get ingredient(){var t;return this.ingredientId?(t=this.ingredientContainer)==null?void 0:t.ingredients.getModel(this.ingredientId):void 0}get ingredientName(){return this.ingredient?this.ingredient.displayName??this.ingredient.name:this.ingredientId?"unknown":""}get previousIngredient(){var t;return this.prevIngredientId?(t=this.ingredientContainer)==null?void 0:t.ingredients.getModel(this.prevIngredientId):void 0}get previousIngredientName(){return this.previousIngredient?this.previousIngredient.displayName??this.previousIngredient.name:this.prevIngredientId?"unknown":""}get troubles(){return this.troubleContainer.troubles.getIndexByKey("byIface",this.path).sort((e,t)=>t.rank-e.rank)}get troubleStatus(){return""}get troublesByType(){return this.troubles.reduce(s.troubleByTypeReducer,{})}get prevIngredientId(){var e,t;return(t=(e=this.pumps.data)==null?void 0:e[0])==null?void 0:t.prevIngredientId}get unassigned(){return(!this.ingredientId||this.ingredientId==="0")&&(!this.prevIngredientId||this.prevIngredientId==="0")}get removed(){return(!this.ingredientId||this.ingredientId==="0")&&this.prevIngredientId!==void 0&&this.prevIngredientId!=="0"}get maxVolume(){return this.slice.maxVolMl??0}get remainingVolume(){return this.slice.currentVolMl??0}get hasMaxVolume(){return this.slice.maxVolMl!==void 0}get hasRemainingVolume(){return this.slice.currentVolMl!==void 0}get fillPercent(){return this.remainingVolume<=0?0:Math.floor((this.remainingVolume||1)/(this.maxVolume||1)*100)}get hasFuelGuage(){return this.hasMaxVolume&&this.hasRemainingVolume}updateIngredient(e){this.ingredientId!==e&&s.kosAction(()=>{this.ingredientId=e})}async resolveIntentVolume(e){const t=this.pumps.data[0];return t?t.resolveIntentVolume(e):{volume:-1}}async overrideRfidCode(e){if(!e)throw new Error("Invalid override");try{const[t,r]=await xe(this.path,e);if(t)throw new gt(t,`Failed to perform rfid override on holder ${this.id}`);return s.kosAction(()=>{this.ingredientId=r==null?void 0:r.ingredientId}),r}catch(t){throw fe.error(`Failed to perform rfid override on holder ${this.id}`,t),t}}async assignIngredient(e){try{e?await Ce(this.path,e):await $e(this.path),s.kosAction(()=>{this.ingredientId=e})}catch(t){throw fe.error(`Failed to perform assign ingredient to holder ${this.id}`,t),t}}async replaceLine(){await Se(this.path)}};X([s.kosChild],P.prototype,"pumps",2);X([s.kosDependency({modelType:ie.type})],P.prototype,"ingredientContainer",2);X([s.kosDependency({modelType:s.TroubleContainer.type})],P.prototype,"troubleContainer",2);P=X([s.kosModel(C)],P);const se={registration:{[C]:{class:P,singleton:!1}},type:C,predicate:s.isKosModel(C),factory:s.Kos.Factory.create(C)},ut=async(e,t)=>{var be;const r=s.ExtensionManager.propertyMapper.executeMapper(u.HolderIngredientMapper,t),n=s.ExtensionManager.propertyMapper.executeMapper(u.HolderTypeMapper,t)||t.ingType,i=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.HolderMapper,data:t,contextData:{}}),{name:o,path:a,ingredientId:c,ingType:l,ingSource:g,slice:h,...E}=t,y={...E,...i},f=h||{pos:0},K={name:o,path:a,ingredientId:r||c,ingredientType:n||l,ingredientSource:g,enjoyByDate:(be=t.container)!=null&&be.enjoyByDate?new Date(t.container.enjoyByDate):void 0,slice:f,group:e,data:y};return se.factory(t.path)(K)},{URL:ht}=s.resolveServiceUrl("ASSEMBLY_SERVICE"),{getOne:yt}=s.ServiceFactory.build({basePath:`${ht}/api/kos/device/assemblies`}),mt=s.KosLog.createLogger({name:"assembly-service",group:"Services"}),oe=async()=>(mt.debug("sending GET for assembly"),await yt({}));var It=Object.defineProperty,vt=Object.getOwnPropertyDescriptor,Z=(e,t,r,n)=>{for(var i=n>1?void 0:n?vt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&It(t,r,i),i};const $="board-container-model",ae="/kos/hardware/board/linked",de="/kos/hardware/board/unlinked";exports.BoardContainerModel=class{constructor(t,r,n){d(this,"id");d(this,"logger");d(this,"models");this.id=t,this.logger=n.logger,this.models=new s.KosModelContainer({parentId:t,extensionId:u.BoardIndex})}get boardList(){return this.models.data}updateModel(){}addModel(t){this.models.addModel(t)}removeModel(t){this.models.removeModel(t)}updateBoard(t){const r=t.path,n=this.models.getModel(r);if(!n){this.logger.warn(`board ${r} not found`);return}n.updateModel(t)}handleBoardLinkEvent(t){this.logger.debug(`handling ${ae} event ${t}`),t?this.updateBoard(t):this.logger.debug("- boardLinkEvent is undefined")}handleBoardUnlinkEvent(t){this.logger.debug(`handling ${de} event ${t}`),t?this.updateBoard(t):this.logger.debug("- boardLinkEvent is undefined")}};Z([s.kosChild],exports.BoardContainerModel.prototype,"models",2);Z([s.kosTopicHandler({lifecycle:s.DependencyLifecycle.INIT,topic:ae,websocket:!0})],exports.BoardContainerModel.prototype,"handleBoardLinkEvent",1);Z([s.kosTopicHandler({lifecycle:s.DependencyLifecycle.INIT,topic:de,websocket:!0})],exports.BoardContainerModel.prototype,"handleBoardUnlinkEvent",1);exports.BoardContainerModel=Z([s.kosModel($)],exports.BoardContainerModel);const bt=async e=>{const t=e.data.boardPath,{model:r}=s.getKosModelSync(t);return{boardName:(r==null?void 0:r.name)||""}};var ft=Object.defineProperty,Pt=Object.getOwnPropertyDescriptor,Te=(e,t,r,n)=>{for(var i=n>1?void 0:n?Pt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&ft(t,r,i),i};const S=I.PumpContainer;var le=(e=>(e.byBoard="byBoard",e.byType="byType",e.byNozzle="byNozzle",e))(le||{});let F=class{constructor(e,t){d(this,"id");d(this,"pumps");this.id=e,this.pumps=new s.KosModelContainer({indexMap:{byNozzle:r=>r.nozzlePaths,byBoard:r=>r.boardPath,byType:"type"},parentId:e,extensionId:u.PumpIndex})}get pumpModels(){return this.pumps.data}get pumpPaths(){return this.pumpModels.map(e=>e.path)}addModel(e){this.pumps.addModel(e)}removeModel(e){this.pumps.removeModel(e)}getModel(e){return this.pumps.getModel(e)}get models(){return this.pumps}get data(){return this.pumps.data}updateModel(){}async load(){}};Te([s.kosChild],F.prototype,"pumps",2);F=Te([s.kosModel(S)],F);const J={registration:{[S]:{class:F,singleton:!0}},type:S,predicate:s.isKosModel(S),factory:s.Kos.Singleton.create(S)},Ae=async e=>{const t=[],{model:r}=await s.getKosModel(e);return r&&(t.push(r.boardPath),t.push(r.nozzlePath),t.push(r.holderPath)),t},Mt=async e=>{const t=[],r=e.data.pumpPath;t.push(r);const n=await Ae(r);return[...t,...n]},_t=async e=>{const t=[],r=e.data.boardPath;t.push(e.data.boardPath);const n=await s.getKosModel(J.type);if(n!=null&&n.model){const o=n.model.models.getIndexByKey(le.byBoard,r).map(c=>Ae(c.path));(await Promise.allSettled(o)).forEach(c=>{c.status==="fulfilled"&&c.value.forEach(l=>t.push(l))})}return Array.from(new Set(t))};var Et=Object.defineProperty,Ot=Object.getOwnPropertyDescriptor,wt=(e,t,r,n)=>{for(var i=n>1?void 0:n?Ot(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Et(t,r,i),i};const R="board-model",Pe=(e,t)=>{const{type:r,name:n,path:i,linked:o,instanceId:a,link:c,...l}=e;t.type=r,t.name=n,t.path=i,t.linked=o,t.link=Object.freeze(c),t.instanceId=a,Object.assign(t,l)};s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("board",_t);s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("board",bt);let ee=class{constructor(e,t,r){d(this,"id");d(this,"type");d(this,"name");d(this,"path");d(this,"linked");d(this,"instanceId");d(this,"logger");this.id=e,this.logger=r.logger,Pe(t,this)}updateModel(e){Pe(e,this)}async init(){this.logger.debug(`initializing board ${this.id}`)}async load(){this.logger.debug(`loading board ${this.id}`)}};ee=wt([s.kosModel(R)],ee);const ce={registration:{[R]:{class:ee,singleton:!1}},type:R,predicate:s.isKosModel(R),factory:s.Kos.Factory.create(R)},pe={registration:{[$]:{class:exports.BoardContainerModel,singleton:!0},...ce.registration},type:$,predicate:s.isKosModel($),factory:s.Kos.Singleton.create($)};var Ct=Object.defineProperty,$t=Object.getOwnPropertyDescriptor,q=(e,t,r,n)=>{for(var i=n>1?void 0:n?$t(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ct(t,r,i),i};const x=I.HolderContainer,St="/kos/insertion/insert/start",Rt="/kos/insertion/insert/complete",xt="/kos/insertion/insert/update",Tt="/kos/insertion/remove",At="/kos/pumpEvent/replaceLine",Dt="/kos/handle/*";let M=class{constructor(e,t,r){d(this,"id");d(this,"holders");d(this,"logger");this.id=e,this.holders=new s.KosModelContainer({indexMap:{nozzle:n=>n.nozzlePaths,group:"group"},parentId:e,extensionId:u.HolderIndex}),this.logger=r.logger}updateModel(){}handleHolderEvents(e){var r,n,i;s.KosLog.ifDebug(()=>this.logger.debug("Received holder change event",JSON.stringify(e)));const t=this.holders.getModel(e.path);t&&(this.logger.info(`Received change event for holder ${t.path}. Updating fuel gauge data.`),t.slice.currentVolMl=(r=e.slice)==null?void 0:r.currentVolMl,t.slice.maxVolMl=(n=e.slice)==null?void 0:n.maxVolMl,(i=e==null?void 0:e.container)!=null&&i.enjoyByDate?t.enjoyByDate=new Date(e.container.enjoyByDate):t.enjoyByDate=void 0)}handleInsertion(e){s.KosLog.ifDebug(()=>this.logger.debug("Received insertion event",JSON.stringify(e))),(Array.isArray(e)?e:[e]).forEach(r=>{s.kosAction(()=>{var o,a,c;const n=r.ingredientId,i=this.holders.getModel(r.path);i&&(this.logger.info(`Received insertion event for holder ${i.path}`),i.updateIngredient(n),i.slice.currentVolMl=(o=r.slice)==null?void 0:o.currentVolMl,i.slice.maxVolMl=(a=r.slice)==null?void 0:a.maxVolMl,(c=r==null?void 0:r.container)!=null&&c.enjoyByDate?i.enjoyByDate=new Date(r.container.enjoyByDate):i.enjoyByDate=void 0,r.pumps.forEach(l=>{s.kosAction(()=>{const g=i.pumps.getModel(l.path);g&&(g.ingredientId=l.ingredientId,g.inserted=l.inserted,g.prevIngredientId=l.prevIngredientId)})}))})})}};q([s.kosChild],M.prototype,"holders",2);q([s.kosTopicHandler({topic:Dt,websocket:!0,condition:(e,t)=>t.holders.getModel(e.path)!==void 0})],M.prototype,"handleHolderEvents",1);q([s.kosTopicHandler({topic:[St,Rt,xt,Tt,At],websocket:!0})],M.prototype,"handleInsertion",1);M=q([s.kosModel(x)],M);const ge={registration:{[x]:{class:M,singleton:!0}},type:x,predicate:s.isKosModel(x),factory:s.Kos.Singleton.create(x)},Nt=s.KosLog.createLogger({name:"board-utils"}),zt=async e=>{const t=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.BoardMapper,data:e,contextData:{}}),{type:r,name:n,path:i,linked:o,instanceId:a,...c}=e,l={...c,...t},g={type:r,name:n,path:i,linked:o,instanceId:a,...l},h=ce.factory(e.path)(g);return h.updateModel(g),h},Lt=e=>async t=>{Nt.debug(`adding board ${t.name}`);const r=await zt(t);e.addModel(r)};var p=(e=>(e.IDLE="IDLE",e.POURING="POURING",e.POUR_STARTING="POUR_STARTING",e.POUR_CANCELING="POUR_CANCELING",e.POUR_CANCELED="POUR_CANCELED",e.POUR_COMPLETE="POUR_COMPLETE",e))(p||{});const{URL:ue}=s.resolveServiceUrl("PUMP_SERVICE"),{postModel:Bt,getOne:Kt}=s.ServiceFactory.build({basePath:`${ue}/api/kos/holders`});s.KosLog.createLogger({name:"pump-service",group:"Services"});const De=async({intent:e,pumpId:t,tracker:r})=>{const n=`${ue}/api/ext/dispense/nozzle/nozzle/pipeline/ingredient/pour/${t}/${e}`,i=await Bt({model:{},urlOverride:n,tracker:r});return i!=null&&i.data&&s.FutureManager.initiateFuture(i.data),i},Ne=async(e,t)=>{const r=`${ue}/api/ext/dispense/nozzle/nozzle/pipeline/ingredient/intent/${e}/${t}/volume`,n=await Kt({urlOverride:r});return n!=null&&n.data?n.data:{volume:-1}};var Ut=Object.defineProperty,jt=Object.getOwnPropertyDescriptor,he=(e,t,r,n)=>{for(var i=n>1?void 0:n?jt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ut(t,r,i),i};const T=I.Pump;s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("pump",Mt);let z=class{constructor(e,t){d(this,"id");d(this,"inserted");d(this,"type");d(this,"virtual");d(this,"ingredientId");d(this,"holderPath");d(this,"boardPath");d(this,"nozzlePath");d(this,"childPump");d(this,"name");d(this,"path");d(this,"prevIngredientId");d(this,"troubleContainer");d(this,"futureHandler");d(this,"currentState",p.IDLE);this.id=e;const{inserted:r,holderPath:n,boardPath:i,nozzlePath:o,name:a,path:c,childPump:l,virtual:g,prevIngredientId:h,...E}=t;this.inserted=r,this.type=t.type,this.ingredientId=t.ingredientId,this.holderPath=n,this.boardPath=i,this.nozzlePath=o,this.name=a,this.path=c,this.childPump=!!l,this.virtual=!!g,this.prevIngredientId=h,Object.assign(this,E),this.futureHandler=new s.FutureHandler(this)}updateModel(e){const{inserted:t,holderPath:r,boardPath:n,nozzlePath:i,childPump:o,name:a,path:c,...l}=e;this.inserted=t,this.type=e.type,this.ingredientId=e.ingredientId,this.holderPath=r,this.boardPath=n,this.nozzlePath=i,this.childPump=this.childPump?this.childPump:!!o,this.name=a,this.path=c,this.prevIngredientId=e.prevIngredientId,Object.assign(this,l)}get troubles(){return this.troubleContainer.troubles.getIndexByKey("byIface",this.path).sort((e,t)=>t.rank-e.rank)}get troubleStatus(){return""}get troublesByType(){return this.troubles.reduce(s.troubleByTypeReducer,{})}get pouringState(){var e;return((e=this.future)==null?void 0:e.endState)||""}get isPouring(){var e;return!!(this.future&&!((e=this.future)!=null&&e.endState))||this.currentState===p.POUR_STARTING||this.currentState===p.POURING}get canPour(){return!!this.ingredientId&&!this.isPouring}onFutureUpdate(e){e.endState&&s.kosAction(()=>{this.currentState=p.IDLE})}async cancelPour(){var e;this.currentState===p.POURING||this.currentState===p.POUR_STARTING?(this.currentState=p.POUR_CANCELING,await((e=this.future)==null?void 0:e.cancelFuture()),s.kosAction(()=>{this.currentState=p.IDLE})):s.KosLog.warn(`Cannot cancel pour in state ${this.currentState}`)}get future(){return this.futureHandler.future}async resolveIntentVolume(e){return await Ne(this.path,e)}async performIntent(e,t){const r=typeof e=="string"?e:e.intent;if(!r)throw new Error("No intent provided");try{if(this.currentState===p.IDLE){if(this.currentState=p.POUR_STARTING,!t)throw new Error("No tracker provided");const n=await De({tracker:t,intent:r,pumpId:this.path});return this.currentState===p.POUR_STARTING&&s.kosAction(()=>{this.currentState=p.POURING}),n==null?void 0:n.data}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(n){throw s.KosLog.error(n),this.currentState=p.IDLE,n}}};he([s.kosDependency({modelType:s.TroubleContainer.type})],z.prototype,"troubleContainer",2);he([s.kosFuture()],z.prototype,"performIntent",1);z=he([s.kosModel(T)],z);const ye={registration:{[T]:{class:z,singleton:!1}},type:T,predicate:s.isKosModel(T),factory:s.Kos.Factory.create(T)},kt=s.KosLog.createLogger({name:"pump-utils"}),Ht=(e,t)=>{const r=(t.pumps??[]).length>1,n={boardPath:t.boardPath,holderPath:t.holderPath,ingredientId:t.ingredientId,childPump:!!t.childPump,virtual:r,inserted:t.inserted,name:t.name,path:t.path,type:t.type,nozzlePath:e,prevIngredientId:t.prevIngredientId},i=ye.factory(t.path)(n);return i.updateModel(n),i},ze=e=>t=>r=>n=>{var c;kt.debug(`adding pump ${n.name}`);const i=Ht(r.path,n);e.addModel(i);const o=i.holderPath,a=t.holders.getModel(o);a==null||a.pumps.addModel(i),a!=null&&a.nozzlePaths.includes(r.path)||a==null||a.nozzlePaths.push(r.path),(c=n==null?void 0:n.pumps)==null||c.forEach(l=>{const g=i.holderPath,h={...l,childPump:!0,holderPath:g,ingredientId:i.ingredientId};ze(e)(t)(r)(h)})};var Ft=Object.defineProperty,Gt=Object.getOwnPropertyDescriptor,L=(e,t,r,n)=>{for(var i=n>1?void 0:n?Gt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ft(t,r,i),i};const A="assembly-model",Vt="assembly-data";let v=class{constructor(e,t,r){d(this,"id");d(this,"_nozzlePaths",new Set);d(this,"troubleContainer");d(this,"holderContainer");d(this,"boardContainer");d(this,"pumpContainer");d(this,"logger");this.id=e,this.holderContainer=ge.factory({}),this.boardContainer=pe.factory({}),this.pumpContainer=J.factory({}),this.logger=r.logger}updateModel(e){}get allHolders(){return this.holderContainer.holders.data}get holderGroups(){return this.holderContainer.holders.getIndexKeys("group")}get nozzlePaths(){return Array.from(this._nozzlePaths)}getHoldersByGroup(e){return this.holderContainer.holders.getIndexByKey("group",e)}getHoldersByNozzle(e){return this.holderContainer.holders.getIndexByKey("nozzle",e)}get pumpsByNozzle(){return this.pumpContainer.models.idx.byNozzle}get pumpPaths(){return this.pumpContainer.models.data.map(e=>e.path)}get boards(){return this.boardContainer.boardList}async init(){this.logger.debug(`initializing assembly ${this.id}`)}async ready(){var e;(e=this.troubleContainer)==null||e.troubles.increment()}async load(e){this.logger.debug(`loading assembly ${this.id}`);const t=await oe();if((t==null?void 0:t.status)===200){const r=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.AssemblyMapper,data:t.data,contextData:{}});e.set(Vt,r),Object.assign(this,r),Object.entries(r).forEach(([n,i])=>{s.isKosDataModel(i)&&(this.logger.debug(`adding child model ${n} from extension data`),this[s.ChildModels][n]=!0)});for await(const n of t.data.assemblies){const{boards:i,holders:o,nozzles:a,core:c,name:l,path:g,...h}=n;this.logger.debug(`adding assembly ${l}`),Object.keys(h).forEach(y=>{s.KosFeatureFlags.enableFeature(y)});for await(const y of i)this.logger.debug(`adding board ${y.name}`),await Lt(this.boardContainer)(y);for await(const[y,f]of Object.entries(o))for await(const K of f){this.logger.debug(`adding holder ${K.name}`);const ve=await ut(y,K);this.holderContainer.holders.addModel(ve)}const E=ze(this.pumpContainer)(this.holderContainer);a.forEach(y=>{this._nozzlePaths.add(y.path);const f=E(y);y.pumps.forEach(f)})}}}};L([s.kosDependency({modelType:"trouble-container-model"})],v.prototype,"troubleContainer",2);L([s.kosChild],v.prototype,"holderContainer",2);L([s.kosChild],v.prototype,"boardContainer",2);L([s.kosChild],v.prototype,"pumpContainer",2);v=L([s.kosModel(A)],v);const me={registration:{[A]:{class:v,singleton:!0}},type:A,predicate:s.isKosModel(A),factory:s.Kos.Singleton.create(A)};var Yt=Object.defineProperty,Xt=Object.getOwnPropertyDescriptor,Zt=(e,t,r,n)=>{for(var i=n>1?void 0:n?Xt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Yt(t,r,i),i};const D=I.Availability;let te=class{constructor(e,t,r){d(this,"id");d(this,"data");d(this,"available");d(this,"visible");d(this,"groupId");d(this,"rawId");d(this,"altId");d(this,"type");d(this,"note");d(this,"taggedIds");d(this,"parentId");d(this,"logger");this.id=e,this.taggedIds=t.taggedIds||[],this.logger=r.logger,this.available=t.available,this.visible=t.visible,this.groupId=t.groupId,this.rawId=t.rawId,this.altId=t.altId,this.type=t.type,this.parentId=t.kosParentId,this.data=t.data,this.note=t.note}updateModel(e){this.taggedIds=e.taggedIds||[],this.available=e.available,this.visible=e.visible,this.groupId=e.groupId,this.rawId=e.rawId,this.altId=e.altId,this.type=e.type,this.data=e.data}updateAvailability(e){this.available=e}};te=Zt([s.kosParentAware(),s.kosModel(D)],te);const G={registration:{[D]:{class:te,singleton:!1}},type:D,predicate:s.isKosModel(D),factory:s.Kos.Factory.create(D)},{URL:_}=s.resolveServiceUrl("NOZZLE_SERVICE"),{postModel:Ie,deleteModel:Jt,getOne:qt}=s.ServiceFactory.build({basePath:`${_}/api/nozzle`}),Le=async(e,t)=>{const r=await Ie({model:{},urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/pour`,ordered:!0,tracker:t});return r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r},Be=async(e,t,r)=>{const n=await Ie({model:{},urlOverride:`${_}/api/ext/dispense/nozzle/${t}/pipeline/beverage/fixed/${e}`,ordered:!0,tracker:r});return n!=null&&n.data&&s.FutureManager.initiateFuture(n.data),n},Ke=async e=>await qt({urlOverride:`${_}${e}/pipeline/beverage/availability`}),Ue=async(e,t)=>await Ie({model:t,urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/select`}),je=async e=>await Jt({id:e,urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/select`});var Wt=Object.defineProperty,Qt=Object.getOwnPropertyDescriptor,B=(e,t,r,n)=>{for(var i=n>1?void 0:n?Qt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Wt(t,r,i),i};const N=I.Nozzle,er=s.createPropKey("beverageTopicPrefix"),U=e=>e.onPourStart!==void 0&&e.onPourCancel!==void 0&&e.onPourProgress!==void 0,Me="/kos/nozzle/pour/started",tr="/kos/nozzle/pour/progress",rr="/kos/nozzle/pour/cancel";let b=class{constructor(e,t,r){d(this,"id");d(this,"path");d(this,"logger");d(this,"name");d(this,"_selectedBeverage");d(this,"_selectedBrand");d(this,"_additionalItems");d(this,"_availabilityItems");d(this,"futureHandler");d(this,"currentState",p.IDLE);d(this,"beverageTopicPrefix");d(this,"topicPrefix");d(this,"urlPrefix");this.id=e,this.path=t.path,this.name=t.name,this.beverageTopicPrefix=t.beverageTopicPrefix,this.topicPrefix=t.topicPrefix,this.urlPrefix=t.urlPrefix,this._selectedBeverage=void 0,this._selectedBrand=void 0,this._additionalItems=[],this.futureHandler=new s.MultipleFutureHandler(this),this._availabilityItems=new s.KosModelContainer({indexMap:{byGroup:"groupId",byParent:"parentId"},parentId:e}),this.logger=r.logger}get beverages(){return this._availabilityItems.getIndexByKey("byGroup","beverages")}get brands(){return this._availabilityItems.getIndexByKey("byGroup","brands")}get visibleBrands(){return this.brands.filter(e=>e.visible)}get visibleBeverages(){return this.beverages.filter(e=>e.visible)}get isPouring(){var e;return!!(this.futureHandler.getFuture()&&!((e=this.futureHandler.getFuture())!=null&&e.endState))||this.currentState===p.POUR_STARTING||this.currentState===p.POURING||this.currentState===p.POUR_CANCELING}get canPour(){return!!this._selectedBeverage&&this._selectedBeverage.available&&this.currentState===p.IDLE}get selectedPourable(){return{beverage:this._selectedBeverage,additional:this._additionalItems}}get future(){return this.futureHandler.getFuture()}get pourProgress(){var e;return((e=this.future)==null?void 0:e.progress)??0}updateModel(){}setSelectedBrand(e){this._selectedBrand=e,this._selectedBeverage=void 0}get selectedBrand(){return this._selectedBrand}async setSelectedPourable({beverage:e,additional:t,context:r}){if(!e){const c=await je(this.name);if((c==null?void 0:c.status)!==200)throw new Error("Failed to clear pourable");this._selectedBeverage=void 0;return}this._selectedBeverage=e,this._additionalItems=t;const n=await s.ExtensionManager.dataMapper.executeMapper(u.SelectedPourableMapper,{beverage:e,additional:t,context:r}),i={bevId:e.rawId};(!n||Object.keys(n).length===0)&&this.logger.info(`No selected pourable mapper defined, using the default payload ${i}`);const o=n??i,a=await Ue(this.name,o);if((a==null?void 0:a.status)!==200)throw new Error("Failed to select pourable")}getGroupAvailabilityItems(e){return this._availabilityItems.getIndexByKey("byGroup",e)}getAvailabilityByParent(e){return this._availabilityItems.getIndexByKey("byParent",e)}updateIfCurrent(e,t){this.currentState===e&&s.kosAction(()=>{this.currentState=t})}onFutureUpdate(e){s.getAllKosCompanionModels(this).forEach(r=>{U(r)&&r.onPourProgress(e)});const t={nozzleId:this.id,progress:e.progress,status:e.status,clientData:e.clientData,futureId:e.futureId,remainingTimeMs:e.remainingTimeMs,endState:e.endState,reason:e.reason,timeRemaining:e.timeRemaining};s.EventBus.publish(tr,t)}async pour(e){try{if(this.currentState===p.IDLE){if(this.updateIfCurrent(p.IDLE,p.POUR_STARTING),!e)throw new Error("No tracker provided");const t=await Le(this.name,e);this.updateIfCurrent(p.POUR_STARTING,p.POURING),s.getAllKosCompanionModels(this).forEach(n=>{var i;U(n)&&((i=n.onPourStart)==null||i.call(n))});const r={nozzleId:this.id,type:"free"};return s.EventBus.publish(Me,r),t}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(t){throw this.logger.error(t),this.currentState=p.IDLE,t}}async fixedPour(e,t){try{if(this.currentState===p.IDLE){if(this.currentState=p.POUR_STARTING,!t)throw new Error("No tracker provided");const r=await Be(e,this.name,t);this.currentState===p.POUR_STARTING&&s.kosAction(()=>{this.currentState=p.POURING}),s.getAllKosCompanionModels(this).forEach(i=>{var o;U(i)&&((o=i.onPourStart)==null||o.call(i))});const n={nozzleId:this.id,type:"fixed"};return s.EventBus.publish(Me,n),r}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(r){throw this.logger.error(r),this.currentState=p.IDLE,r}}async cancelPour(){var e;if(this.currentState===p.POURING||this.currentState===p.POUR_STARTING){this.currentState=p.POUR_CANCELING,await((e=this.futureHandler.getFuture())==null?void 0:e.cancelFuture()),s.kosAction(()=>{this.currentState=p.IDLE}),s.getAllKosCompanionModels(this).forEach(r=>{var n;U(r)&&((n=r.onPourCancel)==null||n.call(r))});const t={nozzleId:this.id};s.EventBus.publish(rr,t)}else this.logger.warn(`Cannot cancel pour in state ${this.currentState}`)}updateGroupMembers(){this._availabilityItems.data.forEach(e=>{(e.taggedIds||[]).forEach(r=>{const n=this._availabilityItems.data.find(i=>i.rawId===r);n&&n.parentId!==e.id&&(n.parentId=e.id,this._availabilityItems.updateModel(n))})})}async load(e){var n,i;this.logger.debug(`loading nozzle ${this.id}`);const t=await Ke(this.urlPrefix);if((t==null?void 0:t.status)!==200)throw new Error("Failed to load nozzle availability");const r=await s.ExtensionManager.loader.executeLoader(u.AvailabilityLoader,{});e==null||e.set(u.AvailabilityLoader,r),e==null||e.set(W.type,this);for(const o of Object.keys((n=t.data)==null?void 0:n.groups)||[])for(const a of((i=t.data)==null?void 0:i.groups[o])||[]){const c=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...a,groupId:o},r),l={...a,note:a.note??void 0,kosParentId:this.id,rawId:a.id,groupId:o,data:c},g=G.factory(`${this.id}-${o}-${a.id}`)(l);this._availabilityItems.addModel(g)}this.updateGroupMembers()}async updateAvailability(e){const t=s.KosContextManager.getContext(this.id),r=(t==null?void 0:t.get(u.AvailabilityLoader))||{};if(e.rebuild)for(const n of Object.keys(e==null?void 0:e.groups)||[]){this._availabilityItems.getIndexByKey("group",n).filter(o=>!e.groups[n].find(a=>`${this.id}-${n}-${a.id}`===o.id)).forEach(o=>{this._availabilityItems.removeModel(o.id),s.destroyKosModel(o)});for(const o of(e==null?void 0:e.groups[n])||[]){const a=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...o,groupId:n},r),c={...o,note:o.note??void 0,kosParentId:this.id,groupId:n,rawId:o.id,data:a,taggedIds:o.taggedIds},l=this._availabilityItems.getModel(`${this.id}-${n}-${o.id}`);if(l)l.updateModel(c);else{const g=G.factory(`${this.id}-${n}-${o.id}`)(c);this._availabilityItems.addModel(g)}}}else for(const n of Object.keys(e==null?void 0:e.groups)||[])for(const i of(e==null?void 0:e.groups[n])||[]){const o=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...i,groupId:n},r),a={...i,note:i.note??void 0,kosParentId:this.id,groupId:n,rawId:i.id,data:o,type:i.type,taggedIds:i.taggedIds},c=this._availabilityItems.getModel(`${this.id}-${n}-${i.id}`);c&&c.updateModel(a)}this.updateGroupMembers()}};B([s.kosChild],b.prototype,"_availabilityItems",2);B([s.kosFuture()],b.prototype,"pour",1);B([s.kosFuture()],b.prototype,"fixedPour",1);B([s.kosTopicHandler({topic:`${er}/availability`,websocket:!0})],b.prototype,"updateAvailability",1);b=B([s.kosModel(N)],b);const W={registration:{[N]:{class:b,singleton:!1}},type:N,predicate:s.isKosModel(N),factory:s.Kos.Factory.create(N)};var nr=Object.defineProperty,ir=Object.getOwnPropertyDescriptor,ke=(e,t,r,n)=>{for(var i=n>1?void 0:n?ir(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&nr(t,r,i),i};const He="device-assembly-model";let V=class{constructor(e,t,r){d(this,"id");d(this,"deviceNozzles");d(this,"logger");this.id=e,this.logger=r.logger,this.deviceNozzles=new s.KosModelContainer}async init(){this.logger.debug(`initializing device-assembly ${this.id}`)}getNozzle(e){return this.deviceNozzles.getModel(e)}get nozzlePaths(){return this.deviceNozzles.data.map(e=>e.path)}async load(){this.logger.debug(`loading device-assembly ${this.id}`);const e=await oe();(e==null?void 0:e.status)===200&&e.data.assemblies.map(r=>r.nozzles).flat().forEach(r=>{var a;const n=r.path,i=((a=r.pipelines.find(c=>c.name==="beverage"))==null?void 0:a.topicPrefix)||"",o=W.factory(n)({path:r.path,name:r.name,urlPrefix:r.urlPrefix,topicPrefix:r.topicPrefix,beverageTopicPrefix:i});this.deviceNozzles.addModel(o)})}};ke([s.kosChild],V.prototype,"deviceNozzles",2);V=ke([s.kosModel(He)],V);const Fe=new s.SingletonKosModelRegistrationFactory({class:V,type:He}),re={...ie.registration,...ne.registration,...ge.registration,...se.registration,...W.registration,...ye.registration,...J.registration,...G.registration,...me.registration,...pe.registration},Ge=e=>()=>(s.registerCoreModels(e)(),Fe.register(),Object.keys(re).forEach(t=>{const r=re[t];s.registerLegacyModel(e)(t,r)}),s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("FirmwareUpdateInProgressTrouble",async t=>{var r;if((r=t.data)!=null&&r.deviceId){const{model:n}=s.getKosModelSync(me.type);if(n){const i=n.boards.find(o=>o.id===t.data.deviceId)?s.getKosModelSync(t.data.deviceId).model:void 0;return{devices:i?i.name:""}}}return{}}),{preload:s.RegistrationManager.model.preloadModel(e),model:s.RegistrationManager.model.register(e),companion:s.RegistrationManager.companion.register(e),legacy:s.RegistrationManager.model.registerLegacyModel(e)}),m={...s.KosModelRegistry};m.dispense={models:Ge(m)};m.preload=s.RegistrationManager.model.preloadModel(m);m.model=s.RegistrationManager.model.register(m);m.companion=s.RegistrationManager.companion.register(m);m.legacy=s.RegistrationManager.model.registerLegacyModel(m);const sr=m;exports.Assembly=me;exports.Availability=G;exports.Board=ce;exports.BoardContainer=pe;exports.DeviceAssembly=Fe;exports.DispenseModelType=I;exports.ExtensionType=u;exports.Holder=se;exports.HolderContainer=ge;exports.Ingredient=ne;exports.IngredientContainer=ie;exports.KosModelRegistry=sr;exports.Nozzle=W;exports.PourState=p;exports.Pump=ye;exports.PumpContainer=J;exports.PumpIndex=le;exports.TOPIC_BOARD_LINKED=ae;exports.TOPIC_BOARD_UNLINKED=de;exports.addAssignment=dt;exports.assignHolderIngredient=Ce;exports.clearPourable=je;exports.deleteAssignment=lt;exports.getAssembly=oe;exports.getAssignments=at;exports.getAvailability=Ke;exports.getHolders=it;exports.getIngredients=Ee;exports.getIntentVolume=Ne;exports.kosModels=re;exports.pourNamedPourable=Be;exports.pourPourable=Le;exports.registerDispenseModels=Ge;exports.replaceLine=Se;exports.selectPourable=Ue;exports.sendIntent=De;exports.sendRfidOverride=xe;exports.unassignHolderIngredient=$e;
|
|
2
|
-
//# sourceMappingURL=dispense-registration-manager-
|
|
1
|
+
"use strict";var Ve=Object.defineProperty;var Ye=(e,t,r)=>t in e?Ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var d=(e,t,r)=>(Ye(e,typeof t!="symbol"?t+"":t,r),r);const s=require("@kosdev-code/kos-ui-sdk");require("react");var u=(e=>(e.IngredientLoader="kos.ingredient.loader",e.IngredientMapper="kos.ingredient.mapper",e.IngredientIndex="kos.ingredient.index",e.IngredientTypeMapper="kos.ingredient.type.mapper",e.HolderTypeMapper="kos.holder.type.mapper",e.HolderMapper="kos.holder.mapper",e.HolderIndex="kos.holder.index",e.HolderIngredientMapper="kos.holder.ingredient.mapper",e.AvailabilityMapper="kos.availability.mapper",e.AvailabilityLoader="kos.availability.loader",e.SelectedPourableMapper="kos.selected.pourable.mapper",e.AssemblyMapper="kos.assembly.mapper",e.BoardMapper="kos.board.mapper",e.BoardIndex="kos.board.index",e.PumpIndex="kos.pump.index",e))(u||{}),I=(e=>(e.Nozzle="nozzle-model",e.Availability="availability-model",e.Holder="holder-model",e.HolderContainer="holder-container-model",e.IngredientContainer="ingredient-container-model",e.Ingredient="ingredient-model",e.Pump="pump-model",e.PumpContainer="pump-container-model",e))(I||{}),Xe=Object.defineProperty,Ze=Object.getOwnPropertyDescriptor,Je=(e,t,r,n)=>{for(var i=n>1?void 0:n?Ze(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Xe(t,r,i),i};const O="ingredient-model";let Q=class{constructor(e,{name:t,type:r,data:n,ingredientId:i,...o}){d(this,"id");d(this,"ingredientId");d(this,"name");d(this,"type");d(this,"data");this.id=e,this.ingredientId=i,this.name=t,this.type=r,this.data=n,Object.assign(this,o)}updateModel({name:e,type:t,data:r,ingredientId:n,...i}){this.name=e,this.type=t,this.ingredientId=n,this.data=r,Object.assign(this,i)}};Q=Je([s.kosModel(O)],Q);const ne={registration:{[O]:{class:Q,singleton:!1}},type:O,predicate:s.isKosModel(O),factory:s.Kos.Factory.create(O)},{URL:_e}=s.resolveServiceUrl("INGREDIENT_SERVICE"),{getOne:qe}=s.ServiceFactory.build({basePath:`${_e}/api/ext/dispense/ingredients`}),Ee=async()=>await qe({urlOverride:`${_e}/api/ext/dispense/ingredients`});var We=Object.defineProperty,Qe=Object.getOwnPropertyDescriptor,Oe=(e,t,r,n)=>{for(var i=n>1?void 0:n?Qe(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&We(t,r,i),i};const w="ingredient-container-model",et=s.KosLog.createLogger({name:"ingredient-container-model"});let j=class{constructor(e,t){d(this,"id");d(this,"ingredients");this.id=e,this.ingredients=new s.KosModelContainer({indexMap:{ingredientType:"type"},extensionId:u.IngredientIndex,parentId:e})}updateModel(){}getIngredientsByType(e){return this.ingredients.getIndexByKey("ingredientType",e)}async load(e){var i;et.debug(`loading ingredient container ${this.id}`);const t=await Ee();if((t==null?void 0:t.status)!==200)throw new Error("Failed to load ingredients");const r=await s.KosExtensionUtils.executeLoaderExtension({context:e,extension:u.IngredientLoader}),n=(t==null?void 0:t.data)??{};for(const o of Object.keys(n))for(const a of((i=t==null?void 0:t.data)==null?void 0:i[o])||[]){const c=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.IngredientMapper,data:a,contextData:r}),l=await s.KosExtensionUtils.executePropertyMapperExtension({extension:u.IngredientTypeMapper,data:a,contextData:r}),g={...a,type:l||a.type,...c,data:c},h=ne.factory(a.id)(g);this.ingredients.addModel(h)}}};Oe([s.kosChild],j.prototype,"ingredients",2);j=Oe([s.kosModel(w)],j);const ie={registration:{[w]:{class:j,singleton:!0}},type:w,predicate:s.isKosModel(w),factory:s.Kos.Singleton.create(w)},{URL:Y}=s.resolveServiceUrl("HOLDER_SERVICE"),{getAll:tt,postModel:we,deleteModel:rt}=s.ServiceFactory.build({basePath:`${Y}/api/kos/holders`}),nt=s.KosLog.createLogger({name:"holder-service",group:"Services"}),it=async()=>await tt({}),Ce=async(e,t)=>{if(!e||!t)throw new Error("Missing holderPath or ingredientId");return await we({model:{holderPath:e,ingredientId:t},urlOverride:`${Y}/api/ext/dispense/assignments`})},$e=async e=>{if(!e)throw new Error("Missing holderPath");return await rt({id:e,urlOverride:`${Y}/api/ext/dispense/assignments/${e}`})},Se=async e=>{if(!e)throw new Error("Missing holderPath");return nt.debug(`sending POST request to /api/ext/dispense/pumpEvents/replaceLine/${e}`),await we({model:{},urlOverride:`${Y}/api/ext/dispense/pumpEvents/replaceLine/${e}`})},{URL:k}=s.resolveServiceUrl("ASSIGNMENT_SERVICE"),{getAll:st,postModel:Re,deleteModel:ot}=s.ServiceFactory.build({destinationAddress:"",basePath:`${k}/api/ext/dispense/assignments`}),H=window.kosUseFos,at=async()=>await st({fos:H}),xe=async(e,t)=>{var i,o,a,c;const r=JSON.stringify(t),n=`${k}/api/ext/dispense/assignments`;try{const l=await Re({model:{holderPath:e,factoryJson:r},urlOverride:n});return(l==null?void 0:l.status)===200&&((i=l==null?void 0:l.data)!=null&&i.error)?[l.data.error||"unknownError",l.data]:[void 0,l==null?void 0:l.data]}catch(l){if(l instanceof s.FetchError)return[((a=(o=l.payload)==null?void 0:o.data)==null?void 0:a.error)||"unknownError",(c=l.payload)==null?void 0:c.data]}return["unknownError",void 0]},dt=async e=>{const t=H?`${k}/api/ingredients/assignments/${e.holderPath}`:`${k}/api/ext/dispense/assignments`;return await Re({model:{...e,fuelGauge:680},fos:H,urlOverride:t})},lt=async e=>await ot({id:e,fos:H});var ct=Object.defineProperty,pt=Object.getOwnPropertyDescriptor,X=(e,t,r,n)=>{for(var i=n>1?void 0:n?pt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&ct(t,r,i),i};const C=I.Holder,fe=s.KosLog.createLogger({name:"holder-model"});s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("holder",async e=>{const t=[];return t.push(...e.data.holderPaths),t});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("pump",async e=>{if(e.data.pumpPath){const{model:t}=s.getKosModelSync(e.data.pumpPath);if(t){const r=t.ingredientId?s.getKosModelSync(t.ingredientId).model:void 0;return{ingredientId:t.ingredientId,ingredientName:(r==null?void 0:r.displayName)??((r==null?void 0:r.name)||""),childPumpName:t.name}}}return{}});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("holder",async e=>e.data.holderNames.length>0?{holderName:e.data.holderNames[0]||""}:{});s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("container",async e=>{if(e.data.ingredients.length>0){const t=e.data.ingredients[0],{model:r}=s.getKosModelSync(t);return{ingredientName:(r==null?void 0:r.displayName)??((r==null?void 0:r.name)||""),ingredients:e.data.ingredients?e.data.ingredients:[],unknonwnIngredientId:e.data.unknonwnIngredientId??""}}return{}});class gt extends Error{constructor(r,n){super(n);d(this,"type");this.name="AssignmentError",this.type=r}}let P=class{constructor(e,{path:t,name:r,ingredientSource:n,ingredientId:i,ingredientType:o,slice:a,group:c,data:l,enjoyByDate:g},h){d(this,"id");d(this,"path");d(this,"name");d(this,"ingredientId");d(this,"ingredientType");d(this,"ingredientSource");d(this,"group");d(this,"slice");d(this,"logger");d(this,"data");d(this,"enjoyByDate");d(this,"pumps");d(this,"ingredientContainer");d(this,"troubleContainer");this.id=e,this.path=t,this.name=r,this.ingredientType=o,this.ingredientSource=n,this.ingredientId=i,this.group=c,this.slice=a,this.enjoyByDate=g,this.data=l,this.pumps=new s.KosModelContainer({parentId:e,sortKey:"path"}),this.logger=h.logger}updateModel({path:e,name:t,ingredientSource:r,ingredientId:n,ingredientType:i,group:o,slice:a,enjoyByDate:c,data:l}){this.path=e,this.name=t,this.ingredientId=n,this.ingredientType=i,this.ingredientSource=r,this.enjoyByDate=c,this.slice=a,this.group=o,this.data=l}get hasEnjoyByDate(){return!!this.enjoyByDate&&!this.unassigned}get hasEnjoyByWarning(){var e;return((e=this.troublesByType.EnjoyByTrouble)==null?void 0:e.length)>0}get nozzlePaths(){return this.pumps.data.map(e=>e.nozzlePath)}async cancelPour(){await Promise.all(this.pumps.data.filter(e=>e.isPouring).map(e=>e.cancelPour()))}get canPour(){return this.pumps.data.every(e=>e.canPour)}get isPouring(){const e=this.pumps.data.some(t=>t.isPouring);return this.logger.debug(`isPouring: ${!!e}`),e}async performIntent(e){const t=typeof e=="string"?e:e.intent,r=typeof e=="string"?void 0:e.pumpPath,n=r?this.pumps.getModel(r):this.pumps.data[0];return n==null?void 0:n.performIntent({intent:t})}get pourState(){return this.pumps.data.reduce((t,r)=>r.pouringState?r.pouringState:t,"")}get nozzlePath(){var e;return(e=this.pumps.data[0])==null?void 0:e.nozzlePath}get pumpPaths(){return this.pumps.data.map(e=>e.id)}get sortedPumps(){return this.pumps.data.sort((e,t)=>e.virtual&&!t.virtual?-1:!e.virtual&&t.virtual?1:e.name.localeCompare(t.name))}get ingredient(){var t;return this.ingredientId?(t=this.ingredientContainer)==null?void 0:t.ingredients.getModel(this.ingredientId):void 0}get ingredientName(){return this.ingredient?this.ingredient.displayName??this.ingredient.name:this.ingredientId?"unknown":""}get previousIngredient(){var t;return this.prevIngredientId?(t=this.ingredientContainer)==null?void 0:t.ingredients.getModel(this.prevIngredientId):void 0}get previousIngredientName(){return this.previousIngredient?this.previousIngredient.displayName??this.previousIngredient.name:this.prevIngredientId?"unknown":""}get troubles(){return this.troubleContainer.troubles.getIndexByKey("byIface",this.path).sort((e,t)=>t.rank-e.rank)}get troubleStatus(){return""}get troublesByType(){return this.troubles.reduce(s.troubleByTypeReducer,{})}get prevIngredientId(){var e,t;return(t=(e=this.pumps.data)==null?void 0:e[0])==null?void 0:t.prevIngredientId}get unassigned(){return(!this.ingredientId||this.ingredientId==="0")&&(!this.prevIngredientId||this.prevIngredientId==="0")}get removed(){return(!this.ingredientId||this.ingredientId==="0")&&this.prevIngredientId!==void 0&&this.prevIngredientId!=="0"}get maxVolume(){return this.slice.maxVolMl??0}get remainingVolume(){return this.slice.currentVolMl??0}get hasMaxVolume(){return this.slice.maxVolMl!==void 0}get hasRemainingVolume(){return this.slice.currentVolMl!==void 0}get fillPercent(){return this.remainingVolume<=0?0:Math.floor((this.remainingVolume||1)/(this.maxVolume||1)*100)}get hasFuelGuage(){return this.hasMaxVolume&&this.hasRemainingVolume}updateIngredient(e){this.ingredientId!==e&&s.kosAction(()=>{this.ingredientId=e})}async resolveIntentVolume(e){const t=this.pumps.data[0];return t?t.resolveIntentVolume(e):{volume:-1}}async overrideRfidCode(e){if(!e)throw new Error("Invalid override");try{const[t,r]=await xe(this.path,e);if(t)throw new gt(t,`Failed to perform rfid override on holder ${this.id}`);return s.kosAction(()=>{this.ingredientId=r==null?void 0:r.ingredientId}),r}catch(t){throw fe.error(`Failed to perform rfid override on holder ${this.id}`,t),t}}async assignIngredient(e){try{e?await Ce(this.path,e):await $e(this.path),s.kosAction(()=>{this.ingredientId=e})}catch(t){throw fe.error(`Failed to perform assign ingredient to holder ${this.id}`,t),t}}async replaceLine(){await Se(this.path)}};X([s.kosChild],P.prototype,"pumps",2);X([s.kosDependency({modelType:ie.type})],P.prototype,"ingredientContainer",2);X([s.kosDependency({modelType:s.TroubleContainer.type})],P.prototype,"troubleContainer",2);P=X([s.kosModel(C)],P);const se={registration:{[C]:{class:P,singleton:!1}},type:C,predicate:s.isKosModel(C),factory:s.Kos.Factory.create(C)},ut=async(e,t)=>{var be;const r=s.ExtensionManager.propertyMapper.executeMapper(u.HolderIngredientMapper,t),n=s.ExtensionManager.propertyMapper.executeMapper(u.HolderTypeMapper,t)||t.ingType,i=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.HolderMapper,data:t,contextData:{}}),{name:o,path:a,ingredientId:c,ingType:l,ingSource:g,slice:h,...E}=t,y={...E,...i},f=h||{pos:0},K={name:o,path:a,ingredientId:r||c,ingredientType:n||l,ingredientSource:g,enjoyByDate:(be=t.container)!=null&&be.enjoyByDate?new Date(t.container.enjoyByDate):void 0,slice:f,group:e,data:y};return se.factory(t.path)(K)},{URL:ht}=s.resolveServiceUrl("ASSEMBLY_SERVICE"),{getOne:yt}=s.ServiceFactory.build({basePath:`${ht}/api/kos/device/assemblies`}),mt=s.KosLog.createLogger({name:"assembly-service",group:"Services"}),oe=async()=>(mt.debug("sending GET for assembly"),await yt({}));var It=Object.defineProperty,vt=Object.getOwnPropertyDescriptor,Z=(e,t,r,n)=>{for(var i=n>1?void 0:n?vt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&It(t,r,i),i};const $="board-container-model",ae="/kos/hardware/board/linked",de="/kos/hardware/board/unlinked";exports.BoardContainerModel=class{constructor(t,r,n){d(this,"id");d(this,"logger");d(this,"models");this.id=t,this.logger=n.logger,this.models=new s.KosModelContainer({parentId:t,extensionId:u.BoardIndex})}get boardList(){return this.models.data}updateModel(){}addModel(t){this.models.addModel(t)}removeModel(t){this.models.removeModel(t)}updateBoard(t){const r=t.path,n=this.models.getModel(r);if(!n){this.logger.warn(`board ${r} not found`);return}n.updateModel(t)}handleBoardLinkEvent(t){this.logger.debug(`handling ${ae} event ${t}`),t?this.updateBoard(t):this.logger.debug("- boardLinkEvent is undefined")}handleBoardUnlinkEvent(t){this.logger.debug(`handling ${de} event ${t}`),t?this.updateBoard(t):this.logger.debug("- boardLinkEvent is undefined")}};Z([s.kosChild],exports.BoardContainerModel.prototype,"models",2);Z([s.kosTopicHandler({lifecycle:s.DependencyLifecycle.INIT,topic:ae,websocket:!0})],exports.BoardContainerModel.prototype,"handleBoardLinkEvent",1);Z([s.kosTopicHandler({lifecycle:s.DependencyLifecycle.INIT,topic:de,websocket:!0})],exports.BoardContainerModel.prototype,"handleBoardUnlinkEvent",1);exports.BoardContainerModel=Z([s.kosModel($)],exports.BoardContainerModel);const bt=async e=>{const t=e.data.boardPath,{model:r}=s.getKosModelSync(t);return{boardName:(r==null?void 0:r.name)||""}};var ft=Object.defineProperty,Pt=Object.getOwnPropertyDescriptor,Te=(e,t,r,n)=>{for(var i=n>1?void 0:n?Pt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&ft(t,r,i),i};const S=I.PumpContainer;var le=(e=>(e.byBoard="byBoard",e.byType="byType",e.byNozzle="byNozzle",e))(le||{});let F=class{constructor(e,t){d(this,"id");d(this,"pumps");this.id=e,this.pumps=new s.KosModelContainer({indexMap:{byNozzle:r=>r.nozzlePaths,byBoard:r=>r.boardPath,byType:"type"},parentId:e,extensionId:u.PumpIndex})}get pumpModels(){return this.pumps.data}get pumpPaths(){return this.pumpModels.map(e=>e.path)}addModel(e){this.pumps.addModel(e)}removeModel(e){this.pumps.removeModel(e)}getModel(e){return this.pumps.getModel(e)}get models(){return this.pumps}get data(){return this.pumps.data}updateModel(){}async load(){}};Te([s.kosChild],F.prototype,"pumps",2);F=Te([s.kosModel(S)],F);const J={registration:{[S]:{class:F,singleton:!0}},type:S,predicate:s.isKosModel(S),factory:s.Kos.Singleton.create(S)},Ae=async e=>{const t=[],{model:r}=await s.getKosModel(e);return r&&(t.push(r.boardPath),t.push(r.nozzlePath),t.push(r.holderPath)),t},Mt=async e=>{const t=[],r=e.data.pumpPath;t.push(r);const n=await Ae(r);return[...t,...n]},_t=async e=>{const t=[],r=e.data.boardPath;t.push(e.data.boardPath);const n=await s.getKosModel(J.type);if(n!=null&&n.model){const o=n.model.models.getIndexByKey(le.byBoard,r).map(c=>Ae(c.path));(await Promise.allSettled(o)).forEach(c=>{c.status==="fulfilled"&&c.value.forEach(l=>t.push(l))})}return Array.from(new Set(t))};var Et=Object.defineProperty,Ot=Object.getOwnPropertyDescriptor,wt=(e,t,r,n)=>{for(var i=n>1?void 0:n?Ot(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Et(t,r,i),i};const R="board-model",Pe=(e,t)=>{const{type:r,name:n,path:i,linked:o,instanceId:a,link:c,...l}=e;t.type=r,t.name=n,t.path=i,t.linked=o,t.link=Object.freeze(c),t.instanceId=a,Object.assign(t,l)};s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("board",_t);s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("board",bt);let ee=class{constructor(e,t,r){d(this,"id");d(this,"type");d(this,"name");d(this,"path");d(this,"linked");d(this,"instanceId");d(this,"logger");this.id=e,this.logger=r.logger,Pe(t,this)}updateModel(e){Pe(e,this)}async init(){this.logger.debug(`initializing board ${this.id}`)}async load(){this.logger.debug(`loading board ${this.id}`)}};ee=wt([s.kosModel(R)],ee);const ce={registration:{[R]:{class:ee,singleton:!1}},type:R,predicate:s.isKosModel(R),factory:s.Kos.Factory.create(R)},pe={registration:{[$]:{class:exports.BoardContainerModel,singleton:!0},...ce.registration},type:$,predicate:s.isKosModel($),factory:s.Kos.Singleton.create($)};var Ct=Object.defineProperty,$t=Object.getOwnPropertyDescriptor,q=(e,t,r,n)=>{for(var i=n>1?void 0:n?$t(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ct(t,r,i),i};const x=I.HolderContainer,St="/kos/insertion/insert/start",Rt="/kos/insertion/insert/complete",xt="/kos/insertion/insert/update",Tt="/kos/insertion/remove",At="/kos/pumpEvent/replaceLine",Dt="/kos/handle/*";let M=class{constructor(e,t,r){d(this,"id");d(this,"holders");d(this,"logger");this.id=e,this.holders=new s.KosModelContainer({indexMap:{nozzle:n=>n.nozzlePaths,group:"group"},parentId:e,extensionId:u.HolderIndex}),this.logger=r.logger}updateModel(){}handleHolderEvents(e){var r,n,i;s.KosLog.ifDebug(()=>this.logger.debug("Received holder change event",JSON.stringify(e)));const t=this.holders.getModel(e.path);t&&(this.logger.info(`Received change event for holder ${t.path}. Updating fuel gauge data.`),t.slice.currentVolMl=(r=e.slice)==null?void 0:r.currentVolMl,t.slice.maxVolMl=(n=e.slice)==null?void 0:n.maxVolMl,(i=e==null?void 0:e.container)!=null&&i.enjoyByDate?t.enjoyByDate=new Date(e.container.enjoyByDate):t.enjoyByDate=void 0)}handleInsertion(e){s.KosLog.ifDebug(()=>this.logger.debug("Received insertion event",JSON.stringify(e))),(Array.isArray(e)?e:[e]).forEach(r=>{s.kosAction(()=>{var o,a,c;const n=r.ingredientId,i=this.holders.getModel(r.path);i&&(this.logger.info(`Received insertion event for holder ${i.path}`),i.updateIngredient(n),i.slice.currentVolMl=(o=r.slice)==null?void 0:o.currentVolMl,i.slice.maxVolMl=(a=r.slice)==null?void 0:a.maxVolMl,(c=r==null?void 0:r.container)!=null&&c.enjoyByDate?i.enjoyByDate=new Date(r.container.enjoyByDate):i.enjoyByDate=void 0,r.pumps.forEach(l=>{s.kosAction(()=>{const g=i.pumps.getModel(l.path);g&&(g.ingredientId=l.ingredientId,g.inserted=l.inserted,g.prevIngredientId=l.prevIngredientId)})}))})})}};q([s.kosChild],M.prototype,"holders",2);q([s.kosTopicHandler({topic:Dt,websocket:!0,condition:(e,t)=>t.holders.getModel(e.path)!==void 0})],M.prototype,"handleHolderEvents",1);q([s.kosTopicHandler({topic:[St,Rt,xt,Tt,At],websocket:!0})],M.prototype,"handleInsertion",1);M=q([s.kosModel(x)],M);const ge={registration:{[x]:{class:M,singleton:!0}},type:x,predicate:s.isKosModel(x),factory:s.Kos.Singleton.create(x)},Nt=s.KosLog.createLogger({name:"board-utils"}),zt=async e=>{const t=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.BoardMapper,data:e,contextData:{}}),{type:r,name:n,path:i,linked:o,instanceId:a,...c}=e,l={...c,...t},g={type:r,name:n,path:i,linked:o,instanceId:a,...l},h=ce.factory(e.path)(g);return h.updateModel(g),h},Lt=e=>async t=>{Nt.debug(`adding board ${t.name}`);const r=await zt(t);e.addModel(r)};var p=(e=>(e.IDLE="IDLE",e.POURING="POURING",e.POUR_STARTING="POUR_STARTING",e.POUR_CANCELING="POUR_CANCELING",e.POUR_CANCELED="POUR_CANCELED",e.POUR_COMPLETE="POUR_COMPLETE",e))(p||{});const{URL:ue}=s.resolveServiceUrl("PUMP_SERVICE"),{postModel:Bt,getOne:Kt}=s.ServiceFactory.build({basePath:`${ue}/api/kos/holders`});s.KosLog.createLogger({name:"pump-service",group:"Services"});const De=async({intent:e,pumpId:t,tracker:r})=>{const n=`${ue}/api/ext/dispense/nozzle/nozzle/pipeline/ingredient/pour/${t}/${e}`,i=await Bt({model:{},urlOverride:n,tracker:r});return i!=null&&i.data&&s.FutureManager.initiateFuture(i.data),i},Ne=async(e,t)=>{const r=`${ue}/api/ext/dispense/nozzle/nozzle/pipeline/ingredient/intent/${e}/${t}/volume`,n=await Kt({urlOverride:r});return n!=null&&n.data?n.data:{volume:-1}};var Ut=Object.defineProperty,jt=Object.getOwnPropertyDescriptor,he=(e,t,r,n)=>{for(var i=n>1?void 0:n?jt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ut(t,r,i),i};const T=I.Pump;s.ExtensionManager[s.EXTENSION_TROUBLE_MAPPER].register("pump",Mt);let z=class{constructor(e,t){d(this,"id");d(this,"inserted");d(this,"type");d(this,"virtual");d(this,"ingredientId");d(this,"holderPath");d(this,"boardPath");d(this,"nozzlePath");d(this,"childPump");d(this,"name");d(this,"path");d(this,"prevIngredientId");d(this,"troubleContainer");d(this,"futureHandler");d(this,"currentState",p.IDLE);this.id=e;const{inserted:r,holderPath:n,boardPath:i,nozzlePath:o,name:a,path:c,childPump:l,virtual:g,prevIngredientId:h,...E}=t;this.inserted=r,this.type=t.type,this.ingredientId=t.ingredientId,this.holderPath=n,this.boardPath=i,this.nozzlePath=o,this.name=a,this.path=c,this.childPump=!!l,this.virtual=!!g,this.prevIngredientId=h,Object.assign(this,E),this.futureHandler=new s.FutureHandler(this)}updateModel(e){const{inserted:t,holderPath:r,boardPath:n,nozzlePath:i,childPump:o,name:a,path:c,...l}=e;this.inserted=t,this.type=e.type,this.ingredientId=e.ingredientId,this.holderPath=r,this.boardPath=n,this.nozzlePath=i,this.childPump=this.childPump?this.childPump:!!o,this.name=a,this.path=c,this.prevIngredientId=e.prevIngredientId,Object.assign(this,l)}get troubles(){return this.troubleContainer.troubles.getIndexByKey("byIface",this.path).sort((e,t)=>t.rank-e.rank)}get troubleStatus(){return""}get troublesByType(){return this.troubles.reduce(s.troubleByTypeReducer,{})}get pouringState(){var e;return((e=this.future)==null?void 0:e.endState)||""}get isPouring(){var e;return!!(this.future&&!((e=this.future)!=null&&e.endState))||this.currentState===p.POUR_STARTING||this.currentState===p.POURING}get canPour(){return!!this.ingredientId&&!this.isPouring}onFutureUpdate(e){e.endState&&s.kosAction(()=>{this.currentState=p.IDLE})}async cancelPour(){var e;this.currentState===p.POURING||this.currentState===p.POUR_STARTING?(this.currentState=p.POUR_CANCELING,await((e=this.future)==null?void 0:e.cancelFuture()),s.kosAction(()=>{this.currentState=p.IDLE})):s.KosLog.warn(`Cannot cancel pour in state ${this.currentState}`)}get future(){return this.futureHandler.future}async resolveIntentVolume(e){return await Ne(this.path,e)}async performIntent(e,t){const r=typeof e=="string"?e:e.intent;if(!r)throw new Error("No intent provided");try{if(this.currentState===p.IDLE){if(this.currentState=p.POUR_STARTING,!t)throw new Error("No tracker provided");const n=await De({tracker:t,intent:r,pumpId:this.path});return this.currentState===p.POUR_STARTING&&s.kosAction(()=>{this.currentState=p.POURING}),n==null?void 0:n.data}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(n){throw s.KosLog.error(n),this.currentState=p.IDLE,n}}};he([s.kosDependency({modelType:s.TroubleContainer.type})],z.prototype,"troubleContainer",2);he([s.kosFuture()],z.prototype,"performIntent",1);z=he([s.kosModel(T)],z);const ye={registration:{[T]:{class:z,singleton:!1}},type:T,predicate:s.isKosModel(T),factory:s.Kos.Factory.create(T)},kt=s.KosLog.createLogger({name:"pump-utils"}),Ht=(e,t)=>{const r=(t.pumps??[]).length>1,n={boardPath:t.boardPath,holderPath:t.holderPath,ingredientId:t.ingredientId,childPump:!!t.childPump,virtual:r,inserted:t.inserted,name:t.name,path:t.path,type:t.type,nozzlePath:e,prevIngredientId:t.prevIngredientId},i=ye.factory(t.path)(n);return i.updateModel(n),i},ze=e=>t=>r=>n=>{var c;kt.debug(`adding pump ${n.name}`);const i=Ht(r.path,n);e.addModel(i);const o=i.holderPath,a=t.holders.getModel(o);a==null||a.pumps.addModel(i),a!=null&&a.nozzlePaths.includes(r.path)||a==null||a.nozzlePaths.push(r.path),(c=n==null?void 0:n.pumps)==null||c.forEach(l=>{const g=i.holderPath,h={...l,childPump:!0,holderPath:g,ingredientId:i.ingredientId};ze(e)(t)(r)(h)})};var Ft=Object.defineProperty,Gt=Object.getOwnPropertyDescriptor,L=(e,t,r,n)=>{for(var i=n>1?void 0:n?Gt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Ft(t,r,i),i};const A="assembly-model",Vt="assembly-data";let v=class{constructor(e,t,r){d(this,"id");d(this,"_nozzlePaths",new Set);d(this,"troubleContainer");d(this,"holderContainer");d(this,"boardContainer");d(this,"pumpContainer");d(this,"logger");this.id=e,this.holderContainer=ge.factory({}),this.boardContainer=pe.factory({}),this.pumpContainer=J.factory({}),this.logger=r.logger}updateModel(e){}get allHolders(){return this.holderContainer.holders.data}get holderGroups(){return this.holderContainer.holders.getIndexKeys("group")}get nozzlePaths(){return Array.from(this._nozzlePaths)}getHoldersByGroup(e){return this.holderContainer.holders.getIndexByKey("group",e)}getHoldersByNozzle(e){return this.holderContainer.holders.getIndexByKey("nozzle",e)}get pumpsByNozzle(){return this.pumpContainer.models.idx.byNozzle}get pumpPaths(){return this.pumpContainer.models.data.map(e=>e.path)}get boards(){return this.boardContainer.boardList}async init(){this.logger.debug(`initializing assembly ${this.id}`)}async ready(){var e;(e=this.troubleContainer)==null||e.troubles.increment()}async load(e){this.logger.debug(`loading assembly ${this.id}`);const t=await oe();if((t==null?void 0:t.status)===200){const r=await s.KosExtensionUtils.executeDataMapperExtension({extension:u.AssemblyMapper,data:t.data,contextData:{}});e.set(Vt,r),Object.assign(this,r),Object.entries(r).forEach(([n,i])=>{s.isKosDataModel(i)&&(this.logger.debug(`adding child model ${n} from extension data`),this[s.ChildModels][n]=!0)});for await(const n of t.data.assemblies){const{boards:i,holders:o,nozzles:a,core:c,name:l,path:g,...h}=n;this.logger.debug(`adding assembly ${l}`),Object.keys(h).forEach(y=>{s.KosFeatureFlags.enableFeature(y)});for await(const y of i)this.logger.debug(`adding board ${y.name}`),await Lt(this.boardContainer)(y);for await(const[y,f]of Object.entries(o))for await(const K of f){this.logger.debug(`adding holder ${K.name}`);const ve=await ut(y,K);this.holderContainer.holders.addModel(ve)}const E=ze(this.pumpContainer)(this.holderContainer);a.forEach(y=>{this._nozzlePaths.add(y.path);const f=E(y);y.pumps.forEach(f)})}}}};L([s.kosDependency({modelType:"trouble-container-model"})],v.prototype,"troubleContainer",2);L([s.kosChild],v.prototype,"holderContainer",2);L([s.kosChild],v.prototype,"boardContainer",2);L([s.kosChild],v.prototype,"pumpContainer",2);v=L([s.kosModel(A)],v);const me={registration:{[A]:{class:v,singleton:!0}},type:A,predicate:s.isKosModel(A),factory:s.Kos.Singleton.create(A)};var Yt=Object.defineProperty,Xt=Object.getOwnPropertyDescriptor,Zt=(e,t,r,n)=>{for(var i=n>1?void 0:n?Xt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Yt(t,r,i),i};const D=I.Availability;let te=class{constructor(e,t,r){d(this,"id");d(this,"data");d(this,"available");d(this,"visible");d(this,"groupId");d(this,"rawId");d(this,"altId");d(this,"type");d(this,"note");d(this,"taggedIds");d(this,"parentId");d(this,"logger");this.id=e,this.taggedIds=t.taggedIds||[],this.logger=r.logger,this.available=t.available,this.visible=t.visible,this.groupId=t.groupId,this.rawId=t.rawId,this.altId=t.altId,this.type=t.type,this.parentId=t.kosParentId,this.data=t.data,this.note=t.note}updateModel(e){this.taggedIds=e.taggedIds||[],this.available=e.available,this.visible=e.visible,this.groupId=e.groupId,this.rawId=e.rawId,this.altId=e.altId,this.type=e.type,this.data=e.data}updateAvailability(e){this.available=e}};te=Zt([s.kosParentAware(),s.kosModel(D)],te);const G={registration:{[D]:{class:te,singleton:!1}},type:D,predicate:s.isKosModel(D),factory:s.Kos.Factory.create(D)},{URL:_}=s.resolveServiceUrl("NOZZLE_SERVICE"),{postModel:Ie,deleteModel:Jt,getOne:qt}=s.ServiceFactory.build({basePath:`${_}/api/nozzle`}),Le=async(e,t)=>{const r=await Ie({model:{},urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/pour`,ordered:!0,tracker:t});return r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r},Be=async(e,t,r)=>{const n=await Ie({model:{},urlOverride:`${_}/api/ext/dispense/nozzle/${t}/pipeline/beverage/fixed/${e}`,ordered:!0,tracker:r});return n!=null&&n.data&&s.FutureManager.initiateFuture(n.data),n},Ke=async e=>await qt({urlOverride:`${_}${e}/pipeline/beverage/availability`}),Ue=async(e,t)=>await Ie({model:t,urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/select`}),je=async e=>await Jt({id:e,urlOverride:`${_}/api/ext/dispense/nozzle/${e}/pipeline/beverage/select`});var Wt=Object.defineProperty,Qt=Object.getOwnPropertyDescriptor,B=(e,t,r,n)=>{for(var i=n>1?void 0:n?Qt(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&Wt(t,r,i),i};const N=I.Nozzle,er=s.createPropKey("beverageTopicPrefix"),U=e=>e.onPourStart!==void 0&&e.onPourCancel!==void 0&&e.onPourProgress!==void 0,Me="/kos/nozzle/pour/started",tr="/kos/nozzle/pour/progress",rr="/kos/nozzle/pour/cancel";let b=class{constructor(e,t,r){d(this,"id");d(this,"path");d(this,"logger");d(this,"name");d(this,"_selectedBeverage");d(this,"_selectedBrand");d(this,"_additionalItems");d(this,"_availabilityItems");d(this,"futureHandler");d(this,"currentState",p.IDLE);d(this,"beverageTopicPrefix");d(this,"topicPrefix");d(this,"urlPrefix");this.id=e,this.path=t.path,this.name=t.name,this.beverageTopicPrefix=t.beverageTopicPrefix,this.topicPrefix=t.topicPrefix,this.urlPrefix=t.urlPrefix,this._selectedBeverage=void 0,this._selectedBrand=void 0,this._additionalItems=[],this.futureHandler=new s.MultipleFutureHandler(this),this._availabilityItems=new s.KosModelContainer({indexMap:{byGroup:"groupId",byParent:"parentId"},parentId:e}),this.logger=r.logger}get beverages(){return this._availabilityItems.getIndexByKey("byGroup","beverages")}get brands(){return this._availabilityItems.getIndexByKey("byGroup","brands")}get visibleBrands(){return this.brands.filter(e=>e.visible)}get visibleBeverages(){return this.beverages.filter(e=>e.visible)}get isPouring(){var e;return!!(this.futureHandler.getFuture()&&!((e=this.futureHandler.getFuture())!=null&&e.endState))||this.currentState===p.POUR_STARTING||this.currentState===p.POURING||this.currentState===p.POUR_CANCELING}get canPour(){return!!this._selectedBeverage&&this._selectedBeverage.available&&this.currentState===p.IDLE}get selectedPourable(){return{beverage:this._selectedBeverage,additional:this._additionalItems}}get future(){return this.futureHandler.getFuture()}get pourProgress(){var e;return((e=this.future)==null?void 0:e.progress)??0}updateModel(){}setSelectedBrand(e){this._selectedBrand=e,this._selectedBeverage=void 0}get selectedBrand(){return this._selectedBrand}async setSelectedPourable({beverage:e,additional:t,context:r}){if(!e){const c=await je(this.name);if((c==null?void 0:c.status)!==200)throw new Error("Failed to clear pourable");this._selectedBeverage=void 0;return}this._selectedBeverage=e,this._additionalItems=t;let n=await s.ExtensionManager.dataMapper.executeMapper(u.SelectedPourableMapper,{beverage:e,additional:t,context:r});const i={bevId:e.rawId};(!n||Object.keys(n).length===0)&&(this.logger.info(`No selected pourable mapper defined, using the default payload ${i}`),n=i);const o=n??i,a=await Ue(this.name,o);if((a==null?void 0:a.status)!==200)throw new Error("Failed to select pourable")}getGroupAvailabilityItems(e){return this._availabilityItems.getIndexByKey("byGroup",e)}getAvailabilityByParent(e){return this._availabilityItems.getIndexByKey("byParent",e)}updateIfCurrent(e,t){this.currentState===e&&s.kosAction(()=>{this.currentState=t})}onFutureUpdate(e){s.getAllKosCompanionModels(this).forEach(r=>{U(r)&&r.onPourProgress(e)});const t={nozzleId:this.id,progress:e.progress,status:e.status,clientData:e.clientData,futureId:e.futureId,remainingTimeMs:e.remainingTimeMs,endState:e.endState,reason:e.reason,timeRemaining:e.timeRemaining};s.EventBus.publish(tr,t)}async pour(e){try{if(this.currentState===p.IDLE){if(this.updateIfCurrent(p.IDLE,p.POUR_STARTING),!e)throw new Error("No tracker provided");const t=await Le(this.name,e);this.updateIfCurrent(p.POUR_STARTING,p.POURING),s.getAllKosCompanionModels(this).forEach(n=>{var i;U(n)&&((i=n.onPourStart)==null||i.call(n))});const r={nozzleId:this.id,type:"free"};return s.EventBus.publish(Me,r),t}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(t){throw this.logger.error(t),this.currentState=p.IDLE,t}}async fixedPour(e,t){try{if(this.currentState===p.IDLE){if(this.currentState=p.POUR_STARTING,!t)throw new Error("No tracker provided");const r=await Be(e,this.name,t);this.currentState===p.POUR_STARTING&&s.kosAction(()=>{this.currentState=p.POURING}),s.getAllKosCompanionModels(this).forEach(i=>{var o;U(i)&&((o=i.onPourStart)==null||o.call(i))});const n={nozzleId:this.id,type:"fixed"};return s.EventBus.publish(Me,n),r}else throw new Error(`Cannot pour in state ${this.currentState}`)}catch(r){throw this.logger.error(r),this.currentState=p.IDLE,r}}async cancelPour(){var e;if(this.currentState===p.POURING||this.currentState===p.POUR_STARTING){this.currentState=p.POUR_CANCELING,await((e=this.futureHandler.getFuture())==null?void 0:e.cancelFuture()),s.kosAction(()=>{this.currentState=p.IDLE}),s.getAllKosCompanionModels(this).forEach(r=>{var n;U(r)&&((n=r.onPourCancel)==null||n.call(r))});const t={nozzleId:this.id};s.EventBus.publish(rr,t)}else this.logger.warn(`Cannot cancel pour in state ${this.currentState}`)}updateGroupMembers(){this._availabilityItems.data.forEach(e=>{(e.taggedIds||[]).forEach(r=>{const n=this._availabilityItems.data.find(i=>i.rawId===r);n&&n.parentId!==e.id&&(n.parentId=e.id,this._availabilityItems.updateModel(n))})})}async load(e){var n,i;this.logger.debug(`loading nozzle ${this.id}`);const t=await Ke(this.urlPrefix);if((t==null?void 0:t.status)!==200)throw new Error("Failed to load nozzle availability");const r=await s.ExtensionManager.loader.executeLoader(u.AvailabilityLoader,{});e==null||e.set(u.AvailabilityLoader,r),e==null||e.set(W.type,this);for(const o of Object.keys((n=t.data)==null?void 0:n.groups)||[])for(const a of((i=t.data)==null?void 0:i.groups[o])||[]){const c=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...a,groupId:o},r),l={...a,note:a.note??void 0,kosParentId:this.id,rawId:a.id,groupId:o,data:c},g=G.factory(`${this.id}-${o}-${a.id}`)(l);this._availabilityItems.addModel(g)}this.updateGroupMembers()}async updateAvailability(e){const t=s.KosContextManager.getContext(this.id),r=(t==null?void 0:t.get(u.AvailabilityLoader))||{};if(e.rebuild)for(const n of Object.keys(e==null?void 0:e.groups)||[]){this._availabilityItems.getIndexByKey("group",n).filter(o=>!e.groups[n].find(a=>`${this.id}-${n}-${a.id}`===o.id)).forEach(o=>{this._availabilityItems.removeModel(o.id),s.destroyKosModel(o)});for(const o of(e==null?void 0:e.groups[n])||[]){const a=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...o,groupId:n},r),c={...o,note:o.note??void 0,kosParentId:this.id,groupId:n,rawId:o.id,data:a,taggedIds:o.taggedIds},l=this._availabilityItems.getModel(`${this.id}-${n}-${o.id}`);if(l)l.updateModel(c);else{const g=G.factory(`${this.id}-${n}-${o.id}`)(c);this._availabilityItems.addModel(g)}}}else for(const n of Object.keys(e==null?void 0:e.groups)||[])for(const i of(e==null?void 0:e.groups[n])||[]){const o=await s.ExtensionManager.dataMapper.executeMapper(u.AvailabilityMapper,{...i,groupId:n},r),a={...i,note:i.note??void 0,kosParentId:this.id,groupId:n,rawId:i.id,data:o,type:i.type,taggedIds:i.taggedIds},c=this._availabilityItems.getModel(`${this.id}-${n}-${i.id}`);c&&c.updateModel(a)}this.updateGroupMembers()}};B([s.kosChild],b.prototype,"_availabilityItems",2);B([s.kosFuture()],b.prototype,"pour",1);B([s.kosFuture()],b.prototype,"fixedPour",1);B([s.kosTopicHandler({topic:`${er}/availability`,websocket:!0})],b.prototype,"updateAvailability",1);b=B([s.kosModel(N)],b);const W={registration:{[N]:{class:b,singleton:!1}},type:N,predicate:s.isKosModel(N),factory:s.Kos.Factory.create(N)};var nr=Object.defineProperty,ir=Object.getOwnPropertyDescriptor,ke=(e,t,r,n)=>{for(var i=n>1?void 0:n?ir(t,r):t,o=e.length-1,a;o>=0;o--)(a=e[o])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&nr(t,r,i),i};const He="device-assembly-model";let V=class{constructor(e,t,r){d(this,"id");d(this,"deviceNozzles");d(this,"logger");this.id=e,this.logger=r.logger,this.deviceNozzles=new s.KosModelContainer}async init(){this.logger.debug(`initializing device-assembly ${this.id}`)}getNozzle(e){return this.deviceNozzles.getModel(e)}get nozzlePaths(){return this.deviceNozzles.data.map(e=>e.path)}async load(){this.logger.debug(`loading device-assembly ${this.id}`);const e=await oe();(e==null?void 0:e.status)===200&&e.data.assemblies.map(r=>r.nozzles).flat().forEach(r=>{var a;const n=r.path,i=((a=r.pipelines.find(c=>c.name==="beverage"))==null?void 0:a.topicPrefix)||"",o=W.factory(n)({path:r.path,name:r.name,urlPrefix:r.urlPrefix,topicPrefix:r.topicPrefix,beverageTopicPrefix:i});this.deviceNozzles.addModel(o)})}};ke([s.kosChild],V.prototype,"deviceNozzles",2);V=ke([s.kosModel(He)],V);const Fe=new s.SingletonKosModelRegistrationFactory({class:V,type:He}),re={...ie.registration,...ne.registration,...ge.registration,...se.registration,...W.registration,...ye.registration,...J.registration,...G.registration,...me.registration,...pe.registration},Ge=e=>()=>(s.registerCoreModels(e)(),Fe.register(),Object.keys(re).forEach(t=>{const r=re[t];s.registerLegacyModel(e)(t,r)}),s.ExtensionManager[s.EXTENSION_TROUBLE_DATA_MAPPER].register("FirmwareUpdateInProgressTrouble",async t=>{var r;if((r=t.data)!=null&&r.deviceId){const{model:n}=s.getKosModelSync(me.type);if(n){const i=n.boards.find(o=>o.id===t.data.deviceId)?s.getKosModelSync(t.data.deviceId).model:void 0;return{devices:i?i.name:""}}}return{}}),{preload:s.RegistrationManager.model.preloadModel(e),model:s.RegistrationManager.model.register(e),companion:s.RegistrationManager.companion.register(e),legacy:s.RegistrationManager.model.registerLegacyModel(e)}),m={...s.KosModelRegistry};m.dispense={models:Ge(m)};m.preload=s.RegistrationManager.model.preloadModel(m);m.model=s.RegistrationManager.model.register(m);m.companion=s.RegistrationManager.companion.register(m);m.legacy=s.RegistrationManager.model.registerLegacyModel(m);const sr=m;exports.Assembly=me;exports.Availability=G;exports.Board=ce;exports.BoardContainer=pe;exports.DeviceAssembly=Fe;exports.DispenseModelType=I;exports.ExtensionType=u;exports.Holder=se;exports.HolderContainer=ge;exports.Ingredient=ne;exports.IngredientContainer=ie;exports.KosModelRegistry=sr;exports.Nozzle=W;exports.PourState=p;exports.Pump=ye;exports.PumpContainer=J;exports.PumpIndex=le;exports.TOPIC_BOARD_LINKED=ae;exports.TOPIC_BOARD_UNLINKED=de;exports.addAssignment=dt;exports.assignHolderIngredient=Ce;exports.clearPourable=je;exports.deleteAssignment=lt;exports.getAssembly=oe;exports.getAssignments=at;exports.getAvailability=Ke;exports.getHolders=it;exports.getIngredients=Ee;exports.getIntentVolume=Ne;exports.kosModels=re;exports.pourNamedPourable=Be;exports.pourPourable=Le;exports.registerDispenseModels=Ge;exports.replaceLine=Se;exports.selectPourable=Ue;exports.sendIntent=De;exports.sendRfidOverride=xe;exports.unassignHolderIngredient=$e;
|
|
2
|
+
//# sourceMappingURL=dispense-registration-manager-BSepm8-N.cjs.map
|