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