@kosdev-code/kos-dispense-sdk 0.1.0-dev.5880 → 0.1.0-next.1000

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.
Files changed (312) hide show
  1. package/.kos.json +129 -0
  2. package/{dispense-registration-manager-ukk4OBeX.cjs → dispense-registration-manager-CfWgJqfq.cjs} +807 -445
  3. package/dispense-registration-manager-CfWgJqfq.cjs.map +1 -0
  4. package/{dispense-registration-manager-C4XZ_c3x.js → dispense-registration-manager-DtN0T_JG.js} +846 -484
  5. package/dispense-registration-manager-DtN0T_JG.js.map +1 -0
  6. package/{extension-utils-CMVLCSA8.cjs → extension-utils-BWYG2dYG.cjs} +52 -194
  7. package/extension-utils-BWYG2dYG.cjs.map +1 -0
  8. package/{extension-utils-FxS68Xu9.js → extension-utils-BoXtjU5_.js} +58 -200
  9. package/extension-utils-BoXtjU5_.js.map +1 -0
  10. package/extensions/control-pour-extension.d.ts +8 -9
  11. package/extensions/control-pour-extension.d.ts.map +1 -1
  12. package/extensions/index.d.ts.map +1 -1
  13. package/index.cjs +31 -11
  14. package/index.cjs.map +1 -1
  15. package/index.d.ts.map +1 -1
  16. package/index.js +118 -98
  17. package/index.js.map +1 -1
  18. package/models/constants/constants.d.ts +14 -178
  19. package/models/constants/constants.d.ts.map +1 -1
  20. package/models/constants/index.d.ts.map +1 -1
  21. package/models/index.d.ts.map +1 -1
  22. package/models/models/assembly/assembly-model.d.ts +12 -5
  23. package/models/models/assembly/assembly-model.d.ts.map +1 -1
  24. package/models/models/assembly/assembly-registration.d.ts +12 -71
  25. package/models/models/assembly/assembly-registration.d.ts.map +1 -1
  26. package/models/models/assembly/board-utils.d.ts +1 -2
  27. package/models/models/assembly/board-utils.d.ts.map +1 -1
  28. package/models/models/assembly/holder-utils.d.ts +1 -2
  29. package/models/models/assembly/holder-utils.d.ts.map +1 -1
  30. package/models/models/assembly/index.d.ts.map +1 -1
  31. package/models/models/assembly/nozzle-utils.d.ts +1 -2
  32. package/models/models/assembly/nozzle-utils.d.ts.map +1 -1
  33. package/models/models/assembly/pump-utils.d.ts +2 -3
  34. package/models/models/assembly/pump-utils.d.ts.map +1 -1
  35. package/models/models/assembly/services/assembly-services.d.ts +0 -1
  36. package/models/models/assembly/services/assembly-services.d.ts.map +1 -1
  37. package/models/models/assembly/services/index.d.ts.map +1 -1
  38. package/models/models/assembly/types/index.d.ts +8 -3
  39. package/models/models/availability/availability-model.d.ts +13 -78
  40. package/models/models/availability/availability-model.d.ts.map +1 -1
  41. package/models/models/availability/index.d.ts.map +1 -1
  42. package/models/models/availability/types/index.d.ts +7 -13
  43. package/models/models/board/board-container-model.d.ts +10 -3
  44. package/models/models/board/board-container-model.d.ts.map +1 -1
  45. package/models/models/board/board-container-registration.d.ts +13 -77
  46. package/models/models/board/board-container-registration.d.ts.map +1 -1
  47. package/models/models/board/board-model.d.ts +1 -2
  48. package/models/models/board/board-model.d.ts.map +1 -1
  49. package/models/models/board/board-registration.d.ts +12 -74
  50. package/models/models/board/board-registration.d.ts.map +1 -1
  51. package/models/models/board/index.d.ts.map +1 -1
  52. package/models/models/board/types/index.d.ts +12 -2
  53. package/models/models/board/types/services.d.ts.map +1 -1
  54. package/models/models/board/utils/board-trouble-data-mapper.d.ts +1 -2
  55. package/models/models/board/utils/board-trouble-data-mapper.d.ts.map +1 -1
  56. package/models/models/board/utils/board-trouble-resolver.d.ts +0 -1
  57. package/models/models/board/utils/board-trouble-resolver.d.ts.map +1 -1
  58. package/models/models/cui-kit-state/cui-kit-state-model.d.ts +133 -0
  59. package/models/models/cui-kit-state/cui-kit-state-model.d.ts.map +1 -0
  60. package/models/models/cui-kit-state/index.d.ts +4 -0
  61. package/models/models/cui-kit-state/index.d.ts.map +1 -0
  62. package/models/models/cui-kit-state/types/index.d.ts +82 -0
  63. package/models/models/device-assembly/device-assembly-model.d.ts +6 -3
  64. package/models/models/device-assembly/device-assembly-model.d.ts.map +1 -1
  65. package/models/models/device-assembly/device-assembly-registration.d.ts +14 -79
  66. package/models/models/device-assembly/device-assembly-registration.d.ts.map +1 -1
  67. package/models/models/device-assembly/index.d.ts.map +1 -1
  68. package/models/models/device-assembly/types/index.d.ts +4 -0
  69. package/models/models/generic-pour/generic-pour-model.d.ts +19 -4
  70. package/models/models/generic-pour/generic-pour-model.d.ts.map +1 -1
  71. package/models/models/generic-pour/generic-pour-registration.d.ts +13 -75
  72. package/models/models/generic-pour/generic-pour-registration.d.ts.map +1 -1
  73. package/models/models/generic-pour/index.d.ts.map +1 -1
  74. package/models/models/generic-pour/services/generic-pour-services.d.ts.map +1 -1
  75. package/models/models/generic-pour/services/index.d.ts.map +1 -1
  76. package/models/models/generic-pour/types/index.d.ts +4 -0
  77. package/models/models/holder/holder-model.d.ts +16 -75
  78. package/models/models/holder/holder-model.d.ts.map +1 -1
  79. package/models/models/holder/index.d.ts.map +1 -1
  80. package/models/models/holder/services/assignment-services.d.ts.map +1 -1
  81. package/models/models/holder/services/holder-services.d.ts.map +1 -1
  82. package/models/models/holder/services/index.d.ts.map +1 -1
  83. package/models/models/holder/types/index.d.ts +11 -7
  84. package/models/models/holder/utils/holder-utils.d.ts +0 -1
  85. package/models/models/holder/utils/holder-utils.d.ts.map +1 -1
  86. package/models/models/holder-container/holder-container-model.d.ts +12 -70
  87. package/models/models/holder-container/holder-container-model.d.ts.map +1 -1
  88. package/models/models/holder-container/index.d.ts.map +1 -1
  89. package/models/models/holder-container/types/index.d.ts +16 -5
  90. package/models/models/index.d.ts +1 -0
  91. package/models/models/index.d.ts.map +1 -1
  92. package/models/models/ingredient/index.d.ts.map +1 -1
  93. package/models/models/ingredient/ingredient-model.d.ts +12 -76
  94. package/models/models/ingredient/ingredient-model.d.ts.map +1 -1
  95. package/models/models/ingredient/services/index.d.ts.map +1 -1
  96. package/models/models/ingredient/services/ingredient-services.d.ts.map +1 -1
  97. package/models/models/ingredient/types/index.d.ts +7 -13
  98. package/models/models/ingredient-container/index.d.ts.map +1 -1
  99. package/models/models/ingredient-container/ingredient-container-model.d.ts +12 -70
  100. package/models/models/ingredient-container/ingredient-container-model.d.ts.map +1 -1
  101. package/models/models/ingredient-container/types/index.d.ts +7 -3
  102. package/models/models/nozzle/index.d.ts.map +1 -1
  103. package/models/models/nozzle/nozzle-model.d.ts +20 -81
  104. package/models/models/nozzle/nozzle-model.d.ts.map +1 -1
  105. package/models/models/nozzle/services/index.d.ts.map +1 -1
  106. package/models/models/nozzle/services/nozzle-services.d.ts +11 -65
  107. package/models/models/nozzle/services/nozzle-services.d.ts.map +1 -1
  108. package/models/models/nozzle/types/index.d.ts +7 -3
  109. package/models/models/pump/index.d.ts.map +1 -1
  110. package/models/models/pump/pump-model.d.ts +12 -81
  111. package/models/models/pump/pump-model.d.ts.map +1 -1
  112. package/models/models/pump/services/index.d.ts.map +1 -1
  113. package/models/models/pump/services/pump-services.d.ts +3 -5
  114. package/models/models/pump/services/pump-services.d.ts.map +1 -1
  115. package/models/models/pump/types/index.d.ts +7 -3
  116. package/models/models/pump/utils/pump-trouble-resolver.d.ts +0 -1
  117. package/models/models/pump/utils/pump-trouble-resolver.d.ts.map +1 -1
  118. package/models/models/pump-container/index.d.ts.map +1 -1
  119. package/models/models/pump-container/pump-container-model.d.ts +16 -70
  120. package/models/models/pump-container/pump-container-model.d.ts.map +1 -1
  121. package/models/models/pump-container/types/index.d.ts +7 -3
  122. package/models/models/types/assembly.d.ts.map +1 -1
  123. package/models/models/types/index.d.ts.map +1 -1
  124. package/models/models/types/intent.d.ts +11 -79
  125. package/models/models/types/intent.d.ts.map +1 -1
  126. package/models/models/types/pouring.d.ts.map +1 -1
  127. package/models/utils/dispense-registration-manager.d.ts +34 -10
  128. package/models/utils/dispense-registration-manager.d.ts.map +1 -1
  129. package/models/utils/extension-utils.d.ts +66 -173
  130. package/models/utils/extension-utils.d.ts.map +1 -1
  131. package/models/utils/openapi-index.d.ts +1 -1
  132. package/models/utils/openapi-index.d.ts.map +1 -1
  133. package/models/utils/pour-context.d.ts +8 -0
  134. package/models/utils/pour-context.d.ts.map +1 -0
  135. package/models/utils/registration.d.ts +0 -1
  136. package/models/utils/registration.d.ts.map +1 -1
  137. package/models/utils/service.d.ts +34 -35
  138. package/models/utils/service.d.ts.map +1 -1
  139. package/models/utils/services/dispense/1.6.5/service.d.ts +34 -35
  140. package/models/utils/services/dispense/1.6.5/service.d.ts.map +1 -1
  141. package/models/utils/services/dispense/1.8.1/service.d.ts +34 -35
  142. package/models/utils/services/dispense/1.8.1/service.d.ts.map +1 -1
  143. package/models/utils/services/dispense/daily/openapi.d.ts +1941 -1812
  144. package/models/utils/services/dispense/daily/service.d.ts +127 -37
  145. package/models/utils/services/dispense/daily/service.d.ts.map +1 -1
  146. package/models/utils/services-index.d.ts +1 -1
  147. package/models/utils/services-index.d.ts.map +1 -1
  148. package/models.cjs +4 -5
  149. package/models.cjs.map +1 -1
  150. package/models.d.ts +1 -0
  151. package/models.js +29 -30
  152. package/models.js.map +1 -1
  153. package/package.json +11 -12
  154. package/{pump-provider-BAQXIUuP.cjs → pump-provider-B4WR3LiY.cjs} +480 -544
  155. package/pump-provider-B4WR3LiY.cjs.map +1 -0
  156. package/{pump-provider-9rUgev7q.js → pump-provider-CPUsLke5.js} +541 -605
  157. package/pump-provider-CPUsLke5.js.map +1 -0
  158. package/ui/contexts/assembly/assembly-provider.d.ts +9 -2
  159. package/ui/contexts/assembly/assembly-provider.d.ts.map +1 -1
  160. package/ui/contexts/assembly/index.d.ts.map +1 -1
  161. package/ui/contexts/availability/availability-provider.d.ts +9 -2
  162. package/ui/contexts/availability/availability-provider.d.ts.map +1 -1
  163. package/ui/contexts/availability/index.d.ts.map +1 -1
  164. package/ui/contexts/board/board-provider.d.ts +9 -2
  165. package/ui/contexts/board/board-provider.d.ts.map +1 -1
  166. package/ui/contexts/board/index.d.ts.map +1 -1
  167. package/ui/contexts/board-container/board-container-provider.d.ts +9 -2
  168. package/ui/contexts/board-container/board-container-provider.d.ts.map +1 -1
  169. package/ui/contexts/board-container/index.d.ts.map +1 -1
  170. package/ui/contexts/cui-kit/cui-kit.d.ts +17 -3
  171. package/ui/contexts/cui-kit/cui-kit.d.ts.map +1 -1
  172. package/ui/contexts/cui-kit/index.d.ts.map +1 -1
  173. package/ui/contexts/device-assembly/device-assembly-provider.d.ts +9 -2
  174. package/ui/contexts/device-assembly/device-assembly-provider.d.ts.map +1 -1
  175. package/ui/contexts/device-assembly/index.d.ts.map +1 -1
  176. package/ui/contexts/holder/holder-provider.d.ts +9 -2
  177. package/ui/contexts/holder/holder-provider.d.ts.map +1 -1
  178. package/ui/contexts/holder/index.d.ts.map +1 -1
  179. package/ui/contexts/holder-container/holder-container-provider.d.ts +9 -2
  180. package/ui/contexts/holder-container/holder-container-provider.d.ts.map +1 -1
  181. package/ui/contexts/holder-container/index.d.ts.map +1 -1
  182. package/ui/contexts/index.d.ts.map +1 -1
  183. package/ui/contexts/ingredient/index.d.ts.map +1 -1
  184. package/ui/contexts/ingredient/ingredient-provider.d.ts +9 -2
  185. package/ui/contexts/ingredient/ingredient-provider.d.ts.map +1 -1
  186. package/ui/contexts/ingredient-container/index.d.ts.map +1 -1
  187. package/ui/contexts/ingredient-container/ingredient-container-provider.d.ts +9 -2
  188. package/ui/contexts/ingredient-container/ingredient-container-provider.d.ts.map +1 -1
  189. package/ui/contexts/nozzle/index.d.ts.map +1 -1
  190. package/ui/contexts/nozzle/nozzle-provider.d.ts +9 -2
  191. package/ui/contexts/nozzle/nozzle-provider.d.ts.map +1 -1
  192. package/ui/contexts/pump/index.d.ts.map +1 -1
  193. package/ui/contexts/pump/pump-provider.d.ts +9 -2
  194. package/ui/contexts/pump/pump-provider.d.ts.map +1 -1
  195. package/ui/hooks/assembly/index.d.ts.map +1 -1
  196. package/ui/hooks/assembly/use-assembly.d.ts +5 -2
  197. package/ui/hooks/assembly/use-assembly.d.ts.map +1 -1
  198. package/ui/hooks/assembly/with-assembly.d.ts +4 -1
  199. package/ui/hooks/assembly/with-assembly.d.ts.map +1 -1
  200. package/ui/hooks/availability/index.d.ts.map +1 -1
  201. package/ui/hooks/availability/use-availability.d.ts +5 -2
  202. package/ui/hooks/availability/use-availability.d.ts.map +1 -1
  203. package/ui/hooks/availability/with-availability.d.ts +0 -1
  204. package/ui/hooks/availability/with-availability.d.ts.map +1 -1
  205. package/ui/hooks/board/index.d.ts.map +1 -1
  206. package/ui/hooks/board/use-board.d.ts +5 -2
  207. package/ui/hooks/board/use-board.d.ts.map +1 -1
  208. package/ui/hooks/board/with-board.d.ts +4 -1
  209. package/ui/hooks/board/with-board.d.ts.map +1 -1
  210. package/ui/hooks/board-container/index.d.ts.map +1 -1
  211. package/ui/hooks/board-container/use-board-container.d.ts +5 -2
  212. package/ui/hooks/board-container/use-board-container.d.ts.map +1 -1
  213. package/ui/hooks/board-container/with-board-container.d.ts +4 -1
  214. package/ui/hooks/board-container/with-board-container.d.ts.map +1 -1
  215. package/ui/hooks/cui-kit/dispense-topics.d.ts +0 -1
  216. package/ui/hooks/cui-kit/dispense-topics.d.ts.map +1 -1
  217. package/ui/hooks/cui-kit/index.d.ts.map +1 -1
  218. package/ui/hooks/cui-kit/use-ambient-attract-timers.d.ts +0 -1
  219. package/ui/hooks/cui-kit/use-ambient-attract-timers.d.ts.map +1 -1
  220. package/ui/hooks/cui-kit/use-beverages.d.ts +1 -2
  221. package/ui/hooks/cui-kit/use-beverages.d.ts.map +1 -1
  222. package/ui/hooks/cui-kit/use-brands.d.ts +1 -2
  223. package/ui/hooks/cui-kit/use-brands.d.ts.map +1 -1
  224. package/ui/hooks/cui-kit/use-cui-kit.d.ts +51 -7
  225. package/ui/hooks/cui-kit/use-cui-kit.d.ts.map +1 -1
  226. package/ui/hooks/cui-kit/use-default-cui-kit-lifecycle.d.ts +16 -44
  227. package/ui/hooks/cui-kit/use-default-cui-kit-lifecycle.d.ts.map +1 -1
  228. package/ui/hooks/cui-kit/use-dispense-lifecycle.d.ts +0 -1
  229. package/ui/hooks/cui-kit/use-dispense-lifecycle.d.ts.map +1 -1
  230. package/ui/hooks/cui-kit/use-dispense-timers.d.ts +0 -1
  231. package/ui/hooks/cui-kit/use-dispense-timers.d.ts.map +1 -1
  232. package/ui/hooks/cui-kit/use-flavors.d.ts +1 -2
  233. package/ui/hooks/cui-kit/use-flavors.d.ts.map +1 -1
  234. package/ui/hooks/device-assembly/index.d.ts.map +1 -1
  235. package/ui/hooks/device-assembly/use-device-assembly.d.ts +5 -2
  236. package/ui/hooks/device-assembly/use-device-assembly.d.ts.map +1 -1
  237. package/ui/hooks/device-assembly/with-device-assembly.d.ts +4 -1
  238. package/ui/hooks/device-assembly/with-device-assembly.d.ts.map +1 -1
  239. package/ui/hooks/generic-pour/index.d.ts.map +1 -1
  240. package/ui/hooks/generic-pour/use-generic-pour.d.ts +6 -3
  241. package/ui/hooks/generic-pour/use-generic-pour.d.ts.map +1 -1
  242. package/ui/hooks/generic-pour/with-generic-pour.d.ts +5 -2
  243. package/ui/hooks/generic-pour/with-generic-pour.d.ts.map +1 -1
  244. package/ui/hooks/holder/index.d.ts.map +1 -1
  245. package/ui/hooks/holder/use-holder.d.ts +5 -2
  246. package/ui/hooks/holder/use-holder.d.ts.map +1 -1
  247. package/ui/hooks/holder/with-holder.d.ts +4 -1
  248. package/ui/hooks/holder/with-holder.d.ts.map +1 -1
  249. package/ui/hooks/holder-container/index.d.ts.map +1 -1
  250. package/ui/hooks/holder-container/use-holder-container.d.ts +7 -4
  251. package/ui/hooks/holder-container/use-holder-container.d.ts.map +1 -1
  252. package/ui/hooks/holder-container/with-holder-container.d.ts +4 -1
  253. package/ui/hooks/holder-container/with-holder-container.d.ts.map +1 -1
  254. package/ui/hooks/index.d.ts.map +1 -1
  255. package/ui/hooks/ingredient/index.d.ts.map +1 -1
  256. package/ui/hooks/ingredient/use-ingredient-pour.d.ts +16 -22
  257. package/ui/hooks/ingredient/use-ingredient-pour.d.ts.map +1 -1
  258. package/ui/hooks/ingredient/use-ingredient.d.ts +5 -2
  259. package/ui/hooks/ingredient/use-ingredient.d.ts.map +1 -1
  260. package/ui/hooks/ingredient/with-ingredient.d.ts +4 -1
  261. package/ui/hooks/ingredient/with-ingredient.d.ts.map +1 -1
  262. package/ui/hooks/ingredient-container/index.d.ts.map +1 -1
  263. package/ui/hooks/ingredient-container/use-ingredient-container.d.ts +5 -2
  264. package/ui/hooks/ingredient-container/use-ingredient-container.d.ts.map +1 -1
  265. package/ui/hooks/ingredient-container/with-ingredient-container.d.ts +4 -1
  266. package/ui/hooks/ingredient-container/with-ingredient-container.d.ts.map +1 -1
  267. package/ui/hooks/nozzle/index.d.ts.map +1 -1
  268. package/ui/hooks/nozzle/use-dispense-kit.d.ts +0 -1
  269. package/ui/hooks/nozzle/use-dispense-kit.d.ts.map +1 -1
  270. package/ui/hooks/nozzle/use-nozzle.d.ts +5 -2
  271. package/ui/hooks/nozzle/use-nozzle.d.ts.map +1 -1
  272. package/ui/hooks/nozzle/with-nozzle.d.ts +4 -1
  273. package/ui/hooks/nozzle/with-nozzle.d.ts.map +1 -1
  274. package/ui/hooks/nozzle-pour/index.d.ts.map +1 -1
  275. package/ui/hooks/nozzle-pour/use-nozzle-pour.d.ts +16 -22
  276. package/ui/hooks/nozzle-pour/use-nozzle-pour.d.ts.map +1 -1
  277. package/ui/hooks/pour/index.d.ts.map +1 -1
  278. package/ui/hooks/pour/use-pour.d.ts +11 -23
  279. package/ui/hooks/pour/use-pour.d.ts.map +1 -1
  280. package/ui/hooks/pump/index.d.ts.map +1 -1
  281. package/ui/hooks/pump/use-pump.d.ts +1 -2
  282. package/ui/hooks/pump/use-pump.d.ts.map +1 -1
  283. package/ui/hooks/pump/with-pump.d.ts +0 -1
  284. package/ui/hooks/pump/with-pump.d.ts.map +1 -1
  285. package/ui/hooks/utils/pour-strategy/hold-to-pour-intent-strategy.d.ts +5 -2
  286. package/ui/hooks/utils/pour-strategy/hold-to-pour-intent-strategy.d.ts.map +1 -1
  287. package/ui/hooks/utils/pour-strategy/hold-to-pour-strategy.d.ts +4 -1
  288. package/ui/hooks/utils/pour-strategy/hold-to-pour-strategy.d.ts.map +1 -1
  289. package/ui/hooks/utils/pour-strategy/index.d.ts.map +1 -1
  290. package/ui/hooks/utils/pour-strategy/pour-strategy.d.ts +11 -2
  291. package/ui/hooks/utils/pour-strategy/pour-strategy.d.ts.map +1 -1
  292. package/ui/hooks/utils/pour-strategy/tap-or-hold-to-pour-intent-strategy.d.ts +5 -2
  293. package/ui/hooks/utils/pour-strategy/tap-or-hold-to-pour-intent-strategy.d.ts.map +1 -1
  294. package/ui/hooks/utils/pour-strategy/tap-to-pour-intent-strategy.d.ts +5 -2
  295. package/ui/hooks/utils/pour-strategy/tap-to-pour-intent-strategy.d.ts.map +1 -1
  296. package/ui/hooks/utils/pour-strategy/tap-to-pour-strategy.d.ts +4 -1
  297. package/ui/hooks/utils/pour-strategy/tap-to-pour-strategy.d.ts.map +1 -1
  298. package/ui/index.d.ts.map +1 -1
  299. package/ui/utils/pour-context.d.ts +1 -7
  300. package/ui/utils/pour-context.d.ts.map +1 -1
  301. package/ui.cjs +3 -7
  302. package/ui.cjs.map +1 -1
  303. package/ui.d.ts +1 -0
  304. package/ui.js +64 -68
  305. package/ui.js.map +1 -1
  306. package/dispense-registration-manager-C4XZ_c3x.js.map +0 -1
  307. package/dispense-registration-manager-ukk4OBeX.cjs.map +0 -1
  308. package/extension-utils-CMVLCSA8.cjs.map +0 -1
  309. package/extension-utils-FxS68Xu9.js.map +0 -1
  310. package/kos-models.json +0 -180
  311. package/pump-provider-9rUgev7q.js.map +0 -1
  312. package/pump-provider-BAQXIUuP.cjs.map +0 -1
@@ -1,11 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
8
- const dispenseRegistrationManager = require("./dispense-registration-manager-ukk4OBeX.cjs");
2
+ const dispenseRegistrationManager = require("./dispense-registration-manager-CfWgJqfq.cjs");
9
3
  const kosUiSdk = require("@kosdev-code/kos-ui-sdk");
10
4
  const React = require("react");
11
5
  const index$5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -48,18 +42,17 @@ const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
48
42
  pourOnTarget: dispenseRegistrationManager.pourOnTarget
49
43
  }, Symbol.toStringTag, { value: "Module" }));
50
44
  const getFuelGaugeValue = (holder) => {
51
- var _a, _b, _c, _d;
52
45
  const [maxVolume, setMaxVolume] = React.useState(
53
- ((_a = holder == null ? void 0 : holder.slice) == null ? void 0 : _a.maxVolMl) ?? 0
46
+ holder?.slice?.maxVolMl ?? 0
54
47
  );
55
48
  const [remainingVolume, setRemainingVolume] = React.useState(
56
- ((_b = holder == null ? void 0 : holder.slice) == null ? void 0 : _b.currentVolMl) ?? 0
49
+ holder?.slice?.currentVolMl ?? 0
57
50
  );
58
51
  const [hasMaxVolume, setHasMaxVolume] = React.useState(
59
- ((_c = holder == null ? void 0 : holder.slice) == null ? void 0 : _c.maxVolMl) !== void 0
52
+ holder?.slice?.maxVolMl !== void 0
60
53
  );
61
54
  const [hasRemainingVolume, setHasRemainingVolume] = React.useState(
62
- ((_d = holder == null ? void 0 : holder.slice) == null ? void 0 : _d.currentVolMl) !== void 0
55
+ holder?.slice?.currentVolMl !== void 0
63
56
  );
64
57
  const [fillPercent, setFillPercent] = React.useState(
65
58
  remainingVolume <= 0 ? 0 : Math.floor((remainingVolume || 1) / (maxVolume || 1) * 100)
@@ -69,11 +62,10 @@ const getFuelGaugeValue = (holder) => {
69
62
  );
70
63
  React.useEffect(() => {
71
64
  const disposer = kosUiSdk.kosAutoEffect(() => {
72
- var _a2, _b2, _c2, _d2;
73
- setMaxVolume(((_a2 = holder == null ? void 0 : holder.slice) == null ? void 0 : _a2.maxVolMl) ?? 0);
74
- setRemainingVolume(((_b2 = holder == null ? void 0 : holder.slice) == null ? void 0 : _b2.currentVolMl) ?? 0);
75
- setHasMaxVolume(((_c2 = holder == null ? void 0 : holder.slice) == null ? void 0 : _c2.maxVolMl) !== void 0);
76
- setHasRemainingVolume(((_d2 = holder == null ? void 0 : holder.slice) == null ? void 0 : _d2.currentVolMl) !== void 0);
65
+ setMaxVolume(holder?.slice?.maxVolMl ?? 0);
66
+ setRemainingVolume(holder?.slice?.currentVolMl ?? 0);
67
+ setHasMaxVolume(holder?.slice?.maxVolMl !== void 0);
68
+ setHasRemainingVolume(holder?.slice?.currentVolMl !== void 0);
77
69
  setFillPercent(
78
70
  remainingVolume <= 0 ? 0 : Math.floor((remainingVolume || 1) / (maxVolume || 1) * 100)
79
71
  );
@@ -86,59 +78,20 @@ const getFuelGaugeValue = (holder) => {
86
78
  return { maxVolume, remainingVolume, fillPercent, hasFuelGuage };
87
79
  };
88
80
  class DispenseExtensionManager {
89
- constructor() {
90
- __publicField(this, "core", new kosUiSdk.CoreExtensionManager());
91
- }
81
+ core = new kosUiSdk.CoreExtensionManager();
92
82
  /**
93
- * Maps data into the {@link IngredientModel}
83
+ * Registers a data mapper for the {@link IngredientModel}.
94
84
  *
95
- * It is common for the ingredient data provided by the ingredient service to be augmented with additional properties that are
96
- * not provided by the base KOS Ingredient model. The {@link IngredientMapper} extension point allows for the data to be mapped
97
- * into the {@link IngredientModel} and the {@link IngredientModel.data} property to be augmented with additional properties.
85
+ * Ingredient service data often needs properties the base model does not carry. The mapper receives each
86
+ * {@link IngredientResponse} and the data returned by the ingredient loader as context, and its result
87
+ * becomes the model's `data` property.
98
88
  *
99
89
  * @param ingredientDataMapper - Mapping function that maps an {@link IngredientResponse} into additional model data
100
90
  * @param options - Optional {@link ExtensionOptions} to control failure behavior.
101
91
  * Defaults to `failurePolicy: "throw"`, which throws an {@link ExtensionException} on mapper failure.
102
92
  * Set to `"continue"` to log the error and continue processing remaining mappers.
103
93
  * @returns this instance for chaining
104
- *
105
- * @example
106
- * The following example shows how to map the data from the service response into the {@link IngredientModel}.
107
- * The context is provided by the {@link IngredientLoader} extension point with its data being used to optionally augment the
108
- * ingredient data.
109
- *
110
- * The result of the mapping will be available in the `data` property of the {@link IngredientModel}.
111
- *
112
- * In this case the `IngedientReponseData` interface represents the data being returned by the ingredient service and the
113
- * `IngredientData` interface represents the data that will be available in the {@link IngredientModel.data} property. The `ingredientDataMapper`
114
- * is responsible for mapping from one format to the other.
115
- *
116
- * ```typescript
117
- *
118
- * interface IngredientResponseData extends NozzleServices.IngredientResponse {
119
- * chilled: boolean;
120
- * carbonated: boolean;
121
- * highYield: boolean;
122
- * }
123
- *
124
- * interface IngredientData {
125
- * chilled: boolean;
126
- * carbonated: boolean;
127
- * highYield: boolean;
128
- * }
129
- *
130
- * export const ingredientDataMapper = async (
131
- * data: IngredientResponseData,
132
- * context: IngredientContext
133
- * ): Promise<IngredientData> => {
134
- * return {
135
- * chilled: data.chilled,
136
- * carbonated: data.carbonated,
137
- * highYield: data.highYield,
138
- * }
139
- * }
140
- * ```
141
- * */
94
+ */
142
95
  registerIngredientDataMapper(ingredientDataMapper, options) {
143
96
  kosUiSdk.ExtensionManager.dataMapper.registerDataMapper(
144
97
  dispenseRegistrationManager.ExtensionType.IngredientMapper,
@@ -148,34 +101,14 @@ class DispenseExtensionManager {
148
101
  return this;
149
102
  }
150
103
  /**
151
- * Loads data that will be provided as context into the {@link IngredientMapper}.
104
+ * Registers a loader whose result is passed as context to the ingredient data and type mappers.
152
105
  *
153
106
  * @param ingredientLoader - Async function that loads and returns ingredient context data
154
107
  * @param options - Optional {@link ExtensionOptions} to control failure behavior.
155
108
  * Defaults to `failurePolicy: "throw"`, which throws an {@link ExtensionException} on loader failure.
156
109
  * Set to `"continue"` to log the error and return `undefined` instead.
157
110
  * @returns this instance for chaining
158
- *
159
- * @example
160
- * The following example shows how to load the brandset data, normalize it into a map and then provide it back to the framework
161
- * where it can be used by the other extension points.
162
- *
163
- * In the ingredient container model, the data is provided to the {@link IngredientMapper} extension point in order to augment ingredient data
164
- * and also loaded into the ingredient container model context in order to make the data available throughout the code.
165
- *
166
- * ```typescript
167
- * export const ingredientContextLoader = async (): Promise<BeverageContext> => {
168
- * const response = await kosFetch('kos:/system/some/ingredient/endpoint.json');
169
- *
170
- * if (response.status !== 200) {
171
- * KosLog.error('Failed to load ingredient data');
172
- * return {};
173
- * }
174
- * const json = await response.json();
175
- * return json;
176
- * };
177
- * ```
178
- * */
111
+ */
179
112
  registerIngredientLoader(ingredientLoader, options) {
180
113
  kosUiSdk.ExtensionManager.loader.registerLoader(
181
114
  dispenseRegistrationManager.ExtensionType.IngredientLoader,
@@ -271,7 +204,10 @@ class DispenseExtensionManager {
271
204
  return this;
272
205
  }
273
206
  /**
274
- * Maps data into the {@link AvailabilityModel}.
207
+ * Registers a data mapper for the {@link AvailabilityModel}.
208
+ *
209
+ * The mapper receives each availability node, with its `groupId`, and the data returned by the
210
+ * availability loader as context. Its result becomes the model's `data` property.
275
211
  *
276
212
  * @param availabilityMapper - Mapping function that maps a {@link GroupBeverageResponse} into additional availability data
277
213
  * @param options - Optional {@link ExtensionOptions} to control failure behavior.
@@ -280,28 +216,15 @@ class DispenseExtensionManager {
280
216
  * @returns this instance for chaining
281
217
  *
282
218
  * @example
283
- * The following example shows how to map the data from the service response into the {@link AvailabilityModel}.
284
- * The context is provided by the {@link AvailabilityLoader} extension point with its data being used to augment the
285
- * availability data.
286
- *
287
- * The result of the mapping will be available in the `data` property of the {@link AvailabilityModel}.
288
- *
289
219
  * ```typescript
290
- * export const beverageDataMapper = async (
291
- * data: NozzleServices.BeverageResponse,
292
- * context: BeverageContext
293
- * ): Promise<BeverageData> => {
294
- * const id = data.altId;
295
- * const iconUrl = encodeURI(
296
- * `http://localhost:8081/system/brandset/${context?.[id]?.icon}`
297
- * );
298
- * const cuiColorCode = context?.[id]?.cuiColorCode
299
- * ? context?.[id]?.cuiColorCode
300
- * : '';
301
- * return { iconUrl, cuiColorCode };
302
- * };
220
+ * const beverageDataMapper: AvailabilityDataMapper<BeverageData> = async (
221
+ * data,
222
+ * context?: Record<string, BrandsetIngredient>
223
+ * ) => ({
224
+ * iconUrl: context?.[data.altId]?.icon ?? "",
225
+ * });
303
226
  * ```
304
- * */
227
+ */
305
228
  registerAvailabilityDataMapper(availabilityMapper, options) {
306
229
  kosUiSdk.ExtensionManager.dataMapper.registerDataMapper(
307
230
  dispenseRegistrationManager.ExtensionType.AvailabilityMapper,
@@ -311,7 +234,8 @@ class DispenseExtensionManager {
311
234
  return this;
312
235
  }
313
236
  /**
314
- * Loads data that will be provided as context into the {@link AvailabilityMapper}.
237
+ * Registers a loader whose result is passed as context to the availability data mapper. A common use is
238
+ * loading UI-specific brandset data that the backend service does not provide.
315
239
  *
316
240
  * @param availabilityLoader - Async function that loads and returns availability context data
317
241
  * @param options - Optional {@link ExtensionOptions} to control failure behavior.
@@ -320,32 +244,14 @@ class DispenseExtensionManager {
320
244
  * @returns this instance for chaining
321
245
  *
322
246
  * @example
323
- * A common use case is to load brandset data that is UI specific and not provided directly by the Java service.
324
- *
325
- * The following example shows how to load the brandset data, normalize it into a map and then provide it back to the framework
326
- * where it can be used by the other extension points.
327
- *
328
- * In the nozzle model, the data is provided to the {@link AvailabilityMapper} extension point in order to augment availability data
329
- * and also loaded into the nozzle model context in order to make the data available throughout the code.
330
- *
331
247
  * ```typescript
332
- * export const beverageContextLoader = async (): Promise<BeverageContext> => {
333
- * const response = await kosFetch('kos:/system/brandset/brandset.json');
334
- *
335
- * if (response.status !== 200) {
336
- * KosLog.error('Failed to load beverage data');
337
- * return {};
338
- * }
339
- * const json: BrandsetResponse | null = await response.json();
340
- * const initialBeverages: Record<string, BrandsetIngredient> = {};
341
- * const beverages = json?.ingredients?.reduce((acc, beverage) => {
342
- * acc[beverage.ingredientId] = beverage;
343
- * return acc;
344
- * }, initialBeverages);
345
- * return beverages;
346
- * };
248
+ * const beverageContextLoader = async () => {
249
+ * const response = await kosFetch("kos:/system/brandset/brandset.json");
250
+ * const json: BrandsetResponse = await response.json();
251
+ * return Object.fromEntries(json.ingredients.map((i) => [i.ingredientId, i]));
252
+ * };
347
253
  * ```
348
- * */
254
+ */
349
255
  registerAvailabilityLoader(availabilityLoader, options) {
350
256
  kosUiSdk.ExtensionManager.loader.registerLoader(
351
257
  dispenseRegistrationManager.ExtensionType.AvailabilityLoader,
@@ -372,9 +278,8 @@ class DispenseExtensionManager {
372
278
  return this;
373
279
  }
374
280
  /**
375
- * Maps data into the {@link AssemblyModel} data.
376
- * Used in cases where the base assembly has been extended with additional properties in the backend. This extension
377
- * point allows for the data to be mapped into the {@link AssemblyModel} and augmented with additional properties.
281
+ * Registers a data mapper for the {@link AssemblyModel}, for backends that extend the assembly response
282
+ * with additional properties. The mapper's result is merged into the assembly model.
378
283
  *
379
284
  * @param assemblyDataMapper - Mapping function that maps an {@link AssemblyTypes.AssemblyResponse} into additional assembly data
380
285
  * @param options - Optional {@link ExtensionOptions} to control failure behavior.
@@ -383,60 +288,18 @@ class DispenseExtensionManager {
383
288
  * @returns this instance for chaining
384
289
  *
385
290
  * @example
386
- *
387
- * In this example of an implementation of a {@link AssemblyMapper}, the {@link AssemblyResponse} data is mapped into
388
- * a {@link FreestyleAssembly} object.
389
- *
390
- * The {@link FreestyleAssemblyResponse} interface represents the additional data being returned by the assembly service and is
391
- * merged into the {@link AssemblyResponse} interface.
392
- *
393
- * The {@link FreestyleAssembly} interface represents the additional data, beyond the base data set, that will be merged into the {@link AssemblyModel}.
394
- *
395
- * The mapper is responsible for mapping from the {@link FreestyleAssemblyResponse} format to the {@link FreestyleAssembly} format.
396
291
  * ```typescript
397
- * import { AssemblyTypes } from "@kosdev-code/kos-dispense-sdk";
398
- * import { DataMapper } from "@kosdev-code/kos-ui-sdk";
399
- *
400
- * // define the additional data being returned by the assembly service
401
- * export interface FreestyleAssemblyResponse {
402
- * iceAgitator?: {
403
- * name: "iceAgitator";
404
- * path: string;
405
- * };
406
- * }
407
- *
408
- * // define the additional data structure that will be merged into the assembly model
409
- * export interface FreestyleAssembly {
410
- * iceAgitator: {
411
- * path: string;
412
- * };
413
- * carbAgitator: {
414
- * path: string;
415
- * };
416
- * }
417
- *
418
- *
419
- * // define the mapper that will map the data from the service response into the additional data structure
420
- * // that will be merged into the assembly model.
421
- * // In this case the mapper is responsible for mapping from the {@link FreestyleAssemblyResponse} format to the {@link FreestyleAssembly} format.
422
- * export const assemblyDataMapper: DataMapper<
423
- * AssemblyTypes.AssemblyResponse<FreestyleAssemblyResponse>,
424
- * FreestyleAssembly
425
- * > = async (data) => {
426
- * const response = data.assemblies.reduce((acc, assembly) => {
427
- * const agitatorKeys = ["iceAgitator", "carbAgitator"];
428
- * agitatorKeys.forEach((key) => {
429
- * const agitator = assembly[key];
430
- * if (agitator) {
431
- * acc[key] = agitator;
432
- * }
433
- * });
292
+ * interface IceAgitatorExt {
293
+ * iceAgitator?: { name: string; path: string };
294
+ * }
434
295
  *
435
- * return acc;
436
- * }, {} as FreestyleAssembly);
437
- * return response;
438
- * };
439
- *```
296
+ * const assemblyDataMapper: AssemblyMapper<
297
+ * { iceAgitatorPath?: string },
298
+ * AssemblyTypes.AssemblyResponse<{ AssemblyExt: IceAgitatorExt }>
299
+ * > = async (data) => ({
300
+ * iceAgitatorPath: data.assemblies.find((a) => a.iceAgitator)?.iceAgitator?.path,
301
+ * });
302
+ * ```
440
303
  */
441
304
  registerAssemblyDataMapper(assemblyDataMapper, options) {
442
305
  kosUiSdk.ExtensionManager.dataMapper.registerDataMapper(
@@ -470,13 +333,8 @@ class DispenseExtensionManager {
470
333
  );
471
334
  return this;
472
335
  }
473
- registerControlledPour() {
474
- dispenseRegistrationManager.ControlPourExtension.register();
475
- return this;
476
- }
477
336
  registerAssemblyFeatureFlagResolver(assemblyFeatureFlagResolver) {
478
- var _a;
479
- (_a = kosUiSdk.ExtensionManager[kosUiSdk.EXTENSION_FEATURE_FLAG_RESOLVER]) == null ? void 0 : _a.register(
337
+ kosUiSdk.ExtensionManager[kosUiSdk.EXTENSION_FEATURE_FLAG_RESOLVER]?.register(
480
338
  dispenseRegistrationManager.ExtensionType.AssemblyFeatureFlags,
481
339
  assemblyFeatureFlagResolver
482
340
  );
@@ -484,9 +342,9 @@ class DispenseExtensionManager {
484
342
  }
485
343
  }
486
344
  class KosExtensionManager {
345
+ dispense;
346
+ core;
487
347
  constructor() {
488
- __publicField(this, "dispense");
489
- __publicField(this, "core");
490
348
  this.dispense = new DispenseExtensionManager();
491
349
  this.core = new kosUiSdk.CoreExtensionManager();
492
350
  }
@@ -501,4 +359,4 @@ exports.index$2 = index$4;
501
359
  exports.index$3 = index$5;
502
360
  exports.index$4 = index$1;
503
361
  exports.index$5 = index$2;
504
- //# sourceMappingURL=extension-utils-CMVLCSA8.cjs.map
362
+ //# sourceMappingURL=extension-utils-BWYG2dYG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-utils-BWYG2dYG.cjs","sources":["../../../packages/kos-dispense-sdk/src/models/models/holder/utils/holder-utils.ts","../../../packages/kos-dispense-sdk/src/models/utils/extension-utils.ts"],"sourcesContent":["import { kosAutoEffect } from \"@kosdev-code/kos-ui-sdk\";\nimport { useEffect, useState } from \"react\";\nimport type { HolderModel } from \"../types\";\n\nexport const getFuelGaugeValue = (holder: HolderModel) => {\n const [maxVolume, setMaxVolume] = useState<number>(\n holder?.slice?.maxVolMl ?? 0\n );\n const [remainingVolume, setRemainingVolume] = useState<number>(\n holder?.slice?.currentVolMl ?? 0\n );\n\n const [hasMaxVolume, setHasMaxVolume] = useState<boolean>(\n holder?.slice?.maxVolMl !== undefined\n );\n\n const [hasRemainingVolume, setHasRemainingVolume] = useState<boolean>(\n holder?.slice?.currentVolMl !== undefined\n );\n\n const [fillPercent, setFillPercent] = useState<number>(\n remainingVolume <= 0\n ? 0\n : Math.floor(((remainingVolume || 1) / (maxVolume || 1)) * 100)\n );\n\n const [hasFuelGuage, setHasFuelGuage] = useState<boolean>(\n hasMaxVolume && hasRemainingVolume\n );\n\n useEffect(() => {\n const disposer = kosAutoEffect(() => {\n setMaxVolume(holder?.slice?.maxVolMl ?? 0);\n setRemainingVolume(holder?.slice?.currentVolMl ?? 0);\n setHasMaxVolume(holder?.slice?.maxVolMl !== undefined);\n setHasRemainingVolume(holder?.slice?.currentVolMl !== undefined);\n setFillPercent(\n remainingVolume <= 0\n ? 0\n : Math.floor(((remainingVolume || 1) / (maxVolume || 1)) * 100)\n );\n setHasFuelGuage(hasMaxVolume && hasRemainingVolume);\n });\n\n return () => {\n disposer();\n };\n }, [holder]);\n\n return { maxVolume, remainingVolume, fillPercent, hasFuelGuage };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n CoreExtensionManager,\n DataLoader,\n DataMapper,\n EXTENSION_FEATURE_FLAG_RESOLVER,\n ExtensionManager,\n ExtensionOptions,\n IndexExtension,\n PropertyMapper,\n type FlagResolver,\n} from \"@kosdev-code/kos-ui-sdk\";\nimport { ExtensionType } from \"../constants\";\nimport { AssemblyTypes, type AssemblyModel } from \"../models\";\nimport type { HolderResponse } from \"../models/holder/services\";\nimport type { HolderModel } from \"../models/holder/types\";\nimport type { IngredientResponse } from \"../models/ingredient/services\";\nimport type { BeverageResponse } from \"../models/nozzle/services\";\nimport type { SelectedPourable } from \"../models/nozzle/types\";\n\n/**\n * @kosService dispense.ingredient\n * @kosApiLevel 2\n */\nexport type IngredientDataMapper<\n AdditionalData extends object = Record<string, any>\n> = DataMapper<IngredientResponse, AdditionalData, any>;\n\n/**\n * Mapping function that maps an ingredient response into the type property of\n * the {@link IngredientModel}.\n * @kosService dispense.ingredient\n * @kosApiLevel 2\n */\nexport type IngredientTypeMapper<\n T extends IngredientResponse = IngredientResponse\n> = PropertyMapper<T, string>;\n\n/**\n * Mapping function that maps additional data from holder service response\n * into the {@link HolderModel} data.\n * @kosService dispense.holder\n * @kosApiLevel 2\n */\nexport type HolderTypeMapper<T extends HolderResponse = HolderResponse> =\n PropertyMapper<T, string>;\n\n/**\n * Mapping function that maps additional data from holder service response\n * into the {@link HolderModel} data.\n * @kosService dispense.holder\n * @kosApiLevel 2\n */\nexport type HolderDataMapper<\n AdditionalData extends object = Record<string, any>,\n HolderData extends HolderResponse = HolderResponse\n> = DataMapper<HolderData, AdditionalData, any>;\n\nexport type GroupBeverageResponse = BeverageResponse & { groupId: string };\n/**\n * @kosService dispense.availability\n * @kosApiLevel 2\n */\nexport type AvailabilityDataMapper<\n AdditionalData extends object = Record<string, any>,\n AvailabilityData extends GroupBeverageResponse = GroupBeverageResponse\n> = DataMapper<AvailabilityData, AdditionalData, any>;\n\nexport type SelectedPourableMapper = DataMapper<SelectedPourable, any>;\n\n/**\n * @kosService dispense.board\n * @kosApiLevel 2\n */\nexport type BoardDataMapper<\n AdditionalData extends object = Record<string, any>,\n BoardData extends AssemblyTypes.AssemblyBoard<any> = AssemblyTypes.AssemblyBoard<any>\n> = DataMapper<BoardData, AdditionalData, any>;\n\n/**\n * @kosService dispense.assembly\n * @kosApiLevel 2\n */\nexport type AssemblyMapper<\n AdditionalData extends object = Record<string, any>,\n AssemblyResponseData extends AssemblyTypes.AssemblyResponse<any> = AssemblyTypes.AssemblyResponse<any>\n> = DataMapper<AssemblyResponseData, AdditionalData, any>;\n/**\n * The DispenseExtensionManager is responsible for managing the extension points that are specific to the Dispense application.\n */\nexport class DispenseExtensionManager {\n core: CoreExtensionManager = new CoreExtensionManager();\n /**\n * Registers a data mapper for the {@link IngredientModel}.\n *\n * Ingredient service data often needs properties the base model does not carry. The mapper receives each\n * {@link IngredientResponse} and the data returned by the ingredient loader as context, and its result\n * becomes the model's `data` property.\n *\n * @param ingredientDataMapper - Mapping function that maps an {@link IngredientResponse} into additional model data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n */\n registerIngredientDataMapper(\n ingredientDataMapper: IngredientDataMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.IngredientMapper,\n ingredientDataMapper,\n options\n );\n\n return this;\n }\n\n /**\n * Registers a loader whose result is passed as context to the ingredient data and type mappers.\n *\n * @param ingredientLoader - Async function that loads and returns ingredient context data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on loader failure.\n * Set to `\"continue\"` to log the error and return `undefined` instead.\n * @returns this instance for chaining\n */\n registerIngredientLoader(\n ingredientLoader: DataLoader,\n options?: ExtensionOptions\n ) {\n ExtensionManager.loader.registerLoader(\n ExtensionType.IngredientLoader,\n ingredientLoader,\n options\n );\n return this;\n }\n\n registerIngredientIndex(ingredientIndex: IndexExtension) {\n ExtensionManager.indexExtension.registerIndexExtension(\n ExtensionType.IngredientIndex,\n ingredientIndex\n );\n return this;\n }\n\n /**\n * Registers a property mapper that derives the `type` property of the {@link IngredientModel}\n * from an {@link IngredientResponse}.\n *\n * @param ingredientTypeMapper - Mapping function that extracts a type string from an {@link IngredientResponse}\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and return a fallback value instead.\n * @returns this instance for chaining\n * */\n registerIngredientTypeMapper(\n ingredientTypeMapper: IngredientTypeMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.propertyMapper.registerPropertyMapper(\n ExtensionType.IngredientTypeMapper,\n ingredientTypeMapper,\n options\n );\n return this;\n }\n\n /**\n * Registers a data mapper for the {@link HolderModel} model.\n *\n * @param holderDataMapper - Mapping function that maps additional data from a {@link HolderResponse}\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n */\n registerHolderDataMapper(\n holderDataMapper: HolderDataMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.HolderMapper,\n holderDataMapper,\n options\n );\n return this;\n }\n\n /**\n * Registers a property mapper that derives the `type` property of the {@link HolderModel}\n * from a {@link HolderResponse}.\n *\n * @param holderTypeMapper - Mapping function that extracts a type string from a {@link HolderResponse}\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and return a fallback value instead.\n * @returns this instance for chaining\n */\n registerHolderTypeMapper(\n holderTypeMapper: HolderTypeMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.propertyMapper.registerPropertyMapper(\n ExtensionType.HolderTypeMapper,\n holderTypeMapper,\n options\n );\n return this;\n }\n\n /**\n * Maps the ingredientId property of the holder into the {@link HolderModel}.\n * If not provided, the ingredientId will assume that the value is mapped from the\n * ingredientId property of the service response.\n *\n * @param holderTypeMapper - Mapping function that extracts the ingredientId from a {@link HolderResponse}\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and return a fallback value instead.\n * @returns this instance for chaining\n * */\n registerHolderIngredientMapper(\n holderTypeMapper: HolderTypeMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.propertyMapper.registerPropertyMapper(\n ExtensionType.HolderTypeMapper,\n holderTypeMapper,\n options\n );\n return this;\n }\n\n registerHolderIndex<T extends HolderModel = HolderModel>(\n holderIndex: IndexExtension<T>\n ) {\n ExtensionManager.indexExtension.registerIndexExtension(\n ExtensionType.HolderIndex,\n holderIndex\n );\n return this;\n }\n\n /**\n * Registers a data mapper for the {@link AvailabilityModel}.\n *\n * The mapper receives each availability node, with its `groupId`, and the data returned by the\n * availability loader as context. Its result becomes the model's `data` property.\n *\n * @param availabilityMapper - Mapping function that maps a {@link GroupBeverageResponse} into additional availability data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n *\n * @example\n * ```typescript\n * const beverageDataMapper: AvailabilityDataMapper<BeverageData> = async (\n * data,\n * context?: Record<string, BrandsetIngredient>\n * ) => ({\n * iconUrl: context?.[data.altId]?.icon ?? \"\",\n * });\n * ```\n */\n registerAvailabilityDataMapper(\n availabilityMapper: AvailabilityDataMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.AvailabilityMapper,\n availabilityMapper,\n options\n );\n return this;\n }\n\n /**\n * Registers a loader whose result is passed as context to the availability data mapper. A common use is\n * loading UI-specific brandset data that the backend service does not provide.\n *\n * @param availabilityLoader - Async function that loads and returns availability context data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on loader failure.\n * Set to `\"continue\"` to log the error and return `undefined` instead.\n * @returns this instance for chaining\n *\n * @example\n * ```typescript\n * const beverageContextLoader = async () => {\n * const response = await kosFetch(\"kos:/system/brandset/brandset.json\");\n * const json: BrandsetResponse = await response.json();\n * return Object.fromEntries(json.ingredients.map((i) => [i.ingredientId, i]));\n * };\n * ```\n */\n registerAvailabilityLoader(\n availabilityLoader: DataLoader,\n options?: ExtensionOptions\n ) {\n ExtensionManager.loader.registerLoader(\n ExtensionType.AvailabilityLoader,\n availabilityLoader,\n options\n );\n return this;\n }\n\n /**\n * Maps the abstract {@link SelectedPourable} data into a format that is specific to the nozzle.\n *\n * @param selectedPourableMapper - Mapping function that transforms {@link SelectedPourable} data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n * */\n registerSelectedPourableDataMapper(\n selectedPourableMapper: SelectedPourableMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.SelectedPourableMapper,\n selectedPourableMapper,\n options\n );\n return this;\n }\n\n /**\n * Registers a data mapper for the {@link AssemblyModel}, for backends that extend the assembly response\n * with additional properties. The mapper's result is merged into the assembly model.\n *\n * @param assemblyDataMapper - Mapping function that maps an {@link AssemblyTypes.AssemblyResponse} into additional assembly data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n *\n * @example\n * ```typescript\n * interface IceAgitatorExt {\n * iceAgitator?: { name: string; path: string };\n * }\n *\n * const assemblyDataMapper: AssemblyMapper<\n * { iceAgitatorPath?: string },\n * AssemblyTypes.AssemblyResponse<{ AssemblyExt: IceAgitatorExt }>\n * > = async (data) => ({\n * iceAgitatorPath: data.assemblies.find((a) => a.iceAgitator)?.iceAgitator?.path,\n * });\n * ```\n */\n registerAssemblyDataMapper(\n assemblyDataMapper: AssemblyMapper,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.AssemblyMapper,\n assemblyDataMapper,\n options\n );\n return this;\n }\n\n registerBoardIndex(boardIndex: IndexExtension) {\n ExtensionManager.indexExtension.registerIndexExtension(\n ExtensionType.BoardIndex,\n boardIndex\n );\n return this;\n }\n\n /**\n * Registers a data mapper for the board model within an assembly.\n *\n * @param boardDataMapper - Mapping function that maps an {@link AssemblyTypes.AssemblyBoard} into additional board data\n * @param options - Optional {@link ExtensionOptions} to control failure behavior.\n * Defaults to `failurePolicy: \"throw\"`, which throws an {@link ExtensionException} on mapper failure.\n * Set to `\"continue\"` to log the error and continue processing remaining mappers.\n * @returns this instance for chaining\n */\n registerBoardDataMapper(\n boardDataMapper: BoardDataMapper<any, any>,\n options?: ExtensionOptions\n ) {\n ExtensionManager.dataMapper.registerDataMapper(\n ExtensionType.BoardMapper,\n boardDataMapper,\n options\n );\n return this;\n }\n\n registerAssemblyFeatureFlagResolver(\n assemblyFeatureFlagResolver: FlagResolver<AssemblyModel>\n ) {\n ExtensionManager[EXTENSION_FEATURE_FLAG_RESOLVER]?.register(\n ExtensionType.AssemblyFeatureFlags,\n assemblyFeatureFlagResolver\n );\n return this;\n }\n}\n\n/**\n * The KosExtensionManager provides access to the extension points that are provided in the SDK for Dispense applications.\n *\n * The extension points are divided into two categories:\n *\n * @param core - The core extension {@link CoreExtensionManager} points are used to extend the base models that are provided by the SDK.\n * @param dispense - The dispense extension {@link DispenseExtensionManager} points are used to extend the models that are specific to the Dispense SDK.\n */\nexport class KosExtensionManager {\n dispense: DispenseExtensionManager;\n core: CoreExtensionManager;\n constructor() {\n this.dispense = new DispenseExtensionManager();\n this.core = new CoreExtensionManager();\n }\n}\n"],"names":["useState","useEffect","kosAutoEffect","CoreExtensionManager","ExtensionManager","ExtensionType","EXTENSION_FEATURE_FLAG_RESOLVER"],"mappings":"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"}