@ovok/native 0.4.1 → 0.4.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.
Files changed (318) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  2. package/lib/commonjs/modules/bt-management/components/bt-provider.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js +12 -0
  4. package/lib/commonjs/modules/bt-management/constants/custom-device-brand.js.map +1 -0
  5. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +111 -0
  6. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/index.js +209 -0
  8. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js +116 -0
  11. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
  12. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js +83 -0
  13. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
  14. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js +64 -0
  15. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
  16. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js +76 -0
  17. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
  18. package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js +13 -0
  19. package/lib/commonjs/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
  20. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +120 -0
  21. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
  22. package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js +32 -0
  23. package/lib/commonjs/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
  24. package/lib/commonjs/modules/bt-management/services/device-creator.js +52 -26
  25. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  26. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +22 -5
  27. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  28. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +103 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/types/accepted-device.js +6 -0
  32. package/lib/commonjs/modules/bt-management/types/accepted-device.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js +6 -0
  34. package/lib/commonjs/modules/bt-management/types/compiled-custom-field.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/types/custom-byte-order.js +2 -0
  36. package/lib/commonjs/modules/bt-management/types/custom-byte-order.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/types/custom-case-kind.js +2 -0
  38. package/lib/commonjs/modules/bt-management/types/custom-case-kind.js.map +1 -0
  39. package/lib/commonjs/modules/bt-management/types/custom-case-spec.js +6 -0
  40. package/lib/commonjs/modules/bt-management/types/custom-case-spec.js.map +1 -0
  41. package/lib/commonjs/modules/bt-management/types/custom-device-definition.js +4 -0
  42. package/lib/commonjs/modules/bt-management/types/custom-device-definition.js.map +1 -0
  43. package/lib/commonjs/modules/bt-management/types/custom-device-id.js +2 -0
  44. package/lib/commonjs/modules/bt-management/types/custom-device-id.js.map +1 -0
  45. package/lib/commonjs/modules/bt-management/types/custom-device-spec.js +6 -0
  46. package/lib/commonjs/modules/bt-management/types/custom-device-spec.js.map +1 -0
  47. package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js +2 -0
  48. package/lib/commonjs/modules/bt-management/types/custom-field-encoding.js.map +1 -0
  49. package/lib/commonjs/modules/bt-management/types/custom-field-spec.js +6 -0
  50. package/lib/commonjs/modules/bt-management/types/custom-field-spec.js.map +1 -0
  51. package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js +6 -0
  52. package/lib/commonjs/modules/bt-management/types/custom-frame-spec.js.map +1 -0
  53. package/lib/commonjs/modules/bt-management/types/custom-measurement.js +6 -0
  54. package/lib/commonjs/modules/bt-management/types/custom-measurement.js.map +1 -0
  55. package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js +6 -0
  56. package/lib/commonjs/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
  57. package/lib/commonjs/modules/bt-management/types/custom-service-spec.js +6 -0
  58. package/lib/commonjs/modules/bt-management/types/custom-service-spec.js.map +1 -0
  59. package/lib/commonjs/modules/bt-management/types/device-key-of.js +6 -0
  60. package/lib/commonjs/modules/bt-management/types/device-key-of.js.map +1 -0
  61. package/lib/commonjs/modules/bt-management/types/device-key.js +6 -0
  62. package/lib/commonjs/modules/bt-management/types/device-key.js.map +1 -0
  63. package/lib/commonjs/modules/bt-management/types/device-measurement-map.js.map +1 -1
  64. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js +54 -0
  65. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
  66. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js +40 -0
  67. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js.map +1 -0
  68. package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js +38 -0
  69. package/lib/commonjs/modules/bt-management/utils/decode-medical-float.js.map +1 -0
  70. package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js +15 -0
  71. package/lib/commonjs/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
  72. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  73. package/lib/module/modules/bt-management/components/bt-provider.js.map +1 -1
  74. package/lib/module/modules/bt-management/constants/custom-device-brand.js +8 -0
  75. package/lib/module/modules/bt-management/constants/custom-device-brand.js.map +1 -0
  76. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +108 -0
  77. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -0
  78. package/lib/module/modules/bt-management/index.js +19 -0
  79. package/lib/module/modules/bt-management/index.js.map +1 -1
  80. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  81. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js +112 -0
  82. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js.map +1 -0
  83. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js +78 -0
  84. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js.map +1 -0
  85. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js +59 -0
  86. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -0
  87. package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js +71 -0
  88. package/lib/module/modules/bt-management/services/custom/compile-custom-monitor.js.map +1 -0
  89. package/lib/module/modules/bt-management/services/custom/custom-device-error.js +8 -0
  90. package/lib/module/modules/bt-management/services/custom/custom-device-error.js.map +1 -0
  91. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +115 -0
  92. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -0
  93. package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js +27 -0
  94. package/lib/module/modules/bt-management/services/custom/normalize-ble-uuid.js.map +1 -0
  95. package/lib/module/modules/bt-management/services/device-creator.js +52 -26
  96. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  97. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +22 -5
  98. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  99. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  100. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +98 -0
  101. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -0
  102. package/lib/module/modules/bt-management/types/accepted-device.js +4 -0
  103. package/lib/module/modules/bt-management/types/accepted-device.js.map +1 -0
  104. package/lib/module/modules/bt-management/types/compiled-custom-field.js +4 -0
  105. package/lib/module/modules/bt-management/types/compiled-custom-field.js.map +1 -0
  106. package/lib/module/modules/bt-management/types/custom-byte-order.js +2 -0
  107. package/lib/module/modules/bt-management/types/custom-byte-order.js.map +1 -0
  108. package/lib/module/modules/bt-management/types/custom-case-kind.js +2 -0
  109. package/lib/module/modules/bt-management/types/custom-case-kind.js.map +1 -0
  110. package/lib/module/modules/bt-management/types/custom-case-spec.js +4 -0
  111. package/lib/module/modules/bt-management/types/custom-case-spec.js.map +1 -0
  112. package/lib/module/modules/bt-management/types/custom-device-definition.js +8 -0
  113. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -0
  114. package/lib/module/modules/bt-management/types/custom-device-id.js +2 -0
  115. package/lib/module/modules/bt-management/types/custom-device-id.js.map +1 -0
  116. package/lib/module/modules/bt-management/types/custom-device-spec.js +4 -0
  117. package/lib/module/modules/bt-management/types/custom-device-spec.js.map +1 -0
  118. package/lib/module/modules/bt-management/types/custom-field-encoding.js +2 -0
  119. package/lib/module/modules/bt-management/types/custom-field-encoding.js.map +1 -0
  120. package/lib/module/modules/bt-management/types/custom-field-spec.js +4 -0
  121. package/lib/module/modules/bt-management/types/custom-field-spec.js.map +1 -0
  122. package/lib/module/modules/bt-management/types/custom-frame-spec.js +4 -0
  123. package/lib/module/modules/bt-management/types/custom-frame-spec.js.map +1 -0
  124. package/lib/module/modules/bt-management/types/custom-measurement.js +4 -0
  125. package/lib/module/modules/bt-management/types/custom-measurement.js.map +1 -0
  126. package/lib/module/modules/bt-management/types/custom-monitor-spec.js +4 -0
  127. package/lib/module/modules/bt-management/types/custom-monitor-spec.js.map +1 -0
  128. package/lib/module/modules/bt-management/types/custom-service-spec.js +4 -0
  129. package/lib/module/modules/bt-management/types/custom-service-spec.js.map +1 -0
  130. package/lib/module/modules/bt-management/types/device-key-of.js +4 -0
  131. package/lib/module/modules/bt-management/types/device-key-of.js.map +1 -0
  132. package/lib/module/modules/bt-management/types/device-key.js +4 -0
  133. package/lib/module/modules/bt-management/types/device-key.js.map +1 -0
  134. package/lib/module/modules/bt-management/types/device-measurement-map.js +5 -0
  135. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  136. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js +49 -0
  137. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js.map +1 -0
  138. package/lib/module/modules/bt-management/utils/create-frame-validator.js +35 -0
  139. package/lib/module/modules/bt-management/utils/create-frame-validator.js.map +1 -0
  140. package/lib/module/modules/bt-management/utils/decode-medical-float.js +33 -0
  141. package/lib/module/modules/bt-management/utils/decode-medical-float.js.map +1 -0
  142. package/lib/module/modules/bt-management/utils/is-custom-device-definition.js +10 -0
  143. package/lib/module/modules/bt-management/utils/is-custom-device-definition.js.map +1 -0
  144. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
  145. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts +2 -2
  147. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
  149. package/lib/typescript/commonjs/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
  151. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +19 -0
  153. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +5 -4
  155. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts +6 -0
  157. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
  159. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
  160. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
  161. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
  163. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
  164. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
  165. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
  167. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
  169. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts +12 -5
  171. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  172. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
  173. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -1
  175. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +43 -0
  177. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts +5 -0
  179. package/lib/typescript/commonjs/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
  181. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  182. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts +2 -2
  183. package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  184. package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
  185. package/lib/typescript/commonjs/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +2 -2
  187. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  188. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-byte-order.d.ts +6 -0
  189. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
  191. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
  193. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
  194. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
  195. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
  197. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  199. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
  201. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
  203. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
  205. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
  207. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
  208. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
  209. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
  211. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts +2 -2
  213. package/lib/typescript/commonjs/src/modules/bt-management/types/device-data.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts +8 -0
  215. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts +5 -0
  217. package/lib/typescript/commonjs/src/modules/bt-management/types/device-key.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
  219. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  220. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -2
  221. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
  223. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
  225. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
  227. package/lib/typescript/commonjs/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
  229. package/lib/typescript/commonjs/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  231. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +2 -2
  232. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  233. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts +2 -2
  234. package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
  235. package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts +6 -0
  236. package/lib/typescript/module/src/modules/bt-management/constants/custom-device-brand.d.ts.map +1 -0
  237. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts +26 -0
  238. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -0
  239. package/lib/typescript/module/src/modules/bt-management/index.d.ts +19 -0
  240. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  241. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +5 -4
  242. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  243. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts +6 -0
  244. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -0
  245. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts +6 -0
  246. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -0
  247. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts +13 -0
  248. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -0
  249. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts +10 -0
  250. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-monitor.d.ts.map +1 -0
  251. package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts +6 -0
  252. package/lib/typescript/module/src/modules/bt-management/services/custom/custom-device-error.d.ts.map +1 -0
  253. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +12 -0
  254. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -0
  255. package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts +7 -0
  256. package/lib/typescript/module/src/modules/bt-management/services/custom/normalize-ble-uuid.d.ts.map +1 -0
  257. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts +12 -5
  258. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  259. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +12 -1
  260. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  261. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -1
  262. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  263. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +43 -0
  264. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -0
  265. package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts +5 -0
  266. package/lib/typescript/module/src/modules/bt-management/types/accepted-device.d.ts.map +1 -0
  267. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts +5 -4
  268. package/lib/typescript/module/src/modules/bt-management/types/btprovider-children-props.d.ts.map +1 -1
  269. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts +2 -2
  270. package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
  271. package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts +16 -0
  272. package/lib/typescript/module/src/modules/bt-management/types/compiled-custom-field.d.ts.map +1 -0
  273. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +2 -2
  274. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  275. package/lib/typescript/module/src/modules/bt-management/types/custom-byte-order.d.ts +6 -0
  276. package/lib/typescript/module/src/modules/bt-management/types/custom-byte-order.d.ts.map +1 -0
  277. package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts +12 -0
  278. package/lib/typescript/module/src/modules/bt-management/types/custom-case-kind.d.ts.map +1 -0
  279. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts +18 -0
  280. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -0
  281. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +22 -0
  282. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -0
  283. package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts +10 -0
  284. package/lib/typescript/module/src/modules/bt-management/types/custom-device-id.d.ts.map +1 -0
  285. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  286. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -0
  287. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts +10 -0
  288. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -0
  289. package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts +33 -0
  290. package/lib/typescript/module/src/modules/bt-management/types/custom-field-spec.d.ts.map +1 -0
  291. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts +27 -0
  292. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -0
  293. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts +10 -0
  294. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement.d.ts.map +1 -0
  295. package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts +14 -0
  296. package/lib/typescript/module/src/modules/bt-management/types/custom-monitor-spec.d.ts.map +1 -0
  297. package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts +15 -0
  298. package/lib/typescript/module/src/modules/bt-management/types/custom-service-spec.d.ts.map +1 -0
  299. package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts +2 -2
  300. package/lib/typescript/module/src/modules/bt-management/types/device-data.d.ts.map +1 -1
  301. package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts +8 -0
  302. package/lib/typescript/module/src/modules/bt-management/types/device-key-of.d.ts.map +1 -0
  303. package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts +5 -0
  304. package/lib/typescript/module/src/modules/bt-management/types/device-key.d.ts.map +1 -0
  305. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +10 -5
  306. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  307. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -2
  308. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  309. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts +12 -0
  310. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -0
  311. package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts +10 -0
  312. package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -0
  313. package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts +9 -0
  314. package/lib/typescript/module/src/modules/bt-management/utils/decode-medical-float.d.ts.map +1 -0
  315. package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts +9 -0
  316. package/lib/typescript/module/src/modules/bt-management/utils/is-custom-device-definition.d.ts.map +1 -0
  317. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  318. package/package.json +2 -2
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Marks an object as the output of defineCustomDevice. A hand-rolled definition that
5
+ * skipped registration validation therefore cannot be passed to acceptedDevices.
6
+ */
7
+ export const CUSTOM_DEVICE_BRAND = Symbol.for("ovok.customDevice");
8
+ //# sourceMappingURL=custom-device-brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CUSTOM_DEVICE_BRAND","Symbol","for"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/custom-device-brand.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAO,MAAMA,mBAAkC,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ import { MeasurementTypeKey } from "@ovok/core";
4
+
5
+ /**
6
+ * The measurement types a declaration may produce, the properties each one accepts, the
7
+ * canonical unit of every property, and the physiological envelope outside which a decoded
8
+ * value is treated as a decoding fault rather than a reading.
9
+ *
10
+ * A measurement type absent from this catalog cannot be declared. ECG, urine analysis and
11
+ * the cosinuss multi-parameter stream are absent on purpose: they are assembled across
12
+ * several notifications and need a device class, not a declaration.
13
+ *
14
+ * The property names mirror the measurement types in @ovok/core. A typo would otherwise
15
+ * produce an object the backend silently drops, so it is rejected at registration instead.
16
+ *
17
+ * `required` marks the properties without which the reading is not that measurement. Every
18
+ * property in @ovok/core is optional, so a declaration that named only `systolic` would
19
+ * otherwise compile and then post a blood pressure with no diastolic - a plausible clinical
20
+ * record of something that was never measured. A "result" case must declare all of them.
21
+ */
22
+
23
+ export const measurementFieldCatalog = {
24
+ [MeasurementTypeKey.bloodPressure]: {
25
+ systolic: {
26
+ unit: "mmHg",
27
+ min: 30,
28
+ max: 300,
29
+ required: true
30
+ },
31
+ diastolic: {
32
+ unit: "mmHg",
33
+ min: 10,
34
+ max: 220,
35
+ required: true
36
+ },
37
+ heartRate: {
38
+ unit: "bpm",
39
+ min: 20,
40
+ max: 300
41
+ }
42
+ },
43
+ [MeasurementTypeKey.bodyWeight]: {
44
+ bodyWeight: {
45
+ unit: "kg",
46
+ min: 1,
47
+ max: 500,
48
+ required: true
49
+ }
50
+ },
51
+ [MeasurementTypeKey.temperature]: {
52
+ bodyTemp: {
53
+ unit: "Cel",
54
+ min: 25,
55
+ max: 45,
56
+ required: true
57
+ }
58
+ },
59
+ [MeasurementTypeKey.bloodGlucose]: {
60
+ bloodGlucose: {
61
+ unit: "mg/dL",
62
+ min: 10,
63
+ max: 1000,
64
+ required: true
65
+ }
66
+ },
67
+ [MeasurementTypeKey.bloodOxygenPulseRate]: {
68
+ bloodOxygen: {
69
+ unit: "%",
70
+ min: 50,
71
+ max: 100,
72
+ required: true
73
+ },
74
+ pulseRate: {
75
+ unit: "bpm",
76
+ min: 20,
77
+ max: 300,
78
+ required: true
79
+ },
80
+ perfusionIndex: {
81
+ unit: "%",
82
+ min: 0,
83
+ max: 25
84
+ },
85
+ rrInterval: {
86
+ unit: "ms",
87
+ min: 200,
88
+ max: 3000
89
+ }
90
+ },
91
+ [MeasurementTypeKey.heartRate]: {
92
+ heartRate: {
93
+ unit: "bpm",
94
+ min: 20,
95
+ max: 300,
96
+ required: true
97
+ }
98
+ },
99
+ [MeasurementTypeKey.respiratoryRate]: {
100
+ respiratoryRate: {
101
+ unit: "/min",
102
+ min: 2,
103
+ max: 90,
104
+ required: true
105
+ }
106
+ }
107
+ };
108
+ //# sourceMappingURL=measurement-field-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MeasurementTypeKey","measurementFieldCatalog","bloodPressure","systolic","unit","min","max","required","diastolic","heartRate","bodyWeight","temperature","bodyTemp","bloodGlucose","bloodOxygenPulseRate","bloodOxygen","pulseRate","perfusionIndex","rrInterval","respiratoryRate"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/measurement-field-catalog.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAO,MAAMC,uBAEZ,GAAG;EACF,CAACD,kBAAkB,CAACE,aAAa,GAAG;IAClCC,QAAQ,EAAE;MAAEC,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DC,SAAS,EAAE;MAAEJ,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC9DE,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE;IAAI;EAC9C,CAAC;EACD,CAACN,kBAAkB,CAACU,UAAU,GAAG;IAC/BA,UAAU,EAAE;MAAEN,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC7D,CAAC;EACD,CAACP,kBAAkB,CAACW,WAAW,GAAG;IAChCC,QAAQ,EAAE;MAAER,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EAC5D,CAAC;EACD,CAACP,kBAAkB,CAACa,YAAY,GAAG;IACjCA,YAAY,EAAE;MAAET,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,IAAI;MAAEC,QAAQ,EAAE;IAAK;EACpE,CAAC;EACD,CAACP,kBAAkB,CAACc,oBAAoB,GAAG;IACzCC,WAAW,EAAE;MAAEX,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DS,SAAS,EAAE;MAAEZ,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DU,cAAc,EAAE;MAAEb,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAG,CAAC;IAC9CY,UAAU,EAAE;MAAEd,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,GAAG;MAAEC,GAAG,EAAE;IAAK;EAChD,CAAC;EACD,CAACN,kBAAkB,CAACS,SAAS,GAAG;IAC9BA,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC9D,CAAC;EACD,CAACP,kBAAkB,CAACmB,eAAe,GAAG;IACpCA,eAAe,EAAE;MAAEf,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EACnE;AACF,CAAC","ignoreList":[]}
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  export * from "./types/i-bt-managed-device.js";
4
+ export * from "./types/accepted-device.js";
5
+ export * from "./types/compiled-custom-field.js";
6
+ export * from "./types/custom-byte-order.js";
7
+ export * from "./types/custom-case-kind.js";
8
+ export * from "./types/custom-case-spec.js";
9
+ export * from "./types/custom-device-definition.js";
10
+ export * from "./types/custom-device-id.js";
11
+ export * from "./types/custom-device-spec.js";
12
+ export * from "./types/custom-field-encoding.js";
13
+ export * from "./types/custom-field-spec.js";
14
+ export * from "./types/custom-frame-spec.js";
15
+ export * from "./types/custom-measurement.js";
16
+ export * from "./types/custom-monitor-spec.js";
17
+ export * from "./types/custom-service-spec.js";
18
+ export * from "./types/device-key.js";
19
+ export * from "./types/device-key-of.js";
4
20
  export * from "./types/device-data.js";
5
21
  export * from "./types/device-status.js";
6
22
  export * from "./types/integrated-devices.js";
@@ -13,7 +29,10 @@ export * from "./types/result-callback.js";
13
29
  export * from "./types/error-callback.js";
14
30
  export * from "./types/device-status-change-callback.js";
15
31
  export * from "./services/devices/bt-managed-device.js";
32
+ export * from "./services/devices/custom/custom.device.js";
16
33
  export * from "./services/bt-manager.js";
34
+ export * from "./services/custom/define-custom-device.js";
35
+ export * from "./constants/measurement-field-catalog.js";
17
36
  export * from "./components/bt-provider.js";
18
37
  export * from "./components/default-permission-fallback.js";
19
38
  export * from "./hooks/use-request-permissions.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,0BAAuB;AAErC,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AAEtD,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","Error","message","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ import { measurementFieldCatalog } from "../../constants/measurement-field-catalog.js";
4
+ import { CaseType } from "../../types/case-type.js";
5
+ import { createCustomFieldParser } from "../../utils/create-custom-field-parser.js";
6
+ import { compileCustomField } from "./compile-custom-field.js";
7
+ import { customDeviceError } from "./custom-device-error.js";
8
+
9
+ /**
10
+ * A "result" frame compiles to CaseType.DEPENDENT, not CaseType.RESULT.
11
+ *
12
+ * BTDataProcessor only forwards a RESULT case while the device is already streaming, so a
13
+ * device that sends one self-contained notification - the common shape for a standard GATT
14
+ * sensor - would be silently dropped. A DEPENDENT case is always handed to the device, which
15
+ * reports the reading and then rewrites the frame to OTHER so the status returns to
16
+ * CONNECTED. Devices that do stream first behave identically.
17
+ */
18
+ const CASE_TYPES = {
19
+ result: CaseType.DEPENDENT,
20
+ stream: CaseType.STREAM,
21
+ idle: CaseType.OTHER
22
+ };
23
+ const assertMeasurementTypeKey = (id, path, caseSpec) => {
24
+ const key = caseSpec.measurementTypeKey;
25
+ if (key === undefined) {
26
+ if (caseSpec.kind === "result") {
27
+ throw customDeviceError(id, `${path}.measurementTypeKey`, 'is required on a "result" case');
28
+ }
29
+ return undefined;
30
+ }
31
+ if (!measurementFieldCatalog[key]) {
32
+ throw customDeviceError(id, `${path}.measurementTypeKey`, `"${key}" cannot be declared; it is assembled across several notifications and needs a device class in the SDK. Declarable types: ${Object.keys(measurementFieldCatalog).join(", ")}`);
33
+ }
34
+ return key;
35
+ };
36
+ const registerField = (id, path, compiled, measurementTypeKey, fields) => {
37
+ const key = `${measurementTypeKey}:${compiled.name}`;
38
+ const existing = fields.get(key);
39
+ if (existing && (existing.min !== compiled.min || existing.max !== compiled.max)) {
40
+ throw customDeviceError(id, path, `declares ${compiled.name} with different bounds (${compiled.min}-${compiled.max}) than an earlier case (${existing.min}-${existing.max}); a property must mean the same thing in every frame`);
41
+ }
42
+ fields.set(key, compiled);
43
+ };
44
+
45
+ /**
46
+ * A reading must carry every property that makes it that measurement. A blood pressure
47
+ * without a diastolic is not a partial blood pressure, it is a clinical record of something
48
+ * the device never reported, so the declaration is refused rather than the reading dropped.
49
+ */
50
+ const assertRequiredFields = (id, path, declared, measurementTypeKey) => {
51
+ const catalog = measurementFieldCatalog[measurementTypeKey] ?? {};
52
+ const declaredNames = new Set(declared.map(field => field?.name));
53
+ const missing = Object.entries(catalog).filter(([name, field]) => field.required && !declaredNames.has(name)).map(([name]) => name);
54
+ if (missing.length > 0) {
55
+ throw customDeviceError(id, `${path}.fields`, `does not declare ${missing.join(", ")}, which ${measurementTypeKey} needs to be a complete reading`);
56
+ }
57
+ };
58
+ const compileFields = (id, path, declared, measurementTypeKey, minLengthBytes, fields) => {
59
+ const names = new Set();
60
+ return declared.map((field, index) => {
61
+ if (names.has(field.name)) {
62
+ throw customDeviceError(id, `${path}.fields[${index}].name`, `"${field.name}" is declared twice in this case`);
63
+ }
64
+ names.add(field.name);
65
+ const compiled = compileCustomField(id, `${path}.fields[${index}]`, field, measurementTypeKey, minLengthBytes);
66
+ registerField(id, path, compiled, measurementTypeKey, fields);
67
+ return {
68
+ name: compiled.name,
69
+ parseType: "custom",
70
+ byteIndexes: compiled.byteIndexes,
71
+ customParserDefinition: createCustomFieldParser(compiled)
72
+ };
73
+ });
74
+ };
75
+
76
+ /** Validates one declared frame shape and turns it into a parsing case. */
77
+ export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) => {
78
+ const caseType = CASE_TYPES[caseSpec.kind];
79
+ if (!caseType) {
80
+ throw customDeviceError(id, `${path}.kind`, `is "${String(caseSpec.kind)}"; expected ${Object.keys(CASE_TYPES).join(", ")}`);
81
+ }
82
+ const measurementTypeKey = assertMeasurementTypeKey(id, path, caseSpec);
83
+ const declared = caseSpec.fields ?? [];
84
+ if (caseSpec.kind !== "result") {
85
+ if (declared.length > 0) {
86
+ throw customDeviceError(id, path, 'declares fields, but fields may be declared on only a "result" case');
87
+ }
88
+ return {
89
+ measurementTypeKey,
90
+ caseType,
91
+ caseValue: String(caseSpec.selector ?? "").toLowerCase(),
92
+ parseDefinitions: [],
93
+ description: caseSpec.description
94
+ };
95
+ }
96
+ if (declared.length === 0 || !measurementTypeKey) {
97
+ throw customDeviceError(id, path, 'is a "result" case and must declare at least one field');
98
+ }
99
+
100
+ // Every field is checked first, so a misspelt property is reported as the typo it is
101
+ // rather than as the required property it failed to satisfy.
102
+ const parseDefinitions = compileFields(id, path, declared, measurementTypeKey, minLengthBytes, fields);
103
+ assertRequiredFields(id, path, declared, measurementTypeKey);
104
+ return {
105
+ measurementTypeKey,
106
+ caseType,
107
+ caseValue: String(caseSpec.selector ?? "").toLowerCase(),
108
+ parseDefinitions,
109
+ description: caseSpec.description
110
+ };
111
+ };
112
+ //# sourceMappingURL=compile-custom-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["measurementFieldCatalog","CaseType","createCustomFieldParser","compileCustomField","customDeviceError","CASE_TYPES","result","DEPENDENT","stream","STREAM","idle","OTHER","assertMeasurementTypeKey","id","path","caseSpec","key","measurementTypeKey","undefined","kind","Object","keys","join","registerField","compiled","fields","name","existing","get","min","max","set","assertRequiredFields","declared","catalog","declaredNames","Set","map","field","missing","entries","filter","required","has","length","compileFields","minLengthBytes","names","index","add","parseType","byteIndexes","customParserDefinition","compileCustomCase","caseType","String","caseValue","selector","toLowerCase","parseDefinitions","description"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-case.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import { measurementFieldCatalog } from "../../constants/measurement-field-catalog.js";
4
+ import { customDeviceError } from "./custom-device-error.js";
5
+ const MAX_INTEGER_BYTES = 6;
6
+ const WIDTHS = {
7
+ sfloat: 2,
8
+ float: 4
9
+ };
10
+ const assertByteIndexes = (id, path, field, minLengthBytes) => {
11
+ const indexes = field.byteIndexes;
12
+ if (!Array.isArray(indexes) || indexes.length === 0 || indexes.some(i => !Number.isInteger(i) || i < 0)) {
13
+ throw customDeviceError(id, `${path}.byteIndexes`, "must be a non-empty list of byte offsets that are integers of at least 0");
14
+ }
15
+ if (new Set(indexes).size !== indexes.length) {
16
+ throw customDeviceError(id, `${path}.byteIndexes`, "reads the same byte twice");
17
+ }
18
+ const encoding = field.encoding ?? "uint";
19
+ const required = WIDTHS[encoding];
20
+ if (required !== undefined && indexes.length !== required) {
21
+ throw customDeviceError(id, `${path}.encoding`, `"${encoding}" needs exactly ${required} bytes, but ${indexes.length} byte index(es) are declared`);
22
+ }
23
+ if (required === undefined && indexes.length > MAX_INTEGER_BYTES) {
24
+ throw customDeviceError(id, `${path}.byteIndexes`, `reads ${indexes.length} bytes; an integer field may read at most ${MAX_INTEGER_BYTES} bytes so the value stays exact in a JavaScript number`);
25
+ }
26
+ const outOfFrame = indexes.filter(i => i >= minLengthBytes);
27
+ if (outOfFrame.length > 0) {
28
+ throw customDeviceError(id, `${path}.byteIndexes`, `reads byte ${outOfFrame[0]}, which frame.minLengthBytes (${minLengthBytes}) does not guarantee is present`);
29
+ }
30
+ };
31
+ const assertArithmetic = (id, path, field) => {
32
+ const scale = field.scale ?? 1;
33
+ if (!Number.isFinite(scale) || scale === 0) {
34
+ throw customDeviceError(id, `${path}.scale`, "must be a finite, non-zero number");
35
+ }
36
+ if (!Number.isFinite(field.offset ?? 0)) {
37
+ throw customDeviceError(id, `${path}.offset`, "must be a finite number");
38
+ }
39
+ const decimals = field.decimals;
40
+ if (decimals !== undefined && (!Number.isInteger(decimals) || decimals < 0 || decimals > 6)) {
41
+ throw customDeviceError(id, `${path}.decimals`, "must be a whole number between 0 and 6");
42
+ }
43
+ };
44
+
45
+ /** Validates one declared field against the measurement catalog and resolves its defaults. */
46
+ export const compileCustomField = (id, path, field, measurementTypeKey, minLengthBytes) => {
47
+ const catalog = measurementFieldCatalog[measurementTypeKey];
48
+ const known = catalog?.[field.name];
49
+ if (!catalog || !known) {
50
+ throw customDeviceError(id, `${path}.name`, `"${field.name}" is not a property of ${measurementTypeKey}; expected one of ${Object.keys(catalog ?? {}).join(", ")}`);
51
+ }
52
+ if (field.unit !== known.unit) {
53
+ throw customDeviceError(id, `${path}.unit`, `is "${field.unit}"; expected "${known.unit}", the canonical unit of ${field.name}. Convert with scale instead of changing the unit`);
54
+ }
55
+ assertByteIndexes(id, path, field, minLengthBytes);
56
+ assertArithmetic(id, path, field);
57
+ const min = field.min ?? known.min;
58
+ const max = field.max ?? known.max;
59
+ if (!Number.isFinite(min) || !Number.isFinite(max) || min >= max) {
60
+ throw customDeviceError(id, `${path}`, `declares min ${min} and max ${max}; min must be below max`);
61
+ }
62
+ if (min < known.min || max > known.max) {
63
+ throw customDeviceError(id, `${path}`, `declares ${min}-${max} ${known.unit}, which is outside the accepted range for ${field.name} (${known.min}-${known.max} ${known.unit})`);
64
+ }
65
+ const indexes = [...field.byteIndexes];
66
+ return {
67
+ name: field.name,
68
+ byteIndexes: field.byteOrder === "little" ? indexes.reverse() : indexes,
69
+ encoding: field.encoding ?? "uint",
70
+ scale: field.scale ?? 1,
71
+ offset: field.offset ?? 0,
72
+ decimals: field.decimals,
73
+ unit: known.unit,
74
+ min,
75
+ max
76
+ };
77
+ };
78
+ //# sourceMappingURL=compile-custom-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["measurementFieldCatalog","customDeviceError","MAX_INTEGER_BYTES","WIDTHS","sfloat","float","assertByteIndexes","id","path","field","minLengthBytes","indexes","byteIndexes","Array","isArray","length","some","i","Number","isInteger","Set","size","encoding","required","undefined","outOfFrame","filter","assertArithmetic","scale","isFinite","offset","decimals","compileCustomField","measurementTypeKey","catalog","known","name","Object","keys","join","unit","min","max","byteOrder","reverse"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-field.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ import { customDeviceError } from "./custom-device-error.js";
4
+ const HEX_BYTE = /^[0-9a-f]{2}$/;
5
+
6
+ /**
7
+ * Checks that a frame declaration can actually recognise a complete package, and returns a
8
+ * frozen, lower-cased copy of it.
9
+ *
10
+ * The copy matters twice. The received buffer is always lower-case hex, so a header declared
11
+ * as ["AA","55"] would never match and the device would silently produce nothing until the
12
+ * stuck-data timeout. And the runtime must not read an object the caller still holds a
13
+ * reference to: mutating the declaration after registration would otherwise move byte offsets
14
+ * that were bounds-checked at registration.
15
+ */
16
+ export const compileCustomFrame = (id, path, frame) => {
17
+ const minLengthBytes = frame?.minLengthBytes;
18
+ if (!Number.isInteger(minLengthBytes) || minLengthBytes < 1) {
19
+ throw customDeviceError(id, `${path}.minLengthBytes`, "must be a whole number of at least 1");
20
+ }
21
+ const declaredHeader = frame.header ?? [];
22
+ if (!Array.isArray(declaredHeader)) {
23
+ throw customDeviceError(id, `${path}.header`, "must be a list of hex bytes");
24
+ }
25
+ const header = declaredHeader.map(byte => String(byte).toLowerCase());
26
+ if (header.some(byte => !HEX_BYTE.test(byte))) {
27
+ throw customDeviceError(id, `${path}.header`, 'must be a list of single hex bytes, e.g. ["aa", "55"]');
28
+ }
29
+ if (header.length > minLengthBytes) {
30
+ throw customDeviceError(id, `${path}.header`, `is ${header.length} bytes, which does not fit inside minLengthBytes (${minLengthBytes})`);
31
+ }
32
+ const length = frame.length;
33
+ if (!length) {
34
+ return Object.freeze({
35
+ header: Object.freeze(header),
36
+ minLengthBytes
37
+ });
38
+ }
39
+ if (!Number.isInteger(length.index) || length.index < 0) {
40
+ throw customDeviceError(id, `${path}.length.index`, "must be a byte offset of at least 0");
41
+ }
42
+ if (length.widthBytes !== 1 && length.widthBytes !== 2) {
43
+ throw customDeviceError(id, `${path}.length.widthBytes`, "must be 1 or 2");
44
+ }
45
+ if (!Number.isInteger(length.overheadBytes) || length.overheadBytes < 0) {
46
+ throw customDeviceError(id, `${path}.length.overheadBytes`, "must be a whole number of at least 0");
47
+ }
48
+ if (length.index + length.widthBytes > minLengthBytes) {
49
+ throw customDeviceError(id, `${path}.length`, `reads bytes ${length.index}-${length.index + length.widthBytes - 1}, which frame.minLengthBytes (${minLengthBytes}) does not guarantee are present`);
50
+ }
51
+ return Object.freeze({
52
+ header: Object.freeze(header),
53
+ minLengthBytes,
54
+ length: Object.freeze({
55
+ ...length
56
+ })
57
+ });
58
+ };
59
+ //# sourceMappingURL=compile-custom-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["customDeviceError","HEX_BYTE","compileCustomFrame","id","path","frame","minLengthBytes","Number","isInteger","declaredHeader","header","Array","isArray","map","byte","String","toLowerCase","some","test","length","Object","freeze","index","widthBytes","overheadBytes"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-frame.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ import { compileCustomCase } from "./compile-custom-case.js";
4
+ import { compileCustomFrame } from "./compile-custom-frame.js";
5
+ import { customDeviceError } from "./custom-device-error.js";
6
+ import { normalizeBleUuid } from "./normalize-ble-uuid.js";
7
+ const HEX = /^[0-9a-f]*$/;
8
+ const assertSelectorBytes = (id, path, monitor, frame) => {
9
+ const selectorBytes = monitor.caseSelectorBytes;
10
+ if (selectorBytes === undefined) {
11
+ if (monitor.cases.length !== 1 || monitor.cases[0]?.selector !== "") {
12
+ throw customDeviceError(id, `${path}.caseSelectorBytes`, "is required unless the characteristic has exactly one case with an empty selector");
13
+ }
14
+ return [];
15
+ }
16
+ if (!Array.isArray(selectorBytes) || selectorBytes.length === 0 || selectorBytes.some(i => !Number.isInteger(i) || i < 0)) {
17
+ throw customDeviceError(id, `${path}.caseSelectorBytes`, "must be a non-empty list of byte offsets that are integers of at least 0");
18
+ }
19
+ const outOfFrame = selectorBytes.filter(i => i >= frame.minLengthBytes);
20
+ if (outOfFrame.length > 0) {
21
+ throw customDeviceError(id, `${path}.caseSelectorBytes`, `reads byte ${outOfFrame[0]}, which frame.minLengthBytes (${frame.minLengthBytes}) does not guarantee is present`);
22
+ }
23
+ return selectorBytes;
24
+ };
25
+ const assertSelector = (id, path, selector, selectorBytes, seen) => {
26
+ const value = String(selector ?? "").toLowerCase();
27
+ const expected = selectorBytes.length * 2;
28
+ if (!HEX.test(value)) {
29
+ throw customDeviceError(id, `${path}.selector`, `is "${selector}", which is not hex`);
30
+ }
31
+ if (value.length !== expected) {
32
+ throw customDeviceError(id, `${path}.selector`, `is ${value.length} hex digits but caseSelectorBytes declares ${selectorBytes.length} byte(s), so it must be ${expected}`);
33
+ }
34
+ if (seen.has(value)) {
35
+ throw customDeviceError(id, `${path}.selector`, `has the same selector "${value}" as an earlier case, which would silently shadow it`);
36
+ }
37
+ seen.add(value);
38
+ };
39
+
40
+ /** Validates one notify characteristic and turns it into a parsing model and a frame. */
41
+ export const compileCustomMonitor = (id, path, monitor, fields) => {
42
+ if (typeof monitor !== "object" || monitor === null) {
43
+ throw customDeviceError(id, path, "must be a monitor characteristic object");
44
+ }
45
+ const uuid = normalizeBleUuid(id, `${path}.uuid`, monitor.uuid);
46
+ const frame = compileCustomFrame(id, `${path}.frame`, monitor.frame);
47
+ if (!Array.isArray(monitor.cases) || monitor.cases.length === 0) {
48
+ throw customDeviceError(id, `${path}.cases`, "must declare at least one case");
49
+ }
50
+ const selectorBytes = assertSelectorBytes(id, path, monitor, frame);
51
+ const seen = new Set();
52
+ const cases = monitor.cases.map((caseSpec, index) => {
53
+ const casePath = `${path}.cases[${index}]`;
54
+ if (typeof caseSpec !== "object" || caseSpec === null) {
55
+ throw customDeviceError(id, casePath, "must be a case object");
56
+ }
57
+ assertSelector(id, casePath, caseSpec.selector, selectorBytes, seen);
58
+ return compileCustomCase(id, casePath, caseSpec, frame.minLengthBytes, fields);
59
+ });
60
+ return {
61
+ characteristic: {
62
+ uuid,
63
+ parsingModel: {
64
+ caseValuePosition: selectorBytes.length > 0 ? selectorBytes : undefined,
65
+ cases
66
+ }
67
+ },
68
+ frame
69
+ };
70
+ };
71
+ //# sourceMappingURL=compile-custom-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["compileCustomCase","compileCustomFrame","customDeviceError","normalizeBleUuid","HEX","assertSelectorBytes","id","path","monitor","frame","selectorBytes","caseSelectorBytes","undefined","cases","length","selector","Array","isArray","some","i","Number","isInteger","outOfFrame","filter","minLengthBytes","assertSelector","seen","value","String","toLowerCase","expected","test","has","add","compileCustomMonitor","fields","uuid","Set","map","caseSpec","index","casePath","characteristic","parsingModel","caseValuePosition"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-monitor.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Every registration failure names the exact position in the declaration, because the
5
+ * author is looking at a datasheet and needs to know which line of it is wrong.
6
+ */
7
+ export const customDeviceError = (id, path, message) => new Error(`Custom device "${id}": ${path} ${message}`);
8
+ //# sourceMappingURL=custom-device-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["customDeviceError","id","path","message","Error"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/custom-device-error.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,GAAGA,CAC/BC,EAAU,EACVC,IAAY,EACZC,OAAe,KACL,IAAIC,KAAK,CAAC,kBAAkBH,EAAE,MAAMC,IAAI,IAAIC,OAAO,EAAE,CAAC","ignoreList":[]}