@kosdev-code/kos-ddk-models 2.0.2 → 2.0.4

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/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var Or=Object.defineProperty;var Er=(e,t,r)=>t in e?Or(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var n=(e,t,r)=>(Er(e,typeof t!="symbol"?t+"":t,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@kosdev-code/kos-ui-sdk"),me=require("@kosdev-code/kos-freestyle-sdk"),O=require("@kosdev-code/kos-dispense-sdk"),Le="PurgeTrouble",rt="PrimeTrouble",{URL:je}=s.resolveServiceUrl("AUTH_SERVICE"),{getOne:wr,postModel:Lr}=s.ServiceFactory.build({basePath:`${je}/api/auth`}),ot=s.KosLog.createLogger({name:"auth-service",group:"Services"}),st=async()=>(ot.debug("sending GET for auth"),await wr({urlOverride:`${je}/api/app/kosdev.ddk/auth/role`})),it=async e=>(ot.debug("sending POST for auth"),await Lr({urlOverride:`${je}/api/app/kosdev.ddk/auth/pincode/${e}`,model:{}})),kr=Object.freeze(Object.defineProperty({__proto__:null,getCurrentRole:st,sendPinCode:it},Symbol.toStringTag,{value:"Module"}));var Dr=Object.defineProperty,Fr=Object.getOwnPropertyDescriptor,nt=(e,t,r,i)=>{for(var o=i>1?void 0:i?Fr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Dr(t,r,o),o};const F="auth-model",Qe=e=>e.toLowerCase();let ne=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"currentRole");this.id=e,this.logger=r.logger,this.currentRole="crew"}async authorize(e){if(!e)return!1;const t=await it(e);return(t==null?void 0:t.status)===200?t.data:!1}async init(){this.logger.debug(`initializing auth ${this.id}`)}async load(){this.logger.debug(`loading auth ${this.id}`);const e=await st();(e==null?void 0:e.status)===200&&(this.logger.debug(`response ${e.data}`),s.kosAction(()=>{this.currentRole=Qe(e.data)}))}handleRoleChange(e){this.currentRole=Qe(e)}forceRole(e){this.currentRole=e}};nt([s.kosTopicHandler({topic:"/app/kosdev.ddk/auth/role",websocket:!0})],ne.prototype,"handleRoleChange",1);ne=nt([s.kosModel(F)],ne);const ye={registration:{[F]:{class:ne,singleton:!1}},type:F,predicate:s.isKosModel(F),factory:s.Kos.Factory.create(F)};var Rr=Object.defineProperty,Ir=Object.getOwnPropertyDescriptor,at=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ir(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Rr(t,r,o),o};const lt="door-model",Ar=s.createPropKey("doorPath");let ae=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"doorPath");n(this,"open");this.id=e,this.logger=r.logger,this.doorPath=t.doorPath}get currentState(){return this.open.value===void 0?"UNKNOWN":this.open.value?"OPEN":"CLOSED"}get isOpen(){return this.open.value===void 0?!0:this.open.value}};at([s.kosStateProp({path:Ar,attribute:"state"})],ae.prototype,"open",2);ae=at([s.kosModel(lt)],ae);const ct=new s.KosModelRegistrationFactory({class:ae,type:lt}),{URL:Ve}=s.resolveServiceUrl("SETUP-STEP_SERVICE"),{getAll:xr,postModel:Kr}=s.ServiceFactory.build({basePath:`${Ve}/api/setup-step`}),ut=s.KosLog.createLogger({name:"setup-step-service",group:"Services"}),dt=async()=>(ut.debug("sending GET for setup-step"),await xr({urlOverride:`${Ve}/api/app/kosdev.ddk/setup/steps`})),pt=async e=>(ut.debug("sending POST for setup-step"),await Kr({urlOverride:`${Ve}/api/app/kosdev.ddk/setup/complete/${e}`,model:{}})),Ur=Object.freeze(Object.defineProperty({__proto__:null,getSetupSteps:dt,markStepComplete:pt},Symbol.toStringTag,{value:"Module"}));var jr=Object.defineProperty,Vr=Object.getOwnPropertyDescriptor,Hr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Vr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&jr(t,r,o),o};const R="setup-step-model";let ke=class{constructor(e,t,r){n(this,"id");n(this,"idx");n(this,"name");n(this,"complete");n(this,"preStep");n(this,"exclusive");n(this,"logger");this.id=e,this.idx=t.idx,this.logger=r.logger,this.name=t.name,this.complete=t.complete,this.preStep=t.preStep,this.exclusive=t.exclusive}updateModel(e){this.name=e.name,this.idx=e.idx,this.complete=e.complete,this.preStep=e.preStep,this.exclusive=e.exclusive}get titleKey(){return`setup.${this.name}.title`}get bodyKey(){return`setup.${this.name}.body`}async completeStep(){const e=await pt(this.name);(e==null?void 0:e.status)===200&&s.kosAction(()=>{this.complete=!0})}async init(){this.logger.debug(`initializing setup-step ${this.id}`)}async load(){this.logger.debug(`loading setup-step ${this.id}`)}};ke=Hr([s.kosModel(R)],ke);const He={registration:{[R]:{class:ke,singleton:!1}},type:R,predicate:s.isKosModel(R),factory:s.Kos.Factory.create(R)};var Nr=Object.defineProperty,Wr=Object.getOwnPropertyDescriptor,ve=(e,t,r,i)=>{for(var o=i>1?void 0:i?Wr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Nr(t,r,o),o};const I="setup-step-container-model";function Xe(e){return t=>{const r=He.factory(t.id)(t);r.updateModel(t),e.addModel(r)}}function Je(e){return t=>{e.removeModel(t)}}let _=class{constructor(e,t,r){n(this,"id");n(this,"_currentStep");n(this,"logger");n(this,"models");n(this,"authModel");this.id=e,this.logger=r.logger,this._currentStep=void 0,this.models=new s.KosModelContainer({parentId:e,sortKey:"idx"})}get currentStep(){return this._currentStep}setCurrentStep(e){const t=this.models.getModel(e);t&&(this._currentStep=t)}nextStep(){if(!this._currentStep)this._currentStep=this.firstIncompleteStep;else{const e=this._currentStep.idx,t=this.models.data.find(r=>r.idx>e);t&&(this._currentStep=t)}}get hasIncompletePreSteps(){return this.models.data.some(e=>e.preStep&&!e.complete)}get setupRequired(){return this.models.data.some(e=>!e.complete)}get firstIncompleteStep(){return this.models.data.find(e=>!e.complete)}get isLastStep(){var e;return this.models.data[this.models.data.length-1].id===((e=this._currentStep)==null?void 0:e.id)}get data(){return this.models.data}getModel(e){return this.models.getModel(e)}addModel(e){this.models.addModel(e)}removeModel(e){this.models.removeModel(e)}async init(){this.logger.debug(`initializing setup-step-container container ${this.id}`)}async load(){this.logger.debug(`loading setup-step-container container ${this.id}`);const e=await dt();if(e!=null&&e.data){const t=e.data.map((r,i)=>({...r,idx:i,id:`setup-${r.name}`}));s.resolveContainerDeltas({container:this.models,onAddItem:Xe(this),onRemoveItem:Je(this)})(t)}this.nextStep()}handleStepChanges(e){const t=e.map((r,i)=>({...r,idx:i,id:`setup-${r.name}`}));s.resolveContainerDeltas({container:this.models,onAddItem:Xe(this),onRemoveItem:Je(this)})(t)}};ve([s.kosChild],_.prototype,"models",2);ve([s.kosDependency({modelType:ye.type})],_.prototype,"authModel",2);ve([s.kosTopicHandler({topic:"/app/kosdev.ddk/setup/steps",websocket:!0})],_.prototype,"handleStepChanges",1);_=ve([s.kosModel(I)],_);const Ne={registration:{[I]:{class:_,singleton:!0},...He.registration},type:I,predicate:s.isKosModel(I),factory:s.Kos.Singleton.create(I)},{URL:ee}=s.resolveServiceUrl("AUTH_SERVICE"),{getOne:gt,getAll:ht}=s.ServiceFactory.build({basePath:`${ee}/api/app/kosdev.ddk/ncui/`}),be=s.KosLog.createLogger({name:"auth-service",group:"Services"}),zr=async()=>{be.debug("sending GET for cuis");const e=await ht({urlOverride:`${ee}/api/app/kosdev.ddk/cui`});if((e==null?void 0:e.status)!==200)throw new Error("Failed to retrieve cuis");return e.data},Br=async()=>{be.debug("sending GET for navigation");const e=await ht({urlOverride:`${ee}/api/kos/descriptor/system:app/kondra.ncui.navigations`});if((e==null?void 0:e.status)!==200)throw new Error("Failed to retrieve navigation data");return e.data},Yr=async()=>(be.debug("navigating to CUI"),await gt({urlOverride:`${ee}/api/app/kosdev.ddk/cui/open`})),qr=async()=>(be.debug("navigating to NCUI"),await gt({urlOverride:`${ee}/api/app/kosdev.ddk/ncui/open`}));var Gr=Object.defineProperty,Qr=Object.getOwnPropertyDescriptor,y=(e,t,r,i)=>{for(var o=i>1?void 0:i?Qr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Gr(t,r,o),o};const A="application-model",ft=(e,t="")=>e.reduce((r,i)=>{const o=t?`${t}.${i.name}`:i.name;if(r[o]={...i,root:!t},i.children){const l=ft(i.children,o);Object.keys(l).forEach(a=>{r[a]=l[a]})}return r},{});let p=class{constructor(e,t,r){n(this,"id");n(this,"device");n(this,"authModel");n(this,"setupStepContainer");n(this,"door");n(this,"ncuiLanguage");n(this,"activeCui");n(this,"fallbackCui");n(this,"_cuis",[]);n(this,"_navigationItems",[]);n(this,"languages");n(this,"logger");this.id=e,this.languages=[],this._cuis=[],this.logger=r.logger,this.door=ct.instance("app:kosdev.ddk:service:door:door").options({doorPath:"app:kosdev.ddk:service:door:door"}).build()}get setupRequired(){return this.authModel.currentRole==="crew"?!1:this.setupStepContainer.setupRequired}get currentRole(){return this.authModel.currentRole}get cuis(){return this._cuis.reduce((e,t)=>(e[t.name]=t,e),{})}get navigationItems(){return ft(this._navigationItems)}get hasCuiDefined(){return!!this.activeCui.value||!!this.fallbackCui.value}get doorIsOpen(){return this.door.isOpen}async enter(){this.logger.info("navigating to NCUI"),await qr()}async exit(){this.logger.info("navigating to CUI"),await Yr()}async load(){var r,i;this.logger.debug(`loading application ${this.id}`);const e=await Br();this._navigationItems=e;const t=await zr();this._cuis=t,(r=this.setupStepContainer)!=null&&r.hasIncompletePreSteps&&((i=this.authModel)==null||i.forceRole("technician")),this.languages=[{name:"English",locale:"en"}]}};y([s.kosDependency({modelType:s.Device.type})],p.prototype,"device",2);y([s.kosDependency({modelType:ye.type})],p.prototype,"authModel",2);y([s.kosDependency({modelType:Ne.type})],p.prototype,"setupStepContainer",2);y([s.kosChild],p.prototype,"door",2);y([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.ncuiLanguage"})],p.prototype,"ncuiLanguage",2);y([s.kosConfigProperty({path:"app:kosdev.ddk:service:cui",attribute:"activeCui"})],p.prototype,"activeCui",2);y([s.kosConfigProperty({path:"app:kosdev.ddk:service:cui",attribute:"fallbackCui"})],p.prototype,"fallbackCui",2);p=y([s.kosModel(A)],p);const _e={registration:{[A]:{class:p,singleton:!0}},type:A,predicate:s.isKosModel(A),factory:s.Kos.Singleton.create(A)},ie={none:999,crew:0,technician:1,manager:2},We=e=>t=>{if(t.type===me.AGITATION_REQUIRED_TROUBLE)return!1;const r=(t==null?void 0:t.role)||"technician";if(e&&r){const i=ie[e.toLowerCase()]??ie.crew,o=ie[r.toLowerCase()]??ie.crew;return i>=o}return!1};var Xr=Object.defineProperty,Jr=Object.getOwnPropertyDescriptor,E=(e,t,r,i)=>{for(var o=i>1?void 0:i?Jr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Xr(t,r,o),o};const mt="agitation-control-model",De="resolve",Zr="agitate";let h=class{constructor(e,t,r){n(this,"id");n(this,"futureHandler");n(this,"logger");n(this,"troubleContainer");n(this,"_agitationFutureId");n(this,"_canExit",!0);n(this,"_exiting",!1);n(this,"_isFailed",!1);n(this,"disposer");n(this,"application");n(this,"inProgress",[]);this.id=e,this.logger=r.logger,this.troubleContainer=t.companionParent,this.futureHandler=new s.MultipleFutureHandler(this,De)}set isFailed(e){this._isFailed=e}get isFailed(){return this._isFailed}get isDoorClosed(){return!this.application.doorIsOpen}get isAgitating(){return!!this._agitationFutureId}set exiting(e){this._exiting=e}get exiting(){return this._exiting}get canExit(){return this.queuedTroubles.length===0&&this._canExit}clearAll(){this.queuedTroubles.forEach(e=>{e.clearDefer()})}get readyToResolve(){const e=this.queuedTroubles.length,t=this.queuedTroubles.filter(i=>i.shouldDefer),r=e>0&&t.length===0;return this.isDoorClosed&&r&&this.exiting}onFutureUpdate(e){e.endState===s.FutureEndState.Success?(this.logger.debug(`Resolve deferred troubles future ${e.id} completed successfully`),this.queuedTroubles.forEach(t=>{t.clearDefer()}),s.kosAction(()=>{this._canExit=!0,this._isFailed=!1})):(e.endState===s.FutureEndState.Fail||e.endState===s.FutureEndState.Canceled||e.endState===s.FutureEndState.Aborted)&&(this.logger.error(`Resolve deferred troubles future ${e.id} failed`),this.clearAll(),s.kosAction(()=>{this._canExit=!1,this._isFailed=!0}))}async resolveDeferredTroubles(e){const t=this.queuedTroubles.filter(i=>!i.shouldDefer).map(i=>i.rawId).filter(i=>!this.inProgress.includes(i));return this.inProgress.push(...t),t.length===0?void 0:await s.TroubleServices.bulkResolveTroubles(t,e)}get hasQueuedTroubles(){return this.queuedTroubles.length>0}get queuedTroubles(){return this.troubleContainer.troubles.getIndexByKey(s.Troubles.INDEX_TROUBLES_BY_DEFERRED,s.Troubles.TROUBLES_DEFERRED)}get visibleTroubles(){const e=this.application.currentRole;return this.troubleContainer.troubles.data.filter(We(e)).filter(t=>t.type!==me.AGITATION_REQUIRED_TROUBLE)}get future(){return this.futureHandler.future}get resolveFuture(){return this.futureHandler.getFuture(De)}get agitateFuture(){return this.futureHandler.getFuture(Zr)}handleAgitationStarted(e){this.logger.info(`Agitation started for ${e.path}`),this._agitationFutureId=String(e.futureId)}handleAgitationEnded(e){this.logger.info(`Agitation ended for ${e.path}`),this._agitationFutureId=void 0}async init(){this.logger.debug(`initializing agitation-control ${this.id}`)}unload(){this.logger.debug(`unloading agitation-control ${this.id}`),this.disposer&&this.disposer()}handleReadyToResolve(){this.readyToResolve&&(this.logger.info("AgitationControl - Resolving deferred troubles"),this.resolveDeferredTroubles()),this._agitationFutureId&&this.logger.info("AgitationControl - Agitation started")}async load(){this.logger.debug(`loading agitation-control ${this.id}`)}};E([s.kosDependency({modelType:_e.type})],h.prototype,"application",2);E([s.kosFuture({alias:De})],h.prototype,"resolveDeferredTroubles",1);E([s.kosTopicHandler({topic:me.CartridgeAgitatorEvents.TOPIC_AGITATION_STARTED})],h.prototype,"handleAgitationStarted",1);E([s.kosTopicHandler({topic:me.CartridgeAgitatorEvents.TOPIC_AGITATION_ENDED})],h.prototype,"handleAgitationEnded",1);E([s.kosModelEffect({dependencies:e=>[e.readyToResolve,e._agitationFutureId]})],h.prototype,"handleReadyToResolve",1);h=E([s.kosModel(mt)],h);const eo=new s.SingletonKosModelRegistrationFactory({class:h,type:mt});var to=Object.defineProperty,ro=Object.getOwnPropertyDescriptor,te=(e,t,r,i)=>{for(var o=i>1?void 0:i?ro(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&to(t,r,o),o};const x="animation-model";let b=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"disableAll");n(this,"enableDial");n(this,"enableModal");n(this,"enableSideBar");this.id=e,this.logger=r.logger}};te([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.disableAll"})],b.prototype,"disableAll",2);te([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableDial"})],b.prototype,"enableDial",2);te([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableModal"})],b.prototype,"enableModal",2);te([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableSideBar"})],b.prototype,"enableSideBar",2);b=te([s.kosModel(x)],b);const yt={registration:{[x]:{class:b,singleton:!0}},type:x,predicate:s.isKosModel(x),factory:s.Kos.Singleton.create(x)},{URL:oo}=s.resolveServiceUrl("ANIMATION_SERVICE"),{getAll:so}=s.ServiceFactory.build({basePath:`${oo}/api/animation`}),io=s.KosLog.createLogger({name:"animation-service",group:"Services"}),no=async()=>(io.debug("sending GET for animation"),await so({})),ao=Object.freeze(Object.defineProperty({__proto__:null,getAnimations:no},Symbol.toStringTag,{value:"Module"})),{URL:w}=s.resolveServiceUrl("FCM-PUMP_SERVICE"),{postModel:re}=s.ServiceFactory.build({basePath:`${w}/api/fcm-pump`}),c=s.KosLog.createLogger({name:"fcm-pump-service",group:"Services"}),vt=async e=>{var t,r,i,o,l;c.debug(`performElectricalTest - sending POST request to /api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`);try{const a=await re({model:{},urlOverride:`${w}/api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`});return c.debug("performElectricalTest - response:",a),((a==null?void 0:a.status)===200||(a==null?void 0:a.status)===499)&&((t=a.data)!=null&&t.error)?[a.data.error||"unknownError",a.data]:[void 0,a==null?void 0:a.data]}catch(a){if(c.error(`performElectricalTest - sending POST request to /api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`,a),a instanceof s.FetchError){const v=((i=(r=a.payload)==null?void 0:r.data)==null?void 0:i.error)||((o=a.payload)==null?void 0:o.error)||"unknownError";return[v,((l=a.payload)==null?void 0:l.data)||{error:v}]}}return["unknownError",{error:"unknownError"}]},bt=async(e,t)=>{c.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/preCalibrate`);try{const r=await re({model:{},urlOverride:`${w}/api/ext/freestyle/fcm/calibration/${e}/preCalibrate`,tracker:t});return c.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){c.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/preCalibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},_t=async(e,t)=>{c.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/calibrate`);try{const r=await re({model:{},urlOverride:`${w}/api/ext/freestyle/fcm/calibration/${e}/calibrate`,tracker:t});return c.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){c.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/calibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Pt=async(e,t,r)=>{c.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/verify/${t}`);try{const i=await re({model:{},urlOverride:`${w}/api/ext/freestyle/fcm/calibration/${e}/verify/${t}`,tracker:r});return c.debug("performVerify - response:",i),i!=null&&i.data&&s.FutureManager.initiateFuture(i.data),i==null?void 0:i.data}catch(i){c.error(`performVerify - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/verify/${t}`,i);const o={id:r||"",endState:s.FutureEndState.Fail,tracker:r,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(o),o}},$t=async(e,t,r)=>{c.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`);try{const i=await re({model:{},urlOverride:`${w}/api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`});return c.debug("performPreCalibrate - response:",i),i==null?void 0:i.data}catch(i){c.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`,i);return}},lo=Object.freeze(Object.defineProperty({__proto__:null,performCalibrate:_t,performComplete:$t,performElectricalTest:vt,performPreCalibrate:bt,performVerify:Pt},Symbol.toStringTag,{value:"Module"}));var co=Object.defineProperty,uo=Object.getOwnPropertyDescriptor,Pe=(e,t,r,i)=>{for(var o=i>1?void 0:i?uo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&co(t,r,o),o};const Tt="fcm-pump-model",po=s.KosLog.createLogger({name:"fcm-pump-model"});let P=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pumpModel");n(this,"futureHandler");this.id=e,this.logger=r.logger,this.pumpModel=t.companionParent,this.futureHandler=new s.FutureHandler(this)}get future(){return this.futureHandler.future}get name(){return this.pumpModel.name}get canPour(){return this.pumpModel.canPour}get isPouring(){return this.pumpModel.isPouring}async cancelPour(){return this.pumpModel.cancelPour()}performIntent(e){return this.pumpModel.performIntent(e)}async performElectricalTest(){const[e,t]=await vt(this.pumpModel.path);return e&&po.error(`Failed to perform electrical test on pump ${this.id}`,e),t}getChildren(){return[...this.futureHandler.allFutures]}async performPreCalibrate(e){return bt(this.pumpModel.path,e)}async performCalibrate(e){return _t(this.pumpModel.path,e)}async performVerify(e,t){return Pt(this.pumpModel.path,e,t)}async performComplete(e,t){return $t(this.pumpModel.path,e,t)}async init(){this.logger.debug(`initializing fcm-pump ${this.id}`)}async load(){this.logger.debug(`loading fcm-pump ${this.id}`)}};Pe([s.kosFuture()],P.prototype,"performPreCalibrate",1);Pe([s.kosFuture()],P.prototype,"performCalibrate",1);Pe([s.kosFuture()],P.prototype,"performVerify",1);P=Pe([s.kosModel(Tt)],P);const ze=new s.KosModelRegistrationFactory({class:P,type:Tt});var go=Object.defineProperty,ho=Object.getOwnPropertyDescriptor,Mt=(e,t,r,i)=>{for(var o=i>1?void 0:i?ho(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&go(t,r,o),o};const K="carb-water-model";let le=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getPump(){const t=this.assemblyModel.getHoldersByGroup("carb")[0].pumps.data[0];return s.getKosCompanionModel(t,ze.type)}async init(){this.logger.debug(`initializing carb-water ${this.id}`)}async load(){this.logger.debug(`loading carb-water ${this.id}`)}};Mt([s.kosDependency({modelType:O.Assembly.type})],le.prototype,"assemblyModel",2);le=Mt([s.kosModel(K)],le);const St={registration:{[K]:{class:le,singleton:!1}},type:K,predicate:s.isKosModel(K),factory:s.Kos.Factory.create(K)},{URL:L}=s.resolveServiceUrl("COPY-LOGS_SERVICE"),{getAll:fo,getOne:mo,postModel:Ct,deleteModel:yo}=s.ServiceFactory.build({basePath:`${L}/api/copy-logs`}),ce=s.KosLog.createLogger({name:"copy-logs-service",group:"Services"}),Ot=async(e,t)=>{const r=await yo({tracker:t,id:e,urlOverride:`${L}/api/app/kosdev.ddk/copyLogs/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},Et=async(e,t)=>{const r=await Ct({model:{},tracker:t,urlOverride:`${L}/api/app/kosdev.ddk/copyLogs/eraseAndCopy/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},wt=async(e,t)=>{const r=await Ct({model:{},tracker:t,urlOverride:`${L}/api/app/kosdev.ddk/copyLogs/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},Lt=async()=>{ce.debug("sending GET for copy-logs");try{const e=await fo({urlOverride:`${L}/api/app/kosdev.ddk/copyLogs/volumes/size`});return[void 0,e==null?void 0:e.data]}catch(e){if(e instanceof s.FetchError)return ce.error(`Error fetching log file size: ${e.payload.error}`),[e.payload.error,void 0]}return["unknownError",void 0]},kt=async()=>{ce.debug("sending GET for log file size");try{const e=await mo({urlOverride:`${L}/api/app/kosdev.ddk/copyLogs/files/size`});return[void 0,e==null?void 0:e.data]}catch(e){if(e instanceof s.FetchError)return ce.error(`Error fetching log file size: ${e.payload.error}`),[e.payload.error,void 0]}return["unknownError",void 0]},vo=Object.freeze(Object.defineProperty({__proto__:null,copyLogFromVolume:wt,eraseAndCopyLogsToVolume:Et,eraseVolume:Ot,getLogFileSize:kt,getVolumes:Lt},Symbol.toStringTag,{value:"Module"}));var bo=Object.defineProperty,_o=Object.getOwnPropertyDescriptor,k=(e,t,r,i)=>{for(var o=i>1?void 0:i?_o(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&bo(t,r,o),o};const Dt="copy-logs-model";let f=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"_volumes");n(this,"futureHandler");n(this,"storageDeviceContainer");n(this,"_activeVolume");n(this,"_logFileSize",0);n(this,"_actionState","idle");n(this,"copyProgress");this.id=e,this.logger=r.logger,this._volumes=new s.KosDataContainer,this.futureHandler=new s.FutureHandler(this),this._activeVolume=void 0,this.copyProgress={bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0}}get volumes(){return this._volumes.data}get activeVolume(){return this._activeVolume}get logFileSize(){return this._logFileSize}reset(){this.clearActiveVolume(),this.futureHandler.removeFuture()}clearActiveVolume(){this._activeVolume=void 0}updateActiveVolume(e){this._activeVolume=e}get inserted(){return this.storageDeviceContainer.isStorageInserted}updateLogFileSize(e){this._logFileSize=e}get canCopyLogs(){return this.inserted&&this._activeVolume}get future(){return this.futureHandler.future}get actionState(){return this._actionState}get diskFull(){var e;return((e=this.future)==null?void 0:e.status)===s.FutureEndState.Success&&this.copyProgress.filesSkipped>0}onFutureUpdate(e){this.logger.info(`Future update: ${e.status}`),e.status===s.FutureEndState.Success&&(this.logger.info(`Future success: ${e.status}`),this.diskFull&&s.kosAction(()=>{e.endState=s.FutureEndState.Fail,e.reason="errDiskFull"})),e.status===s.FutureEndState.Fail&&this.logger.error(`Future failed: ${e.status}`),e.note==="copy"?s.kosAction(()=>{this._actionState="copying",this.copyProgress=e.clientData||{bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0}}):(this._actionState="erasing",s.kosAction(()=>{this.copyProgress={bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0}}))}async eraseAndCopyVolume(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="erasing"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Erasing volume ${(t=this._activeVolume)==null?void 0:t.name}`),Et(this._activeVolume.id,e)}async eraseVolume(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="erasing"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Erasing volume ${(t=this._activeVolume)==null?void 0:t.name}`),Ot(this._activeVolume.id,e)}async copyLogs(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="copying"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Copying logs to ${(t=this._activeVolume)==null?void 0:t.name}`),wt(this._activeVolume.id,e)}handleInsertion(){this.inserted?this.syncVolumes():(this._volumes.clear(),this.clearActiveVolume())}async init(){this.logger.debug(`initializing copy-logs ${this.id}`)}async syncVolumes(){const[e,t]=await Lt(),[r,i]=await kt();if(r){this.logger.error(`Error fetching log file size: ${r}`);return}if(e){this.logger.error(`Error fetching volumes: ${e}`);return}t&&(t.forEach(o=>{const l=this.storageDeviceContainer.getModel(o.id);if(l){const a={id:o.id,name:l.label,freeBytes:o.info.freeBytes,totalBytes:o.info.totalBytes};this._volumes.addModel(a)}}),t.length===1?this.updateActiveVolume(this._volumes.data[0]):this.clearActiveVolume()),i&&(this.logger.info(`Log file size: ${i}`),this.updateLogFileSize(parseInt(i,10)))}async activate(){this.logger.debug(`activating copy-logs ${this.id}`),await this.syncVolumes()}async load(){this.logger.debug(`loading copy-logs ${this.id}`)}};k([s.kosDependency({modelType:s.StorageDeviceContainer.type})],f.prototype,"storageDeviceContainer",2);k([s.kosFuture()],f.prototype,"eraseAndCopyVolume",1);k([s.kosFuture()],f.prototype,"eraseVolume",1);k([s.kosFuture()],f.prototype,"copyLogs",1);k([s.kosModelEffect({dependencies:e=>[e.inserted]})],f.prototype,"handleInsertion",1);f=k([s.kosModel(Dt)],f);const Po=new s.SingletonKosModelRegistrationFactory({class:f,type:Dt}),Ft=s.KosLog.createLogger({name:"dashboard-operations-service",group:"Services"}),Rt=async(e,t)=>(Ft.debug("resolveAll"),await s.TroubleServices.bulkResolveTroubles(e,t)),It=async(e,t)=>(Ft.debug("resolveTrouble"),await s.TroubleServices.resolveTrouble(e,t)),$o=Object.freeze(Object.defineProperty({__proto__:null,resolveAll:Rt,resolveTrouble:It},Symbol.toStringTag,{value:"Module"}));var To=Object.defineProperty,Mo=Object.getOwnPropertyDescriptor,$e=(e,t,r,i)=>{for(var o=i>1?void 0:i?Mo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&To(t,r,o),o};const U="dashboard-operations-model";function Ze(e){return!e.deferred}function et(e){return e.deferred}let $=class{constructor(e,t,r){n(this,"id");n(this,"troubles");n(this,"futureHandler");n(this,"logger");this.id=e,this.futureHandler=new s.FutureHandler(this),this.logger=r.logger}get troublesByType(){return this.troubles.troubles.data.reduce(s.troubleByTypeReducer,{})}get queuedPurgeTroubles(){return this.purgeTroubles.filter(et)}get queuedPrimeTroubles(){return this.primeTroubles.filter(et)}get resolvablePrimeTroubles(){return this.primeTroubles.filter(Ze)}get resolvablePurgeTroubles(){return this.purgeTroubles.filter(Ze)}get hasResolvablePurgeTroubles(){return this.resolvablePurgeTroubles.length>0}get hasResolvablePrimeTroubles(){return this.resolvablePrimeTroubles.length>0}get hasPurgeTroubles(){return this.purgeTroubles.length>0}get hasPrimeTroubles(){return this.primeTroubles.length>0}get purgeTroubles(){return this.troublesByType[Le]||[]}get primeTroubles(){return this.troublesByType[rt]||[]}get future(){return this.futureHandler.getFuture()}async resolveAllTroubles(e,t){if(!t)throw new Error("No tracker provided");const r=e===Le?this.purgeTroubles:this.primeTroubles;r.filter(a=>a.shouldDefer).forEach(a=>{this.logger.info(`Deferring trouble ${a.rawId}`),a.defer()});const o=r.filter(a=>!a.shouldDefer).map(a=>a.rawId);return o.length===0?void 0:await Rt(o,t)}async resolveTrouble(e,t){if(!t)throw new Error("No tracker provided");return await It(e,t)}async init(){this.logger.debug(`initializing dashboard-operations ${this.id}`)}async load(){this.logger.debug(`loading dashboard-operations ${this.id}`)}};$e([s.kosDependency({modelType:s.TroubleContainer.type})],$.prototype,"troubles",2);$e([s.kosFuture()],$.prototype,"resolveAllTroubles",1);$e([s.kosFuture()],$.prototype,"resolveTrouble",1);$=$e([s.kosModel(U)],$);const Te={registration:{[U]:{class:$,singleton:!0}},type:U,predicate:s.isKosModel(U),factory:s.Kos.Singleton.create(U)};var So=Object.defineProperty,Co=Object.getOwnPropertyDescriptor,Oo=(e,t,r,i)=>{for(var o=i>1?void 0:i?Co(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&So(t,r,o),o};const j="dispenser-model";let Fe=class{constructor(e,t,r){n(this,"id");n(this,"logger");this.id=e,this.logger=r.logger}updateModel(){}async init(){this.logger.debug(`initializing dispenser ${this.id}`)}async load(){this.logger.debug(`loading dispenser ${this.id}`)}};Fe=Oo([s.kosModel(j)],Fe);const At={registration:{[j]:{class:Fe,singleton:!0}},type:j,predicate:s.isKosModel(j),factory:s.Kos.Singleton.create(j)},{URL:Eo}=s.resolveServiceUrl("DISPENSER_SERVICE"),{getAll:wo}=s.ServiceFactory.build({basePath:`${Eo}/api/dispenser`}),Lo=s.KosLog.createLogger({name:"dispenser-service",group:"Services"}),ko=async()=>(Lo.debug("sending GET for dispenser"),await wo({})),Do=Object.freeze(Object.defineProperty({__proto__:null,getDispensers:ko},Symbol.toStringTag,{value:"Module"}));var Fo=Object.defineProperty,Ro=Object.getOwnPropertyDescriptor,xt=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ro(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Fo(t,r,o),o};const V="dispenser-info-model";let ue=class{constructor(e,t,r){n(this,"logger");n(this,"id");n(this,"name");this.id=e,this.logger=r.logger}async init(){this.logger.debug(`initializing dispenser-info ${this.id}`)}async load(){this.logger.debug(`loading dispenser-info ${this.id}`)}};xt([s.kosConfigProperty({path:"kos:device",attribute:"name"})],ue.prototype,"name",2);ue=xt([s.kosModel(V)],ue);const Kt={registration:{[V]:{class:ue,singleton:!1}},type:V,predicate:s.isKosModel(V),factory:s.Kos.Factory.create(V)},{URL:Io}=s.resolveServiceUrl("DISPENSER-INFO_SERVICE"),{getAll:Ao}=s.ServiceFactory.build({basePath:`${Io}/api/dispenser-info`}),xo=s.KosLog.createLogger({name:"dispenser-info-service",group:"Services"}),Ko=async()=>(xo.debug("sending GET for dispenser-info"),await Ao({})),Uo=Object.freeze(Object.defineProperty({__proto__:null,getDispenserInfos:Ko},Symbol.toStringTag,{value:"Module"}));var jo=Object.defineProperty,Vo=Object.getOwnPropertyDescriptor,Ho=(e,t,r,i)=>{for(var o=i>1?void 0:i?Vo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&jo(t,r,o),o};const H="enrollment-model";let Re=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"enrolled");this.id=e,this.logger=r.logger,this.enrolled=!1}updateModel(e){console.log("updateModel:",e)}async init(){this.logger.debug(`initializing enrollment ${this.id}`)}async load(){this.logger.debug(`loading enrollment ${this.id}`)}};Re=Ho([s.kosModel(H)],Re);const Ut={registration:{[H]:{class:Re,singleton:!0}},type:H,predicate:s.isKosModel(H),factory:s.Kos.Singleton.create(H)},{URL:No}=s.resolveServiceUrl("ENROLLMENT_SERVICE"),{getAll:Wo}=s.ServiceFactory.build({basePath:`${No}/api/enrollment`}),zo=s.KosLog.createLogger({name:"enrollment-service",group:"Services"}),Bo=async()=>(zo.debug("sending GET for enrollment"),await Wo({})),Yo=Object.freeze(Object.defineProperty({__proto__:null,getEnrollments:Bo},Symbol.toStringTag,{value:"Module"})),qo=e=>e.toLowerCase().includes("micros"),Go=e=>!e.toLowerCase().includes("micros"),Qo=e=>t=>{const r=e==null?void 0:e.getHoldersByGroup(t);return r?r.map(i=>({id:i.id,name:i.ingredientName,path:i.path})):null},Xo=["water","carb","ns","nss"],T="dashboardKeyFactory",we=[];s.registerExtensionPoint(T,{register:(e,t)=>{we.includes(t)||we.push(t)},execute:(e,t)=>{const r=we.sort((i,o)=>i.rank-o.rank);for(const i of r){const o=i.factory(t);if(o)return o}}});const jt=e=>{s.ExtensionManager[T].register(T,e)},Vt=e=>s.ExtensionManager[T].execute(T,e);s.ExtensionManager.registerDashboardKeyFactory=jt;s.ExtensionManager.executeDashboardKeyFactory=Vt;const Ie=3600,Ht=60,Jo=e=>{const t=Math.floor(e/Ie),r=Math.floor(e%Ie/Ht);return{hours:t,minutes:r}},Zo=(e,t)=>e*Ie+t*Ht,Nt=e=>{const r=new Date().valueOf()-e.valueOf(),i=Math.floor(r/(1e3*60)),o=Math.floor(i/60),l=Math.floor(o/24),a=i%60,v=o%24;let se="";return l>0&&(se+=`${l} day${l>1?"s":""} `),v>0&&(se+=`${v} hour${v>1?"s":""} `),(a>0||l===0&&v===0)&&(se+=`${a} minute${a>1?"s":""} `),se};var es=Object.defineProperty,ts=Object.getOwnPropertyDescriptor,Me=(e,t,r,i)=>{for(var o=i>1?void 0:i?ts(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&es(t,r,o),o};const N="ingredient-summary-model";let M=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"dashboardOperationModel");n(this,"appModel");n(this,"logger");this.id=e,this.logger=r.logger,this.dashboardOperationModel=Te.factory({})}get highPriorityHolders(){return this.assemblyModel.allHolders.filter(e=>e.troubles.length>0&&e.troubles.find(t=>t.rank>=400))}get actionRequiredHolders(){const e=this.appModel.currentRole,t=We(e);return this.assemblyModel.allHolders.filter(r=>{const i=r.troubles.filter(t);return i.length>0&&i.find(o=>o.resolvable)})}get lowLevelHolders(){return this.assemblyModel.allHolders.filter(e=>{const t=e.fillPercent;return e.hasFuelGuage&&t<20})}async init(){this.logger.debug(`initializing ingredient-summary ${this.id}`)}async load(){this.logger.debug(`loading ingredient-summary ${this.id}`)}};Me([s.kosDependency({modelType:O.Assembly.type})],M.prototype,"assemblyModel",2);Me([s.kosDependency({modelType:Te.type})],M.prototype,"dashboardOperationModel",2);Me([s.kosDependency({modelType:_e.type})],M.prototype,"appModel",2);M=Me([s.kosModel(N)],M);const Wt={registration:{[N]:{class:M,singleton:!1}},type:N,predicate:s.isKosModel(N),factory:s.Kos.Factory.create(N)};var rs=Object.defineProperty,os=Object.getOwnPropertyDescriptor,ss=(e,t,r,i)=>{for(var o=i>1?void 0:i?os(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&rs(t,r,o),o};const zt="lfcv-pump-model";let Ae=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pumpModel");this.id=e,this.logger=r.logger,this.pumpModel=t.companionParent}get name(){return this.pumpModel.name}get canPour(){return this.pumpModel.canPour}get isPouring(){return this.pumpModel.isPouring}async cancelPour(){return this.pumpModel.cancelPour()}performIntent(e){return this.pumpModel.performIntent(e)}async init(){this.logger.debug(`initializing lfcv-pump ${this.id}`)}async load(){this.logger.debug(`loading lfcv-pump ${this.id}`)}};Ae=ss([s.kosModel(zt)],Ae);const is=new s.KosModelRegistrationFactory({class:Ae,type:zt}),{URL:ns}=s.resolveServiceUrl("LFCV-PUMP_SERVICE"),{getAll:as}=s.ServiceFactory.build({basePath:`${ns}/api/lfcv-pump`}),ls=s.KosLog.createLogger({name:"lfcv-pump-service",group:"Services"}),cs=async()=>(ls.debug("sending GET for lfcv-pump"),await as({})),us=Object.freeze(Object.defineProperty({__proto__:null,getLfcvPumps:cs},Symbol.toStringTag,{value:"Module"})),{URL:Be}=s.resolveServiceUrl("LOCKOUT_SERVICE"),{postModel:Bt}=s.ServiceFactory.build({basePath:`${Be}/api/app/kosdev.ddk/lockout`}),Yt=s.KosLog.createLogger({name:"lockout-service",group:"Services"}),ds=async()=>(Yt.info("lock"),await Bt({model:{},urlOverride:`${Be}/api/app/kosdev.ddk/lockout/lockNow`})),qt=async e=>{Yt.info("unlock");const t=await Bt({model:{},urlOverride:`${Be}/api/app/kosdev.ddk/lockout/unlock/${e}`});return t==null?void 0:t.data},ps=Object.freeze(Object.defineProperty({__proto__:null,lock:ds,unlock:qt},Symbol.toStringTag,{value:"Module"}));var gs=Object.defineProperty,hs=Object.getOwnPropertyDescriptor,D=(e,t,r,i)=>{for(var o=i>1?void 0:i?hs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&gs(t,r,o),o};const Gt="lockout-model",fs=[{day:"monday",lock:"dayWiseLockConfigMap.Mon.enabled",open:"dayWiseLockConfigMap.Mon.unlockTime",close:"dayWiseLockConfigMap.Mon.lockTime"},{day:"tuesday",lock:"dayWiseLockConfigMap.Tue.enabled",open:"dayWiseLockConfigMap.Tue.unlockTime",close:"dayWiseLockConfigMap.Tue.lockTime"},{day:"wednesday",lock:"dayWiseLockConfigMap.Wed.enabled",open:"dayWiseLockConfigMap.Wed.unlockTime",close:"dayWiseLockConfigMap.Wed.lockTime"},{day:"thursday",lock:"dayWiseLockConfigMap.Thu.enabled",open:"dayWiseLockConfigMap.Thu.unlockTime",close:"dayWiseLockConfigMap.Thu.lockTime"},{day:"friday",lock:"dayWiseLockConfigMap.Fri.enabled",open:"dayWiseLockConfigMap.Fri.unlockTime",close:"dayWiseLockConfigMap.Fri.lockTime"},{day:"saturday",lock:"dayWiseLockConfigMap.Sat.enabled",open:"dayWiseLockConfigMap.Sat.unlockTime",close:"dayWiseLockConfigMap.Sat.lockTime"},{day:"sunday",lock:"dayWiseLockConfigMap.Sun.enabled",open:"dayWiseLockConfigMap.Sun.unlockTime",close:"dayWiseLockConfigMap.Sun.lockTime"}];let m=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"dayEnabledList",["dayWiseLockConfigMap.Sun.enabled","dayWiseLockConfigMap.Mon.enabled","dayWiseLockConfigMap.Tue.enabled","dayWiseLockConfigMap.Wed.enabled","dayWiseLockConfigMap.Thu.enabled","dayWiseLockConfigMap.Fri.enabled","dayWiseLockConfigMap.Sat.enabled"]);n(this,"dayOpenAtList",["dayWiseLockConfigMap.Sun.unlockTime","dayWiseLockConfigMap.Mon.unlockTime","dayWiseLockConfigMap.Tue.unlockTime","dayWiseLockConfigMap.Wed.unlockTime","dayWiseLockConfigMap.Thu.unlockTime","dayWiseLockConfigMap.Fri.unlockTime","dayWiseLockConfigMap.Sat.unlockTime"]);n(this,"dayCloseAtList",["dayWiseLockConfigMap.Sun.lockTime","dayWiseLockConfigMap.Mon.lockTime","dayWiseLockConfigMap.Tue.lockTime","dayWiseLockConfigMap.Wed.lockTime","dayWiseLockConfigMap.Thu.lockTime","dayWiseLockConfigMap.Fri.lockTime","dayWiseLockConfigMap.Sat.lockTime"]);n(this,"saveMap");n(this,"pin");n(this,"nextLockSkipped");n(this,"nextLockTime");n(this,"nextUnLockTime");n(this,"cuiLockout");this.id=e,this.logger=r.logger,this.saveMap=new Map}get enabled(){const e=this.getProp("oneTimeLockConfig.lockTime"),t=e!==void 0&&e!=="",r=this.getProp("lockScheduleEnabled");return t||r}get schedule(){return fs}getProp(e){return this.saveMap.get(e)}setProp(e,t){this.saveMap.set(e,t)}toggleSkip(){if(this.nextLockSkipped.value==="0"){const t=this.nextLockTime.value;t!==void 0&&this.nextLockSkipped.updateProperty(t)}else this.nextLockSkipped.updateProperty("0")}async unlock(e){return await qt(e)}async save(){return this.saveMap.forEach((e,t)=>{e!==this.cuiLockout.props[t]&&(this.cuiLockout.props[t]=e)}),this.cuiLockout.updateConfigBean()}reset(){this.cuiLockout.props.entries.forEach(([e,t])=>this.saveMap.set(e,t))}async init(){this.logger.debug(`initializing lockout ${this.id}`),this.cuiLockout.props.entries.forEach(([e,t])=>this.saveMap.set(e,t))}async load(){this.logger.debug(`loading lockout ${this.id}`)}};D([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"pin"})],m.prototype,"pin",2);D([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextLockSkipped"})],m.prototype,"nextLockSkipped",2);D([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextLockTime"})],m.prototype,"nextLockTime",2);D([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextUnLockTime"})],m.prototype,"nextUnLockTime",2);D([s.kosConfigBean({path:"app:kosdev.ddk:service:cuiLockout"})],m.prototype,"cuiLockout",2);m=D([s.kosModel(Gt)],m);const ms=new s.SingletonKosModelRegistrationFactory({class:m,type:Gt}),ys=async(e,t)=>await s.TroubleServices.bulkResolveTroubles(e,t);var vs=Object.defineProperty,bs=Object.getOwnPropertyDescriptor,Se=(e,t,r,i)=>{for(var o=i>1?void 0:i?bs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&vs(t,r,o),o};const W="macro-assignment-model",tt="PurgeTrouble",_s="PrimeTrouble";let S=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"futureHandler");n(this,"holders");n(this,"ingredients");this.id=e,this.futureHandler=new s.FutureHandler,this.logger=r.logger}get future(){return this.futureHandler.future}get macroHolders(){return this.holders.holders.getIndexByKey("group","macros").sort((e,t)=>e.name<t.name?-1:e.name>t.name?1:0)}get hasMacroHolders(){return this.macroHolders.length>0}get holderPurgeTroubles(){return this.macroHolders.reduce((t,r)=>{const i=r.troublesByType[tt]||[];return t=[...t,...i],t},[])}get holderPrimeTroubles(){return this.macroHolders.reduce((t,r)=>{const i=r.troublesByType[_s]||[];return t=[...t,...i],t},[])}get hasHolderPurgeTroubles(){return this.holderPurgeTroubles.length>0}get hasHolderPrimeTroubles(){return this.holderPrimeTroubles.length>0}get macroIngredients(){return this.ingredients.ingredients.getIndexByKey("macro","macro")}get hasMacroIngredients(){return this.macroIngredients.length>0}async resolveAll(e,t){if(!t)throw new Error("No tracker provided");const i=(e===tt?this.holderPurgeTroubles:this.holderPrimeTroubles).map(l=>l.rawId);return await ys(i,t)}};Se([s.kosDependency({modelType:O.HolderContainer.type})],S.prototype,"holders",2);Se([s.kosDependency({modelType:O.IngredientContainer.type})],S.prototype,"ingredients",2);Se([s.kosFuture()],S.prototype,"resolveAll",1);S=Se([s.kosModel(W)],S);const Qt={registration:{[W]:{class:S,singleton:!0}},type:W,predicate:s.isKosModel(W),factory:s.Kos.Singleton.create(W)};var Ps=Object.defineProperty,$s=Object.getOwnPropertyDescriptor,Ts=(e,t,r,i)=>{for(var o=i>1?void 0:i?$s(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Ps(t,r,o),o};const z="network-test-model";let xe=class{constructor(e,t,r){n(this,"id");n(this,"group");n(this,"passed");n(this,"inProgress");n(this,"failureTime");n(this,"timestamp");n(this,"name");n(this,"results");n(this,"logger");this.id=e,this.logger=r.logger,this.group=t.group,this.passed=!1,this.inProgress=!1,this.name=t.name,this.results=[]}updateModel(e){this.group=e.group,this.name=e.name,this.passed=e.passed,this.failureTime=e.failureTime,this.inProgress=e.inProgress,this.timestamp=e.timestamp,this.results=e.results}async init(){this.logger.debug(`initializing network-test ${this.id}`)}async load(){this.logger.debug(`loading network-test ${this.id}`)}};xe=Ts([s.kosModel(z)],xe);const Ye={registration:{[z]:{class:xe,singleton:!1}},type:z,predicate:s.isKosModel(z),factory:s.Kos.Factory.create(z)},{URL:Ce}=s.resolveServiceUrl("NETWORK-TEST_SERVICE"),{getAll:Ms,getOne:Xt}=s.ServiceFactory.build({basePath:`${Ce}/api/app/ncui/network/tests`}),Ss=s.KosLog.createLogger({name:"network-test-service",group:"Services"}),Jt=async()=>{Ss.debug("sending GET for network-test");const e=await Ms({urlOverride:`${Ce}/api/app/kosdev.ddk/network/tests`});return e==null?void 0:e.data},Zt=async()=>{const e=await Xt({urlOverride:`${Ce}/api/app/kosdev.ddk/network/reports`});return e==null?void 0:e.data},er=async(e,t)=>await Xt({urlOverride:`${Ce}/api/app/kosdev.ddk/network/tests/run/group/${e}`,tracker:t}),Cs=Object.freeze(Object.defineProperty({__proto__:null,getNetworkTests:Jt,getTestsReports:Zt,performGroupTest:er},Symbol.toStringTag,{value:"Module"}));var Os=Object.defineProperty,Es=Object.getOwnPropertyDescriptor,qe=(e,t,r,i)=>{for(var o=i>1?void 0:i?Es(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Os(t,r,o),o};const B="network-test-container-model";let Z=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"lastTested");n(this,"futureHandler");n(this,"models");this.id=e,this.logger=r.logger,this.futureHandler=new s.FutureHandler(this),this.models=new s.KosModelContainer({parentId:e,indexMap:{group:"group"}}),this.lastTested=new Date("default")}get data(){return this.models.data}addModel(e){this.models.addModel(e)}removeModel(e){this.models.removeModel(e)}getModel(e){return this.models.getModel(e)}async init(){this.logger.debug(`initializing network-test-container container ${this.id}`)}getLastTested(e){const t=this.models.getIndexByKey("group",e).map(i=>i.timestamp&&new Date(i.timestamp)),r=Math.max(...t.map(i=>i?i.getTime():0));return r?Nt(new Date(r)):""}async load(){this.logger.debug(`loading network-test-container container ${this.id}`);const e=await Jt(),t=await Zt();e&&e.forEach(r=>{const i=Ye.factory(r.id)(r);this.addModel(i)}),e&&t&&e.forEach(r=>{const i=t==null?void 0:t[r.group],o=i==null?void 0:i[r.id],l=this.getModel(r.id);if(l&&o){const a={group:o.group,name:o.name,passed:o.passed,failureTime:o.failureTime?new Date(o.failureTime):void 0,inProgress:o.inProgress,timestamp:new Date(o.timestamp),results:o.results};l.updateModel(a)}})}async performTest(e,t){if(!t)throw new Error("No tracker provided");const r=await er(e,t);return r==null?void 0:r.data}onFutureUpdate(e){const{clientData:t}=e;t&&t.forEach(r=>{const i=this.getModel(r.id);if(s.kosAction(()=>{this.lastTested=this.lastTested>new Date(r.timestamp)?this.lastTested:new Date(r.timestamp)}),i){const o={group:r.group,name:r.name,passed:r.passed,failureTime:r.failureTime?new Date(r.failureTime):void 0,inProgress:r.inProgress,timestamp:new Date(r.timestamp),results:r.results};s.kosAction(()=>{i.updateModel(o)})}})}};qe([s.kosChild],Z.prototype,"models",2);qe([s.kosFuture()],Z.prototype,"performTest",1);Z=qe([s.kosModel(B)],Z);const tr={registration:{[B]:{class:Z,singleton:!0},...Ye.registration},type:B,predicate:s.isKosModel(B),factory:s.Kos.Singleton.create(B)};var ws=Object.defineProperty,Ls=Object.getOwnPropertyDescriptor,rr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ls(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ws(t,r,o),o};const Y="nutritive-sweetener-model";let de=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getHolder(){return this.assemblyModel.getHoldersByGroup("ns")[0]}getPump(){return this.getHolder().pumps.data[0]}async init(){this.logger.debug(`initializing nutritive-sweetener ${this.id}`)}async load(){this.logger.debug(`loading nutritive-sweetener ${this.id}`)}};rr([s.kosDependency({modelType:O.Assembly.type})],de.prototype,"assemblyModel",2);de=rr([s.kosModel(Y)],de);const or={registration:{[Y]:{class:de,singleton:!1}},type:Y,predicate:s.isKosModel(Y),factory:s.Kos.Factory.create(Y)};var ks=Object.defineProperty,Ds=Object.getOwnPropertyDescriptor,sr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ds(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ks(t,r,o),o};const q="plain-water-model";let pe=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getHolder(){return this.assemblyModel.getHoldersByGroup("water")[0]}getPump(){var i,o;const e=this.getHolder(),t=(o=(i=e==null?void 0:e.pumps)==null?void 0:i.data)==null?void 0:o[0];return s.getKosCompanionModel(t,ze.type)}async init(){this.logger.debug(`initializing plain-water ${this.id}`)}async load(){this.logger.debug(`loading plain-water ${this.id}`)}};sr([s.kosDependency({modelType:O.Assembly.type})],pe.prototype,"assemblyModel",2);pe=sr([s.kosModel(q)],pe);const ir={registration:{[q]:{class:pe,singleton:!1}},type:q,predicate:s.isKosModel(q),factory:s.Kos.Factory.create(q)},{URL:nr}=s.resolveServiceUrl("REBOOT_SERVICE"),{postModel:Fs}=s.ServiceFactory.build({basePath:`${nr}/api/reboot`}),Rs=s.KosLog.createLogger({name:"reboot-service",group:"Services"}),ar=async()=>(Rs.debug("sending POST call for Reboot Dispenser"),await Fs({urlOverride:`${nr}/api/app/kosdev.ddk/ncui/reboot`,model:{}})),Is=Object.freeze(Object.defineProperty({__proto__:null,rebootDispenser:ar},Symbol.toStringTag,{value:"Module"}));var As=Object.defineProperty,xs=Object.getOwnPropertyDescriptor,Ks=(e,t,r,i)=>{for(var o=i>1?void 0:i?xs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&As(t,r,o),o};const G="reboot-model";let Ke=class{constructor(e,t,r){n(this,"id");n(this,"logger");this.id=e,this.logger=r.logger}async completeReboot(){await ar()}updateModel(){}async init(){this.logger.debug(`initializing reboot ${this.id}`)}async load(){this.logger.debug(`loading reboot ${this.id}`)}};Ke=Ks([s.kosModel(G)],Ke);const lr={registration:{[G]:{class:Ke,singleton:!1}},type:G,predicate:s.isKosModel(G),factory:s.Kos.Factory.create(G)};var Us=Object.defineProperty,js=Object.getOwnPropertyDescriptor,g=(e,t,r,i)=>{for(var o=i>1?void 0:i?js(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Us(t,r,o),o};const Q="settings-model";let d=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"ncuiLanguageData");n(this,"resolveDelaysMs");n(this,"dateFormat");n(this,"timeFormat");n(this,"hidePlainWaterBev");n(this,"hideCarbWaterBev");n(this,"ncuiLanguage");n(this,"name");n(this,"activateAndRebootTime");this.id=e,this.logger=r.logger}updateModel(e){}async init(){this.logger.debug(`initializing settings ${this.id}`)}async getNcuiLanguageList(){this.ncuiLanguageData={status:200,data:{languages:[{name:"English",locale:"en"}]}}}async load(){this.logger.debug(`loading settings ${this.id}`),this.ncuiLanguageData={status:200,data:{languages:[{name:"English",locale:"en"}]}}}};g([s.kosConfigProperty({path:"system:app",attribute:"resolveDelaysMs"})],d.prototype,"resolveDelaysMs",2);g([s.kosConfigProperty({path:"system:app",attribute:"dateFormat"})],d.prototype,"dateFormat",2);g([s.kosConfigProperty({path:"system:app",attribute:"timeFormat"})],d.prototype,"timeFormat",2);g([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.hidePlainWaterBev"})],d.prototype,"hidePlainWaterBev",2);g([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.hideCarbWaterBev"})],d.prototype,"hideCarbWaterBev",2);g([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.ncuiLanguage"})],d.prototype,"ncuiLanguage",2);g([s.kosConfigProperty({path:"kos:device",attribute:"name"})],d.prototype,"name",2);g([s.kosConfigProperty({path:"kos:service:OTA",attribute:"activateAndRebootTime"})],d.prototype,"activateAndRebootTime",2);d=g([s.kosModel(Q)],d);const cr={registration:{[Q]:{class:d,singleton:!0}},type:Q,predicate:s.isKosModel(Q),factory:s.Kos.Singleton.create(Q)},{URL:ur}=s.resolveServiceUrl("SETTINGS_SERVICE"),{getAll:dr}=s.ServiceFactory.build({basePath:`${ur}/api/settings`}),Vs=s.KosLog.createLogger({name:"settings-service",group:"Services"}),Hs=async()=>(Vs.debug("sending GET for settings"),await dr({})),Ns=async()=>await dr({urlOverride:`${ur}api/app/kosdev.ddk/ncui/languages`}),Ws=Object.freeze(Object.defineProperty({__proto__:null,getNcuiLanguage:Ns,getSettings:Hs},Symbol.toStringTag,{value:"Module"}));var zs=Object.defineProperty,Bs=Object.getOwnPropertyDescriptor,Ys=(e,t,r,i)=>{for(var o=i>1?void 0:i?Bs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&zs(t,r,o),o};const X="utilities-model";let Ue=class{constructor(e,t,r){n(this,"id");n(this,"name");n(this,"options");n(this,"roles");n(this,"columnId");n(this,"logger");this.id=e,this.logger=r.logger,this.name=t.name,this.options=t.options,this.roles=t==null?void 0:t.roles,this.columnId=t.columnId}updateModel(e){this.name=e.name,this.options=e.options,this.roles=e==null?void 0:e.roles}get titleKey(){return`utility.${this.id}.title`}get bodyKey(){return`utility.${this.id}.body`}async init(){this.logger.debug(`initializing utilities ${this.id}`)}async load(){this.logger.debug(`loading utilities ${this.id}`)}};Ue=Ys([s.kosModel(X)],Ue);const Ge={registration:{[X]:{class:Ue,singleton:!1}},type:X,predicate:s.isKosModel(X),factory:s.Kos.Factory.create(X)},{URL:pr}=s.resolveServiceUrl("UTILITIES_SERVICE"),{getAll:qs}=s.ServiceFactory.build({basePath:`${pr}/api/utilities`}),Gs=s.KosLog.createLogger({name:"utilities-service",group:"Services"}),gr=async()=>{Gs.debug("sending GET for utilities");const e=await qs({urlOverride:`${pr}/api/kos/descriptor/system:app/kondra.ncui.utilities`});return e==null?void 0:e.data},Qs=Object.freeze(Object.defineProperty({__proto__:null,getUtilities:gr},Symbol.toStringTag,{value:"Module"}));var Xs=Object.defineProperty,Js=Object.getOwnPropertyDescriptor,hr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Js(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Xs(t,r,o),o};const J="utilities-container-model";let ge=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"_models");this.id=e,this.logger=r.logger,this._models=new s.KosModelContainer({parentId:e,sortKey:"id",indexMap:{byColumn:"columnId"}})}get data(){return this._models.data}get models(){return this._models}get columns(){return this._models.getIndexKeys("byColumn").sort((e,t)=>e.localeCompare(t))}addModel(e){this._models.addModel(e)}removeModel(e){this._models.removeModel(e)}getModel(e){return this._models.getModel(e)}getUtilitiesByColumn(e){return this._models.getIndexByKey("byColumn",e)}async load(){this.logger.debug(`loading utilities-container container ${this.id}`);const e=await gr();e==null||e.forEach((t,r)=>{t.forEach(i=>{const o={...i,columnId:String(r)},l=Ge.factory(i.name)(o);this.addModel(l)})})}};hr([s.kosChild],ge.prototype,"_models",2);ge=hr([s.kosModel(J)],ge);const fr={registration:{[J]:{class:ge,singleton:!0},...Ge.registration},type:J,predicate:s.isKosModel(J),factory:s.Kos.Singleton.create(J)},Zs={...yt.registration,..._e.registration,...ye.registration,...St.registration,...Te.registration,...At.registration,...Kt.registration,...Ut.registration,...Wt.registration,...Qt.registration,...tr.registration,...or.registration,...ir.registration,...lr.registration,...cr.registration,...Ne.registration,...fr.registration};var ei=Object.defineProperty,ti=Object.getOwnPropertyDescriptor,mr=(e,t,r,i)=>{for(var o=i>1?void 0:i?ti(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ei(t,r,o),o};const yr="trouble-action-model";let he=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"troubleContainer");n(this,"disposer");n(this,"state");n(this,"troubleActionData");this.id=e,this.logger=r.logger,this.state=s.ObservableData(),this.troubleActionData=t.definitions.reduce((i,o)=>(i[o.troubleType]=o,i),{})}get activeTrouble(){const e=Object.keys(this.troubleActionData);if(e.length>0){const t=e[0],r=this.troubleContainer.troubles.getIndexByKey("byType",t);return r.length>0?r[0]:void 0}}get activeTroubleType(){var e;return(e=this.activeTrouble)==null?void 0:e.type}async init(){this.logger.debug(`initializing trouble-action ${this.id}`),this.disposer=s.kosAutoEffect(()=>{const e=this.troubleContainer.troubles.data.reduce((t,r)=>{const i=r.type;if(this.troubleActionData[i]){const o=this.troubleActionData[i].stateKey??i,l=this.troubleActionData[i].stateValue??i;t[o]=l}return t},{});this.state.setValues(e),Object.keys(this.troubleActionData).forEach(t=>{if(this.troubleContainer.troubles.getIndexByKey("byType",t).length===0){const r=this.troubleActionData[t].stateKey??t;this.state[r]=void 0}})})}unload(){var e;(e=this.disposer)==null||e.call(this)}async load(){this.logger.debug(`loading trouble-action ${this.id}`)}};mr([s.kosDependency({modelType:s.TroubleContainer.type})],he.prototype,"troubleContainer",2);he=mr([s.kosModel(yr)],he);const ri=new s.SingletonKosModelRegistrationFactory({class:he,type:yr}),{URL:vr}=s.resolveServiceUrl("START_SERVICE"),{getOne:oi}=s.ServiceFactory.build({basePath:`${vr}/api/start`}),si=s.KosLog.createLogger({name:"start-service",group:"Services"}),br=async()=>(si.debug("navigating to NCUI"),await oi({urlOverride:`${vr}/api/app/kosdev.ddk/ncui/open`})),ii=Object.freeze(Object.defineProperty({__proto__:null,navigateToNCui:br},Symbol.toStringTag,{value:"Module"}));var ni=Object.defineProperty,ai=Object.getOwnPropertyDescriptor,_r=(e,t,r,i)=>{for(var o=i>1?void 0:i?ai(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ni(t,r,o),o};const Pr="start-model";let fe=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"troubles");this.id=e,this.logger=r.logger}get firmwareFailed(){return this.troubles.troubles.getIndexByKey("byType","FirmwareUpdateFailedTrouble").length>0}get firmwareInProgress(){return this.troubles.troubles.getIndexByKey("byType","FirmwareUpdateInProgressTrouble").length>0}async navigate(){await br()}async init(){this.logger.debug(`initializing start ${this.id}`)}async load(){this.logger.debug(`loading start ${this.id}`)}};_r([s.kosDependency({modelType:s.TroubleContainer.type})],fe.prototype,"troubles",2);fe=_r([s.kosModel(Pr)],fe);const li=new s.SingletonKosModelRegistrationFactory({class:fe,type:Pr}),{URL:oe}=s.resolveServiceUrl("SPM-PUMP_SERVICE"),{postModel:Oe}=s.ServiceFactory.build({basePath:`${oe}/api/spm-pump`}),u=s.KosLog.createLogger({name:"spm-pump-service",group:"Services"}),$r=async(e,t)=>{u.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`);try{const r=await Oe({model:{},urlOverride:`${oe}/api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`,tracker:t});return u.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){u.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Tr=async(e,t)=>{u.debug(`performCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/calibrate`);try{const r=await Oe({model:{},urlOverride:`${oe}/api/ext/freestyle/microCalibration/pour/${e}/calibrate`,tracker:t});return u.debug("performCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){u.error(`performCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/calibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Mr=async(e,t,r,i)=>{u.debug(`performVerify - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/verify`);try{const o=await Oe({model:{...r,measuredCalibrationVolume:t},urlOverride:`${oe}/api/ext/freestyle/microCalibration/pour/${e}/verify`,tracker:i});return u.debug("performVerify - response:",o),o!=null&&o.data&&s.FutureManager.initiateFuture(o.data),o==null?void 0:o.data}catch(o){u.error(`performVerify - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/verify`,o);const l={id:i||"",endState:s.FutureEndState.Fail,tracker:i,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(l),l}},Sr=async(e,t,r,i)=>{u.debug(`performComplete - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/complete`);try{const o=await Oe({model:{...i,measuredCalibrationVolume:t,measuredVerificationVolume:r},urlOverride:`${oe}/api/ext/freestyle/microCalibration/pour/${e}/complete`});return u.debug("performComplete - response:",o),o==null?void 0:o.data}catch(o){u.error(`performComplete - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/complete`,o);return}},ci=Object.freeze(Object.defineProperty({__proto__:null,performCalibrate:Tr,performComplete:Sr,performPreCalibrate:$r,performVerify:Mr},Symbol.toStringTag,{value:"Module"}));var ui=Object.defineProperty,di=Object.getOwnPropertyDescriptor,Ee=(e,t,r,i)=>{for(var o=i>1?void 0:i?di(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ui(t,r,o),o};const Cr="spm-pump-model";let C=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pump");n(this,"futureHandler");this.id=e,this.logger=r.logger,this.pump=t.companionParent,this.futureHandler=new s.FutureHandler(this)}get name(){return this.pump.name}get canPour(){return this.pump.canPour}get isPouring(){return this.pump.isPouring}async cancelPour(){return this.pump.cancelPour()}performIntent(e){return this.pump.performIntent(e)}get future(){return this.futureHandler.future}async performPreCalibrate(e){return $r(this.pump.path,e)}async performCalibrate(e){return Tr(this.pump.path,e)}async performVerify(e,t,r){return Mr(this.pump.path,e,t,r)}async performComplete(e,t,r){return Sr(this.pump.path,e,t,r)}async init(){this.logger.debug(`initializing spm-pump ${this.id}`)}async load(){this.logger.debug(`loading spm-pump ${this.id}`)}};Ee([s.kosFuture()],C.prototype,"performPreCalibrate",1);Ee([s.kosFuture()],C.prototype,"performCalibrate",1);Ee([s.kosFuture()],C.prototype,"performVerify",1);C=Ee([s.kosModel(Cr)],C);const pi=new s.KosModelRegistrationFactory({class:C,type:Cr});exports.AgitationControl=eo;exports.Animation=yt;exports.AnimationServices=ao;exports.Application=_e;exports.Auth=ye;exports.AuthServices=kr;exports.CarbWater=St;exports.CopyLogs=Po;exports.CopyLogsServices=vo;exports.DDKModels=Zs;exports.DashboardOperations=Te;exports.DashboardOperationsServices=$o;exports.Dispenser=At;exports.DispenserInfo=Kt;exports.DispenserInfoServices=Uo;exports.DispenserServices=Do;exports.Door=ct;exports.EXTENSION_POINT_DASHBOARD_KEY_FACTORY=T;exports.Enrollment=Ut;exports.EnrollmentServices=Yo;exports.FcmPump=ze;exports.FcmPumpServices=lo;exports.IngredientSummary=Wt;exports.LfcvPump=is;exports.LfcvPumpServices=us;exports.Lockout=ms;exports.LockoutServices=ps;exports.MACRO_KEYS=Xo;exports.MacroAssignment=Qt;exports.NetworkTest=Ye;exports.NetworkTestContainer=tr;exports.NetworkTestServices=Cs;exports.NutritiveSweetener=or;exports.PlainWater=ir;exports.Reboot=lr;exports.RebootServices=Is;exports.Settings=cr;exports.SettingsServices=Ws;exports.SetupStep=He;exports.SetupStepContainer=Ne;exports.SetupStepServices=Ur;exports.SpmPump=pi;exports.SpmPumpServices=ci;exports.Start=li;exports.StartServices=ii;exports.TROUBLE_TYPE_PRIME=rt;exports.TROUBLE_TYPE_PURGE=Le;exports.TroubleActionManager=ri;exports.Utilities=Ge;exports.UtilitiesContainer=fr;exports.UtilitiesServices=Qs;exports.calculateTimeDifference=Nt;exports.executeDashboardKeyFactory=Vt;exports.isMacroGroup=Go;exports.isMicroGroup=qo;exports.macroHolderMap=Qo;exports.registerDashboardKeyFactory=jt;exports.toSeconds=Zo;exports.toTimeComponents=Jo;exports.troubleVisibilityFilter=We;
1
+ "use strict";var kr=Object.defineProperty;var wr=(e,t,r)=>t in e?kr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var n=(e,t,r)=>(wr(e,typeof t!="symbol"?t+"":t,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@kosdev-code/kos-ui-sdk"),ye=require("@kosdev-code/kos-freestyle-sdk"),k=require("@kosdev-code/kos-dispense-sdk"),Le="PurgeTrouble",st="PrimeTrouble",{URL:Ve}=s.resolveServiceUrl("AUTH_SERVICE"),{getOne:Lr,postModel:Dr}=s.ServiceFactory.build({basePath:`${Ve}/api/auth`}),it=s.KosLog.createLogger({name:"auth-service",group:"Services"}),nt=async()=>(it.debug("sending GET for auth"),await Lr({urlOverride:`${Ve}/api/app/kosdev.ddk/auth/role`})),at=async e=>(it.debug("sending POST for auth"),await Dr({urlOverride:`${Ve}/api/app/kosdev.ddk/auth/pincode/${e}`,model:{}})),Fr=Object.freeze(Object.defineProperty({__proto__:null,getCurrentRole:nt,sendPinCode:at},Symbol.toStringTag,{value:"Module"}));var Rr=Object.defineProperty,Ir=Object.getOwnPropertyDescriptor,lt=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ir(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Rr(t,r,o),o};const I="auth-model",Je=e=>e.toLowerCase();let ae=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"currentRole");this.id=e,this.logger=r.logger,this.currentRole="crew"}async authorize(e){if(!e)return!1;const t=await at(e);return(t==null?void 0:t.status)===200?t.data:!1}async init(){this.logger.debug(`initializing auth ${this.id}`)}async load(){this.logger.debug(`loading auth ${this.id}`);const e=await nt();(e==null?void 0:e.status)===200&&(this.logger.debug(`response ${e.data}`),s.kosAction(()=>{this.currentRole=Je(e.data)}))}handleRoleChange(e){this.currentRole=Je(e)}forceRole(e){this.currentRole=e}};lt([s.kosTopicHandler({topic:"/app/kosdev.ddk/auth/role",websocket:!0})],ae.prototype,"handleRoleChange",1);ae=lt([s.kosModel(I)],ae);const ve={registration:{[I]:{class:ae,singleton:!1}},type:I,predicate:s.isKosModel(I),factory:s.Kos.Factory.create(I)};var Ar=Object.defineProperty,xr=Object.getOwnPropertyDescriptor,ct=(e,t,r,i)=>{for(var o=i>1?void 0:i?xr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Ar(t,r,o),o};const ut="door-model",Kr=s.createPropKey("doorPath");let le=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"doorPath");n(this,"open");this.id=e,this.logger=r.logger,this.doorPath=t.doorPath}get currentState(){return this.open.value===void 0?"UNKNOWN":this.open.value?"OPEN":"CLOSED"}get isOpen(){return this.open.value===void 0?!0:this.open.value}};ct([s.kosStateProp({path:Kr,attribute:"state"})],le.prototype,"open",2);le=ct([s.kosModel(ut)],le);const dt=new s.KosModelRegistrationFactory({class:le,type:ut}),{URL:He}=s.resolveServiceUrl("SETUP-STEP_SERVICE"),{getAll:Ur,postModel:jr}=s.ServiceFactory.build({basePath:`${He}/api/setup-step`}),pt=s.KosLog.createLogger({name:"setup-step-service",group:"Services"}),gt=async()=>(pt.debug("sending GET for setup-step"),await Ur({urlOverride:`${He}/api/app/kosdev.ddk/setup/steps`})),ht=async e=>(pt.debug("sending POST for setup-step"),await jr({urlOverride:`${He}/api/app/kosdev.ddk/setup/complete/${e}`,model:{}})),Vr=Object.freeze(Object.defineProperty({__proto__:null,getSetupSteps:gt,markStepComplete:ht},Symbol.toStringTag,{value:"Module"}));var Hr=Object.getOwnPropertyDescriptor,Nr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Hr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const A="setup-step-model";let De=class{constructor(e,t,r){n(this,"id");n(this,"idx");n(this,"name");n(this,"complete");n(this,"preStep");n(this,"exclusive");n(this,"logger");this.id=e,this.idx=t.idx,this.logger=r.logger,this.name=t.name,this.complete=t.complete,this.preStep=t.preStep,this.exclusive=t.exclusive}updateModel(e){this.name=e.name,this.idx=e.idx,this.complete=e.complete,this.preStep=e.preStep,this.exclusive=e.exclusive}get titleKey(){return`setup.${this.name}.title`}get bodyKey(){return`setup.${this.name}.body`}async completeStep(){const e=await ht(this.name);(e==null?void 0:e.status)===200&&s.kosAction(()=>{this.complete=!0})}async init(){this.logger.debug(`initializing setup-step ${this.id}`)}async load(){this.logger.debug(`loading setup-step ${this.id}`)}};De=Nr([s.kosModel(A)],De);const Ne={registration:{[A]:{class:De,singleton:!1}},type:A,predicate:s.isKosModel(A),factory:s.Kos.Factory.create(A)};var Wr=Object.defineProperty,zr=Object.getOwnPropertyDescriptor,be=(e,t,r,i)=>{for(var o=i>1?void 0:i?zr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Wr(t,r,o),o};const x="setup-step-container-model";function Ze(e){return t=>{const r=Ne.factory(t.id)(t);r.updateModel(t),e.addModel(r)}}function et(e){return t=>{e.removeModel(t)}}let T=class{constructor(e,t,r){n(this,"id");n(this,"_currentStep");n(this,"logger");n(this,"models");n(this,"authModel");this.id=e,this.logger=r.logger,this._currentStep=void 0,this.models=new s.KosModelContainer({parentId:e,sortKey:"idx"})}get currentStep(){return this._currentStep}setCurrentStep(e){const t=this.models.getModel(e);t&&(this._currentStep=t)}nextStep(){if(!this._currentStep)this._currentStep=this.firstIncompleteStep;else{const e=this._currentStep.idx,t=this.models.data.find(r=>r.idx>e);t&&(this._currentStep=t)}}get hasIncompletePreSteps(){return this.models.data.some(e=>e.preStep&&!e.complete)}get setupRequired(){return this.models.data.some(e=>!e.complete)}get firstIncompleteStep(){return this.models.data.find(e=>!e.complete)}get isLastStep(){var e;return this.models.data[this.models.data.length-1].id===((e=this._currentStep)==null?void 0:e.id)}get data(){return this.models.data}getModel(e){return this.models.getModel(e)}addModel(e){this.models.addModel(e)}removeModel(e){this.models.removeModel(e)}async init(){this.logger.debug(`initializing setup-step-container container ${this.id}`)}async load(){this.logger.debug(`loading setup-step-container container ${this.id}`);const e=await gt();if(e!=null&&e.data){const t=e.data.map((r,i)=>({...r,idx:i,id:`setup-${r.name}`}));s.resolveContainerDeltas({container:this.models,onAddItem:Ze(this),onRemoveItem:et(this)})(t)}this.nextStep()}handleStepChanges(e){const t=e.map((r,i)=>({...r,idx:i,id:`setup-${r.name}`}));s.resolveContainerDeltas({container:this.models,onAddItem:Ze(this),onRemoveItem:et(this)})(t)}};be([s.kosChild],T.prototype,"models",2);be([s.kosDependency({modelType:ve.type})],T.prototype,"authModel",2);be([s.kosTopicHandler({topic:"/app/kosdev.ddk/setup/steps",websocket:!0})],T.prototype,"handleStepChanges",1);T=be([s.kosModel(x)],T);const We={registration:{[x]:{class:T,singleton:!0},...Ne.registration},type:x,predicate:s.isKosModel(x),factory:s.Kos.Singleton.create(x)},{URL:re}=s.resolveServiceUrl("AUTH_SERVICE"),{getOne:ft,getAll:mt}=s.ServiceFactory.build({basePath:`${re}/api/app/kosdev.ddk/ncui/`}),_e=s.KosLog.createLogger({name:"auth-service",group:"Services"}),Br=async()=>{_e.debug("sending GET for cuis");const e=await mt({urlOverride:`${re}/api/app/kosdev.ddk/cui`});if((e==null?void 0:e.status)!==200)throw new Error("Failed to retrieve cuis");return e.data},Yr=async()=>{_e.debug("sending GET for navigation");const e=await mt({urlOverride:`${re}/api/kos/descriptor/system:app/kondra.ncui.navigations`});if((e==null?void 0:e.status)!==200)throw new Error("Failed to retrieve navigation data");return e.data},qr=async()=>(_e.debug("navigating to CUI"),await ft({urlOverride:`${re}/api/app/kosdev.ddk/cui/open`})),Gr=async()=>(_e.debug("navigating to NCUI"),await ft({urlOverride:`${re}/api/app/kosdev.ddk/ncui/open`}));var Qr=Object.defineProperty,Xr=Object.getOwnPropertyDescriptor,b=(e,t,r,i)=>{for(var o=i>1?void 0:i?Xr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Qr(t,r,o),o};const K="application-model",yt=(e,t="")=>e.reduce((r,i)=>{const o=t?`${t}.${i.name}`:i.name;if(r[o]={...i,root:!t},i.children){const l=yt(i.children,o);Object.keys(l).forEach(a=>{r[a]=l[a]})}return r},{});let h=class{constructor(e,t,r){n(this,"id");n(this,"device");n(this,"authModel");n(this,"setupStepContainer");n(this,"door");n(this,"ncuiLanguage");n(this,"activeCui");n(this,"fallbackCui");n(this,"_cuis",[]);n(this,"_navigationItems",[]);n(this,"languages");n(this,"logger");this.id=e,this.languages=[],this._cuis=[],this.logger=r.logger,this.door=dt.instance("app:kosdev.ddk:service:door:door").options({doorPath:"app:kosdev.ddk:service:door:door"}).build()}get setupRequired(){return this.authModel.currentRole==="crew"?!1:this.setupStepContainer.setupRequired}get currentRole(){return this.authModel.currentRole}get cuis(){return this._cuis.reduce((e,t)=>(e[t.name]=t,e),{})}get navigationItems(){return yt(this._navigationItems)}get hasCuiDefined(){return!!this.activeCui.value||!!this.fallbackCui.value}get doorIsOpen(){return this.door.isOpen}async enter(){this.logger.info("navigating to NCUI"),await Gr()}async exit(){this.logger.info("navigating to CUI"),await qr()}async load(){var r,i;this.logger.debug(`loading application ${this.id}`);const e=await Yr();this._navigationItems=e;const t=await Br();this._cuis=t,(r=this.setupStepContainer)!=null&&r.hasIncompletePreSteps&&((i=this.authModel)==null||i.forceRole("technician")),this.languages=[{name:"English",locale:"en"}]}};b([s.kosDependency({modelType:s.Device.type})],h.prototype,"device",2);b([s.kosDependency({modelType:ve.type})],h.prototype,"authModel",2);b([s.kosDependency({modelType:We.type})],h.prototype,"setupStepContainer",2);b([s.kosChild],h.prototype,"door",2);b([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.ncuiLanguage"})],h.prototype,"ncuiLanguage",2);b([s.kosConfigProperty({path:"app:kosdev.ddk:service:cui",attribute:"activeCui"})],h.prototype,"activeCui",2);b([s.kosConfigProperty({path:"app:kosdev.ddk:service:cui",attribute:"fallbackCui"})],h.prototype,"fallbackCui",2);h=b([s.kosModel(K)],h);const Pe={registration:{[K]:{class:h,singleton:!0}},type:K,predicate:s.isKosModel(K),factory:s.Kos.Singleton.create(K)},ne={none:999,crew:0,technician:1,manager:2},ze=e=>t=>{if(t.type===ye.AGITATION_REQUIRED_TROUBLE)return!1;const r=(t==null?void 0:t.role)||"technician";if(e&&r){const i=ne[e.toLowerCase()]??ne.crew,o=ne[r.toLowerCase()]??ne.crew;return i>=o}return!1};var Jr=Object.defineProperty,Zr=Object.getOwnPropertyDescriptor,w=(e,t,r,i)=>{for(var o=i>1?void 0:i?Zr(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Jr(t,r,o),o};const vt="agitation-control-model",Fe="resolve",eo="agitate";let m=class{constructor(e,t,r){n(this,"id");n(this,"futureHandler");n(this,"logger");n(this,"troubleContainer");n(this,"_agitationFutureId");n(this,"_canExit",!0);n(this,"_exiting",!1);n(this,"_isFailed",!1);n(this,"disposer");n(this,"application");n(this,"inProgress",[]);this.id=e,this.logger=r.logger,this.troubleContainer=t.companionParent,this.futureHandler=new s.MultipleFutureHandler(this,Fe)}set isFailed(e){this._isFailed=e}get isFailed(){return this._isFailed}get isDoorClosed(){return!this.application.doorIsOpen}get isAgitating(){return!!this._agitationFutureId}set exiting(e){this._exiting=e}get exiting(){return this._exiting}get canExit(){return this.queuedTroubles.length===0&&this._canExit}clearAll(){this.queuedTroubles.forEach(e=>{e.clearDefer()})}get readyToResolve(){const e=this.queuedTroubles.length,t=this.queuedTroubles.filter(i=>i.shouldDefer),r=e>0&&t.length===0;return this.isDoorClosed&&r&&this.exiting}onFutureUpdate(e){e.endState===s.FutureEndState.Success?(this.logger.debug(`Resolve deferred troubles future ${e.id} completed successfully`),this.queuedTroubles.forEach(t=>{t.clearDefer()}),s.kosAction(()=>{this._canExit=!0,this._isFailed=!1})):(e.endState===s.FutureEndState.Fail||e.endState===s.FutureEndState.Canceled||e.endState===s.FutureEndState.Aborted)&&(this.logger.error(`Resolve deferred troubles future ${e.id} failed`),this.clearAll(),s.kosAction(()=>{this._canExit=!1,this._isFailed=!0}))}async resolveDeferredTroubles(e){const t=this.queuedTroubles.filter(i=>!i.shouldDefer).map(i=>i.rawId).filter(i=>!this.inProgress.includes(i));return this.inProgress.push(...t),t.length===0?void 0:await s.TroubleServices.bulkResolveTroubles(t,e)}get hasQueuedTroubles(){return this.queuedTroubles.length>0}get queuedTroubles(){return this.troubleContainer.troubles.getIndexByKey(s.Troubles.INDEX_TROUBLES_BY_DEFERRED,s.Troubles.TROUBLES_DEFERRED)}get visibleTroubles(){const e=this.application.currentRole;return this.troubleContainer.troubles.data.filter(ze(e)).filter(t=>t.type!==ye.AGITATION_REQUIRED_TROUBLE)}get future(){return this.futureHandler.future}get resolveFuture(){return this.futureHandler.getFuture(Fe)}get agitateFuture(){return this.futureHandler.getFuture(eo)}handleAgitationStarted(e){this.logger.info(`Agitation started for ${e.path}`),this._agitationFutureId=String(e.futureId)}handleAgitationEnded(e){this.logger.info(`Agitation ended for ${e.path}`),this._agitationFutureId=void 0}async init(){this.logger.debug(`initializing agitation-control ${this.id}`)}unload(){this.logger.debug(`unloading agitation-control ${this.id}`),this.disposer&&this.disposer()}handleReadyToResolve(){this.readyToResolve&&(this.logger.info("AgitationControl - Resolving deferred troubles"),this.resolveDeferredTroubles()),this._agitationFutureId&&this.logger.info("AgitationControl - Agitation started")}async load(){this.logger.debug(`loading agitation-control ${this.id}`)}};w([s.kosDependency({modelType:Pe.type})],m.prototype,"application",2);w([s.kosFuture({alias:Fe})],m.prototype,"resolveDeferredTroubles",1);w([s.kosTopicHandler({topic:ye.CartridgeAgitatorEvents.TOPIC_AGITATION_STARTED})],m.prototype,"handleAgitationStarted",1);w([s.kosTopicHandler({topic:ye.CartridgeAgitatorEvents.TOPIC_AGITATION_ENDED})],m.prototype,"handleAgitationEnded",1);w([s.kosModelEffect({dependencies:e=>[e.readyToResolve,e._agitationFutureId]})],m.prototype,"handleReadyToResolve",1);m=w([s.kosModel(vt)],m);const to=new s.SingletonKosModelRegistrationFactory({class:m,type:vt});var ro=Object.defineProperty,oo=Object.getOwnPropertyDescriptor,oe=(e,t,r,i)=>{for(var o=i>1?void 0:i?oo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ro(t,r,o),o};const U="animation-model";let P=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"disableAll");n(this,"enableDial");n(this,"enableModal");n(this,"enableSideBar");this.id=e,this.logger=r.logger}};oe([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.disableAll"})],P.prototype,"disableAll",2);oe([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableDial"})],P.prototype,"enableDial",2);oe([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableModal"})],P.prototype,"enableModal",2);oe([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.uiConfig.animations.enableSideBar"})],P.prototype,"enableSideBar",2);P=oe([s.kosModel(U)],P);const bt={registration:{[U]:{class:P,singleton:!0}},type:U,predicate:s.isKosModel(U),factory:s.Kos.Singleton.create(U)},{URL:so}=s.resolveServiceUrl("ANIMATION_SERVICE"),{getAll:io}=s.ServiceFactory.build({basePath:`${so}/api/animation`}),no=s.KosLog.createLogger({name:"animation-service",group:"Services"}),ao=async()=>(no.debug("sending GET for animation"),await io({})),lo=Object.freeze(Object.defineProperty({__proto__:null,getAnimations:ao},Symbol.toStringTag,{value:"Module"})),{URL:L}=s.resolveServiceUrl("FCM-PUMP_SERVICE"),{postModel:se}=s.ServiceFactory.build({basePath:`${L}/api/fcm-pump`}),u=s.KosLog.createLogger({name:"fcm-pump-service",group:"Services"}),_t=async e=>{var t,r,i,o,l;u.debug(`performElectricalTest - sending POST request to /api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`);try{const a=await se({model:{},urlOverride:`${L}/api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`});return u.debug("performElectricalTest - response:",a),((a==null?void 0:a.status)===200||(a==null?void 0:a.status)===499)&&((t=a.data)!=null&&t.error)?[a.data.error||"unknownError",a.data]:[void 0,a==null?void 0:a.data]}catch(a){if(u.error(`performElectricalTest - sending POST request to /api/ext/freestyle/fcm/diagnostics/${e}/electricalTest`,a),a instanceof s.FetchError){const g=((i=(r=a.payload)==null?void 0:r.data)==null?void 0:i.error)||((o=a.payload)==null?void 0:o.error)||"unknownError";return[g,((l=a.payload)==null?void 0:l.data)||{error:g}]}}return["unknownError",{error:"unknownError"}]},Pt=async(e,t)=>{u.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/preCalibrate`);try{const r=await se({model:{},urlOverride:`${L}/api/ext/freestyle/fcm/calibration/${e}/preCalibrate`,tracker:t});return u.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){u.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/preCalibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Tt=async(e,t)=>{u.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/calibrate`);try{const r=await se({model:{},urlOverride:`${L}/api/ext/freestyle/fcm/calibration/${e}/calibrate`,tracker:t});return u.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){u.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/calibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Mt=async(e,t,r)=>{u.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/verify/${t}`);try{const i=await se({model:{},urlOverride:`${L}/api/ext/freestyle/fcm/calibration/${e}/verify/${t}`,tracker:r});return u.debug("performVerify - response:",i),i!=null&&i.data&&s.FutureManager.initiateFuture(i.data),i==null?void 0:i.data}catch(i){u.error(`performVerify - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/verify/${t}`,i);const o={id:r||"",endState:s.FutureEndState.Fail,tracker:r,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(o),o}},$t=async(e,t,r)=>{u.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`);try{const i=await se({model:{},urlOverride:`${L}/api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`});return u.debug("performPreCalibrate - response:",i),i==null?void 0:i.data}catch(i){u.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/fcm/calibration/${e}/complete/${t}/${r}`,i);return}},co=Object.freeze(Object.defineProperty({__proto__:null,performCalibrate:Tt,performComplete:$t,performElectricalTest:_t,performPreCalibrate:Pt,performVerify:Mt},Symbol.toStringTag,{value:"Module"}));var uo=Object.defineProperty,po=Object.getOwnPropertyDescriptor,Te=(e,t,r,i)=>{for(var o=i>1?void 0:i?po(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&uo(t,r,o),o};const St="fcm-pump-model",go=s.KosLog.createLogger({name:"fcm-pump-model"});let M=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pumpModel");n(this,"futureHandler");this.id=e,this.logger=r.logger,this.pumpModel=t.companionParent,this.futureHandler=new s.FutureHandler(this)}get future(){return this.futureHandler.future}get name(){return this.pumpModel.name}get canPour(){return this.pumpModel.canPour}get isPouring(){return this.pumpModel.isPouring}async cancelPour(){return this.pumpModel.cancelPour()}performIntent(e){return this.pumpModel.performIntent(e)}async performElectricalTest(){const[e,t]=await _t(this.pumpModel.path);return e&&go.error(`Failed to perform electrical test on pump ${this.id}`,e),t}getChildren(){return[...this.futureHandler.allFutures]}async performPreCalibrate(e){return Pt(this.pumpModel.path,e)}async performCalibrate(e){return Tt(this.pumpModel.path,e)}async performVerify(e,t){return Mt(this.pumpModel.path,e,t)}async performComplete(e,t){return $t(this.pumpModel.path,e,t)}async init(){this.logger.debug(`initializing fcm-pump ${this.id}`)}async load(){this.logger.debug(`loading fcm-pump ${this.id}`)}};Te([s.kosFuture()],M.prototype,"performPreCalibrate",1);Te([s.kosFuture()],M.prototype,"performCalibrate",1);Te([s.kosFuture()],M.prototype,"performVerify",1);M=Te([s.kosModel(St)],M);const Be=new s.KosModelRegistrationFactory({class:M,type:St});var ho=Object.defineProperty,fo=Object.getOwnPropertyDescriptor,Ct=(e,t,r,i)=>{for(var o=i>1?void 0:i?fo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ho(t,r,o),o};const j="carb-water-model";let ce=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getPump(){const t=this.assemblyModel.getHoldersByGroup("carb")[0].pumps.data[0];return s.getKosCompanionModel(t,Be.type)}async init(){this.logger.debug(`initializing carb-water ${this.id}`)}async load(){this.logger.debug(`loading carb-water ${this.id}`)}};Ct([s.kosDependency({modelType:k.Assembly.type})],ce.prototype,"assemblyModel",2);ce=Ct([s.kosModel(j)],ce);const Ot={registration:{[j]:{class:ce,singleton:!1}},type:j,predicate:s.isKosModel(j),factory:s.Kos.Factory.create(j)},{URL:D}=s.resolveServiceUrl("COPY-LOGS_SERVICE"),{getAll:mo,getOne:yo,postModel:Et,deleteModel:vo}=s.ServiceFactory.build({basePath:`${D}/api/copy-logs`}),ue=s.KosLog.createLogger({name:"copy-logs-service",group:"Services"}),kt=async(e,t)=>{const r=await vo({tracker:t,id:e,urlOverride:`${D}/api/app/kosdev.ddk/copyLogs/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},wt=async(e,t)=>{const r=await Et({model:{},tracker:t,urlOverride:`${D}/api/app/kosdev.ddk/copyLogs/eraseAndCopy/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},Lt=async(e,t)=>{const r=await Et({model:{},tracker:t,urlOverride:`${D}/api/app/kosdev.ddk/copyLogs/${e}`});if(!(r!=null&&r.data))throw new Error("No response from server");return r.data},Dt=async()=>{ue.debug("sending GET for copy-logs");try{const e=await mo({urlOverride:`${D}/api/app/kosdev.ddk/copyLogs/volumes/size`});return[void 0,e==null?void 0:e.data]}catch(e){if(e instanceof s.FetchError)return ue.error(`Error fetching log file size: ${e.payload.error}`),[e.payload.error,void 0]}return["unknownError",void 0]},Ft=async()=>{ue.debug("sending GET for log file size");try{const e=await yo({urlOverride:`${D}/api/app/kosdev.ddk/copyLogs/files/size`});return[void 0,e==null?void 0:e.data]}catch(e){if(e instanceof s.FetchError)return ue.error(`Error fetching log file size: ${e.payload.error}`),[e.payload.error,void 0]}return["unknownError",void 0]},bo=Object.freeze(Object.defineProperty({__proto__:null,copyLogFromVolume:Lt,eraseAndCopyLogsToVolume:wt,eraseVolume:kt,getLogFileSize:Ft,getVolumes:Dt},Symbol.toStringTag,{value:"Module"}));var _o=Object.defineProperty,Po=Object.getOwnPropertyDescriptor,F=(e,t,r,i)=>{for(var o=i>1?void 0:i?Po(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&_o(t,r,o),o};const Rt="copy-logs-model";let y=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"_volumes");n(this,"futureHandler");n(this,"future");n(this,"storageDeviceContainer");n(this,"_activeVolume");n(this,"_logFileSize",0);n(this,"_actionState","idle");n(this,"copyProgress");this.id=e,this.logger=r.logger,this._volumes=new s.KosDataContainer,this._activeVolume=void 0,this.copyProgress={bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0},s.setupCompleteFutureSupport(this)}get volumes(){return this._volumes.data}get activeVolume(){return this._activeVolume}get logFileSize(){return this._logFileSize}reset(){this.clearActiveVolume(),this.futureHandler.removeFuture()}clearActiveVolume(){this._activeVolume=void 0}updateActiveVolume(e){this._activeVolume=e}get inserted(){return this.storageDeviceContainer.isStorageInserted}updateLogFileSize(e){this._logFileSize=e}get canCopyLogs(){return this.inserted&&this._activeVolume}get actionState(){return this._actionState}get diskFull(){var e;return((e=this.future)==null?void 0:e.status)===s.FutureEndState.Success&&this.copyProgress.filesSkipped>0}onFutureUpdate(e){this.logger.info(`Future update: ${e.status}`),e.status===s.FutureEndState.Success&&(this.logger.info(`Future success: ${e.status}`),this.diskFull&&s.kosAction(()=>{e.endState=s.FutureEndState.Fail,e.reason="errDiskFull"})),e.status===s.FutureEndState.Fail&&this.logger.error(`Future failed: ${e.status}`),e.note==="copy"?s.kosAction(()=>{this._actionState="copying",this.copyProgress=e.clientData||{bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0}}):(this._actionState="erasing",s.kosAction(()=>{this.copyProgress={bytesCopied:0,bytesToCopy:0,filesCopied:0,filesSkipped:0}}))}async eraseAndCopyVolume(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="erasing"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Erasing volume ${(t=this._activeVolume)==null?void 0:t.name}`),wt(this._activeVolume.id,e)}async eraseVolume(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="erasing"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Erasing volume ${(t=this._activeVolume)==null?void 0:t.name}`),kt(this._activeVolume.id,e)}async copyLogs(e){var t;if(!e)throw new Error("No tracker provided");if(s.kosAction(()=>{this._actionState="copying"}),!this._activeVolume)throw this.logger.error("No active volume selected"),new Error("No active volume selected");return this.logger.info(`Copying logs to ${(t=this._activeVolume)==null?void 0:t.name}`),Lt(this._activeVolume.id,e)}handleInsertion(){this.inserted?this.syncVolumes():(this._volumes.clear(),this.clearActiveVolume())}async init(){this.logger.debug(`initializing copy-logs ${this.id}`)}async syncVolumes(){const[e,t]=await Dt(),[r,i]=await Ft();if(r){this.logger.error(`Error fetching log file size: ${r}`);return}if(e){this.logger.error(`Error fetching volumes: ${e}`);return}t&&(t.forEach(o=>{const l=this.storageDeviceContainer.getModel(o.id);if(l){const a={id:o.id,name:l.label,freeBytes:o.info.freeBytes,totalBytes:o.info.totalBytes};this._volumes.addModel(a)}}),t.length===1?this.updateActiveVolume(this._volumes.data[0]):this.clearActiveVolume()),i&&(this.logger.info(`Log file size: ${i}`),this.updateLogFileSize(parseInt(i,10)))}async activate(){this.logger.debug(`activating copy-logs ${this.id}`),await this.syncVolumes()}async load(){this.logger.debug(`loading copy-logs ${this.id}`)}};F([s.kosDependency({modelType:s.StorageDeviceContainer.type})],y.prototype,"storageDeviceContainer",2);F([s.kosFuture()],y.prototype,"eraseAndCopyVolume",1);F([s.kosFuture()],y.prototype,"eraseVolume",1);F([s.kosFuture()],y.prototype,"copyLogs",1);F([s.kosModelEffect({dependencies:e=>[e.inserted]})],y.prototype,"handleInsertion",1);y=F([s.kosModel(Rt)],y);const To=new s.SingletonKosModelRegistrationFactory({class:y,type:Rt}),It=s.KosLog.createLogger({name:"dashboard-operations-service",group:"Services"}),At=async(e,t)=>(It.debug("resolveAll"),await s.TroubleServices.bulkResolveTroubles(e,t)),xt=async(e,t)=>(It.debug("resolveTrouble"),await s.TroubleServices.resolveTrouble(e,t)),Mo=Object.freeze(Object.defineProperty({__proto__:null,resolveAll:At,resolveTrouble:xt},Symbol.toStringTag,{value:"Module"}));var $o=Object.defineProperty,So=Object.getOwnPropertyDescriptor,Me=(e,t,r,i)=>{for(var o=i>1?void 0:i?So(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&$o(t,r,o),o};const V="dashboard-operations-model";function tt(e){return!e.deferred}function rt(e){return e.deferred}let $=class{constructor(e,t,r){n(this,"id");n(this,"troubles");n(this,"futureHandler");n(this,"logger");this.id=e,this.futureHandler=new s.FutureHandler(this),this.logger=r.logger}get troublesByType(){return this.troubles.troubles.data.reduce(s.troubleByTypeReducer,{})}get queuedPurgeTroubles(){return this.purgeTroubles.filter(rt)}get queuedPrimeTroubles(){return this.primeTroubles.filter(rt)}get resolvablePrimeTroubles(){return this.primeTroubles.filter(tt)}get resolvablePurgeTroubles(){return this.purgeTroubles.filter(tt)}get hasResolvablePurgeTroubles(){return this.resolvablePurgeTroubles.length>0}get hasResolvablePrimeTroubles(){return this.resolvablePrimeTroubles.length>0}get hasPurgeTroubles(){return this.purgeTroubles.length>0}get hasPrimeTroubles(){return this.primeTroubles.length>0}get purgeTroubles(){return this.troublesByType[Le]||[]}get primeTroubles(){return this.troublesByType[st]||[]}get future(){return this.futureHandler.getFuture()}async resolveAllTroubles(e,t){if(!t)throw new Error("No tracker provided");const r=e===Le?this.purgeTroubles:this.primeTroubles;r.filter(a=>a.shouldDefer).forEach(a=>{this.logger.info(`Deferring trouble ${a.rawId}`),a.defer()});const o=r.filter(a=>!a.shouldDefer).map(a=>a.rawId);return o.length===0?void 0:await At(o,t)}async resolveTrouble(e,t){if(!t)throw new Error("No tracker provided");return await xt(e,t)}async init(){this.logger.debug(`initializing dashboard-operations ${this.id}`)}async load(){this.logger.debug(`loading dashboard-operations ${this.id}`)}};Me([s.kosDependency({modelType:s.TroubleContainer.type})],$.prototype,"troubles",2);Me([s.kosFuture()],$.prototype,"resolveAllTroubles",1);Me([s.kosFuture()],$.prototype,"resolveTrouble",1);$=Me([s.kosModel(V)],$);const $e={registration:{[V]:{class:$,singleton:!0}},type:V,predicate:s.isKosModel(V),factory:s.Kos.Singleton.create(V)};var Co=Object.getOwnPropertyDescriptor,Oo=(e,t,r,i)=>{for(var o=i>1?void 0:i?Co(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const H="dispenser-model";let Re=class{constructor(e,t,r){n(this,"id");n(this,"logger");this.id=e,this.logger=r.logger}updateModel(){}async init(){this.logger.debug(`initializing dispenser ${this.id}`)}async load(){this.logger.debug(`loading dispenser ${this.id}`)}};Re=Oo([s.kosModel(H)],Re);const Kt={registration:{[H]:{class:Re,singleton:!0}},type:H,predicate:s.isKosModel(H),factory:s.Kos.Singleton.create(H)},{URL:Eo}=s.resolveServiceUrl("DISPENSER_SERVICE"),{getAll:ko}=s.ServiceFactory.build({basePath:`${Eo}/api/dispenser`}),wo=s.KosLog.createLogger({name:"dispenser-service",group:"Services"}),Lo=async()=>(wo.debug("sending GET for dispenser"),await ko({})),Do=Object.freeze(Object.defineProperty({__proto__:null,getDispensers:Lo},Symbol.toStringTag,{value:"Module"}));var Fo=Object.defineProperty,Ro=Object.getOwnPropertyDescriptor,Ut=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ro(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Fo(t,r,o),o};const N="dispenser-info-model";let de=class{constructor(e,t,r){n(this,"logger");n(this,"id");n(this,"name");this.id=e,this.logger=r.logger}async init(){this.logger.debug(`initializing dispenser-info ${this.id}`)}async load(){this.logger.debug(`loading dispenser-info ${this.id}`)}};Ut([s.kosConfigProperty({path:"kos:device",attribute:"name"})],de.prototype,"name",2);de=Ut([s.kosModel(N)],de);const jt={registration:{[N]:{class:de,singleton:!1}},type:N,predicate:s.isKosModel(N),factory:s.Kos.Factory.create(N)},{URL:Io}=s.resolveServiceUrl("DISPENSER-INFO_SERVICE"),{getAll:Ao}=s.ServiceFactory.build({basePath:`${Io}/api/dispenser-info`}),xo=s.KosLog.createLogger({name:"dispenser-info-service",group:"Services"}),Ko=async()=>(xo.debug("sending GET for dispenser-info"),await Ao({})),Uo=Object.freeze(Object.defineProperty({__proto__:null,getDispenserInfos:Ko},Symbol.toStringTag,{value:"Module"}));var jo=Object.getOwnPropertyDescriptor,Vo=(e,t,r,i)=>{for(var o=i>1?void 0:i?jo(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const W="enrollment-model";let Ie=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"enrolled");this.id=e,this.logger=r.logger,this.enrolled=!1}updateModel(e){console.log("updateModel:",e)}async init(){this.logger.debug(`initializing enrollment ${this.id}`)}async load(){this.logger.debug(`loading enrollment ${this.id}`)}};Ie=Vo([s.kosModel(W)],Ie);const Vt={registration:{[W]:{class:Ie,singleton:!0}},type:W,predicate:s.isKosModel(W),factory:s.Kos.Singleton.create(W)},{URL:Ho}=s.resolveServiceUrl("ENROLLMENT_SERVICE"),{getAll:No}=s.ServiceFactory.build({basePath:`${Ho}/api/enrollment`}),Wo=s.KosLog.createLogger({name:"enrollment-service",group:"Services"}),zo=async()=>(Wo.debug("sending GET for enrollment"),await No({})),Bo=Object.freeze(Object.defineProperty({__proto__:null,getEnrollments:zo},Symbol.toStringTag,{value:"Module"})),Yo=e=>e.toLowerCase().includes("micros"),qo=e=>!e.toLowerCase().includes("micros"),Go=e=>t=>{const r=e==null?void 0:e.getHoldersByGroup(t);return r?r.map(i=>({id:i.id,name:i.ingredientName,path:i.path})):null},Qo=["water","carb","ns","nss"],S="dashboardKeyFactory",we=[];s.registerExtensionPoint(S,{register:(e,t)=>{we.includes(t)||we.push(t)},execute:(e,t)=>{const r=we.sort((i,o)=>i.rank-o.rank);for(const i of r){const o=i.factory(t);if(o)return o}}});const Ht=e=>{s.ExtensionManager[S].register(S,e)},Nt=e=>s.ExtensionManager[S].execute(S,e);s.ExtensionManager.registerDashboardKeyFactory=Ht;s.ExtensionManager.executeDashboardKeyFactory=Nt;const Ae=3600,Wt=60,Xo=e=>{const t=Math.floor(e/Ae),r=Math.floor(e%Ae/Wt);return{hours:t,minutes:r}},Jo=(e,t)=>e*Ae+t*Wt,zt=e=>{const r=new Date().valueOf()-e.valueOf(),i=Math.floor(r/(1e3*60)),o=Math.floor(i/60),l=Math.floor(o/24),a=i%60,g=o%24;let _="";return l>0&&(_+=`${l} day${l>1?"s":""} `),g>0&&(_+=`${g} hour${g>1?"s":""} `),(a>0||l===0&&g===0)&&(_+=`${a} minute${a>1?"s":""} `),_};var Zo=Object.defineProperty,es=Object.getOwnPropertyDescriptor,Se=(e,t,r,i)=>{for(var o=i>1?void 0:i?es(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Zo(t,r,o),o};const z="ingredient-summary-model";let C=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"dashboardOperationModel");n(this,"appModel");n(this,"logger");this.id=e,this.logger=r.logger,this.dashboardOperationModel=$e.factory({})}get highPriorityHolders(){return this.assemblyModel.allHolders.filter(e=>e.troubles.length>0&&e.troubles.find(t=>t.rank>=400))}get actionRequiredHolders(){const e=this.appModel.currentRole,t=ze(e);return this.assemblyModel.allHolders.filter(r=>{const i=r.troubles.filter(t);return i.length>0&&i.find(o=>o.resolvable)})}get lowLevelHolders(){return this.assemblyModel.allHolders.filter(e=>{const t=e.fillPercent;return e.hasFuelGuage&&t<20})}async init(){this.logger.debug(`initializing ingredient-summary ${this.id}`)}async load(){this.logger.debug(`loading ingredient-summary ${this.id}`)}};Se([s.kosDependency({modelType:k.Assembly.type})],C.prototype,"assemblyModel",2);Se([s.kosDependency({modelType:$e.type})],C.prototype,"dashboardOperationModel",2);Se([s.kosDependency({modelType:Pe.type})],C.prototype,"appModel",2);C=Se([s.kosModel(z)],C);const Bt={registration:{[z]:{class:C,singleton:!1}},type:z,predicate:s.isKosModel(z),factory:s.Kos.Factory.create(z)};var ts=Object.getOwnPropertyDescriptor,rs=(e,t,r,i)=>{for(var o=i>1?void 0:i?ts(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const Yt="lfcv-pump-model";let xe=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pumpModel");this.id=e,this.logger=r.logger,this.pumpModel=t.companionParent}get name(){return this.pumpModel.name}get canPour(){return this.pumpModel.canPour}get isPouring(){return this.pumpModel.isPouring}async cancelPour(){return this.pumpModel.cancelPour()}performIntent(e){return this.pumpModel.performIntent(e)}async init(){this.logger.debug(`initializing lfcv-pump ${this.id}`)}async load(){this.logger.debug(`loading lfcv-pump ${this.id}`)}};xe=rs([s.kosModel(Yt)],xe);const os=new s.KosModelRegistrationFactory({class:xe,type:Yt}),{URL:ss}=s.resolveServiceUrl("LFCV-PUMP_SERVICE"),{getAll:is}=s.ServiceFactory.build({basePath:`${ss}/api/lfcv-pump`}),ns=s.KosLog.createLogger({name:"lfcv-pump-service",group:"Services"}),as=async()=>(ns.debug("sending GET for lfcv-pump"),await is({})),ls=Object.freeze(Object.defineProperty({__proto__:null,getLfcvPumps:as},Symbol.toStringTag,{value:"Module"})),{URL:Ye}=s.resolveServiceUrl("LOCKOUT_SERVICE"),{postModel:qt}=s.ServiceFactory.build({basePath:`${Ye}/api/app/kosdev.ddk/lockout`}),Gt=s.KosLog.createLogger({name:"lockout-service",group:"Services"}),cs=async()=>(Gt.info("lock"),await qt({model:{},urlOverride:`${Ye}/api/app/kosdev.ddk/lockout/lockNow`})),Qt=async e=>{Gt.info("unlock");const t=await qt({model:{},urlOverride:`${Ye}/api/app/kosdev.ddk/lockout/unlock/${e}`});return t==null?void 0:t.data},us=Object.freeze(Object.defineProperty({__proto__:null,lock:cs,unlock:Qt},Symbol.toStringTag,{value:"Module"}));var ds=Object.defineProperty,ps=Object.getOwnPropertyDescriptor,R=(e,t,r,i)=>{for(var o=i>1?void 0:i?ps(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ds(t,r,o),o};const Xt="lockout-model",gs=[{day:"monday",lock:"dayWiseLockConfigMap.Mon.enabled",open:"dayWiseLockConfigMap.Mon.unlockTime",close:"dayWiseLockConfigMap.Mon.lockTime"},{day:"tuesday",lock:"dayWiseLockConfigMap.Tue.enabled",open:"dayWiseLockConfigMap.Tue.unlockTime",close:"dayWiseLockConfigMap.Tue.lockTime"},{day:"wednesday",lock:"dayWiseLockConfigMap.Wed.enabled",open:"dayWiseLockConfigMap.Wed.unlockTime",close:"dayWiseLockConfigMap.Wed.lockTime"},{day:"thursday",lock:"dayWiseLockConfigMap.Thu.enabled",open:"dayWiseLockConfigMap.Thu.unlockTime",close:"dayWiseLockConfigMap.Thu.lockTime"},{day:"friday",lock:"dayWiseLockConfigMap.Fri.enabled",open:"dayWiseLockConfigMap.Fri.unlockTime",close:"dayWiseLockConfigMap.Fri.lockTime"},{day:"saturday",lock:"dayWiseLockConfigMap.Sat.enabled",open:"dayWiseLockConfigMap.Sat.unlockTime",close:"dayWiseLockConfigMap.Sat.lockTime"},{day:"sunday",lock:"dayWiseLockConfigMap.Sun.enabled",open:"dayWiseLockConfigMap.Sun.unlockTime",close:"dayWiseLockConfigMap.Sun.lockTime"}];let v=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"dayEnabledList",["dayWiseLockConfigMap.Sun.enabled","dayWiseLockConfigMap.Mon.enabled","dayWiseLockConfigMap.Tue.enabled","dayWiseLockConfigMap.Wed.enabled","dayWiseLockConfigMap.Thu.enabled","dayWiseLockConfigMap.Fri.enabled","dayWiseLockConfigMap.Sat.enabled"]);n(this,"dayOpenAtList",["dayWiseLockConfigMap.Sun.unlockTime","dayWiseLockConfigMap.Mon.unlockTime","dayWiseLockConfigMap.Tue.unlockTime","dayWiseLockConfigMap.Wed.unlockTime","dayWiseLockConfigMap.Thu.unlockTime","dayWiseLockConfigMap.Fri.unlockTime","dayWiseLockConfigMap.Sat.unlockTime"]);n(this,"dayCloseAtList",["dayWiseLockConfigMap.Sun.lockTime","dayWiseLockConfigMap.Mon.lockTime","dayWiseLockConfigMap.Tue.lockTime","dayWiseLockConfigMap.Wed.lockTime","dayWiseLockConfigMap.Thu.lockTime","dayWiseLockConfigMap.Fri.lockTime","dayWiseLockConfigMap.Sat.lockTime"]);n(this,"saveMap");n(this,"pin");n(this,"nextLockSkipped");n(this,"nextLockTime");n(this,"nextUnLockTime");n(this,"cuiLockout");this.id=e,this.logger=r.logger,this.saveMap=new Map}get enabled(){const e=this.getProp("oneTimeLockConfig.lockTime"),t=e!==void 0&&e!=="",r=this.getProp("lockScheduleEnabled");return t||r}get schedule(){return gs}getProp(e){return this.saveMap.get(e)}setProp(e,t){this.saveMap.set(e,t)}toggleSkip(){if(this.nextLockSkipped.value==="0"){const t=this.nextLockTime.value;t!==void 0&&this.nextLockSkipped.updateProperty(t)}else this.nextLockSkipped.updateProperty("0")}async unlock(e){return await Qt(e)}async save(){return this.saveMap.forEach((e,t)=>{e!==this.cuiLockout.props[t]&&(this.cuiLockout.props[t]=e)}),this.cuiLockout.updateConfigBean()}reset(){this.cuiLockout.props.entries.forEach(([e,t])=>this.saveMap.set(e,t))}async init(){this.logger.debug(`initializing lockout ${this.id}`),this.cuiLockout.props.entries.forEach(([e,t])=>this.saveMap.set(e,t))}async load(){this.logger.debug(`loading lockout ${this.id}`)}};R([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"pin"})],v.prototype,"pin",2);R([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextLockSkipped"})],v.prototype,"nextLockSkipped",2);R([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextLockTime"})],v.prototype,"nextLockTime",2);R([s.kosConfigProperty({path:"app:kosdev.ddk:service:cuiLockout",attribute:"nextUnLockTime"})],v.prototype,"nextUnLockTime",2);R([s.kosConfigBean({path:"app:kosdev.ddk:service:cuiLockout"})],v.prototype,"cuiLockout",2);v=R([s.kosModel(Xt)],v);const hs=new s.SingletonKosModelRegistrationFactory({class:v,type:Xt}),fs=async(e,t)=>await s.TroubleServices.bulkResolveTroubles(e,t);var ms=Object.defineProperty,ys=Object.getOwnPropertyDescriptor,Ce=(e,t,r,i)=>{for(var o=i>1?void 0:i?ys(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ms(t,r,o),o};const B="macro-assignment-model",ot="PurgeTrouble",vs="PrimeTrouble";let O=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"futureHandler");n(this,"holders");n(this,"ingredients");this.id=e,this.futureHandler=new s.FutureHandler,this.logger=r.logger}get future(){return this.futureHandler.future}get macroHolders(){return this.holders.holders.getIndexByKey("group","macros").sort((e,t)=>e.name<t.name?-1:e.name>t.name?1:0)}get hasMacroHolders(){return this.macroHolders.length>0}get holderPurgeTroubles(){return this.macroHolders.reduce((t,r)=>{const i=r.troublesByType[ot]||[];return t=[...t,...i],t},[])}get holderPrimeTroubles(){return this.macroHolders.reduce((t,r)=>{const i=r.troublesByType[vs]||[];return t=[...t,...i],t},[])}get hasHolderPurgeTroubles(){return this.holderPurgeTroubles.length>0}get hasHolderPrimeTroubles(){return this.holderPrimeTroubles.length>0}get macroIngredients(){return this.ingredients.ingredients.getIndexByKey("macro","macro")}get hasMacroIngredients(){return this.macroIngredients.length>0}async resolveAll(e,t){if(!t)throw new Error("No tracker provided");const i=(e===ot?this.holderPurgeTroubles:this.holderPrimeTroubles).map(l=>l.rawId);return await fs(i,t)}};Ce([s.kosDependency({modelType:k.HolderContainer.type})],O.prototype,"holders",2);Ce([s.kosDependency({modelType:k.IngredientContainer.type})],O.prototype,"ingredients",2);Ce([s.kosFuture()],O.prototype,"resolveAll",1);O=Ce([s.kosModel(B)],O);const Jt={registration:{[B]:{class:O,singleton:!0}},type:B,predicate:s.isKosModel(B),factory:s.Kos.Singleton.create(B)};var bs=Object.getOwnPropertyDescriptor,_s=(e,t,r,i)=>{for(var o=i>1?void 0:i?bs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const Y="network-test-model";let Ke=class{constructor(e,t,r){n(this,"id");n(this,"group");n(this,"passed");n(this,"inProgress");n(this,"failureTime");n(this,"timestamp");n(this,"name");n(this,"results");n(this,"logger");this.id=e,this.logger=r.logger,this.group=t.group,this.passed=!1,this.inProgress=!1,this.name=t.name,this.results=[]}updateModel(e){this.group=e.group,this.name=e.name,this.passed=e.passed,this.failureTime=e.failureTime,this.inProgress=e.inProgress,this.timestamp=e.timestamp,this.results=e.results}async init(){this.logger.debug(`initializing network-test ${this.id}`)}async load(){this.logger.debug(`loading network-test ${this.id}`)}};Ke=_s([s.kosModel(Y)],Ke);const qe={registration:{[Y]:{class:Ke,singleton:!1}},type:Y,predicate:s.isKosModel(Y),factory:s.Kos.Factory.create(Y)},{URL:Oe}=s.resolveServiceUrl("NETWORK-TEST_SERVICE"),{getAll:Ps,getOne:Zt}=s.ServiceFactory.build({basePath:`${Oe}/api/app/ncui/network/tests`}),Ts=s.KosLog.createLogger({name:"network-test-service",group:"Services"}),er=async()=>{Ts.debug("sending GET for network-test");const e=await Ps({urlOverride:`${Oe}/api/app/kosdev.ddk/network/tests`});return e==null?void 0:e.data},tr=async()=>{const e=await Zt({urlOverride:`${Oe}/api/app/kosdev.ddk/network/reports`});return e==null?void 0:e.data},rr=async(e,t)=>await Zt({urlOverride:`${Oe}/api/app/kosdev.ddk/network/tests/run/group/${e}`,tracker:t}),Ms=Object.freeze(Object.defineProperty({__proto__:null,getNetworkTests:er,getTestsReports:tr,performGroupTest:rr},Symbol.toStringTag,{value:"Module"}));var $s=Object.defineProperty,Ss=Object.getOwnPropertyDescriptor,Ge=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ss(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&$s(t,r,o),o};const q="network-test-container-model";let te=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"lastTested");n(this,"futureHandler");n(this,"models");this.id=e,this.logger=r.logger,this.futureHandler=new s.FutureHandler(this),this.models=new s.KosModelContainer({parentId:e,indexMap:{group:"group"}}),this.lastTested=new Date("default")}get data(){return this.models.data}addModel(e){this.models.addModel(e)}removeModel(e){this.models.removeModel(e)}getModel(e){return this.models.getModel(e)}async init(){this.logger.debug(`initializing network-test-container container ${this.id}`)}getLastTested(e){const t=this.models.getIndexByKey("group",e).map(i=>i.timestamp&&new Date(i.timestamp)),r=Math.max(...t.map(i=>i?i.getTime():0));return r?zt(new Date(r)):""}async load(){this.logger.debug(`loading network-test-container container ${this.id}`);const e=await er(),t=await tr();e&&e.forEach(r=>{const i=qe.factory(r.id)(r);this.addModel(i)}),e&&t&&e.forEach(r=>{const i=t==null?void 0:t[r.group],o=i==null?void 0:i[r.id],l=this.getModel(r.id);if(l&&o){const a={group:o.group,name:o.name,passed:o.passed,failureTime:o.failureTime?new Date(o.failureTime):void 0,inProgress:o.inProgress,timestamp:new Date(o.timestamp),results:o.results};l.updateModel(a)}})}async performTest(e,t){if(!t)throw new Error("No tracker provided");const r=await rr(e,t);return r==null?void 0:r.data}onFutureUpdate(e){const{clientData:t}=e;t&&t.forEach(r=>{const i=this.getModel(r.id);if(s.kosAction(()=>{this.lastTested=this.lastTested>new Date(r.timestamp)?this.lastTested:new Date(r.timestamp)}),i){const o={group:r.group,name:r.name,passed:r.passed,failureTime:r.failureTime?new Date(r.failureTime):void 0,inProgress:r.inProgress,timestamp:new Date(r.timestamp),results:r.results};s.kosAction(()=>{i.updateModel(o)})}})}};Ge([s.kosChild],te.prototype,"models",2);Ge([s.kosFuture()],te.prototype,"performTest",1);te=Ge([s.kosModel(q)],te);const or={registration:{[q]:{class:te,singleton:!0},...qe.registration},type:q,predicate:s.isKosModel(q),factory:s.Kos.Singleton.create(q)};var Cs=Object.defineProperty,Os=Object.getOwnPropertyDescriptor,sr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Os(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Cs(t,r,o),o};const G="nutritive-sweetener-model";let pe=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getHolder(){return this.assemblyModel.getHoldersByGroup("ns")[0]}getPump(){return this.getHolder().pumps.data[0]}async init(){this.logger.debug(`initializing nutritive-sweetener ${this.id}`)}async load(){this.logger.debug(`loading nutritive-sweetener ${this.id}`)}};sr([s.kosDependency({modelType:k.Assembly.type})],pe.prototype,"assemblyModel",2);pe=sr([s.kosModel(G)],pe);const ir={registration:{[G]:{class:pe,singleton:!1}},type:G,predicate:s.isKosModel(G),factory:s.Kos.Factory.create(G)};var Es=Object.defineProperty,ks=Object.getOwnPropertyDescriptor,nr=(e,t,r,i)=>{for(var o=i>1?void 0:i?ks(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Es(t,r,o),o};const Q="plain-water-model";let ge=class{constructor(e,t,r){n(this,"id");n(this,"assemblyModel");n(this,"logger");this.id=e,this.logger=r.logger}getHolder(){return this.assemblyModel.getHoldersByGroup("water")[0]}getPump(){var i,o;const e=this.getHolder(),t=(o=(i=e==null?void 0:e.pumps)==null?void 0:i.data)==null?void 0:o[0];return s.getKosCompanionModel(t,Be.type)}async init(){this.logger.debug(`initializing plain-water ${this.id}`)}async load(){this.logger.debug(`loading plain-water ${this.id}`)}};nr([s.kosDependency({modelType:k.Assembly.type})],ge.prototype,"assemblyModel",2);ge=nr([s.kosModel(Q)],ge);const ar={registration:{[Q]:{class:ge,singleton:!1}},type:Q,predicate:s.isKosModel(Q),factory:s.Kos.Factory.create(Q)},{URL:lr}=s.resolveServiceUrl("REBOOT_SERVICE"),{postModel:ws}=s.ServiceFactory.build({basePath:`${lr}/api/reboot`}),Ls=s.KosLog.createLogger({name:"reboot-service",group:"Services"}),cr=async()=>(Ls.debug("sending POST call for Reboot Dispenser"),await ws({urlOverride:`${lr}/api/app/kosdev.ddk/ncui/reboot`,model:{}})),Ds=Object.freeze(Object.defineProperty({__proto__:null,rebootDispenser:cr},Symbol.toStringTag,{value:"Module"}));var Fs=Object.getOwnPropertyDescriptor,Rs=(e,t,r,i)=>{for(var o=i>1?void 0:i?Fs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const X="reboot-model";let Ue=class{constructor(e,t,r){n(this,"id");n(this,"logger");this.id=e,this.logger=r.logger}async completeReboot(){await cr()}updateModel(){}async init(){this.logger.debug(`initializing reboot ${this.id}`)}async load(){this.logger.debug(`loading reboot ${this.id}`)}};Ue=Rs([s.kosModel(X)],Ue);const ur={registration:{[X]:{class:Ue,singleton:!1}},type:X,predicate:s.isKosModel(X),factory:s.Kos.Factory.create(X)};var Is=Object.defineProperty,As=Object.getOwnPropertyDescriptor,f=(e,t,r,i)=>{for(var o=i>1?void 0:i?As(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Is(t,r,o),o};const J="settings-model";let p=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"ncuiLanguageData");n(this,"resolveDelaysMs");n(this,"dateFormat");n(this,"timeFormat");n(this,"hidePlainWaterBev");n(this,"hideCarbWaterBev");n(this,"ncuiLanguage");n(this,"name");n(this,"activateAndRebootTime");this.id=e,this.logger=r.logger}updateModel(e){}async init(){this.logger.debug(`initializing settings ${this.id}`)}async getNcuiLanguageList(){this.ncuiLanguageData={status:200,data:{languages:[{name:"English",locale:"en"}]}}}async load(){this.logger.debug(`loading settings ${this.id}`),this.ncuiLanguageData={status:200,data:{languages:[{name:"English",locale:"en"}]}}}};f([s.kosConfigProperty({path:"system:app",attribute:"resolveDelaysMs"})],p.prototype,"resolveDelaysMs",2);f([s.kosConfigProperty({path:"system:app",attribute:"dateFormat"})],p.prototype,"dateFormat",2);f([s.kosConfigProperty({path:"system:app",attribute:"timeFormat"})],p.prototype,"timeFormat",2);f([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.hidePlainWaterBev"})],p.prototype,"hidePlainWaterBev",2);f([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.hideCarbWaterBev"})],p.prototype,"hideCarbWaterBev",2);f([s.kosConfigProperty({path:"app:kosdev.ddk:app",attribute:"ncui.ncuiLanguage"})],p.prototype,"ncuiLanguage",2);f([s.kosConfigProperty({path:"kos:device",attribute:"name"})],p.prototype,"name",2);f([s.kosConfigProperty({path:"kos:service:OTA",attribute:"activateAndRebootTime"})],p.prototype,"activateAndRebootTime",2);p=f([s.kosModel(J)],p);const dr={registration:{[J]:{class:p,singleton:!0}},type:J,predicate:s.isKosModel(J),factory:s.Kos.Singleton.create(J)},{URL:pr}=s.resolveServiceUrl("SETTINGS_SERVICE"),{getAll:gr}=s.ServiceFactory.build({basePath:`${pr}/api/settings`}),xs=s.KosLog.createLogger({name:"settings-service",group:"Services"}),Ks=async()=>(xs.debug("sending GET for settings"),await gr({})),Us=async()=>await gr({urlOverride:`${pr}api/app/kosdev.ddk/ncui/languages`}),js=Object.freeze(Object.defineProperty({__proto__:null,getNcuiLanguage:Us,getSettings:Ks},Symbol.toStringTag,{value:"Module"}));var Vs=Object.getOwnPropertyDescriptor,Hs=(e,t,r,i)=>{for(var o=i>1?void 0:i?Vs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=a(o)||o);return o};const Z="utilities-model";let je=class{constructor(e,t,r){n(this,"id");n(this,"name");n(this,"options");n(this,"roles");n(this,"columnId");n(this,"logger");this.id=e,this.logger=r.logger,this.name=t.name,this.options=t.options,this.roles=t==null?void 0:t.roles,this.columnId=t.columnId}updateModel(e){this.name=e.name,this.options=e.options,this.roles=e==null?void 0:e.roles}get titleKey(){return`utility.${this.id}.title`}get bodyKey(){return`utility.${this.id}.body`}async init(){this.logger.debug(`initializing utilities ${this.id}`)}async load(){this.logger.debug(`loading utilities ${this.id}`)}};je=Hs([s.kosModel(Z)],je);const Qe={registration:{[Z]:{class:je,singleton:!1}},type:Z,predicate:s.isKosModel(Z),factory:s.Kos.Factory.create(Z)},{URL:hr}=s.resolveServiceUrl("UTILITIES_SERVICE"),{getAll:Ns}=s.ServiceFactory.build({basePath:`${hr}/api/utilities`}),Ws=s.KosLog.createLogger({name:"utilities-service",group:"Services"}),fr=async()=>{Ws.debug("sending GET for utilities");const e=await Ns({urlOverride:`${hr}/api/kos/descriptor/system:app/kondra.ncui.utilities`});return e==null?void 0:e.data},zs=Object.freeze(Object.defineProperty({__proto__:null,getUtilities:fr},Symbol.toStringTag,{value:"Module"}));var Bs=Object.defineProperty,Ys=Object.getOwnPropertyDescriptor,mr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Ys(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Bs(t,r,o),o};const ee="utilities-container-model";let he=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"_models");this.id=e,this.logger=r.logger,this._models=new s.KosModelContainer({parentId:e,sortKey:"id",indexMap:{byColumn:"columnId"}})}get data(){return this._models.data}get models(){return this._models}get columns(){return this._models.getIndexKeys("byColumn").sort((e,t)=>e.localeCompare(t))}addModel(e){this._models.addModel(e)}removeModel(e){this._models.removeModel(e)}getModel(e){return this._models.getModel(e)}getUtilitiesByColumn(e){return this._models.getIndexByKey("byColumn",e)}async load(){this.logger.debug(`loading utilities-container container ${this.id}`);const e=await fr();e==null||e.forEach((t,r)=>{t.forEach(i=>{const o={...i,columnId:String(r)},l=Qe.factory(i.name)(o);this.addModel(l)})})}};mr([s.kosChild],he.prototype,"_models",2);he=mr([s.kosModel(ee)],he);const yr={registration:{[ee]:{class:he,singleton:!0},...Qe.registration},type:ee,predicate:s.isKosModel(ee),factory:s.Kos.Singleton.create(ee)},qs={...bt.registration,...Pe.registration,...ve.registration,...Ot.registration,...$e.registration,...Kt.registration,...jt.registration,...Vt.registration,...Bt.registration,...Jt.registration,...or.registration,...ir.registration,...ar.registration,...ur.registration,...dr.registration,...We.registration,...yr.registration};var Gs=Object.defineProperty,Qs=Object.getOwnPropertyDescriptor,vr=(e,t,r,i)=>{for(var o=i>1?void 0:i?Qs(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&Gs(t,r,o),o};const br="trouble-action-model";let fe=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"troubleContainer");n(this,"disposer");n(this,"state");n(this,"troubleActionData");this.id=e,this.logger=r.logger,this.state=s.ObservableData(),this.troubleActionData=t.definitions.reduce((i,o)=>(i[o.troubleType]=o,i),{})}get activeTrouble(){const e=Object.keys(this.troubleActionData);if(e.length>0){const t=e[0],r=this.troubleContainer.troubles.getIndexByKey("byType",t);return r.length>0?r[0]:void 0}}get activeTroubleType(){var e;return(e=this.activeTrouble)==null?void 0:e.type}async init(){this.logger.debug(`initializing trouble-action ${this.id}`),this.disposer=s.kosAutoEffect(()=>{const e=this.troubleContainer.troubles.data.reduce((t,r)=>{const i=r.type;if(this.troubleActionData[i]){const o=this.troubleActionData[i].stateKey??i,l=this.troubleActionData[i].stateValue??i;t[o]=l}return t},{});this.state.setValues(e),Object.keys(this.troubleActionData).forEach(t=>{if(this.troubleContainer.troubles.getIndexByKey("byType",t).length===0){const r=this.troubleActionData[t].stateKey??t;this.state[r]=void 0}})})}unload(){var e;(e=this.disposer)==null||e.call(this)}async load(){this.logger.debug(`loading trouble-action ${this.id}`)}};vr([s.kosDependency({modelType:s.TroubleContainer.type})],fe.prototype,"troubleContainer",2);fe=vr([s.kosModel(br)],fe);const Xs=new s.SingletonKosModelRegistrationFactory({class:fe,type:br}),{URL:_r}=s.resolveServiceUrl("START_SERVICE"),{getOne:Js}=s.ServiceFactory.build({basePath:`${_r}/api/start`}),Zs=s.KosLog.createLogger({name:"start-service",group:"Services"}),Pr=async()=>(Zs.debug("navigating to NCUI"),await Js({urlOverride:`${_r}/api/app/kosdev.ddk/ncui/open`})),ei=Object.freeze(Object.defineProperty({__proto__:null,navigateToNCui:Pr},Symbol.toStringTag,{value:"Module"}));var ti=Object.defineProperty,ri=Object.getOwnPropertyDescriptor,Tr=(e,t,r,i)=>{for(var o=i>1?void 0:i?ri(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ti(t,r,o),o};const Mr="start-model";let me=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"troubles");this.id=e,this.logger=r.logger}get firmwareFailed(){return this.troubles.troubles.getIndexByKey("byType","FirmwareUpdateFailedTrouble").length>0}get firmwareInProgress(){return this.troubles.troubles.getIndexByKey("byType","FirmwareUpdateInProgressTrouble").length>0}async navigate(){await Pr()}async init(){this.logger.debug(`initializing start ${this.id}`)}async load(){this.logger.debug(`loading start ${this.id}`)}};Tr([s.kosDependency({modelType:s.TroubleContainer.type})],me.prototype,"troubles",2);me=Tr([s.kosModel(Mr)],me);const oi=new s.SingletonKosModelRegistrationFactory({class:me,type:Mr}),{URL:ie}=s.resolveServiceUrl("SPM-PUMP_SERVICE"),{postModel:Ee}=s.ServiceFactory.build({basePath:`${ie}/api/spm-pump`}),d=s.KosLog.createLogger({name:"spm-pump-service",group:"Services"}),$r=async(e,t)=>{d.debug(`performPreCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`);try{const r=await Ee({model:{},urlOverride:`${ie}/api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`,tracker:t});return d.debug("performPreCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){d.error(`performPreCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/preCalibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Sr=async(e,t)=>{d.debug(`performCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/calibrate`);try{const r=await Ee({model:{},urlOverride:`${ie}/api/ext/freestyle/microCalibration/pour/${e}/calibrate`,tracker:t});return d.debug("performCalibrate - response:",r),r!=null&&r.data&&s.FutureManager.initiateFuture(r.data),r==null?void 0:r.data}catch(r){d.error(`performCalibrate - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/calibrate`,r);const i={id:t||"",endState:s.FutureEndState.Fail,tracker:t,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(i),i}},Cr=async(e,t,r,i)=>{d.debug(`performVerify - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/verify`);try{const o=await Ee({model:{...r,measuredCalibrationVolume:t},urlOverride:`${ie}/api/ext/freestyle/microCalibration/pour/${e}/verify`,tracker:i});return d.debug("performVerify - response:",o),o!=null&&o.data&&s.FutureManager.initiateFuture(o.data),o==null?void 0:o.data}catch(o){d.error(`performVerify - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/verify`,o);const l={id:i||"",endState:s.FutureEndState.Fail,tracker:i,reason:"Failed to resolve trouble"};return s.FutureManager.initiateFuture(l),l}},Or=async(e,t,r,i)=>{var o,l,a,g,_;d.debug(`performComplete - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/complete`);try{const c=await Ee({model:{...i,measuredCalibrationVolume:t,measuredVerificationVolume:r},urlOverride:`${ie}/api/ext/freestyle/microCalibration/pour/${e}/complete`});return d.debug("performComplete - response:",c),((c==null?void 0:c.status)===200||(c==null?void 0:c.status)===499)&&((o=c.data)!=null&&o.error)?[c.data.error||"unknownError",c.data]:[void 0,c==null?void 0:c.data]}catch(c){if(d.error(`performComplete - sending POST request to /api/ext/freestyle/microCalibration/pour/${e}/complete`,c),c instanceof s.FetchError){const Xe=((a=(l=c.payload)==null?void 0:l.data)==null?void 0:a.error)||((g=c.payload)==null?void 0:g.error)||"unknownError";return[Xe,((_=c.payload)==null?void 0:_.data)||{error:Xe}]}}return["unknownError",{error:"unknownError"}]},si=Object.freeze(Object.defineProperty({__proto__:null,performCalibrate:Sr,performComplete:Or,performPreCalibrate:$r,performVerify:Cr},Symbol.toStringTag,{value:"Module"}));var ii=Object.defineProperty,ni=Object.getOwnPropertyDescriptor,ke=(e,t,r,i)=>{for(var o=i>1?void 0:i?ni(t,r):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(t,r,o):a(o))||o);return i&&o&&ii(t,r,o),o};const Er="spm-pump-model";let E=class{constructor(e,t,r){n(this,"id");n(this,"logger");n(this,"pump");n(this,"futureHandler");this.id=e,this.logger=r.logger,this.pump=t.companionParent,this.futureHandler=new s.FutureHandler(this)}get name(){return this.pump.name}get canPour(){return this.pump.canPour}get isPouring(){return this.pump.isPouring}async cancelPour(){return this.pump.cancelPour()}performIntent(e){return this.pump.performIntent(e)}get future(){return this.futureHandler.future}async performPreCalibrate(e){return $r(this.pump.path,e)}async performCalibrate(e){return Sr(this.pump.path,e)}async performVerify(e,t,r){return Cr(this.pump.path,e,t,r)}async performComplete(e,t,r){return Or(this.pump.path,e,t,r)}async init(){this.logger.debug(`initializing spm-pump ${this.id}`)}async load(){this.logger.debug(`loading spm-pump ${this.id}`)}};ke([s.kosFuture()],E.prototype,"performPreCalibrate",1);ke([s.kosFuture()],E.prototype,"performCalibrate",1);ke([s.kosFuture()],E.prototype,"performVerify",1);E=ke([s.kosModel(Er)],E);const ai=new s.KosModelRegistrationFactory({class:E,type:Er});exports.AgitationControl=to;exports.Animation=bt;exports.AnimationServices=lo;exports.Application=Pe;exports.Auth=ve;exports.AuthServices=Fr;exports.CarbWater=Ot;exports.CopyLogs=To;exports.CopyLogsServices=bo;exports.DDKModels=qs;exports.DashboardOperations=$e;exports.DashboardOperationsServices=Mo;exports.Dispenser=Kt;exports.DispenserInfo=jt;exports.DispenserInfoServices=Uo;exports.DispenserServices=Do;exports.Door=dt;exports.EXTENSION_POINT_DASHBOARD_KEY_FACTORY=S;exports.Enrollment=Vt;exports.EnrollmentServices=Bo;exports.FcmPump=Be;exports.FcmPumpServices=co;exports.IngredientSummary=Bt;exports.LfcvPump=os;exports.LfcvPumpServices=ls;exports.Lockout=hs;exports.LockoutServices=us;exports.MACRO_KEYS=Qo;exports.MacroAssignment=Jt;exports.NetworkTest=qe;exports.NetworkTestContainer=or;exports.NetworkTestServices=Ms;exports.NutritiveSweetener=ir;exports.PlainWater=ar;exports.Reboot=ur;exports.RebootServices=Ds;exports.Settings=dr;exports.SettingsServices=js;exports.SetupStep=Ne;exports.SetupStepContainer=We;exports.SetupStepServices=Vr;exports.SpmPump=ai;exports.SpmPumpServices=si;exports.Start=oi;exports.StartServices=ei;exports.TROUBLE_TYPE_PRIME=st;exports.TROUBLE_TYPE_PURGE=Le;exports.TroubleActionManager=Xs;exports.Utilities=Qe;exports.UtilitiesContainer=yr;exports.UtilitiesServices=zs;exports.calculateTimeDifference=zt;exports.executeDashboardKeyFactory=Nt;exports.isMacroGroup=qo;exports.isMicroGroup=Yo;exports.macroHolderMap=Go;exports.registerDashboardKeyFactory=Ht;exports.toSeconds=Jo;exports.toTimeComponents=Xo;exports.troubleVisibilityFilter=ze;