tempest-react-sdk 0.78.0 → 0.79.0

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 (1585) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/openapi/generate.mjs +168 -64
  3. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  4. package/bin/lib/openapi/generate.test.mjs +263 -1
  5. package/dist/access/Can.cjs.map +1 -1
  6. package/dist/access/Can.js.map +1 -1
  7. package/dist/access/access-control-context.cjs.map +1 -1
  8. package/dist/access/access-control-context.js.map +1 -1
  9. package/dist/access/create-role-access-control.cjs.map +1 -1
  10. package/dist/access/create-role-access-control.js.map +1 -1
  11. package/dist/access/permissions-from-token.cjs.map +1 -1
  12. package/dist/access/permissions-from-token.js.map +1 -1
  13. package/dist/access/use-can.cjs.map +1 -1
  14. package/dist/access/use-can.js.map +1 -1
  15. package/dist/app/AppProviders.cjs.map +1 -1
  16. package/dist/app/AppProviders.js.map +1 -1
  17. package/dist/audio/audio-bus.cjs.map +1 -1
  18. package/dist/audio/audio-bus.js.map +1 -1
  19. package/dist/audio/audio-output.cjs.map +1 -1
  20. package/dist/audio/audio-output.js.map +1 -1
  21. package/dist/audio/audio-player.cjs.map +1 -1
  22. package/dist/audio/audio-player.js.map +1 -1
  23. package/dist/audio/audio-recorder.cjs.map +1 -1
  24. package/dist/audio/audio-recorder.js.map +1 -1
  25. package/dist/audio/duration.cjs.map +1 -1
  26. package/dist/audio/duration.js.map +1 -1
  27. package/dist/audio/level-meter.cjs.map +1 -1
  28. package/dist/audio/level-meter.js.map +1 -1
  29. package/dist/audio/media-access.cjs.map +1 -1
  30. package/dist/audio/media-access.js.map +1 -1
  31. package/dist/audio/noise-floor.cjs.map +1 -1
  32. package/dist/audio/noise-floor.js.map +1 -1
  33. package/dist/audio/sfx-pool.cjs.map +1 -1
  34. package/dist/audio/sfx-pool.js.map +1 -1
  35. package/dist/audio/use-audio-bus.cjs.map +1 -1
  36. package/dist/audio/use-audio-bus.js.map +1 -1
  37. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  38. package/dist/audio/use-audio-recorder.js.map +1 -1
  39. package/dist/audio/use-audio.cjs.map +1 -1
  40. package/dist/audio/use-audio.js.map +1 -1
  41. package/dist/audio/use-microphone.cjs +1 -1
  42. package/dist/audio/use-microphone.cjs.map +1 -1
  43. package/dist/audio/use-microphone.js +1 -5
  44. package/dist/audio/use-microphone.js.map +1 -1
  45. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  46. package/dist/audio/use-sfx-pool.js.map +1 -1
  47. package/dist/audio/voice-activity.cjs.map +1 -1
  48. package/dist/audio/voice-activity.js.map +1 -1
  49. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  50. package/dist/audio/voice-chain-stages.js.map +1 -1
  51. package/dist/audio/voice-chain.cjs.map +1 -1
  52. package/dist/audio/voice-chain.js.map +1 -1
  53. package/dist/audio/wav.cjs.map +1 -1
  54. package/dist/audio/wav.js.map +1 -1
  55. package/dist/auth/AuthGuard.cjs.map +1 -1
  56. package/dist/auth/AuthGuard.js.map +1 -1
  57. package/dist/auth/create-auth-store.cjs.map +1 -1
  58. package/dist/auth/create-auth-store.js.map +1 -1
  59. package/dist/auth/create-tempest-auth.cjs +1 -1
  60. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  61. package/dist/auth/create-tempest-auth.js +1 -3
  62. package/dist/auth/create-tempest-auth.js.map +1 -1
  63. package/dist/auth/jwt.cjs.map +1 -1
  64. package/dist/auth/jwt.js.map +1 -1
  65. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  66. package/dist/auth/lazy-with-retry.js.map +1 -1
  67. package/dist/auth/passkey.cjs.map +1 -1
  68. package/dist/auth/passkey.js.map +1 -1
  69. package/dist/auth/refresh-queue.cjs.map +1 -1
  70. package/dist/auth/refresh-queue.js.map +1 -1
  71. package/dist/auth/use-passkey.cjs +1 -1
  72. package/dist/auth/use-passkey.cjs.map +1 -1
  73. package/dist/auth/use-passkey.js +1 -1
  74. package/dist/auth/use-passkey.js.map +1 -1
  75. package/dist/br/BrazilMap.cjs.map +1 -1
  76. package/dist/br/BrazilMap.js.map +1 -1
  77. package/dist/br/BrazilMap.module.cjs.map +1 -1
  78. package/dist/br/BrazilMap.module.js.map +1 -1
  79. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  80. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  81. package/dist/br/BrazilStateMap.cjs.map +1 -1
  82. package/dist/br/BrazilStateMap.js.map +1 -1
  83. package/dist/br/MapLegend.cjs.map +1 -1
  84. package/dist/br/MapLegend.js.map +1 -1
  85. package/dist/br/MapLegend.module.cjs.map +1 -1
  86. package/dist/br/MapLegend.module.js.map +1 -1
  87. package/dist/br/MapMarkers.cjs.map +1 -1
  88. package/dist/br/MapMarkers.js.map +1 -1
  89. package/dist/br/MapTooltip.cjs.map +1 -1
  90. package/dist/br/MapTooltip.js.map +1 -1
  91. package/dist/br/MunicipalitySearch.cjs +1 -1
  92. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  93. package/dist/br/MunicipalitySearch.js +2 -5
  94. package/dist/br/MunicipalitySearch.js.map +1 -1
  95. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  96. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  97. package/dist/br/PixQRCode.cjs.map +1 -1
  98. package/dist/br/PixQRCode.js.map +1 -1
  99. package/dist/br/PixQRCode.module.cjs.map +1 -1
  100. package/dist/br/PixQRCode.module.js.map +1 -1
  101. package/dist/br/boleto.cjs.map +1 -1
  102. package/dist/br/boleto.js.map +1 -1
  103. package/dist/br/br-geo.cjs.map +1 -1
  104. package/dist/br/br-geo.js.map +1 -1
  105. package/dist/br/data/br-centroids.cjs.map +1 -1
  106. package/dist/br/data/br-centroids.js.map +1 -1
  107. package/dist/br/data/br-locations.cjs.map +1 -1
  108. package/dist/br/data/br-locations.js.map +1 -1
  109. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  110. package/dist/br/data/br-uf-geo.js.map +1 -1
  111. package/dist/br/data/mun/AC.cjs.map +1 -1
  112. package/dist/br/data/mun/AC.js.map +1 -1
  113. package/dist/br/data/mun/AL.cjs.map +1 -1
  114. package/dist/br/data/mun/AL.js.map +1 -1
  115. package/dist/br/data/mun/AM.cjs.map +1 -1
  116. package/dist/br/data/mun/AM.js.map +1 -1
  117. package/dist/br/data/mun/AP.cjs.map +1 -1
  118. package/dist/br/data/mun/AP.js.map +1 -1
  119. package/dist/br/data/mun/BA.cjs.map +1 -1
  120. package/dist/br/data/mun/BA.js.map +1 -1
  121. package/dist/br/data/mun/CE.cjs.map +1 -1
  122. package/dist/br/data/mun/CE.js.map +1 -1
  123. package/dist/br/data/mun/DF.cjs.map +1 -1
  124. package/dist/br/data/mun/DF.js.map +1 -1
  125. package/dist/br/data/mun/ES.cjs.map +1 -1
  126. package/dist/br/data/mun/ES.js.map +1 -1
  127. package/dist/br/data/mun/GO.cjs.map +1 -1
  128. package/dist/br/data/mun/GO.js.map +1 -1
  129. package/dist/br/data/mun/MA.cjs.map +1 -1
  130. package/dist/br/data/mun/MA.js.map +1 -1
  131. package/dist/br/data/mun/MG.cjs.map +1 -1
  132. package/dist/br/data/mun/MG.js.map +1 -1
  133. package/dist/br/data/mun/MS.cjs.map +1 -1
  134. package/dist/br/data/mun/MS.js.map +1 -1
  135. package/dist/br/data/mun/MT.cjs.map +1 -1
  136. package/dist/br/data/mun/MT.js.map +1 -1
  137. package/dist/br/data/mun/PA.cjs.map +1 -1
  138. package/dist/br/data/mun/PA.js.map +1 -1
  139. package/dist/br/data/mun/PB.cjs.map +1 -1
  140. package/dist/br/data/mun/PB.js.map +1 -1
  141. package/dist/br/data/mun/PE.cjs.map +1 -1
  142. package/dist/br/data/mun/PE.js.map +1 -1
  143. package/dist/br/data/mun/PI.cjs.map +1 -1
  144. package/dist/br/data/mun/PI.js.map +1 -1
  145. package/dist/br/data/mun/PR.cjs.map +1 -1
  146. package/dist/br/data/mun/PR.js.map +1 -1
  147. package/dist/br/data/mun/RJ.cjs.map +1 -1
  148. package/dist/br/data/mun/RJ.js.map +1 -1
  149. package/dist/br/data/mun/RN.cjs.map +1 -1
  150. package/dist/br/data/mun/RN.js.map +1 -1
  151. package/dist/br/data/mun/RO.cjs.map +1 -1
  152. package/dist/br/data/mun/RO.js.map +1 -1
  153. package/dist/br/data/mun/RR.cjs.map +1 -1
  154. package/dist/br/data/mun/RR.js.map +1 -1
  155. package/dist/br/data/mun/RS.cjs.map +1 -1
  156. package/dist/br/data/mun/RS.js.map +1 -1
  157. package/dist/br/data/mun/SC.cjs.map +1 -1
  158. package/dist/br/data/mun/SC.js.map +1 -1
  159. package/dist/br/data/mun/SE.cjs.map +1 -1
  160. package/dist/br/data/mun/SE.js.map +1 -1
  161. package/dist/br/data/mun/SP.cjs.map +1 -1
  162. package/dist/br/data/mun/SP.js.map +1 -1
  163. package/dist/br/data/mun/TO.cjs.map +1 -1
  164. package/dist/br/data/mun/TO.js.map +1 -1
  165. package/dist/br/geocode.cjs.map +1 -1
  166. package/dist/br/geocode.js.map +1 -1
  167. package/dist/br/holidays.cjs.map +1 -1
  168. package/dist/br/holidays.js.map +1 -1
  169. package/dist/br/locations.cjs.map +1 -1
  170. package/dist/br/locations.js.map +1 -1
  171. package/dist/br/nfe.cjs.map +1 -1
  172. package/dist/br/nfe.js.map +1 -1
  173. package/dist/br/pix.cjs +1 -1
  174. package/dist/br/pix.cjs.map +1 -1
  175. package/dist/br/pix.js +108 -74
  176. package/dist/br/pix.js.map +1 -1
  177. package/dist/br/regions.cjs.map +1 -1
  178. package/dist/br/regions.js.map +1 -1
  179. package/dist/br/scales.cjs.map +1 -1
  180. package/dist/br/scales.js.map +1 -1
  181. package/dist/br/state-geo.cjs.map +1 -1
  182. package/dist/br/state-geo.js.map +1 -1
  183. package/dist/br/svg-utils.cjs.map +1 -1
  184. package/dist/br/svg-utils.js.map +1 -1
  185. package/dist/br/use-map-hover.cjs.map +1 -1
  186. package/dist/br/use-map-hover.js.map +1 -1
  187. package/dist/br/use-map-zoom.cjs.map +1 -1
  188. package/dist/br/use-map-zoom.js.map +1 -1
  189. package/dist/br/whatsapp.cjs.map +1 -1
  190. package/dist/br/whatsapp.js.map +1 -1
  191. package/dist/br.cjs.map +1 -1
  192. package/dist/br.d.ts +6 -2
  193. package/dist/br.js.map +1 -1
  194. package/dist/capture/barcode.cjs.map +1 -1
  195. package/dist/capture/barcode.js.map +1 -1
  196. package/dist/capture/media-recorder.cjs.map +1 -1
  197. package/dist/capture/media-recorder.js.map +1 -1
  198. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  199. package/dist/capture/use-barcode-scanner.js.map +1 -1
  200. package/dist/capture/use-screen-capture.cjs +1 -1
  201. package/dist/capture/use-screen-capture.cjs.map +1 -1
  202. package/dist/capture/use-screen-capture.js +1 -7
  203. package/dist/capture/use-screen-capture.js.map +1 -1
  204. package/dist/capture/use-speech-recognition.cjs +1 -1
  205. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  206. package/dist/capture/use-speech-recognition.js +35 -36
  207. package/dist/capture/use-speech-recognition.js.map +1 -1
  208. package/dist/capture/use-torch.cjs.map +1 -1
  209. package/dist/capture/use-torch.js.map +1 -1
  210. package/dist/capture/use-video-recorder.cjs.map +1 -1
  211. package/dist/capture/use-video-recorder.js.map +1 -1
  212. package/dist/capture/video-recorder.cjs.map +1 -1
  213. package/dist/capture/video-recorder.js.map +1 -1
  214. package/dist/charts/AreaChart.cjs.map +1 -1
  215. package/dist/charts/AreaChart.js.map +1 -1
  216. package/dist/charts/BarChart.cjs.map +1 -1
  217. package/dist/charts/BarChart.js.map +1 -1
  218. package/dist/charts/LineChart.cjs.map +1 -1
  219. package/dist/charts/LineChart.js.map +1 -1
  220. package/dist/charts/PieChart.cjs.map +1 -1
  221. package/dist/charts/PieChart.js.map +1 -1
  222. package/dist/charts/RadarChart.cjs.map +1 -1
  223. package/dist/charts/RadarChart.js.map +1 -1
  224. package/dist/charts/palette.cjs.map +1 -1
  225. package/dist/charts/palette.js.map +1 -1
  226. package/dist/charts/scales.cjs.map +1 -1
  227. package/dist/charts/scales.js.map +1 -1
  228. package/dist/charts/types.cjs.map +1 -1
  229. package/dist/charts/types.js.map +1 -1
  230. package/dist/charts/use-chart-colors.cjs.map +1 -1
  231. package/dist/charts/use-chart-colors.js.map +1 -1
  232. package/dist/components/AIChat/AIChat.cjs +1 -1
  233. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  234. package/dist/components/AIChat/AIChat.js +1 -5
  235. package/dist/components/AIChat/AIChat.js.map +1 -1
  236. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  237. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  238. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  239. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  240. package/dist/components/AIChat/AIChatComposer.js +1 -7
  241. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  242. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  243. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  244. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  245. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  246. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  247. package/dist/components/Accordion/Accordion.js.map +1 -1
  248. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  249. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  250. package/dist/components/Alert/Alert.cjs.map +1 -1
  251. package/dist/components/Alert/Alert.js.map +1 -1
  252. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  253. package/dist/components/Alert/Alert.module.js.map +1 -1
  254. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  255. package/dist/components/AppBar/AppBar.js.map +1 -1
  256. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  257. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  258. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  259. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  260. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  261. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  262. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  263. package/dist/components/AppShell/AppShell.js.map +1 -1
  264. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  265. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  266. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  267. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  268. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  269. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  270. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  271. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  272. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  273. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  274. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  275. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  276. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  277. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  278. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  279. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  280. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  281. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  282. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  283. package/dist/components/Avatar/Avatar.js.map +1 -1
  284. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  285. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  286. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  287. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  288. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  289. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  290. package/dist/components/Badge/Badge.cjs.map +1 -1
  291. package/dist/components/Badge/Badge.js.map +1 -1
  292. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  293. package/dist/components/Badge/Badge.module.js.map +1 -1
  294. package/dist/components/Banner/Banner.cjs.map +1 -1
  295. package/dist/components/Banner/Banner.js.map +1 -1
  296. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  297. package/dist/components/Banner/Banner.module.js.map +1 -1
  298. package/dist/components/BarList/BarList.cjs.map +1 -1
  299. package/dist/components/BarList/BarList.js.map +1 -1
  300. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  301. package/dist/components/BarList/BarList.module.js.map +1 -1
  302. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  303. package/dist/components/BarList/bar-list-model.js.map +1 -1
  304. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  305. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  306. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  307. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  308. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  309. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  310. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  311. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  312. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  313. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  314. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  315. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  316. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  317. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  318. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  319. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  320. package/dist/components/Button/Button.cjs.map +1 -1
  321. package/dist/components/Button/Button.js.map +1 -1
  322. package/dist/components/Button/Button.module.cjs.map +1 -1
  323. package/dist/components/Button/Button.module.js.map +1 -1
  324. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  325. package/dist/components/Button/ButtonContent.js.map +1 -1
  326. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  327. package/dist/components/Button/ButtonSlot.js.map +1 -1
  328. package/dist/components/Button/button-class.cjs.map +1 -1
  329. package/dist/components/Button/button-class.js.map +1 -1
  330. package/dist/components/Button/link-rel.cjs.map +1 -1
  331. package/dist/components/Button/link-rel.js.map +1 -1
  332. package/dist/components/Button/slot.cjs.map +1 -1
  333. package/dist/components/Button/slot.js.map +1 -1
  334. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  335. package/dist/components/Calendar/Calendar.js.map +1 -1
  336. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  337. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  338. package/dist/components/Card/Card.cjs.map +1 -1
  339. package/dist/components/Card/Card.js.map +1 -1
  340. package/dist/components/Card/Card.module.cjs.map +1 -1
  341. package/dist/components/Card/Card.module.js.map +1 -1
  342. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  343. package/dist/components/Carousel/Carousel.js.map +1 -1
  344. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  345. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  346. package/dist/components/Center/Center.cjs.map +1 -1
  347. package/dist/components/Center/Center.js.map +1 -1
  348. package/dist/components/Center/Center.module.cjs.map +1 -1
  349. package/dist/components/Center/Center.module.js.map +1 -1
  350. package/dist/components/Chat/Chat.cjs.map +1 -1
  351. package/dist/components/Chat/Chat.js.map +1 -1
  352. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  353. package/dist/components/Chat/Chat.module.js.map +1 -1
  354. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  355. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  356. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  357. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  358. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  359. package/dist/components/Chat/ChatBubble.js.map +1 -1
  360. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  361. package/dist/components/Chat/ChatComposer.js.map +1 -1
  362. package/dist/components/Chat/chat-groups.cjs +1 -1
  363. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  364. package/dist/components/Chat/chat-groups.js +2 -6
  365. package/dist/components/Chat/chat-groups.js.map +1 -1
  366. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  367. package/dist/components/Chat/chat-receipt.js.map +1 -1
  368. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  369. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  370. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  371. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  372. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  373. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  374. package/dist/components/ChipInput/ChipInput.js +2 -12
  375. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  376. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  377. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  378. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  379. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  380. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  381. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  382. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  383. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  384. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  385. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  386. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  387. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  388. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  389. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  390. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  391. package/dist/components/Combobox/Combobox.js.map +1 -1
  392. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  393. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  394. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  395. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  396. package/dist/components/Command/Command.cjs +1 -1
  397. package/dist/components/Command/Command.cjs.map +1 -1
  398. package/dist/components/Command/Command.js +4 -11
  399. package/dist/components/Command/Command.js.map +1 -1
  400. package/dist/components/Command/Command.module.cjs.map +1 -1
  401. package/dist/components/Command/Command.module.js.map +1 -1
  402. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  403. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  404. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  405. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  406. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  407. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  408. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  409. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  410. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  411. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  412. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  413. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  414. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  415. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  416. package/dist/components/DataList/DataList.cjs.map +1 -1
  417. package/dist/components/DataList/DataList.js.map +1 -1
  418. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  419. package/dist/components/DataList/DataList.module.js.map +1 -1
  420. package/dist/components/DataTable/DataTable.cjs +1 -1
  421. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  422. package/dist/components/DataTable/DataTable.js +6 -14
  423. package/dist/components/DataTable/DataTable.js.map +1 -1
  424. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  425. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  426. package/dist/components/DataTable/EditableCell.cjs +1 -1
  427. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  428. package/dist/components/DataTable/EditableCell.js +1 -9
  429. package/dist/components/DataTable/EditableCell.js.map +1 -1
  430. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  431. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  432. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  433. package/dist/components/DataTable/edit-labels.js.map +1 -1
  434. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  435. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  436. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  437. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  438. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  439. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  440. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  441. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  442. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  443. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  444. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  445. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  446. package/dist/components/Divider/Divider.cjs.map +1 -1
  447. package/dist/components/Divider/Divider.js.map +1 -1
  448. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  449. package/dist/components/Divider/Divider.module.js.map +1 -1
  450. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  451. package/dist/components/Drawer/Drawer.js.map +1 -1
  452. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  453. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  454. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  455. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  456. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  457. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  458. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  459. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  460. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  461. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  462. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  463. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  464. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  465. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  466. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  467. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  468. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  469. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  470. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  471. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  472. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  473. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  474. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  475. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  476. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  477. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  478. package/dist/components/FileUpload/FileUpload.js +7 -17
  479. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  480. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  481. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  482. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  483. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  484. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  485. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  486. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  487. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  488. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  489. package/dist/components/FilterBar/filter-model.js.map +1 -1
  490. package/dist/components/FilterBar/filter-query.cjs +1 -1
  491. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  492. package/dist/components/FilterBar/filter-query.js +2 -5
  493. package/dist/components/FilterBar/filter-query.js.map +1 -1
  494. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  495. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  496. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  497. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  498. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  499. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  500. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  501. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  502. package/dist/components/For/For.cjs.map +1 -1
  503. package/dist/components/For/For.js.map +1 -1
  504. package/dist/components/Form/Form.cjs.map +1 -1
  505. package/dist/components/Form/Form.js.map +1 -1
  506. package/dist/components/Form/Form.module.cjs.map +1 -1
  507. package/dist/components/Form/Form.module.js.map +1 -1
  508. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  509. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  510. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  511. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  512. package/dist/components/Image/Image.cjs.map +1 -1
  513. package/dist/components/Image/Image.js.map +1 -1
  514. package/dist/components/Image/Image.module.cjs.map +1 -1
  515. package/dist/components/Image/Image.module.js.map +1 -1
  516. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  517. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  518. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  519. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  520. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  521. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  522. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  523. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  524. package/dist/components/Input/Input.cjs.map +1 -1
  525. package/dist/components/Input/Input.js.map +1 -1
  526. package/dist/components/Input/Input.module.cjs.map +1 -1
  527. package/dist/components/Input/Input.module.js.map +1 -1
  528. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  529. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  530. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  531. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  532. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  533. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  534. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  535. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  536. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  537. package/dist/components/InstallButton/install-hints.js.map +1 -1
  538. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  539. package/dist/components/Kanban/Kanban.js.map +1 -1
  540. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  541. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  542. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  543. package/dist/components/Kbd/Kbd.js.map +1 -1
  544. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  545. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  546. package/dist/components/Label/Label.cjs.map +1 -1
  547. package/dist/components/Label/Label.js.map +1 -1
  548. package/dist/components/Label/Label.module.cjs.map +1 -1
  549. package/dist/components/Label/Label.module.js.map +1 -1
  550. package/dist/components/Layout/Layout.cjs.map +1 -1
  551. package/dist/components/Layout/Layout.js.map +1 -1
  552. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  553. package/dist/components/Layout/Layout.module.js.map +1 -1
  554. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  555. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  556. package/dist/components/Lightbox/Lightbox.js +1 -1
  557. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  558. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  559. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  560. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  561. package/dist/components/ListTile/ListTile.js.map +1 -1
  562. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  563. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  564. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  565. package/dist/components/Markdown/Markdown.js.map +1 -1
  566. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  567. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  568. package/dist/components/Markdown/markdown-parse.cjs +2 -2
  569. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  570. package/dist/components/Markdown/markdown-parse.js +8 -27
  571. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  572. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  573. package/dist/components/Masonry/Masonry.js.map +1 -1
  574. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  575. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  576. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  577. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  578. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  579. package/dist/components/Menubar/Menubar.js.map +1 -1
  580. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  581. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  582. package/dist/components/Modal/Modal.cjs.map +1 -1
  583. package/dist/components/Modal/Modal.js.map +1 -1
  584. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  585. package/dist/components/Modal/Modal.module.js.map +1 -1
  586. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  587. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  588. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  589. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  590. package/dist/components/Money/Money.cjs.map +1 -1
  591. package/dist/components/Money/Money.js.map +1 -1
  592. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  593. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  594. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  595. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  596. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  597. package/dist/components/NProgress/NProgress.js.map +1 -1
  598. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  599. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  600. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  601. package/dist/components/Navbar/Navbar.js.map +1 -1
  602. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  603. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  604. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  605. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  606. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  607. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  608. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  609. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  610. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  611. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  612. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  613. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  614. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  615. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  616. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  617. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  618. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  619. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  620. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  621. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  622. package/dist/components/Page/Page.cjs.map +1 -1
  623. package/dist/components/Page/Page.js.map +1 -1
  624. package/dist/components/Page/Page.module.cjs.map +1 -1
  625. package/dist/components/Page/Page.module.js.map +1 -1
  626. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  627. package/dist/components/Pagination/Pagination.js.map +1 -1
  628. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  629. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  630. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  631. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  632. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  633. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  634. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  635. package/dist/components/PinInput/PinInput.js.map +1 -1
  636. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  637. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  638. package/dist/components/Popover/Popover.cjs.map +1 -1
  639. package/dist/components/Popover/Popover.js.map +1 -1
  640. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  641. package/dist/components/Popover/Popover.module.js.map +1 -1
  642. package/dist/components/Portal/Portal.cjs.map +1 -1
  643. package/dist/components/Portal/Portal.js.map +1 -1
  644. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  645. package/dist/components/Portal/anchor-position.js.map +1 -1
  646. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  647. package/dist/components/Portal/escape-layer.js.map +1 -1
  648. package/dist/components/Portal/portal-host.cjs.map +1 -1
  649. package/dist/components/Portal/portal-host.js.map +1 -1
  650. package/dist/components/Portal/tab-bridge.cjs +1 -1
  651. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  652. package/dist/components/Portal/tab-bridge.js +1 -5
  653. package/dist/components/Portal/tab-bridge.js.map +1 -1
  654. package/dist/components/Progress/Progress.cjs.map +1 -1
  655. package/dist/components/Progress/Progress.js.map +1 -1
  656. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  657. package/dist/components/Progress/Progress.module.js.map +1 -1
  658. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  659. package/dist/components/QRCode/QRCode.js.map +1 -1
  660. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  661. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  662. package/dist/components/QRCode/qr-encode.cjs +1 -1
  663. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  664. package/dist/components/QRCode/qr-encode.js +7 -13
  665. package/dist/components/QRCode/qr-encode.js.map +1 -1
  666. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  667. package/dist/components/QRCode/qr-tables.js.map +1 -1
  668. package/dist/components/Radio/Radio.cjs.map +1 -1
  669. package/dist/components/Radio/Radio.js.map +1 -1
  670. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  671. package/dist/components/Radio/Radio.module.js.map +1 -1
  672. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  673. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  674. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  675. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  676. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  677. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  678. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  679. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  680. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  681. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  682. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  683. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  684. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  685. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  686. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  687. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  688. package/dist/components/Resizable/Resizable.cjs +1 -1
  689. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  690. package/dist/components/Resizable/Resizable.js +1 -9
  691. package/dist/components/Resizable/Resizable.js.map +1 -1
  692. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  693. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  694. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  695. package/dist/components/Responsive/Responsive.js.map +1 -1
  696. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  697. package/dist/components/Reveal/Reveal.js.map +1 -1
  698. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  699. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  700. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  701. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  702. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  703. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  704. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  705. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  706. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  707. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  708. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  709. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  710. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  711. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  712. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  713. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  714. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  715. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  716. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  717. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  718. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  719. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  720. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  721. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  722. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  723. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  724. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  725. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  726. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  727. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  728. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  729. package/dist/components/Select/CaretIcon.js.map +1 -1
  730. package/dist/components/Select/Select.cjs.map +1 -1
  731. package/dist/components/Select/Select.js.map +1 -1
  732. package/dist/components/Select/Select.module.cjs.map +1 -1
  733. package/dist/components/Select/Select.module.js.map +1 -1
  734. package/dist/components/Select/options.cjs.map +1 -1
  735. package/dist/components/Select/options.js.map +1 -1
  736. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  737. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  738. package/dist/components/Sidebar/Sidebar.js +13 -23
  739. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  740. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  741. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  742. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  743. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  744. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  745. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  746. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  747. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  748. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  749. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  750. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  751. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  752. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  753. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  754. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  755. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  756. package/dist/components/Slider/Slider.cjs.map +1 -1
  757. package/dist/components/Slider/Slider.js.map +1 -1
  758. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  759. package/dist/components/Slider/Slider.module.js.map +1 -1
  760. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  761. package/dist/components/Spacer/Spacer.js.map +1 -1
  762. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  763. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  764. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  765. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  766. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  767. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  768. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  769. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  770. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  771. package/dist/components/Spinner/Spinner.js.map +1 -1
  772. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  773. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  774. package/dist/components/Stat/Stat.cjs.map +1 -1
  775. package/dist/components/Stat/Stat.js.map +1 -1
  776. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  777. package/dist/components/Stat/Stat.module.js.map +1 -1
  778. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  779. package/dist/components/Stepper/Stepper.js.map +1 -1
  780. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  781. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  782. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  783. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  784. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  785. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  786. package/dist/components/Switch/Switch.cjs.map +1 -1
  787. package/dist/components/Switch/Switch.js.map +1 -1
  788. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  789. package/dist/components/Switch/Switch.module.js.map +1 -1
  790. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  791. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  792. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  793. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  794. package/dist/components/Table/Table.cjs.map +1 -1
  795. package/dist/components/Table/Table.js.map +1 -1
  796. package/dist/components/Table/Table.module.cjs.map +1 -1
  797. package/dist/components/Table/Table.module.js.map +1 -1
  798. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  799. package/dist/components/Tabs/Tabs.js.map +1 -1
  800. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  801. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  802. package/dist/components/Tag/Tag.cjs.map +1 -1
  803. package/dist/components/Tag/Tag.js.map +1 -1
  804. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  805. package/dist/components/Tag/Tag.module.js.map +1 -1
  806. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  807. package/dist/components/Textarea/Textarea.js.map +1 -1
  808. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  809. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  810. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  811. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  812. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  813. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  814. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  815. package/dist/components/Timeline/Timeline.js.map +1 -1
  816. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  817. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  818. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  819. package/dist/components/Toast/Toast.module.js.map +1 -1
  820. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  821. package/dist/components/Toast/ToastProvider.js.map +1 -1
  822. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  823. package/dist/components/Toggle/Toggle.js.map +1 -1
  824. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  825. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  826. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  827. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  828. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  829. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  830. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  831. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  832. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  833. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  834. package/dist/components/Tour/Tour.cjs +1 -1
  835. package/dist/components/Tour/Tour.cjs.map +1 -1
  836. package/dist/components/Tour/Tour.js +1 -5
  837. package/dist/components/Tour/Tour.js.map +1 -1
  838. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  839. package/dist/components/Tour/Tour.module.js.map +1 -1
  840. package/dist/components/Tour/tour-position.cjs.map +1 -1
  841. package/dist/components/Tour/tour-position.js.map +1 -1
  842. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  843. package/dist/components/Transfer/Transfer.js.map +1 -1
  844. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  845. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  846. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  847. package/dist/components/Transfer/transfer-state.js.map +1 -1
  848. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  849. package/dist/components/TreeView/TreeView.js.map +1 -1
  850. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  851. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  852. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  853. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  854. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  855. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  856. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  857. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  858. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  859. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  860. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  861. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  862. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  863. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  864. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  865. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  866. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  867. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  868. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  869. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  870. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  871. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  872. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  873. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  874. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  875. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  876. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  877. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  878. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  879. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  880. package/dist/components/Wizard/Wizard.cjs +1 -1
  881. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  882. package/dist/components/Wizard/Wizard.js +4 -11
  883. package/dist/components/Wizard/Wizard.js.map +1 -1
  884. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  885. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  886. package/dist/data/create-data-provider.cjs.map +1 -1
  887. package/dist/data/create-data-provider.js.map +1 -1
  888. package/dist/data/data-provider-context.cjs.map +1 -1
  889. package/dist/data/data-provider-context.js.map +1 -1
  890. package/dist/data/use-resource.cjs.map +1 -1
  891. package/dist/data/use-resource.js.map +1 -1
  892. package/dist/editor/RichTextEditor.cjs.map +1 -1
  893. package/dist/editor/RichTextEditor.js.map +1 -1
  894. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  895. package/dist/editor/RichTextEditor.module.js.map +1 -1
  896. package/dist/editor.js +1 -2
  897. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  898. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  899. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  900. package/dist/error-boundary/use-error-handler.js.map +1 -1
  901. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  902. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  903. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  904. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  905. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  906. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  907. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  908. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  909. package/dist/forms/FormField.cjs.map +1 -1
  910. package/dist/forms/FormField.js.map +1 -1
  911. package/dist/forms/br-validators.cjs.map +1 -1
  912. package/dist/forms/br-validators.js.map +1 -1
  913. package/dist/forms/masked-inputs.cjs.map +1 -1
  914. package/dist/forms/masked-inputs.js.map +1 -1
  915. package/dist/forms/use-viacep.cjs.map +1 -1
  916. package/dist/forms/use-viacep.js.map +1 -1
  917. package/dist/forms/use-zod-form.cjs.map +1 -1
  918. package/dist/forms/use-zod-form.js.map +1 -1
  919. package/dist/forms/validate-form.cjs.map +1 -1
  920. package/dist/forms/validate-form.js.map +1 -1
  921. package/dist/forms/zod-resolver.cjs.map +1 -1
  922. package/dist/forms/zod-resolver.js.map +1 -1
  923. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  924. package/dist/geo/TrajectoryMap.js.map +1 -1
  925. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  926. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  927. package/dist/geo/bounds.cjs.map +1 -1
  928. package/dist/geo/bounds.js.map +1 -1
  929. package/dist/geo/create-position-tracker.cjs +1 -1
  930. package/dist/geo/create-position-tracker.cjs.map +1 -1
  931. package/dist/geo/create-position-tracker.js +1 -7
  932. package/dist/geo/create-position-tracker.js.map +1 -1
  933. package/dist/geo/distance.cjs.map +1 -1
  934. package/dist/geo/distance.js.map +1 -1
  935. package/dist/geo/estimate.cjs.map +1 -1
  936. package/dist/geo/estimate.js.map +1 -1
  937. package/dist/geo/leaflet-map.cjs.map +1 -1
  938. package/dist/geo/leaflet-map.js.map +1 -1
  939. package/dist/geo/projection.cjs.map +1 -1
  940. package/dist/geo/projection.js.map +1 -1
  941. package/dist/geo/routing.cjs.map +1 -1
  942. package/dist/geo/routing.js.map +1 -1
  943. package/dist/geo/types.cjs.map +1 -1
  944. package/dist/geo/types.js.map +1 -1
  945. package/dist/geo/use-position-tracker.cjs.map +1 -1
  946. package/dist/geo/use-position-tracker.js.map +1 -1
  947. package/dist/hooks/pwa-env.cjs.map +1 -1
  948. package/dist/hooks/pwa-env.js.map +1 -1
  949. package/dist/hooks/tab-sequence.cjs.map +1 -1
  950. package/dist/hooks/tab-sequence.js.map +1 -1
  951. package/dist/hooks/use-announce.cjs +1 -1
  952. package/dist/hooks/use-announce.cjs.map +1 -1
  953. package/dist/hooks/use-announce.js +2 -2
  954. package/dist/hooks/use-announce.js.map +1 -1
  955. package/dist/hooks/use-async.cjs.map +1 -1
  956. package/dist/hooks/use-async.js.map +1 -1
  957. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  958. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  959. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  960. package/dist/hooks/use-breakpoint.js.map +1 -1
  961. package/dist/hooks/use-click-outside.cjs.map +1 -1
  962. package/dist/hooks/use-click-outside.js.map +1 -1
  963. package/dist/hooks/use-client-filter.cjs.map +1 -1
  964. package/dist/hooks/use-client-filter.js.map +1 -1
  965. package/dist/hooks/use-clipboard.cjs.map +1 -1
  966. package/dist/hooks/use-clipboard.js.map +1 -1
  967. package/dist/hooks/use-countdown.cjs.map +1 -1
  968. package/dist/hooks/use-countdown.js.map +1 -1
  969. package/dist/hooks/use-counter.cjs.map +1 -1
  970. package/dist/hooks/use-counter.js.map +1 -1
  971. package/dist/hooks/use-debounce.cjs.map +1 -1
  972. package/dist/hooks/use-debounce.js.map +1 -1
  973. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  974. package/dist/hooks/use-deep-memo.js.map +1 -1
  975. package/dist/hooks/use-disclosure.cjs.map +1 -1
  976. package/dist/hooks/use-disclosure.js.map +1 -1
  977. package/dist/hooks/use-document-title.cjs.map +1 -1
  978. package/dist/hooks/use-document-title.js.map +1 -1
  979. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  980. package/dist/hooks/use-document-visibility.js.map +1 -1
  981. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  982. package/dist/hooks/use-draft-filters.js.map +1 -1
  983. package/dist/hooks/use-event-listener.cjs.map +1 -1
  984. package/dist/hooks/use-event-listener.js.map +1 -1
  985. package/dist/hooks/use-favicon.cjs.map +1 -1
  986. package/dist/hooks/use-favicon.js.map +1 -1
  987. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  988. package/dist/hooks/use-focus-trap.js.map +1 -1
  989. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  990. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  991. package/dist/hooks/use-fullscreen.cjs +1 -1
  992. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  993. package/dist/hooks/use-fullscreen.js +7 -23
  994. package/dist/hooks/use-fullscreen.js.map +1 -1
  995. package/dist/hooks/use-geolocation.cjs.map +1 -1
  996. package/dist/hooks/use-geolocation.js.map +1 -1
  997. package/dist/hooks/use-hover.cjs.map +1 -1
  998. package/dist/hooks/use-hover.js.map +1 -1
  999. package/dist/hooks/use-idle.cjs.map +1 -1
  1000. package/dist/hooks/use-idle.js.map +1 -1
  1001. package/dist/hooks/use-install-prompt.cjs +1 -1
  1002. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1003. package/dist/hooks/use-install-prompt.js +1 -1
  1004. package/dist/hooks/use-install-prompt.js.map +1 -1
  1005. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1006. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1007. package/dist/hooks/use-interval.cjs.map +1 -1
  1008. package/dist/hooks/use-interval.js.map +1 -1
  1009. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1010. package/dist/hooks/use-is-first-render.js.map +1 -1
  1011. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1012. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1013. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1014. package/dist/hooks/use-latest-ref.js.map +1 -1
  1015. package/dist/hooks/use-list-state.cjs.map +1 -1
  1016. package/dist/hooks/use-list-state.js.map +1 -1
  1017. package/dist/hooks/use-local-storage.cjs +1 -1
  1018. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1019. package/dist/hooks/use-local-storage.js +2 -5
  1020. package/dist/hooks/use-local-storage.js.map +1 -1
  1021. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1022. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1023. package/dist/hooks/use-long-press.cjs.map +1 -1
  1024. package/dist/hooks/use-long-press.js.map +1 -1
  1025. package/dist/hooks/use-map.cjs.map +1 -1
  1026. package/dist/hooks/use-map.js.map +1 -1
  1027. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1028. package/dist/hooks/use-media-devices.js.map +1 -1
  1029. package/dist/hooks/use-media-permission.cjs +1 -1
  1030. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1031. package/dist/hooks/use-media-permission.js +2 -5
  1032. package/dist/hooks/use-media-permission.js.map +1 -1
  1033. package/dist/hooks/use-media-query.cjs.map +1 -1
  1034. package/dist/hooks/use-media-query.js.map +1 -1
  1035. package/dist/hooks/use-object-url.cjs.map +1 -1
  1036. package/dist/hooks/use-object-url.js.map +1 -1
  1037. package/dist/hooks/use-online.cjs.map +1 -1
  1038. package/dist/hooks/use-online.js.map +1 -1
  1039. package/dist/hooks/use-pagination.cjs.map +1 -1
  1040. package/dist/hooks/use-pagination.js.map +1 -1
  1041. package/dist/hooks/use-previous.cjs.map +1 -1
  1042. package/dist/hooks/use-previous.js.map +1 -1
  1043. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1044. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1045. package/dist/hooks/use-queue.cjs.map +1 -1
  1046. package/dist/hooks/use-queue.js.map +1 -1
  1047. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1048. package/dist/hooks/use-resize-observer.js.map +1 -1
  1049. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1050. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1051. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1052. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1053. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1054. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1055. package/dist/hooks/use-set.cjs.map +1 -1
  1056. package/dist/hooks/use-set.js.map +1 -1
  1057. package/dist/hooks/use-sortable.cjs.map +1 -1
  1058. package/dist/hooks/use-sortable.js.map +1 -1
  1059. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1060. package/dist/hooks/use-stable-callback.js.map +1 -1
  1061. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1062. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1063. package/dist/hooks/use-throttle.cjs.map +1 -1
  1064. package/dist/hooks/use-throttle.js.map +1 -1
  1065. package/dist/hooks/use-timeout.cjs.map +1 -1
  1066. package/dist/hooks/use-timeout.js.map +1 -1
  1067. package/dist/hooks/use-toggle.cjs.map +1 -1
  1068. package/dist/hooks/use-toggle.js.map +1 -1
  1069. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1070. package/dist/hooks/use-typewriter.js.map +1 -1
  1071. package/dist/hooks/use-window-size.cjs.map +1 -1
  1072. package/dist/hooks/use-window-size.js.map +1 -1
  1073. package/dist/http/api-client.cjs.map +1 -1
  1074. package/dist/http/api-client.js.map +1 -1
  1075. package/dist/http/build-url.cjs.map +1 -1
  1076. package/dist/http/build-url.js.map +1 -1
  1077. package/dist/http/credential-scope.cjs.map +1 -1
  1078. package/dist/http/credential-scope.js.map +1 -1
  1079. package/dist/http/csrf.cjs.map +1 -1
  1080. package/dist/http/csrf.js.map +1 -1
  1081. package/dist/http/decode-response.cjs.map +1 -1
  1082. package/dist/http/decode-response.js.map +1 -1
  1083. package/dist/http/describe-api-error.cjs.map +1 -1
  1084. package/dist/http/describe-api-error.js.map +1 -1
  1085. package/dist/http/errors.cjs.map +1 -1
  1086. package/dist/http/errors.js.map +1 -1
  1087. package/dist/http/idempotency.cjs.map +1 -1
  1088. package/dist/http/idempotency.js.map +1 -1
  1089. package/dist/http/parse-response.cjs.map +1 -1
  1090. package/dist/http/parse-response.js.map +1 -1
  1091. package/dist/http/resumable-upload.cjs.map +1 -1
  1092. package/dist/http/resumable-upload.js.map +1 -1
  1093. package/dist/http/retry.cjs.map +1 -1
  1094. package/dist/http/retry.js.map +1 -1
  1095. package/dist/http/timeout.cjs.map +1 -1
  1096. package/dist/http/timeout.js.map +1 -1
  1097. package/dist/http/upload-with-progress.cjs +1 -1
  1098. package/dist/http/upload-with-progress.cjs.map +1 -1
  1099. package/dist/http/upload-with-progress.js +2 -7
  1100. package/dist/http/upload-with-progress.js.map +1 -1
  1101. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1102. package/dist/http/use-describe-api-error.js.map +1 -1
  1103. package/dist/http/use-poll.cjs +1 -1
  1104. package/dist/http/use-poll.cjs.map +1 -1
  1105. package/dist/http/use-poll.js +2 -5
  1106. package/dist/http/use-poll.js.map +1 -1
  1107. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1108. package/dist/i18n/I18nProvider.js.map +1 -1
  1109. package/dist/i18n/create-i18n.cjs.map +1 -1
  1110. package/dist/i18n/create-i18n.js.map +1 -1
  1111. package/dist/icons/Icon.cjs.map +1 -1
  1112. package/dist/icons/Icon.js.map +1 -1
  1113. package/dist/icons/IconPicker.cjs.map +1 -1
  1114. package/dist/icons/IconPicker.js.map +1 -1
  1115. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1116. package/dist/icons/IconPicker.module.js.map +1 -1
  1117. package/dist/icons/IconProvider.cjs.map +1 -1
  1118. package/dist/icons/IconProvider.js.map +1 -1
  1119. package/dist/icons/alias.cjs.map +1 -1
  1120. package/dist/icons/alias.js.map +1 -1
  1121. package/dist/icons/generated/aliases.cjs.map +1 -1
  1122. package/dist/icons/generated/aliases.js.map +1 -1
  1123. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1124. package/dist/icons/generated/icon-names.js.map +1 -1
  1125. package/dist/icons/generated/loaders.cjs.map +1 -1
  1126. package/dist/icons/generated/loaders.js.map +1 -1
  1127. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1128. package/dist/icons/generated/shard-00.js.map +1 -1
  1129. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1130. package/dist/icons/generated/shard-01.js.map +1 -1
  1131. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1132. package/dist/icons/generated/shard-02.js.map +1 -1
  1133. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1134. package/dist/icons/generated/shard-03.js.map +1 -1
  1135. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1136. package/dist/icons/generated/shard-04.js.map +1 -1
  1137. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1138. package/dist/icons/generated/shard-05.js.map +1 -1
  1139. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1140. package/dist/icons/generated/shard-06.js.map +1 -1
  1141. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1142. package/dist/icons/generated/shard-07.js.map +1 -1
  1143. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1144. package/dist/icons/generated/shard-08.js.map +1 -1
  1145. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1146. package/dist/icons/generated/shard-09.js.map +1 -1
  1147. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1148. package/dist/icons/generated/shard-10.js.map +1 -1
  1149. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1150. package/dist/icons/generated/shard-11.js.map +1 -1
  1151. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1152. package/dist/icons/generated/shard-12.js.map +1 -1
  1153. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-13.js.map +1 -1
  1155. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-14.js.map +1 -1
  1157. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-15.js.map +1 -1
  1159. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-16.js.map +1 -1
  1161. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-17.js.map +1 -1
  1163. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-18.js.map +1 -1
  1165. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-19.js.map +1 -1
  1167. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-20.js.map +1 -1
  1169. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-21.js.map +1 -1
  1171. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-22.js.map +1 -1
  1173. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-23.js.map +1 -1
  1175. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-24.js.map +1 -1
  1177. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-25.js.map +1 -1
  1179. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-26.js.map +1 -1
  1181. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-27.js.map +1 -1
  1183. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-28.js.map +1 -1
  1185. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-29.js.map +1 -1
  1187. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-30.js.map +1 -1
  1189. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-31.js.map +1 -1
  1191. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-32.js.map +1 -1
  1193. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-33.js.map +1 -1
  1195. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-34.js.map +1 -1
  1197. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-35.js.map +1 -1
  1199. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-36.js.map +1 -1
  1201. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-37.js.map +1 -1
  1203. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-38.js.map +1 -1
  1205. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-39.js.map +1 -1
  1207. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-40.js.map +1 -1
  1209. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-41.js.map +1 -1
  1211. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-42.js.map +1 -1
  1213. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-43.js.map +1 -1
  1215. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-44.js.map +1 -1
  1217. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-45.js.map +1 -1
  1219. package/dist/icons/icon-context.cjs.map +1 -1
  1220. package/dist/icons/icon-context.js.map +1 -1
  1221. package/dist/icons/is-icon-name.cjs.map +1 -1
  1222. package/dist/icons/is-icon-name.js.map +1 -1
  1223. package/dist/icons/material-symbols.cjs.map +1 -1
  1224. package/dist/icons/material-symbols.js.map +1 -1
  1225. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1226. package/dist/icons/normalize-icon-name.js.map +1 -1
  1227. package/dist/icons/shard-cache.cjs +1 -1
  1228. package/dist/icons/shard-cache.cjs.map +1 -1
  1229. package/dist/icons/shard-cache.js +2 -5
  1230. package/dist/icons/shard-cache.js.map +1 -1
  1231. package/dist/icons/use-icon.cjs.map +1 -1
  1232. package/dist/icons/use-icon.js.map +1 -1
  1233. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1234. package/dist/icons/validate-icon-name.js.map +1 -1
  1235. package/dist/icons-virtual.cjs.map +1 -1
  1236. package/dist/icons-virtual.js.map +1 -1
  1237. package/dist/imaging/canvas.cjs.map +1 -1
  1238. package/dist/imaging/canvas.js.map +1 -1
  1239. package/dist/imaging/compress.cjs.map +1 -1
  1240. package/dist/imaging/compress.js.map +1 -1
  1241. package/dist/imaging/decode.cjs.map +1 -1
  1242. package/dist/imaging/decode.js.map +1 -1
  1243. package/dist/imaging/encode.cjs.map +1 -1
  1244. package/dist/imaging/encode.js.map +1 -1
  1245. package/dist/imaging/exceptions.cjs.map +1 -1
  1246. package/dist/imaging/exceptions.js.map +1 -1
  1247. package/dist/imaging/frame.cjs.map +1 -1
  1248. package/dist/imaging/frame.js.map +1 -1
  1249. package/dist/imaging/thumbnails.cjs.map +1 -1
  1250. package/dist/imaging/thumbnails.js.map +1 -1
  1251. package/dist/imaging/transform.cjs.map +1 -1
  1252. package/dist/imaging/transform.js.map +1 -1
  1253. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1254. package/dist/imaging/use-image-processing.js.map +1 -1
  1255. package/dist/logger/logger.cjs.map +1 -1
  1256. package/dist/logger/logger.js.map +1 -1
  1257. package/dist/neural.cjs.map +1 -1
  1258. package/dist/neural.js.map +1 -1
  1259. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1260. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1261. package/dist/oauth/GoogleSignIn.js +6 -9
  1262. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1263. package/dist/oauth/callback.cjs.map +1 -1
  1264. package/dist/oauth/callback.js.map +1 -1
  1265. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1266. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1267. package/dist/offline/conflict.cjs.map +1 -1
  1268. package/dist/offline/conflict.js.map +1 -1
  1269. package/dist/offline/create-offline-database.cjs.map +1 -1
  1270. package/dist/offline/create-offline-database.js.map +1 -1
  1271. package/dist/offline/create-offline-store.cjs +1 -1
  1272. package/dist/offline/create-offline-store.cjs.map +1 -1
  1273. package/dist/offline/create-offline-store.js +1 -5
  1274. package/dist/offline/create-offline-store.js.map +1 -1
  1275. package/dist/offline/create-offline-sync.cjs +1 -1
  1276. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1277. package/dist/offline/create-offline-sync.js +9 -14
  1278. package/dist/offline/create-offline-sync.js.map +1 -1
  1279. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1280. package/dist/offline/use-offline-sync.js.map +1 -1
  1281. package/dist/perf/cache-size.cjs.map +1 -1
  1282. package/dist/perf/cache-size.js.map +1 -1
  1283. package/dist/perf/device.cjs.map +1 -1
  1284. package/dist/perf/device.js.map +1 -1
  1285. package/dist/perf/format.cjs.map +1 -1
  1286. package/dist/perf/format.js.map +1 -1
  1287. package/dist/perf/profiler.cjs.map +1 -1
  1288. package/dist/perf/profiler.js.map +1 -1
  1289. package/dist/push/use-push-subscription.cjs.map +1 -1
  1290. package/dist/push/use-push-subscription.js.map +1 -1
  1291. package/dist/push/utils.cjs.map +1 -1
  1292. package/dist/push/utils.js.map +1 -1
  1293. package/dist/push/web-push-client.cjs.map +1 -1
  1294. package/dist/push/web-push-client.js.map +1 -1
  1295. package/dist/query/QueryProvider.cjs.map +1 -1
  1296. package/dist/query/QueryProvider.js.map +1 -1
  1297. package/dist/query/constants.cjs.map +1 -1
  1298. package/dist/query/constants.js.map +1 -1
  1299. package/dist/query/create-query-keys.cjs.map +1 -1
  1300. package/dist/query/create-query-keys.js.map +1 -1
  1301. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1302. package/dist/query/foreign-client-warning.js.map +1 -1
  1303. package/dist/query/offline-persistence.cjs +1 -1
  1304. package/dist/query/offline-persistence.cjs.map +1 -1
  1305. package/dist/query/offline-persistence.js +2 -10
  1306. package/dist/query/offline-persistence.js.map +1 -1
  1307. package/dist/query/optimistic.cjs.map +1 -1
  1308. package/dist/query/optimistic.js.map +1 -1
  1309. package/dist/query/pagination.cjs.map +1 -1
  1310. package/dist/query/pagination.js.map +1 -1
  1311. package/dist/query/retry-policy.cjs.map +1 -1
  1312. package/dist/query/retry-policy.js.map +1 -1
  1313. package/dist/query/use-cursor-query.cjs.map +1 -1
  1314. package/dist/query/use-cursor-query.js.map +1 -1
  1315. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1316. package/dist/query/use-offline-mutation.js.map +1 -1
  1317. package/dist/query/use-paginated-query.cjs.map +1 -1
  1318. package/dist/query/use-paginated-query.js.map +1 -1
  1319. package/dist/router/AppRouter.cjs.map +1 -1
  1320. package/dist/router/AppRouter.js.map +1 -1
  1321. package/dist/router/RouteGuard.cjs.map +1 -1
  1322. package/dist/router/RouteGuard.js.map +1 -1
  1323. package/dist/router/index.js +2 -2
  1324. package/dist/share/share-or-download.cjs.map +1 -1
  1325. package/dist/share/share-or-download.js.map +1 -1
  1326. package/dist/share/share.cjs.map +1 -1
  1327. package/dist/share/share.js.map +1 -1
  1328. package/dist/sse/create-event-stream.cjs.map +1 -1
  1329. package/dist/sse/create-event-stream.js.map +1 -1
  1330. package/dist/sse/use-event-stream.cjs.map +1 -1
  1331. package/dist/sse/use-event-stream.js.map +1 -1
  1332. package/dist/store/create-selectors.cjs.map +1 -1
  1333. package/dist/store/create-selectors.js.map +1 -1
  1334. package/dist/store/create-store.cjs.map +1 -1
  1335. package/dist/store/create-store.js.map +1 -1
  1336. package/dist/sw/background-sync.cjs.map +1 -1
  1337. package/dist/sw/background-sync.js.map +1 -1
  1338. package/dist/sw/cache-inspect.cjs.map +1 -1
  1339. package/dist/sw/cache-inspect.js.map +1 -1
  1340. package/dist/sw/cache.cjs +1 -1
  1341. package/dist/sw/cache.cjs.map +1 -1
  1342. package/dist/sw/cache.js +2 -6
  1343. package/dist/sw/cache.js.map +1 -1
  1344. package/dist/sw/create-push-handler.cjs.map +1 -1
  1345. package/dist/sw/create-push-handler.js.map +1 -1
  1346. package/dist/sw/credential-headers.cjs.map +1 -1
  1347. package/dist/sw/credential-headers.js.map +1 -1
  1348. package/dist/sw/periodic-sync.cjs.map +1 -1
  1349. package/dist/sw/periodic-sync.js.map +1 -1
  1350. package/dist/sw/register-service-worker.cjs.map +1 -1
  1351. package/dist/sw/register-service-worker.js.map +1 -1
  1352. package/dist/sw/session-data.cjs.map +1 -1
  1353. package/dist/sw/session-data.js.map +1 -1
  1354. package/dist/tabular/assets.cjs.map +1 -1
  1355. package/dist/tabular/assets.js.map +1 -1
  1356. package/dist/tabular/cache.cjs.map +1 -1
  1357. package/dist/tabular/cache.js.map +1 -1
  1358. package/dist/tabular/compact.cjs.map +1 -1
  1359. package/dist/tabular/compact.js.map +1 -1
  1360. package/dist/tabular/exceptions.cjs.map +1 -1
  1361. package/dist/tabular/exceptions.js.map +1 -1
  1362. package/dist/tabular/manifest.cjs.map +1 -1
  1363. package/dist/tabular/manifest.js.map +1 -1
  1364. package/dist/tabular/predictor.cjs.map +1 -1
  1365. package/dist/tabular/predictor.js.map +1 -1
  1366. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1367. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1368. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1369. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1370. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1371. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1372. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1373. package/dist/telemetry/app-error-queue.js.map +1 -1
  1374. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1375. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1376. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1377. package/dist/telemetry/app-error-schema.js.map +1 -1
  1378. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1379. package/dist/telemetry/app-error-transport.js.map +1 -1
  1380. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1381. package/dist/telemetry/console-adapter.js.map +1 -1
  1382. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1383. package/dist/telemetry/describe-app-error.js.map +1 -1
  1384. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1385. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1386. package/dist/telemetry/posthog-adapter.js +1 -5
  1387. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1388. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1389. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1390. package/dist/tempest-react-sdk.cjs +1 -1
  1391. package/dist/tempest-react-sdk.d.ts +234 -3
  1392. package/dist/tempest-react-sdk.js +85 -85
  1393. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1394. package/dist/testing/create-mock-handlers.js.map +1 -1
  1395. package/dist/testing.js +1 -2
  1396. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1397. package/dist/theme/ThemeProvider.js.map +1 -1
  1398. package/dist/theme/apply-theme.cjs.map +1 -1
  1399. package/dist/theme/apply-theme.js.map +1 -1
  1400. package/dist/theme/color.cjs.map +1 -1
  1401. package/dist/theme/color.js.map +1 -1
  1402. package/dist/theme/create-theme.cjs.map +1 -1
  1403. package/dist/theme/create-theme.js.map +1 -1
  1404. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1405. package/dist/theme/data-viz-ramps.js.map +1 -1
  1406. package/dist/theme/initial-theme.cjs.map +1 -1
  1407. package/dist/theme/initial-theme.js.map +1 -1
  1408. package/dist/theme/inverse-render.cjs.map +1 -1
  1409. package/dist/theme/inverse-render.js.map +1 -1
  1410. package/dist/theme/inverse-restore.cjs.map +1 -1
  1411. package/dist/theme/inverse-restore.js.map +1 -1
  1412. package/dist/theme/inverse-surface.cjs.map +1 -1
  1413. package/dist/theme/inverse-surface.js.map +1 -1
  1414. package/dist/theme/status-tokens.cjs.map +1 -1
  1415. package/dist/theme/status-tokens.js.map +1 -1
  1416. package/dist/theme/theme-presets.cjs.map +1 -1
  1417. package/dist/theme/theme-presets.js.map +1 -1
  1418. package/dist/utils/absent.cjs.map +1 -1
  1419. package/dist/utils/absent.js.map +1 -1
  1420. package/dist/utils/arrays.cjs.map +1 -1
  1421. package/dist/utils/arrays.js.map +1 -1
  1422. package/dist/utils/base64.cjs.map +1 -1
  1423. package/dist/utils/base64.js.map +1 -1
  1424. package/dist/utils/cn.cjs.map +1 -1
  1425. package/dist/utils/cn.js.map +1 -1
  1426. package/dist/utils/compare-values.cjs.map +1 -1
  1427. package/dist/utils/compare-values.js.map +1 -1
  1428. package/dist/utils/compressed-storage.cjs.map +1 -1
  1429. package/dist/utils/compressed-storage.js.map +1 -1
  1430. package/dist/utils/csv.cjs.map +1 -1
  1431. package/dist/utils/csv.js.map +1 -1
  1432. package/dist/utils/dev-mode.cjs.map +1 -1
  1433. package/dist/utils/dev-mode.js.map +1 -1
  1434. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1435. package/dist/utils/duplicate-instance.js.map +1 -1
  1436. package/dist/utils/format.cjs.map +1 -1
  1437. package/dist/utils/format.js.map +1 -1
  1438. package/dist/utils/functions.cjs +1 -1
  1439. package/dist/utils/functions.cjs.map +1 -1
  1440. package/dist/utils/functions.js +1 -1
  1441. package/dist/utils/functions.js.map +1 -1
  1442. package/dist/utils/guards.cjs.map +1 -1
  1443. package/dist/utils/guards.js.map +1 -1
  1444. package/dist/utils/ids.cjs.map +1 -1
  1445. package/dist/utils/ids.js.map +1 -1
  1446. package/dist/utils/intl-cache.cjs.map +1 -1
  1447. package/dist/utils/intl-cache.js.map +1 -1
  1448. package/dist/utils/json-frame.cjs.map +1 -1
  1449. package/dist/utils/json-frame.js.map +1 -1
  1450. package/dist/utils/numbers.cjs.map +1 -1
  1451. package/dist/utils/numbers.js.map +1 -1
  1452. package/dist/utils/objects.cjs.map +1 -1
  1453. package/dist/utils/objects.js.map +1 -1
  1454. package/dist/utils/owner-fingerprint.cjs.map +1 -1
  1455. package/dist/utils/owner-fingerprint.js.map +1 -1
  1456. package/dist/utils/promises.cjs.map +1 -1
  1457. package/dist/utils/promises.js.map +1 -1
  1458. package/dist/utils/relative-time.cjs.map +1 -1
  1459. package/dist/utils/relative-time.js.map +1 -1
  1460. package/dist/utils/safe-url.cjs.map +1 -1
  1461. package/dist/utils/safe-url.js.map +1 -1
  1462. package/dist/utils/schema-like.cjs.map +1 -1
  1463. package/dist/utils/schema-like.js.map +1 -1
  1464. package/dist/utils/storage.cjs +1 -1
  1465. package/dist/utils/storage.cjs.map +1 -1
  1466. package/dist/utils/storage.js +2 -2
  1467. package/dist/utils/storage.js.map +1 -1
  1468. package/dist/utils/strings.cjs.map +1 -1
  1469. package/dist/utils/strings.js.map +1 -1
  1470. package/dist/utils/xlsx.cjs.map +1 -1
  1471. package/dist/utils/xlsx.js.map +1 -1
  1472. package/dist/vision/core/canvas.cjs.map +1 -1
  1473. package/dist/vision/core/canvas.js.map +1 -1
  1474. package/dist/vision/core/dtypes.cjs.map +1 -1
  1475. package/dist/vision/core/dtypes.js.map +1 -1
  1476. package/dist/vision/core/exceptions.cjs.map +1 -1
  1477. package/dist/vision/core/exceptions.js.map +1 -1
  1478. package/dist/vision/core/graph.cjs.map +1 -1
  1479. package/dist/vision/core/graph.js.map +1 -1
  1480. package/dist/vision/core/metadata.cjs +1 -1
  1481. package/dist/vision/core/metadata.cjs.map +1 -1
  1482. package/dist/vision/core/metadata.js +9 -26
  1483. package/dist/vision/core/metadata.js.map +1 -1
  1484. package/dist/vision/core/providers.cjs.map +1 -1
  1485. package/dist/vision/core/providers.js.map +1 -1
  1486. package/dist/vision/core/session.cjs.map +1 -1
  1487. package/dist/vision/core/session.js.map +1 -1
  1488. package/dist/vision/core/timing.cjs.map +1 -1
  1489. package/dist/vision/core/timing.js.map +1 -1
  1490. package/dist/vision/fusion.cjs.map +1 -1
  1491. package/dist/vision/fusion.js.map +1 -1
  1492. package/dist/vision/index.cjs.map +1 -1
  1493. package/dist/vision/index.js.map +1 -1
  1494. package/dist/vision/io/image.cjs.map +1 -1
  1495. package/dist/vision/io/image.js.map +1 -1
  1496. package/dist/vision/labels.cjs.map +1 -1
  1497. package/dist/vision/labels.js.map +1 -1
  1498. package/dist/vision/luminance.cjs.map +1 -1
  1499. package/dist/vision/luminance.js.map +1 -1
  1500. package/dist/vision/normalization.cjs.map +1 -1
  1501. package/dist/vision/normalization.js.map +1 -1
  1502. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1503. package/dist/vision/postprocess/classification.js.map +1 -1
  1504. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1505. package/dist/vision/postprocess/detection.js.map +1 -1
  1506. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1507. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1508. package/dist/vision/preprocess/image.cjs.map +1 -1
  1509. package/dist/vision/preprocess/image.js.map +1 -1
  1510. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1511. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1512. package/dist/vision/results.cjs.map +1 -1
  1513. package/dist/vision/results.js.map +1 -1
  1514. package/dist/vision/tasks/base.cjs.map +1 -1
  1515. package/dist/vision/tasks/base.js.map +1 -1
  1516. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1517. package/dist/vision/tasks/classifier.js.map +1 -1
  1518. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1519. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1520. package/dist/vision/tasks/detector.cjs.map +1 -1
  1521. package/dist/vision/tasks/detector.js.map +1 -1
  1522. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1523. package/dist/vision/tasks/segmenter.js.map +1 -1
  1524. package/dist/vision/types.cjs.map +1 -1
  1525. package/dist/vision/types.js.map +1 -1
  1526. package/dist/vision/use-camera-stream.cjs +1 -1
  1527. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1528. package/dist/vision/use-camera-stream.js +3 -9
  1529. package/dist/vision/use-camera-stream.js.map +1 -1
  1530. package/dist/vision/use-live-luminance.cjs +1 -1
  1531. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1532. package/dist/vision/use-live-luminance.js +1 -5
  1533. package/dist/vision/use-live-luminance.js.map +1 -1
  1534. package/dist/vite/base-url.cjs.map +1 -1
  1535. package/dist/vite/base-url.js.map +1 -1
  1536. package/dist/vite/create-vite-config.cjs.map +1 -1
  1537. package/dist/vite/create-vite-config.js.map +1 -1
  1538. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1539. package/dist/vite/narrow-tokens.js.map +1 -1
  1540. package/dist/vite/tempest-csp.cjs +1 -1
  1541. package/dist/vite/tempest-csp.cjs.map +1 -1
  1542. package/dist/vite/tempest-csp.js +2 -10
  1543. package/dist/vite/tempest-csp.js.map +1 -1
  1544. package/dist/vite/tempest-icons.cjs.map +1 -1
  1545. package/dist/vite/tempest-icons.js.map +1 -1
  1546. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1547. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1548. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1549. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1550. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1551. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1552. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1553. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1554. package/dist/vite/tempest-styles.cjs.map +1 -1
  1555. package/dist/vite/tempest-styles.js.map +1 -1
  1556. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1557. package/dist/vite/tempest-vitest.js.map +1 -1
  1558. package/dist/webrtc/link-stats.cjs.map +1 -1
  1559. package/dist/webrtc/link-stats.js.map +1 -1
  1560. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1561. package/dist/webrtc/mesh-quality.js.map +1 -1
  1562. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1563. package/dist/webrtc/opus-sdp.js.map +1 -1
  1564. package/dist/webrtc/peer-link.cjs +1 -1
  1565. package/dist/webrtc/peer-link.cjs.map +1 -1
  1566. package/dist/webrtc/peer-link.js +2 -5
  1567. package/dist/webrtc/peer-link.js.map +1 -1
  1568. package/dist/webrtc/peer-mesh.cjs +1 -1
  1569. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1570. package/dist/webrtc/peer-mesh.js +8 -24
  1571. package/dist/webrtc/peer-mesh.js.map +1 -1
  1572. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1573. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1574. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1575. package/dist/webrtc/use-link-stats.js.map +1 -1
  1576. package/dist/ws/create-web-socket.cjs +1 -1
  1577. package/dist/ws/create-web-socket.cjs.map +1 -1
  1578. package/dist/ws/create-web-socket.js +4 -22
  1579. package/dist/ws/create-web-socket.js.map +1 -1
  1580. package/dist/ws/resilience.cjs.map +1 -1
  1581. package/dist/ws/resilience.js.map +1 -1
  1582. package/dist/ws/use-web-socket.cjs.map +1 -1
  1583. package/dist/ws/use-web-socket.js.map +1 -1
  1584. package/package.json +9 -6
  1585. package/template/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dtypes.cjs","names":[],"sources":["../../../src/vision/core/dtypes.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What element type the graph declares, and what typed array that means.\n *\n * A model exported with `half=True` declares its input as `float16`, and ONNX\n * Runtime refuses a float32 feed against it:\n *\n * ```text\n * Unexpected input data type. Actual: (tensor(float)) , expected: (tensor(float16))\n * ```\n *\n * The session opens without complaint, so the failure lands on the caller's\n * first `predict()` rather than on `create()`. Preprocessing stays in\n * `Float32Array` because that is where the normalization arithmetic belongs —\n * `(value / 255 - mean) / std` in half precision loses exactly the small\n * differences normalization exists to preserve — and the conversion happens\n * once, at the feed boundary.\n *\n * Outputs travel the other way. Float16 carries 11 bits of mantissa, so at\n * pixel scale its neighbouring values are 0.5 apart around coordinate 640 and\n * 1.0 apart around 1280: decoding boxes in that type quantises every coordinate\n * before NMS and the scale-back to original-image pixels ever run. {@link\n * asFloat32Array} widens a half-precision output before the decoders touch it.\n *\n * `Float16Array` is what ORT requires for a half tensor — a `Uint16Array` of\n * the same bits is rejected — and it is not in every browser yet, so\n * {@link hasFloat16Array} exists to refuse at session creation instead of on\n * the first frame.\n */\n\n/** ONNX `TensorProto.DataType` values this SDK can name. */\nconst ELEM_TYPE_TO_TENSOR_TYPE: Readonly<Record<number, string>> = {\n 1: \"float32\",\n 2: \"uint8\",\n 3: \"int8\",\n 4: \"uint16\",\n 5: \"int16\",\n 6: \"int32\",\n 7: \"int64\",\n 9: \"bool\",\n 10: \"float16\",\n 11: \"float64\",\n 12: \"uint32\",\n 13: \"uint64\",\n};\n\n/** The element type every task preprocesses to, and the fallback when unknown. */\nexport const DEFAULT_TENSOR_TYPE = \"float32\";\n\n/**\n * The structural surface of `Float16Array` this module needs.\n *\n * Declared here rather than pulled from `lib.es2025`: the package targets\n * ES2022 so it builds for consumers on older TypeScript, and the only thing\n * needed is \"an array-like of numbers ORT recognises as half precision\".\n */\nexport interface Float16ArrayLike {\n readonly length: number;\n readonly buffer: ArrayBufferLike;\n [index: number]: number;\n}\n\ninterface Float16ArrayConstructor {\n new (input: ArrayLike<number> | number): Float16ArrayLike;\n}\n\nconst FLOAT16_ARRAY = (globalThis as { Float16Array?: Float16ArrayConstructor }).Float16Array;\n\n/**\n * Whether this environment can build a half-precision tensor at all.\n *\n * @returns `true` when the runtime exposes `Float16Array`. ORT rejects any\n * other typed array for a `float16` tensor, so a `false` here means half\n * precision is unreachable in this browser no matter what the model declares.\n */\nexport function hasFloat16Array(): boolean {\n return FLOAT16_ARRAY !== undefined;\n}\n\n/**\n * Name the tensor type an ONNX element type maps to.\n *\n * @param elemType A `TensorProto.DataType` value read off the graph.\n * @returns The ORT tensor type name, or `\"float32\"` for anything unrecognised —\n * which is what every task produces anyway, so an unknown type surfaces as\n * ORT's own type error against the real graph rather than as a lookup miss.\n */\nexport function tensorTypeFor(elemType: number | undefined): string {\n if (elemType === undefined) return DEFAULT_TENSOR_TYPE;\n return ELEM_TYPE_TO_TENSOR_TYPE[elemType] ?? DEFAULT_TENSOR_TYPE;\n}\n\n/**\n * Convert a preprocessed float32 buffer to the type a feed must carry.\n *\n * @param data The preprocessed planar buffer.\n * @param tensorType The tensor type the input declares, from\n * {@link tensorTypeFor}.\n * @returns `data` itself for a float32 input, or a `Float16Array` holding the\n * same values for a half-precision one.\n * @throws {RangeError} If half precision is asked for and the runtime has no\n * `Float16Array`. Callers convert this into a `ModelLoadError` at session\n * creation, so it never reaches a `predict()`.\n */\nexport function toFeedData(\n data: Float32Array,\n tensorType: string,\n): Float32Array | Float16ArrayLike {\n if (tensorType !== \"float16\") return data;\n if (FLOAT16_ARRAY === undefined) {\n throw new RangeError(\n \"This model declares a float16 input, but this environment has no Float16Array.\",\n );\n }\n return new FLOAT16_ARRAY(data);\n}\n\n/**\n * Widen a model output to `Float32Array`, without copying when it already is.\n *\n * @param data A tensor's `data`, as ORT returned it.\n * @returns The same values as a `Float32Array`. A float32 output is passed\n * through untouched; anything else is copied once.\n */\nexport function asFloat32Array(data: unknown): Float32Array {\n if (data instanceof Float32Array) return data;\n return Float32Array.from(data as ArrayLike<number>);\n}\n"],"mappings":"AA+BA,IAAM,EAA6D,CAC/D,EAAG,UACH,EAAG,QACH,EAAG,OACH,EAAG,SACH,EAAG,QACH,EAAG,QACH,EAAG,QACH,EAAG,OACH,GAAI,UACJ,GAAI,UACJ,GAAI,SACJ,GAAI,QACR,EAGa,EAAsB,UAmB7B,EAAiB,WAA0D,aASjF,SAAgB,GAA2B,CACvC,OAAO,IAAkB,IAAA,EAC7B,CAUA,SAAgB,EAAc,EAAsC,CAEhE,OADI,IAAa,IAAA,GAAkB,EAC5B,EAAyB,IAAA,SACpC,CAcA,SAAgB,EACZ,EACA,EAC+B,CAC/B,GAAI,IAAe,UAAW,OAAO,EACrC,GAAI,IAAkB,IAAA,GAClB,MAAU,WACN,gFACJ,EAEJ,OAAO,IAAI,EAAc,CAAI,CACjC,CASA,SAAgB,EAAe,EAA6B,CAExD,OADI,aAAgB,aAAqB,EAClC,aAAa,KAAK,CAAyB,CACtD"}
1
+ {"version":3,"file":"dtypes.cjs","names":["ELEM_TYPE_TO_TENSOR_TYPE","DEFAULT_TENSOR_TYPE","FLOAT16_ARRAY","hasFloat16Array","tensorTypeFor","elemType","toFeedData","tensorType","data","asFloat32Array"],"sources":["../../../src/vision/core/dtypes.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What element type the graph declares, and what typed array that means.\n *\n * A model exported with `half=True` declares its input as `float16`, and ONNX\n * Runtime refuses a float32 feed against it:\n *\n * ```text\n * Unexpected input data type. Actual: (tensor(float)) , expected: (tensor(float16))\n * ```\n *\n * The session opens without complaint, so the failure lands on the caller's\n * first `predict()` rather than on `create()`. Preprocessing stays in\n * `Float32Array` because that is where the normalization arithmetic belongs —\n * `(value / 255 - mean) / std` in half precision loses exactly the small\n * differences normalization exists to preserve — and the conversion happens\n * once, at the feed boundary.\n *\n * Outputs travel the other way. Float16 carries 11 bits of mantissa, so at\n * pixel scale its neighbouring values are 0.5 apart around coordinate 640 and\n * 1.0 apart around 1280: decoding boxes in that type quantises every coordinate\n * before NMS and the scale-back to original-image pixels ever run. {@link\n * asFloat32Array} widens a half-precision output before the decoders touch it.\n *\n * `Float16Array` is what ORT requires for a half tensor — a `Uint16Array` of\n * the same bits is rejected — and it is not in every browser yet, so\n * {@link hasFloat16Array} exists to refuse at session creation instead of on\n * the first frame.\n */\n\n/** ONNX `TensorProto.DataType` values this SDK can name. */\nconst ELEM_TYPE_TO_TENSOR_TYPE: Readonly<Record<number, string>> = {\n 1: \"float32\",\n 2: \"uint8\",\n 3: \"int8\",\n 4: \"uint16\",\n 5: \"int16\",\n 6: \"int32\",\n 7: \"int64\",\n 9: \"bool\",\n 10: \"float16\",\n 11: \"float64\",\n 12: \"uint32\",\n 13: \"uint64\",\n};\n\n/** The element type every task preprocesses to, and the fallback when unknown. */\nexport const DEFAULT_TENSOR_TYPE = \"float32\";\n\n/**\n * The structural surface of `Float16Array` this module needs.\n *\n * Declared here rather than pulled from `lib.es2025`: the package targets\n * ES2022 so it builds for consumers on older TypeScript, and the only thing\n * needed is \"an array-like of numbers ORT recognises as half precision\".\n */\nexport interface Float16ArrayLike {\n readonly length: number;\n readonly buffer: ArrayBufferLike;\n [index: number]: number;\n}\n\ninterface Float16ArrayConstructor {\n new (input: ArrayLike<number> | number): Float16ArrayLike;\n}\n\nconst FLOAT16_ARRAY = (globalThis as { Float16Array?: Float16ArrayConstructor }).Float16Array;\n\n/**\n * Whether this environment can build a half-precision tensor at all.\n *\n * @returns `true` when the runtime exposes `Float16Array`. ORT rejects any\n * other typed array for a `float16` tensor, so a `false` here means half\n * precision is unreachable in this browser no matter what the model declares.\n */\nexport function hasFloat16Array(): boolean {\n return FLOAT16_ARRAY !== undefined;\n}\n\n/**\n * Name the tensor type an ONNX element type maps to.\n *\n * @param elemType A `TensorProto.DataType` value read off the graph.\n * @returns The ORT tensor type name, or `\"float32\"` for anything unrecognised —\n * which is what every task produces anyway, so an unknown type surfaces as\n * ORT's own type error against the real graph rather than as a lookup miss.\n */\nexport function tensorTypeFor(elemType: number | undefined): string {\n if (elemType === undefined) return DEFAULT_TENSOR_TYPE;\n return ELEM_TYPE_TO_TENSOR_TYPE[elemType] ?? DEFAULT_TENSOR_TYPE;\n}\n\n/**\n * Convert a preprocessed float32 buffer to the type a feed must carry.\n *\n * @param data The preprocessed planar buffer.\n * @param tensorType The tensor type the input declares, from\n * {@link tensorTypeFor}.\n * @returns `data` itself for a float32 input, or a `Float16Array` holding the\n * same values for a half-precision one.\n * @throws {RangeError} If half precision is asked for and the runtime has no\n * `Float16Array`. Callers convert this into a `ModelLoadError` at session\n * creation, so it never reaches a `predict()`.\n */\nexport function toFeedData(\n data: Float32Array,\n tensorType: string,\n): Float32Array | Float16ArrayLike {\n if (tensorType !== \"float16\") return data;\n if (FLOAT16_ARRAY === undefined) {\n throw new RangeError(\n \"This model declares a float16 input, but this environment has no Float16Array.\",\n );\n }\n return new FLOAT16_ARRAY(data);\n}\n\n/**\n * Widen a model output to `Float32Array`, without copying when it already is.\n *\n * @param data A tensor's `data`, as ORT returned it.\n * @returns The same values as a `Float32Array`. A float32 output is passed\n * through untouched; anything else is copied once.\n */\nexport function asFloat32Array(data: unknown): Float32Array {\n if (data instanceof Float32Array) return data;\n return Float32Array.from(data as ArrayLike<number>);\n}\n"],"mappings":"AA+BA,IAAMA,EAA6D,CAC/D,EAAG,UACH,EAAG,QACH,EAAG,OACH,EAAG,SACH,EAAG,QACH,EAAG,QACH,EAAG,QACH,EAAG,OACH,GAAI,UACJ,GAAI,UACJ,GAAI,SACJ,GAAI,QACR,EAGaC,EAAsB,UAmB7BC,EAAiB,WAA0D,aASjF,SAAgBC,GAA2B,CACvC,OAAOD,IAAkB,IAAA,EAC7B,CAUA,SAAgBE,EAAc,EAAsC,CAEhE,OADIC,IAAa,IAAA,GAAkBJ,EAC5BD,EAAyBK,IAAA,SACpC,CAcA,SAAgBC,EACZ,EACA,EAC+B,CAC/B,GAAIC,IAAe,UAAW,OAAOC,EACrC,GAAIN,IAAkB,IAAA,GAClB,MAAU,WACN,gFACJ,EAEJ,OAAO,IAAIA,EAAcM,CAAI,CACjC,CASA,SAAgBC,EAAe,EAA6B,CAExD,OADID,aAAgB,aAAqBA,EAClC,aAAa,KAAKA,CAAyB,CACtD,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"dtypes.js","names":[],"sources":["../../../src/vision/core/dtypes.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What element type the graph declares, and what typed array that means.\n *\n * A model exported with `half=True` declares its input as `float16`, and ONNX\n * Runtime refuses a float32 feed against it:\n *\n * ```text\n * Unexpected input data type. Actual: (tensor(float)) , expected: (tensor(float16))\n * ```\n *\n * The session opens without complaint, so the failure lands on the caller's\n * first `predict()` rather than on `create()`. Preprocessing stays in\n * `Float32Array` because that is where the normalization arithmetic belongs —\n * `(value / 255 - mean) / std` in half precision loses exactly the small\n * differences normalization exists to preserve — and the conversion happens\n * once, at the feed boundary.\n *\n * Outputs travel the other way. Float16 carries 11 bits of mantissa, so at\n * pixel scale its neighbouring values are 0.5 apart around coordinate 640 and\n * 1.0 apart around 1280: decoding boxes in that type quantises every coordinate\n * before NMS and the scale-back to original-image pixels ever run. {@link\n * asFloat32Array} widens a half-precision output before the decoders touch it.\n *\n * `Float16Array` is what ORT requires for a half tensor — a `Uint16Array` of\n * the same bits is rejected — and it is not in every browser yet, so\n * {@link hasFloat16Array} exists to refuse at session creation instead of on\n * the first frame.\n */\n\n/** ONNX `TensorProto.DataType` values this SDK can name. */\nconst ELEM_TYPE_TO_TENSOR_TYPE: Readonly<Record<number, string>> = {\n 1: \"float32\",\n 2: \"uint8\",\n 3: \"int8\",\n 4: \"uint16\",\n 5: \"int16\",\n 6: \"int32\",\n 7: \"int64\",\n 9: \"bool\",\n 10: \"float16\",\n 11: \"float64\",\n 12: \"uint32\",\n 13: \"uint64\",\n};\n\n/** The element type every task preprocesses to, and the fallback when unknown. */\nexport const DEFAULT_TENSOR_TYPE = \"float32\";\n\n/**\n * The structural surface of `Float16Array` this module needs.\n *\n * Declared here rather than pulled from `lib.es2025`: the package targets\n * ES2022 so it builds for consumers on older TypeScript, and the only thing\n * needed is \"an array-like of numbers ORT recognises as half precision\".\n */\nexport interface Float16ArrayLike {\n readonly length: number;\n readonly buffer: ArrayBufferLike;\n [index: number]: number;\n}\n\ninterface Float16ArrayConstructor {\n new (input: ArrayLike<number> | number): Float16ArrayLike;\n}\n\nconst FLOAT16_ARRAY = (globalThis as { Float16Array?: Float16ArrayConstructor }).Float16Array;\n\n/**\n * Whether this environment can build a half-precision tensor at all.\n *\n * @returns `true` when the runtime exposes `Float16Array`. ORT rejects any\n * other typed array for a `float16` tensor, so a `false` here means half\n * precision is unreachable in this browser no matter what the model declares.\n */\nexport function hasFloat16Array(): boolean {\n return FLOAT16_ARRAY !== undefined;\n}\n\n/**\n * Name the tensor type an ONNX element type maps to.\n *\n * @param elemType A `TensorProto.DataType` value read off the graph.\n * @returns The ORT tensor type name, or `\"float32\"` for anything unrecognised —\n * which is what every task produces anyway, so an unknown type surfaces as\n * ORT's own type error against the real graph rather than as a lookup miss.\n */\nexport function tensorTypeFor(elemType: number | undefined): string {\n if (elemType === undefined) return DEFAULT_TENSOR_TYPE;\n return ELEM_TYPE_TO_TENSOR_TYPE[elemType] ?? DEFAULT_TENSOR_TYPE;\n}\n\n/**\n * Convert a preprocessed float32 buffer to the type a feed must carry.\n *\n * @param data The preprocessed planar buffer.\n * @param tensorType The tensor type the input declares, from\n * {@link tensorTypeFor}.\n * @returns `data` itself for a float32 input, or a `Float16Array` holding the\n * same values for a half-precision one.\n * @throws {RangeError} If half precision is asked for and the runtime has no\n * `Float16Array`. Callers convert this into a `ModelLoadError` at session\n * creation, so it never reaches a `predict()`.\n */\nexport function toFeedData(\n data: Float32Array,\n tensorType: string,\n): Float32Array | Float16ArrayLike {\n if (tensorType !== \"float16\") return data;\n if (FLOAT16_ARRAY === undefined) {\n throw new RangeError(\n \"This model declares a float16 input, but this environment has no Float16Array.\",\n );\n }\n return new FLOAT16_ARRAY(data);\n}\n\n/**\n * Widen a model output to `Float32Array`, without copying when it already is.\n *\n * @param data A tensor's `data`, as ORT returned it.\n * @returns The same values as a `Float32Array`. A float32 output is passed\n * through untouched; anything else is copied once.\n */\nexport function asFloat32Array(data: unknown): Float32Array {\n if (data instanceof Float32Array) return data;\n return Float32Array.from(data as ArrayLike<number>);\n}\n"],"mappings":";AA+BA,IAAM,IAA6D;CAC/D,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR,GAGa,IAAsB,WAmB7B,IAAiB,WAA0D;AASjF,SAAgB,IAA2B;CACvC,OAAO,MAAkB,KAAA;AAC7B;AAUA,SAAgB,EAAc,GAAsC;CAEhE,OADI,MAAa,KAAA,IAAkB,IAC5B,EAAyB,MAAA;AACpC;AAcA,SAAgB,EACZ,GACA,GAC+B;CAC/B,IAAI,MAAe,WAAW,OAAO;CACrC,IAAI,MAAkB,KAAA,GAClB,MAAU,WACN,gFACJ;CAEJ,OAAO,IAAI,EAAc,CAAI;AACjC;AASA,SAAgB,EAAe,GAA6B;CAExD,OADI,aAAgB,eAAqB,IAClC,aAAa,KAAK,CAAyB;AACtD"}
1
+ {"version":3,"file":"dtypes.js","names":["ELEM_TYPE_TO_TENSOR_TYPE","DEFAULT_TENSOR_TYPE","FLOAT16_ARRAY","hasFloat16Array","tensorTypeFor","elemType","toFeedData","tensorType","data","asFloat32Array"],"sources":["../../../src/vision/core/dtypes.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What element type the graph declares, and what typed array that means.\n *\n * A model exported with `half=True` declares its input as `float16`, and ONNX\n * Runtime refuses a float32 feed against it:\n *\n * ```text\n * Unexpected input data type. Actual: (tensor(float)) , expected: (tensor(float16))\n * ```\n *\n * The session opens without complaint, so the failure lands on the caller's\n * first `predict()` rather than on `create()`. Preprocessing stays in\n * `Float32Array` because that is where the normalization arithmetic belongs —\n * `(value / 255 - mean) / std` in half precision loses exactly the small\n * differences normalization exists to preserve — and the conversion happens\n * once, at the feed boundary.\n *\n * Outputs travel the other way. Float16 carries 11 bits of mantissa, so at\n * pixel scale its neighbouring values are 0.5 apart around coordinate 640 and\n * 1.0 apart around 1280: decoding boxes in that type quantises every coordinate\n * before NMS and the scale-back to original-image pixels ever run. {@link\n * asFloat32Array} widens a half-precision output before the decoders touch it.\n *\n * `Float16Array` is what ORT requires for a half tensor — a `Uint16Array` of\n * the same bits is rejected — and it is not in every browser yet, so\n * {@link hasFloat16Array} exists to refuse at session creation instead of on\n * the first frame.\n */\n\n/** ONNX `TensorProto.DataType` values this SDK can name. */\nconst ELEM_TYPE_TO_TENSOR_TYPE: Readonly<Record<number, string>> = {\n 1: \"float32\",\n 2: \"uint8\",\n 3: \"int8\",\n 4: \"uint16\",\n 5: \"int16\",\n 6: \"int32\",\n 7: \"int64\",\n 9: \"bool\",\n 10: \"float16\",\n 11: \"float64\",\n 12: \"uint32\",\n 13: \"uint64\",\n};\n\n/** The element type every task preprocesses to, and the fallback when unknown. */\nexport const DEFAULT_TENSOR_TYPE = \"float32\";\n\n/**\n * The structural surface of `Float16Array` this module needs.\n *\n * Declared here rather than pulled from `lib.es2025`: the package targets\n * ES2022 so it builds for consumers on older TypeScript, and the only thing\n * needed is \"an array-like of numbers ORT recognises as half precision\".\n */\nexport interface Float16ArrayLike {\n readonly length: number;\n readonly buffer: ArrayBufferLike;\n [index: number]: number;\n}\n\ninterface Float16ArrayConstructor {\n new (input: ArrayLike<number> | number): Float16ArrayLike;\n}\n\nconst FLOAT16_ARRAY = (globalThis as { Float16Array?: Float16ArrayConstructor }).Float16Array;\n\n/**\n * Whether this environment can build a half-precision tensor at all.\n *\n * @returns `true` when the runtime exposes `Float16Array`. ORT rejects any\n * other typed array for a `float16` tensor, so a `false` here means half\n * precision is unreachable in this browser no matter what the model declares.\n */\nexport function hasFloat16Array(): boolean {\n return FLOAT16_ARRAY !== undefined;\n}\n\n/**\n * Name the tensor type an ONNX element type maps to.\n *\n * @param elemType A `TensorProto.DataType` value read off the graph.\n * @returns The ORT tensor type name, or `\"float32\"` for anything unrecognised —\n * which is what every task produces anyway, so an unknown type surfaces as\n * ORT's own type error against the real graph rather than as a lookup miss.\n */\nexport function tensorTypeFor(elemType: number | undefined): string {\n if (elemType === undefined) return DEFAULT_TENSOR_TYPE;\n return ELEM_TYPE_TO_TENSOR_TYPE[elemType] ?? DEFAULT_TENSOR_TYPE;\n}\n\n/**\n * Convert a preprocessed float32 buffer to the type a feed must carry.\n *\n * @param data The preprocessed planar buffer.\n * @param tensorType The tensor type the input declares, from\n * {@link tensorTypeFor}.\n * @returns `data` itself for a float32 input, or a `Float16Array` holding the\n * same values for a half-precision one.\n * @throws {RangeError} If half precision is asked for and the runtime has no\n * `Float16Array`. Callers convert this into a `ModelLoadError` at session\n * creation, so it never reaches a `predict()`.\n */\nexport function toFeedData(\n data: Float32Array,\n tensorType: string,\n): Float32Array | Float16ArrayLike {\n if (tensorType !== \"float16\") return data;\n if (FLOAT16_ARRAY === undefined) {\n throw new RangeError(\n \"This model declares a float16 input, but this environment has no Float16Array.\",\n );\n }\n return new FLOAT16_ARRAY(data);\n}\n\n/**\n * Widen a model output to `Float32Array`, without copying when it already is.\n *\n * @param data A tensor's `data`, as ORT returned it.\n * @returns The same values as a `Float32Array`. A float32 output is passed\n * through untouched; anything else is copied once.\n */\nexport function asFloat32Array(data: unknown): Float32Array {\n if (data instanceof Float32Array) return data;\n return Float32Array.from(data as ArrayLike<number>);\n}\n"],"mappings":";AA+BA,IAAMA,IAA6D;CAC/D,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR,GAGaC,IAAsB,WAmB7BC,IAAiB,WAA0D;AASjF,SAAgBC,IAA2B;CACvC,OAAOD,MAAkB,KAAA;AAC7B;AAUA,SAAgBE,EAAc,GAAsC;CAEhE,OADIC,MAAa,KAAA,IAAkBJ,IAC5BD,EAAyBK,MAAA;AACpC;AAcA,SAAgBC,EACZ,GACA,GAC+B;CAC/B,IAAIC,MAAe,WAAW,OAAOC;CACrC,IAAIN,MAAkB,KAAA,GAClB,MAAU,WACN,gFACJ;CAEJ,OAAO,IAAIA,EAAcM,CAAI;AACjC;AASA,SAAgBC,EAAe,GAA6B;CAExD,OADID,aAAgB,eAAqBA,IAClC,aAAa,KAAKA,CAAyB;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.cjs","names":[],"sources":["../../../src/vision/core/exceptions.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Exceptions raised by the SDK.\n *\n * All exceptions inherit from {@link OrtVisionError}, so callers can catch\n * the base class to handle any SDK-originated failure uniformly.\n */\n\nexport class OrtVisionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n }\n}\n\n/** Raised when an ONNX model cannot be loaded into an inference session. */\nexport class ModelLoadError extends OrtVisionError {}\n\n/** Raised when ONNX Runtime fails while executing a model. */\nexport class InferenceError extends OrtVisionError {}\n\n/** Raised when a requested execution provider is not available. */\nexport class ProviderNotAvailableError extends OrtVisionError {}\n\n/** Raised when an input image cannot be decoded into the canonical format. */\nexport class ImageLoadError extends OrtVisionError {}\n\n/** Raised when class labels cannot be resolved from the supplied spec. */\nexport class LabelMapError extends OrtVisionError {}\n\n/**\n * Raised when a detection task finds nothing and was asked to treat that as an error.\n *\n * Only raised when the caller opts in with `raiseOnEmpty: true`. The default\n * stays an empty result, because \"the model looked and found nothing\" is a\n * successful inference, not a failure — a photo of an empty field is a valid\n * photo. What the flag is for is the opposite situation: a pipeline step whose\n * *precondition* is that something is there, where an empty result means the\n * caller should stop rather than quietly carry on with zero rows.\n *\n * \"Nothing was detected\" and \"nothing was confident enough\" are the same\n * condition here, since the confidence threshold is what decides what counts as\n * a detection in the first place.\n */\nexport class NoDetectionsError extends OrtVisionError {}\n\n/**\n * Raised when a model cannot be driven as a fused detect→classify pipeline.\n *\n * In the browser this means the file carries no `ovs.*` metadata — it is a\n * plain detector or classifier rather than something `ort_vision_sdk.compose`\n * produced — or the graph is missing an output the pipeline contract requires.\n * Building a pipeline is a Python-side build step; the browser only runs one.\n */\nexport class FusionError extends OrtVisionError {}\n"],"mappings":"AAQA,IAAa,EAAb,cAAoC,KAAM,CACtC,YAAY,EAAiB,EAAwB,CACjD,MAAM,EAAS,CAAO,EACtB,KAAK,KAAO,WAAW,IAC3B,CACJ,EAGa,EAAb,cAAoC,CAAe,CAAC,EAGvC,EAAb,cAAoC,CAAe,CAAC,EAGvC,EAAb,cAA+C,CAAe,CAAC,EAGlD,EAAb,cAAoC,CAAe,CAAC,EAGvC,EAAb,cAAmC,CAAe,CAAC,EAgBtC,EAAb,cAAuC,CAAe,CAAC,EAU1C,EAAb,cAAiC,CAAe,CAAC"}
1
+ {"version":3,"file":"exceptions.cjs","names":["OrtVisionError","message","options","ModelLoadError","InferenceError","ProviderNotAvailableError","ImageLoadError","LabelMapError","NoDetectionsError","FusionError"],"sources":["../../../src/vision/core/exceptions.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Exceptions raised by the SDK.\n *\n * All exceptions inherit from {@link OrtVisionError}, so callers can catch\n * the base class to handle any SDK-originated failure uniformly.\n */\n\nexport class OrtVisionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n }\n}\n\n/** Raised when an ONNX model cannot be loaded into an inference session. */\nexport class ModelLoadError extends OrtVisionError {}\n\n/** Raised when ONNX Runtime fails while executing a model. */\nexport class InferenceError extends OrtVisionError {}\n\n/** Raised when a requested execution provider is not available. */\nexport class ProviderNotAvailableError extends OrtVisionError {}\n\n/** Raised when an input image cannot be decoded into the canonical format. */\nexport class ImageLoadError extends OrtVisionError {}\n\n/** Raised when class labels cannot be resolved from the supplied spec. */\nexport class LabelMapError extends OrtVisionError {}\n\n/**\n * Raised when a detection task finds nothing and was asked to treat that as an error.\n *\n * Only raised when the caller opts in with `raiseOnEmpty: true`. The default\n * stays an empty result, because \"the model looked and found nothing\" is a\n * successful inference, not a failure — a photo of an empty field is a valid\n * photo. What the flag is for is the opposite situation: a pipeline step whose\n * *precondition* is that something is there, where an empty result means the\n * caller should stop rather than quietly carry on with zero rows.\n *\n * \"Nothing was detected\" and \"nothing was confident enough\" are the same\n * condition here, since the confidence threshold is what decides what counts as\n * a detection in the first place.\n */\nexport class NoDetectionsError extends OrtVisionError {}\n\n/**\n * Raised when a model cannot be driven as a fused detect→classify pipeline.\n *\n * In the browser this means the file carries no `ovs.*` metadata — it is a\n * plain detector or classifier rather than something `ort_vision_sdk.compose`\n * produced — or the graph is missing an output the pipeline contract requires.\n * Building a pipeline is a Python-side build step; the browser only runs one.\n */\nexport class FusionError extends OrtVisionError {}\n"],"mappings":"AAQA,IAAaA,EAAb,cAAoC,KAAM,CACtC,YAAY,EAAiB,EAAwB,CACjD,MAAMC,EAASC,CAAO,EACtB,KAAK,KAAO,WAAW,IAC3B,CACJ,EAGaC,EAAb,cAAoCH,CAAe,CAAC,EAGvCI,EAAb,cAAoCJ,CAAe,CAAC,EAGvCK,EAAb,cAA+CL,CAAe,CAAC,EAGlDM,EAAb,cAAoCN,CAAe,CAAC,EAGvCO,EAAb,cAAmCP,CAAe,CAAC,EAgBtCQ,EAAb,cAAuCR,CAAe,CAAC,EAU1CS,EAAb,cAAiCT,CAAe,CAAC,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","names":[],"sources":["../../../src/vision/core/exceptions.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Exceptions raised by the SDK.\n *\n * All exceptions inherit from {@link OrtVisionError}, so callers can catch\n * the base class to handle any SDK-originated failure uniformly.\n */\n\nexport class OrtVisionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n }\n}\n\n/** Raised when an ONNX model cannot be loaded into an inference session. */\nexport class ModelLoadError extends OrtVisionError {}\n\n/** Raised when ONNX Runtime fails while executing a model. */\nexport class InferenceError extends OrtVisionError {}\n\n/** Raised when a requested execution provider is not available. */\nexport class ProviderNotAvailableError extends OrtVisionError {}\n\n/** Raised when an input image cannot be decoded into the canonical format. */\nexport class ImageLoadError extends OrtVisionError {}\n\n/** Raised when class labels cannot be resolved from the supplied spec. */\nexport class LabelMapError extends OrtVisionError {}\n\n/**\n * Raised when a detection task finds nothing and was asked to treat that as an error.\n *\n * Only raised when the caller opts in with `raiseOnEmpty: true`. The default\n * stays an empty result, because \"the model looked and found nothing\" is a\n * successful inference, not a failure — a photo of an empty field is a valid\n * photo. What the flag is for is the opposite situation: a pipeline step whose\n * *precondition* is that something is there, where an empty result means the\n * caller should stop rather than quietly carry on with zero rows.\n *\n * \"Nothing was detected\" and \"nothing was confident enough\" are the same\n * condition here, since the confidence threshold is what decides what counts as\n * a detection in the first place.\n */\nexport class NoDetectionsError extends OrtVisionError {}\n\n/**\n * Raised when a model cannot be driven as a fused detect→classify pipeline.\n *\n * In the browser this means the file carries no `ovs.*` metadata — it is a\n * plain detector or classifier rather than something `ort_vision_sdk.compose`\n * produced — or the graph is missing an output the pipeline contract requires.\n * Building a pipeline is a Python-side build step; the browser only runs one.\n */\nexport class FusionError extends OrtVisionError {}\n"],"mappings":";AAQA,IAAa,IAAb,cAAoC,MAAM;CACtC,YAAY,GAAiB,GAAwB;EAEjD,AADA,MAAM,GAAS,CAAO,GACtB,KAAK,OAAO,WAAW;CAC3B;AACJ,GAGa,IAAb,cAAoC,EAAe,CAAC,GAGvC,IAAb,cAAoC,EAAe,CAAC,GAGvC,IAAb,cAA+C,EAAe,CAAC,GAGlD,IAAb,cAAoC,EAAe,CAAC,GAGvC,IAAb,cAAmC,EAAe,CAAC,GAgBtC,IAAb,cAAuC,EAAe,CAAC,GAU1C,IAAb,cAAiC,EAAe,CAAC"}
1
+ {"version":3,"file":"exceptions.js","names":["OrtVisionError","message","options","ModelLoadError","InferenceError","ProviderNotAvailableError","ImageLoadError","LabelMapError","NoDetectionsError","FusionError"],"sources":["../../../src/vision/core/exceptions.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Exceptions raised by the SDK.\n *\n * All exceptions inherit from {@link OrtVisionError}, so callers can catch\n * the base class to handle any SDK-originated failure uniformly.\n */\n\nexport class OrtVisionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n }\n}\n\n/** Raised when an ONNX model cannot be loaded into an inference session. */\nexport class ModelLoadError extends OrtVisionError {}\n\n/** Raised when ONNX Runtime fails while executing a model. */\nexport class InferenceError extends OrtVisionError {}\n\n/** Raised when a requested execution provider is not available. */\nexport class ProviderNotAvailableError extends OrtVisionError {}\n\n/** Raised when an input image cannot be decoded into the canonical format. */\nexport class ImageLoadError extends OrtVisionError {}\n\n/** Raised when class labels cannot be resolved from the supplied spec. */\nexport class LabelMapError extends OrtVisionError {}\n\n/**\n * Raised when a detection task finds nothing and was asked to treat that as an error.\n *\n * Only raised when the caller opts in with `raiseOnEmpty: true`. The default\n * stays an empty result, because \"the model looked and found nothing\" is a\n * successful inference, not a failure — a photo of an empty field is a valid\n * photo. What the flag is for is the opposite situation: a pipeline step whose\n * *precondition* is that something is there, where an empty result means the\n * caller should stop rather than quietly carry on with zero rows.\n *\n * \"Nothing was detected\" and \"nothing was confident enough\" are the same\n * condition here, since the confidence threshold is what decides what counts as\n * a detection in the first place.\n */\nexport class NoDetectionsError extends OrtVisionError {}\n\n/**\n * Raised when a model cannot be driven as a fused detect→classify pipeline.\n *\n * In the browser this means the file carries no `ovs.*` metadata — it is a\n * plain detector or classifier rather than something `ort_vision_sdk.compose`\n * produced — or the graph is missing an output the pipeline contract requires.\n * Building a pipeline is a Python-side build step; the browser only runs one.\n */\nexport class FusionError extends OrtVisionError {}\n"],"mappings":";AAQA,IAAaA,IAAb,cAAoC,MAAM;CACtC,YAAY,GAAiB,GAAwB;EAEjD,AADA,MAAMC,GAASC,CAAO,GACtB,KAAK,OAAO,WAAW;CAC3B;AACJ,GAGaC,IAAb,cAAoCH,EAAe,CAAC,GAGvCI,IAAb,cAAoCJ,EAAe,CAAC,GAGvCK,IAAb,cAA+CL,EAAe,CAAC,GAGlDM,IAAb,cAAoCN,EAAe,CAAC,GAGvCO,IAAb,cAAmCP,EAAe,CAAC,GAgBtCQ,IAAb,cAAuCR,EAAe,CAAC,GAU1CS,IAAb,cAAiCT,EAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.cjs","names":[],"sources":["../../../src/vision/core/graph.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What the ONNX graph itself says about its inputs.\n *\n * The resolution a session must be fed at is a property of the exported model,\n * not of the configuration around it. Feeding a 640x640 tensor to a graph\n * exported at 224x224 makes ORT abort the run with\n * `Got invalid dimensions for input: images ... Got: 640 Expected: 224`, and the\n * caller has no way to see that coming from the outside — the number lives in\n * the file. So the SDK reads it from the graph and treats any configured size as\n * a fallback for when the graph leaves it open.\n */\n\nimport type * as ort from \"onnxruntime-web\";\n\n/**\n * One declared dimension: a number when the graph pins it, `null` when the\n * dimension is symbolic (dynamic).\n */\nexport type DeclaredDim = number | null;\n\n/** A declared input/output shape, dynamic axes appearing as `null`. */\nexport type DeclaredShape = readonly DeclaredDim[];\n\n/**\n * Convert ORT value metadata into declared shapes.\n *\n * @param metadata Metadata as reported by `InferenceSession.inputMetadata`, or\n * `undefined` on ORT builds that predate it (`onnxruntime-web` < 1.22,\n * measured). The session then falls back to the shapes in the model file.\n * @returns One shape per value, in declaration order. Non-tensor values and\n * builds without metadata yield empty shapes, which read as \"nothing\n * declared\" everywhere downstream.\n */\nexport function declaredShapesFrom(\n metadata: readonly ort.InferenceSession.ValueMetadata[] | undefined,\n): readonly DeclaredShape[] {\n if (metadata === undefined) return [];\n return metadata.map((value) =>\n value.isTensor\n ? value.shape.map((dim) =>\n typeof dim === \"number\" && Number.isInteger(dim) && dim > 0 ? dim : null,\n )\n : [],\n );\n}\n\n/**\n * Read the spatial input size out of a declared NCHW shape.\n *\n * @param shape The declared shape of the model's image input.\n * @returns `[width, height]` in pixels, or `null` when the shape is not 4D or\n * leaves either spatial axis dynamic — in which case the model accepts more\n * than one resolution and there is nothing to correct.\n */\nexport function spatialInputSize(shape: DeclaredShape): readonly [number, number] | null {\n if (shape.length !== 4) return null;\n const height = shape[2];\n const width = shape[3];\n if (height === null || height === undefined || width === null || width === undefined)\n return null;\n return [width, height];\n}\n\n/**\n * Infer how many classes a YOLO detection/segmentation head emits.\n *\n * Such a head declares `(B, 4 + nc, N)` — four box coordinates stacked above one\n * score per class, over `N` candidate anchors. `N` is in the thousands and the\n * batch is 1, so the channel axis is the smallest static axis above 1.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the shape leaves it undeterminable —\n * fully dynamic, or too small to hold boxes plus at least one class.\n */\nexport function detectionNumClasses(shape: DeclaredShape): number | null {\n const staticDims = shape.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n if (channels < 5) return null;\n return channels - 4;\n}\n\n/**\n * Mask coefficients per anchor when no prototype shape says otherwise.\n *\n * Every Ultralytics seg head (v8, v11) emits 32; it is the fallback when the\n * prototype output's channel axis is dynamic or the runtime reports no shapes.\n */\nconst DEFAULT_MASK_COEFS = 32;\n\n/**\n * Infer how many classes a YOLO segmentation head emits.\n *\n * The per-anchor output declares `(B, 4 + nc + nm, N)`: the detection layout\n * with `nm` mask coefficients stacked under the class scores. Reading it with\n * {@link detectionNumClasses} counts those coefficients as classes — 33 for a\n * one-class YOLO11n-seg, 112 for a COCO one — and the label check then rejects\n * the model's own baked-in names. `nm` is the channel axis of the prototype\n * output `(B, nm, H, W)`, so it is read from there.\n *\n * @param shapes Declared shapes of every output, in declaration order.\n * @returns The class count, or `null` when the per-anchor shape is missing or\n * leaves it undeterminable.\n */\nexport function segmentationNumClasses(shapes: readonly DeclaredShape[]): number | null {\n const perAnchor = shapes.find((shape) => shape.length === 3);\n if (perAnchor === undefined) return null;\n const staticDims = perAnchor.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n const prototypes = shapes.find((shape) => shape.length === 4);\n const declared = prototypes?.[1];\n const coefs = typeof declared === \"number\" && declared > 0 ? declared : DEFAULT_MASK_COEFS;\n const classes = channels - 4 - coefs;\n return classes > 0 ? classes : null;\n}\n\n/**\n * Infer how many classes a classification head emits.\n *\n * A classifier declares `(B, nc)`, so the count is the last static axis.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the last axis is dynamic or absent.\n */\nexport function classificationNumClasses(shape: DeclaredShape): number | null {\n const last = shape[shape.length - 1];\n if (last === null || last === undefined || last < 1) return null;\n return last;\n}\n\nexport interface ResolveInputSizeOptions {\n /** Declared shape of the model's image input, from {@link declaredShapesFrom}. */\n readonly graphShape?: DeclaredShape;\n /** Size the caller asked for, if any. */\n readonly requested?: readonly [number, number];\n /** Size to use when neither the graph nor the caller pins one. */\n readonly fallback: readonly [number, number];\n}\n\n/**\n * Decide the input size a task will preprocess to.\n *\n * Precedence is graph → caller → fallback. The graph wins over an explicit\n * `inputSize` because a static shape is not a preference, it is what ORT will\n * accept: honoring the caller there would only turn a fixable mismatch into a\n * failed run. A disagreement is a configuration bug in the caller, so it is\n * reported through `console.warn` instead of being swallowed.\n *\n * @param options Graph shape, requested size and per-task fallback.\n * @returns The `[width, height]` to preprocess to.\n */\nexport function resolveInputSize(options: ResolveInputSizeOptions): readonly [number, number] {\n const graph = options.graphShape === undefined ? null : spatialInputSize(options.graphShape);\n const requested = options.requested;\n if (graph === null) return requested ?? options.fallback;\n if (requested !== undefined && (requested[0] !== graph[0] || requested[1] !== graph[1])) {\n console.warn(\n `[ort-vision-sdk] The model declares a ${graph[0]}x${graph[1]} input; ` +\n `ignoring the requested ${requested[0]}x${requested[1]}, which ONNX Runtime would reject.`,\n );\n }\n return graph;\n}\n"],"mappings":"AAkCA,SAAgB,EACZ,EACwB,CAExB,OADI,IAAa,IAAA,GAAkB,CAAC,EAC7B,EAAS,IAAK,GACjB,EAAM,SACA,EAAM,MAAM,IAAK,GACb,OAAO,GAAQ,UAAY,OAAO,UAAU,CAAG,GAAK,EAAM,EAAI,EAAM,IACxE,EACA,CAAC,CACX,CACJ,CAUA,SAAgB,EAAiB,EAAwD,CACrF,GAAI,EAAM,SAAW,EAAG,OAAO,KAC/B,IAAM,EAAS,EAAM,GACf,EAAQ,EAAM,GAGpB,OAFI,GAAW,MAAgC,GAAU,KAC9C,KACJ,CAAC,EAAO,CAAM,CACzB,CAaA,SAAgB,EAAoB,EAAqC,CACrE,IAAM,EAAa,EAAM,OAAQ,GAAuB,IAAQ,MAAQ,EAAM,CAAC,EAC/E,GAAI,EAAW,SAAW,EAAG,OAAO,KACpC,IAAM,EAAW,KAAK,IAAI,GAAG,CAAU,EAEvC,OADI,EAAW,EAAU,KAClB,EAAW,CACtB,CAwBA,SAAgB,EAAuB,EAAiD,CACpF,IAAM,EAAY,EAAO,KAAM,GAAU,EAAM,SAAW,CAAC,EAC3D,GAAI,IAAc,IAAA,GAAW,OAAO,KACpC,IAAM,EAAa,EAAU,OAAQ,GAAuB,IAAQ,MAAQ,EAAM,CAAC,EACnF,GAAI,EAAW,SAAW,EAAG,OAAO,KACpC,IAAM,EAAW,KAAK,IAAI,GAAG,CAAU,EAEjC,EADa,EAAO,KAAM,GAAU,EAAM,SAAW,CAC1C,CAAA,GAAa,GACxB,EAAQ,OAAO,GAAa,UAAY,EAAW,EAAI,EAAW,GAClE,EAAU,EAAW,EAAI,EAC/B,OAAO,EAAU,EAAI,EAAU,IACnC,CAUA,SAAgB,EAAyB,EAAqC,CAC1E,IAAM,EAAO,EAAM,EAAM,OAAS,GAElC,OADI,GAAS,MAA8B,EAAO,EAAU,KACrD,CACX,CAuBA,SAAgB,EAAiB,EAA6D,CAC1F,IAAM,EAAQ,EAAQ,aAAe,IAAA,GAAY,KAAO,EAAiB,EAAQ,UAAU,EACrF,EAAY,EAAQ,UAQ1B,OAPI,IAAU,KAAa,GAAa,EAAQ,UAC5C,IAAc,IAAA,KAAc,EAAU,KAAO,EAAM,IAAM,EAAU,KAAO,EAAM,KAChF,QAAQ,KACJ,yCAAyC,EAAM,GAAG,GAAG,EAAM,GAAG,iCAChC,EAAU,GAAG,GAAG,EAAU,GAAG,mCAC/D,EAEG,EACX"}
1
+ {"version":3,"file":"graph.cjs","names":["declaredShapesFrom","metadata","value","dim","spatialInputSize","shape","height","width","detectionNumClasses","staticDims","channels","segmentationNumClasses","perAnchor","shapes","declared","coefs","classes","classificationNumClasses","last","resolveInputSize","graph","options","requested"],"sources":["../../../src/vision/core/graph.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What the ONNX graph itself says about its inputs.\n *\n * The resolution a session must be fed at is a property of the exported model,\n * not of the configuration around it. Feeding a 640x640 tensor to a graph\n * exported at 224x224 makes ORT abort the run with\n * `Got invalid dimensions for input: images ... Got: 640 Expected: 224`, and the\n * caller has no way to see that coming from the outside — the number lives in\n * the file. So the SDK reads it from the graph and treats any configured size as\n * a fallback for when the graph leaves it open.\n */\n\nimport type * as ort from \"onnxruntime-web\";\n\n/**\n * One declared dimension: a number when the graph pins it, `null` when the\n * dimension is symbolic (dynamic).\n */\nexport type DeclaredDim = number | null;\n\n/** A declared input/output shape, dynamic axes appearing as `null`. */\nexport type DeclaredShape = readonly DeclaredDim[];\n\n/**\n * Convert ORT value metadata into declared shapes.\n *\n * @param metadata Metadata as reported by `InferenceSession.inputMetadata`, or\n * `undefined` on ORT builds that predate it (`onnxruntime-web` < 1.22,\n * measured). The session then falls back to the shapes in the model file.\n * @returns One shape per value, in declaration order. Non-tensor values and\n * builds without metadata yield empty shapes, which read as \"nothing\n * declared\" everywhere downstream.\n */\nexport function declaredShapesFrom(\n metadata: readonly ort.InferenceSession.ValueMetadata[] | undefined,\n): readonly DeclaredShape[] {\n if (metadata === undefined) return [];\n return metadata.map((value) =>\n value.isTensor\n ? value.shape.map((dim) =>\n typeof dim === \"number\" && Number.isInteger(dim) && dim > 0 ? dim : null,\n )\n : [],\n );\n}\n\n/**\n * Read the spatial input size out of a declared NCHW shape.\n *\n * @param shape The declared shape of the model's image input.\n * @returns `[width, height]` in pixels, or `null` when the shape is not 4D or\n * leaves either spatial axis dynamic — in which case the model accepts more\n * than one resolution and there is nothing to correct.\n */\nexport function spatialInputSize(shape: DeclaredShape): readonly [number, number] | null {\n if (shape.length !== 4) return null;\n const height = shape[2];\n const width = shape[3];\n if (height === null || height === undefined || width === null || width === undefined)\n return null;\n return [width, height];\n}\n\n/**\n * Infer how many classes a YOLO detection/segmentation head emits.\n *\n * Such a head declares `(B, 4 + nc, N)` — four box coordinates stacked above one\n * score per class, over `N` candidate anchors. `N` is in the thousands and the\n * batch is 1, so the channel axis is the smallest static axis above 1.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the shape leaves it undeterminable —\n * fully dynamic, or too small to hold boxes plus at least one class.\n */\nexport function detectionNumClasses(shape: DeclaredShape): number | null {\n const staticDims = shape.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n if (channels < 5) return null;\n return channels - 4;\n}\n\n/**\n * Mask coefficients per anchor when no prototype shape says otherwise.\n *\n * Every Ultralytics seg head (v8, v11) emits 32; it is the fallback when the\n * prototype output's channel axis is dynamic or the runtime reports no shapes.\n */\nconst DEFAULT_MASK_COEFS = 32;\n\n/**\n * Infer how many classes a YOLO segmentation head emits.\n *\n * The per-anchor output declares `(B, 4 + nc + nm, N)`: the detection layout\n * with `nm` mask coefficients stacked under the class scores. Reading it with\n * {@link detectionNumClasses} counts those coefficients as classes — 33 for a\n * one-class YOLO11n-seg, 112 for a COCO one — and the label check then rejects\n * the model's own baked-in names. `nm` is the channel axis of the prototype\n * output `(B, nm, H, W)`, so it is read from there.\n *\n * @param shapes Declared shapes of every output, in declaration order.\n * @returns The class count, or `null` when the per-anchor shape is missing or\n * leaves it undeterminable.\n */\nexport function segmentationNumClasses(shapes: readonly DeclaredShape[]): number | null {\n const perAnchor = shapes.find((shape) => shape.length === 3);\n if (perAnchor === undefined) return null;\n const staticDims = perAnchor.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n const prototypes = shapes.find((shape) => shape.length === 4);\n const declared = prototypes?.[1];\n const coefs = typeof declared === \"number\" && declared > 0 ? declared : DEFAULT_MASK_COEFS;\n const classes = channels - 4 - coefs;\n return classes > 0 ? classes : null;\n}\n\n/**\n * Infer how many classes a classification head emits.\n *\n * A classifier declares `(B, nc)`, so the count is the last static axis.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the last axis is dynamic or absent.\n */\nexport function classificationNumClasses(shape: DeclaredShape): number | null {\n const last = shape[shape.length - 1];\n if (last === null || last === undefined || last < 1) return null;\n return last;\n}\n\nexport interface ResolveInputSizeOptions {\n /** Declared shape of the model's image input, from {@link declaredShapesFrom}. */\n readonly graphShape?: DeclaredShape;\n /** Size the caller asked for, if any. */\n readonly requested?: readonly [number, number];\n /** Size to use when neither the graph nor the caller pins one. */\n readonly fallback: readonly [number, number];\n}\n\n/**\n * Decide the input size a task will preprocess to.\n *\n * Precedence is graph → caller → fallback. The graph wins over an explicit\n * `inputSize` because a static shape is not a preference, it is what ORT will\n * accept: honoring the caller there would only turn a fixable mismatch into a\n * failed run. A disagreement is a configuration bug in the caller, so it is\n * reported through `console.warn` instead of being swallowed.\n *\n * @param options Graph shape, requested size and per-task fallback.\n * @returns The `[width, height]` to preprocess to.\n */\nexport function resolveInputSize(options: ResolveInputSizeOptions): readonly [number, number] {\n const graph = options.graphShape === undefined ? null : spatialInputSize(options.graphShape);\n const requested = options.requested;\n if (graph === null) return requested ?? options.fallback;\n if (requested !== undefined && (requested[0] !== graph[0] || requested[1] !== graph[1])) {\n console.warn(\n `[ort-vision-sdk] The model declares a ${graph[0]}x${graph[1]} input; ` +\n `ignoring the requested ${requested[0]}x${requested[1]}, which ONNX Runtime would reject.`,\n );\n }\n return graph;\n}\n"],"mappings":"AAkCA,SAAgBA,EACZ,EACwB,CAExB,OADIC,IAAa,IAAA,GAAkB,CAAC,EAC7BA,EAAS,IAAK,GACjBC,EAAM,SACAA,EAAM,MAAM,IAAK,GACb,OAAOC,GAAQ,UAAY,OAAO,UAAUA,CAAG,GAAKA,EAAM,EAAIA,EAAM,IACxE,EACA,CAAC,CACX,CACJ,CAUA,SAAgBC,EAAiB,EAAwD,CACrF,GAAIC,EAAM,SAAW,EAAG,OAAO,KAC/B,IAAMC,EAASD,EAAM,GACfE,EAAQF,EAAM,GAGpB,OAFIC,GAAW,MAAgCC,GAAU,KAC9C,KACJ,CAACA,EAAOD,CAAM,CACzB,CAaA,SAAgBE,EAAoB,EAAqC,CACrE,IAAMC,EAAaJ,EAAM,OAAQ,GAAuBF,IAAQ,MAAQA,EAAM,CAAC,EAC/E,GAAIM,EAAW,SAAW,EAAG,OAAO,KACpC,IAAMC,EAAW,KAAK,IAAI,GAAGD,CAAU,EAEvC,OADIC,EAAW,EAAU,KAClBA,EAAW,CACtB,CAwBA,SAAgBC,EAAuB,EAAiD,CACpF,IAAMC,EAAYC,EAAO,KAAM,GAAUR,EAAM,SAAW,CAAC,EAC3D,GAAIO,IAAc,IAAA,GAAW,OAAO,KACpC,IAAMH,EAAaG,EAAU,OAAQ,GAAuBT,IAAQ,MAAQA,EAAM,CAAC,EACnF,GAAIM,EAAW,SAAW,EAAG,OAAO,KACpC,IAAMC,EAAW,KAAK,IAAI,GAAGD,CAAU,EAEjCK,EADaD,EAAO,KAAM,GAAUR,EAAM,SAAW,CAC1C,CAAA,GAAa,GACxBU,EAAQ,OAAOD,GAAa,UAAYA,EAAW,EAAIA,EAAW,GAClEE,EAAUN,EAAW,EAAIK,EAC/B,OAAOC,EAAU,EAAIA,EAAU,IACnC,CAUA,SAAgBC,EAAyB,EAAqC,CAC1E,IAAMC,EAAOb,EAAMA,EAAM,OAAS,GAElC,OADIa,GAAS,MAA8BA,EAAO,EAAU,KACrDA,CACX,CAuBA,SAAgBC,EAAiB,EAA6D,CAC1F,IAAMC,EAAQC,EAAQ,aAAe,IAAA,GAAY,KAAOjB,EAAiBiB,EAAQ,UAAU,EACrFC,EAAYD,EAAQ,UAQ1B,OAPID,IAAU,KAAaE,GAAaD,EAAQ,UAC5CC,IAAc,IAAA,KAAcA,EAAU,KAAOF,EAAM,IAAME,EAAU,KAAOF,EAAM,KAChF,QAAQ,KACJ,yCAAyCA,EAAM,GAAG,GAAGA,EAAM,GAAG,iCAChCE,EAAU,GAAG,GAAGA,EAAU,GAAG,mCAC/D,EAEGF,EACX,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","names":[],"sources":["../../../src/vision/core/graph.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What the ONNX graph itself says about its inputs.\n *\n * The resolution a session must be fed at is a property of the exported model,\n * not of the configuration around it. Feeding a 640x640 tensor to a graph\n * exported at 224x224 makes ORT abort the run with\n * `Got invalid dimensions for input: images ... Got: 640 Expected: 224`, and the\n * caller has no way to see that coming from the outside — the number lives in\n * the file. So the SDK reads it from the graph and treats any configured size as\n * a fallback for when the graph leaves it open.\n */\n\nimport type * as ort from \"onnxruntime-web\";\n\n/**\n * One declared dimension: a number when the graph pins it, `null` when the\n * dimension is symbolic (dynamic).\n */\nexport type DeclaredDim = number | null;\n\n/** A declared input/output shape, dynamic axes appearing as `null`. */\nexport type DeclaredShape = readonly DeclaredDim[];\n\n/**\n * Convert ORT value metadata into declared shapes.\n *\n * @param metadata Metadata as reported by `InferenceSession.inputMetadata`, or\n * `undefined` on ORT builds that predate it (`onnxruntime-web` < 1.22,\n * measured). The session then falls back to the shapes in the model file.\n * @returns One shape per value, in declaration order. Non-tensor values and\n * builds without metadata yield empty shapes, which read as \"nothing\n * declared\" everywhere downstream.\n */\nexport function declaredShapesFrom(\n metadata: readonly ort.InferenceSession.ValueMetadata[] | undefined,\n): readonly DeclaredShape[] {\n if (metadata === undefined) return [];\n return metadata.map((value) =>\n value.isTensor\n ? value.shape.map((dim) =>\n typeof dim === \"number\" && Number.isInteger(dim) && dim > 0 ? dim : null,\n )\n : [],\n );\n}\n\n/**\n * Read the spatial input size out of a declared NCHW shape.\n *\n * @param shape The declared shape of the model's image input.\n * @returns `[width, height]` in pixels, or `null` when the shape is not 4D or\n * leaves either spatial axis dynamic — in which case the model accepts more\n * than one resolution and there is nothing to correct.\n */\nexport function spatialInputSize(shape: DeclaredShape): readonly [number, number] | null {\n if (shape.length !== 4) return null;\n const height = shape[2];\n const width = shape[3];\n if (height === null || height === undefined || width === null || width === undefined)\n return null;\n return [width, height];\n}\n\n/**\n * Infer how many classes a YOLO detection/segmentation head emits.\n *\n * Such a head declares `(B, 4 + nc, N)` — four box coordinates stacked above one\n * score per class, over `N` candidate anchors. `N` is in the thousands and the\n * batch is 1, so the channel axis is the smallest static axis above 1.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the shape leaves it undeterminable —\n * fully dynamic, or too small to hold boxes plus at least one class.\n */\nexport function detectionNumClasses(shape: DeclaredShape): number | null {\n const staticDims = shape.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n if (channels < 5) return null;\n return channels - 4;\n}\n\n/**\n * Mask coefficients per anchor when no prototype shape says otherwise.\n *\n * Every Ultralytics seg head (v8, v11) emits 32; it is the fallback when the\n * prototype output's channel axis is dynamic or the runtime reports no shapes.\n */\nconst DEFAULT_MASK_COEFS = 32;\n\n/**\n * Infer how many classes a YOLO segmentation head emits.\n *\n * The per-anchor output declares `(B, 4 + nc + nm, N)`: the detection layout\n * with `nm` mask coefficients stacked under the class scores. Reading it with\n * {@link detectionNumClasses} counts those coefficients as classes — 33 for a\n * one-class YOLO11n-seg, 112 for a COCO one — and the label check then rejects\n * the model's own baked-in names. `nm` is the channel axis of the prototype\n * output `(B, nm, H, W)`, so it is read from there.\n *\n * @param shapes Declared shapes of every output, in declaration order.\n * @returns The class count, or `null` when the per-anchor shape is missing or\n * leaves it undeterminable.\n */\nexport function segmentationNumClasses(shapes: readonly DeclaredShape[]): number | null {\n const perAnchor = shapes.find((shape) => shape.length === 3);\n if (perAnchor === undefined) return null;\n const staticDims = perAnchor.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n const prototypes = shapes.find((shape) => shape.length === 4);\n const declared = prototypes?.[1];\n const coefs = typeof declared === \"number\" && declared > 0 ? declared : DEFAULT_MASK_COEFS;\n const classes = channels - 4 - coefs;\n return classes > 0 ? classes : null;\n}\n\n/**\n * Infer how many classes a classification head emits.\n *\n * A classifier declares `(B, nc)`, so the count is the last static axis.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the last axis is dynamic or absent.\n */\nexport function classificationNumClasses(shape: DeclaredShape): number | null {\n const last = shape[shape.length - 1];\n if (last === null || last === undefined || last < 1) return null;\n return last;\n}\n\nexport interface ResolveInputSizeOptions {\n /** Declared shape of the model's image input, from {@link declaredShapesFrom}. */\n readonly graphShape?: DeclaredShape;\n /** Size the caller asked for, if any. */\n readonly requested?: readonly [number, number];\n /** Size to use when neither the graph nor the caller pins one. */\n readonly fallback: readonly [number, number];\n}\n\n/**\n * Decide the input size a task will preprocess to.\n *\n * Precedence is graph → caller → fallback. The graph wins over an explicit\n * `inputSize` because a static shape is not a preference, it is what ORT will\n * accept: honoring the caller there would only turn a fixable mismatch into a\n * failed run. A disagreement is a configuration bug in the caller, so it is\n * reported through `console.warn` instead of being swallowed.\n *\n * @param options Graph shape, requested size and per-task fallback.\n * @returns The `[width, height]` to preprocess to.\n */\nexport function resolveInputSize(options: ResolveInputSizeOptions): readonly [number, number] {\n const graph = options.graphShape === undefined ? null : spatialInputSize(options.graphShape);\n const requested = options.requested;\n if (graph === null) return requested ?? options.fallback;\n if (requested !== undefined && (requested[0] !== graph[0] || requested[1] !== graph[1])) {\n console.warn(\n `[ort-vision-sdk] The model declares a ${graph[0]}x${graph[1]} input; ` +\n `ignoring the requested ${requested[0]}x${requested[1]}, which ONNX Runtime would reject.`,\n );\n }\n return graph;\n}\n"],"mappings":";AAkCA,SAAgB,EACZ,GACwB;CAExB,OADI,MAAa,KAAA,IAAkB,CAAC,IAC7B,EAAS,KAAK,MACjB,EAAM,WACA,EAAM,MAAM,KAAK,MACb,OAAO,KAAQ,YAAY,OAAO,UAAU,CAAG,KAAK,IAAM,IAAI,IAAM,IACxE,IACA,CAAC,CACX;AACJ;AAUA,SAAgB,EAAiB,GAAwD;CACrF,IAAI,EAAM,WAAW,GAAG,OAAO;CAC/B,IAAM,IAAS,EAAM,IACf,IAAQ,EAAM;CAGpB,OAFI,KAAW,QAAgC,KAAU,OAC9C,OACJ,CAAC,GAAO,CAAM;AACzB;AAaA,SAAgB,EAAoB,GAAqC;CACrE,IAAM,IAAa,EAAM,QAAQ,MAAuB,MAAQ,QAAQ,IAAM,CAAC;CAC/E,IAAI,EAAW,WAAW,GAAG,OAAO;CACpC,IAAM,IAAW,KAAK,IAAI,GAAG,CAAU;CAEvC,OADI,IAAW,IAAU,OAClB,IAAW;AACtB;AAwBA,SAAgB,EAAuB,GAAiD;CACpF,IAAM,IAAY,EAAO,MAAM,MAAU,EAAM,WAAW,CAAC;CAC3D,IAAI,MAAc,KAAA,GAAW,OAAO;CACpC,IAAM,IAAa,EAAU,QAAQ,MAAuB,MAAQ,QAAQ,IAAM,CAAC;CACnF,IAAI,EAAW,WAAW,GAAG,OAAO;CACpC,IAAM,IAAW,KAAK,IAAI,GAAG,CAAU,GAEjC,IADa,EAAO,MAAM,MAAU,EAAM,WAAW,CAC1C,CAAA,GAAa,IACxB,IAAQ,OAAO,KAAa,YAAY,IAAW,IAAI,IAAW,IAClE,IAAU,IAAW,IAAI;CAC/B,OAAO,IAAU,IAAI,IAAU;AACnC;AAUA,SAAgB,EAAyB,GAAqC;CAC1E,IAAM,IAAO,EAAM,EAAM,SAAS;CAElC,OADI,KAAS,QAA8B,IAAO,IAAU,OACrD;AACX;AAuBA,SAAgB,EAAiB,GAA6D;CAC1F,IAAM,IAAQ,EAAQ,eAAe,KAAA,IAAY,OAAO,EAAiB,EAAQ,UAAU,GACrF,IAAY,EAAQ;CAQ1B,OAPI,MAAU,OAAa,KAAa,EAAQ,YAC5C,MAAc,KAAA,MAAc,EAAU,OAAO,EAAM,MAAM,EAAU,OAAO,EAAM,OAChF,QAAQ,KACJ,yCAAyC,EAAM,GAAG,GAAG,EAAM,GAAG,iCAChC,EAAU,GAAG,GAAG,EAAU,GAAG,mCAC/D,GAEG;AACX"}
1
+ {"version":3,"file":"graph.js","names":["declaredShapesFrom","metadata","value","dim","spatialInputSize","shape","height","width","detectionNumClasses","staticDims","channels","segmentationNumClasses","perAnchor","shapes","declared","coefs","classes","classificationNumClasses","last","resolveInputSize","graph","options","requested"],"sources":["../../../src/vision/core/graph.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * What the ONNX graph itself says about its inputs.\n *\n * The resolution a session must be fed at is a property of the exported model,\n * not of the configuration around it. Feeding a 640x640 tensor to a graph\n * exported at 224x224 makes ORT abort the run with\n * `Got invalid dimensions for input: images ... Got: 640 Expected: 224`, and the\n * caller has no way to see that coming from the outside — the number lives in\n * the file. So the SDK reads it from the graph and treats any configured size as\n * a fallback for when the graph leaves it open.\n */\n\nimport type * as ort from \"onnxruntime-web\";\n\n/**\n * One declared dimension: a number when the graph pins it, `null` when the\n * dimension is symbolic (dynamic).\n */\nexport type DeclaredDim = number | null;\n\n/** A declared input/output shape, dynamic axes appearing as `null`. */\nexport type DeclaredShape = readonly DeclaredDim[];\n\n/**\n * Convert ORT value metadata into declared shapes.\n *\n * @param metadata Metadata as reported by `InferenceSession.inputMetadata`, or\n * `undefined` on ORT builds that predate it (`onnxruntime-web` < 1.22,\n * measured). The session then falls back to the shapes in the model file.\n * @returns One shape per value, in declaration order. Non-tensor values and\n * builds without metadata yield empty shapes, which read as \"nothing\n * declared\" everywhere downstream.\n */\nexport function declaredShapesFrom(\n metadata: readonly ort.InferenceSession.ValueMetadata[] | undefined,\n): readonly DeclaredShape[] {\n if (metadata === undefined) return [];\n return metadata.map((value) =>\n value.isTensor\n ? value.shape.map((dim) =>\n typeof dim === \"number\" && Number.isInteger(dim) && dim > 0 ? dim : null,\n )\n : [],\n );\n}\n\n/**\n * Read the spatial input size out of a declared NCHW shape.\n *\n * @param shape The declared shape of the model's image input.\n * @returns `[width, height]` in pixels, or `null` when the shape is not 4D or\n * leaves either spatial axis dynamic — in which case the model accepts more\n * than one resolution and there is nothing to correct.\n */\nexport function spatialInputSize(shape: DeclaredShape): readonly [number, number] | null {\n if (shape.length !== 4) return null;\n const height = shape[2];\n const width = shape[3];\n if (height === null || height === undefined || width === null || width === undefined)\n return null;\n return [width, height];\n}\n\n/**\n * Infer how many classes a YOLO detection/segmentation head emits.\n *\n * Such a head declares `(B, 4 + nc, N)` — four box coordinates stacked above one\n * score per class, over `N` candidate anchors. `N` is in the thousands and the\n * batch is 1, so the channel axis is the smallest static axis above 1.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the shape leaves it undeterminable —\n * fully dynamic, or too small to hold boxes plus at least one class.\n */\nexport function detectionNumClasses(shape: DeclaredShape): number | null {\n const staticDims = shape.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n if (channels < 5) return null;\n return channels - 4;\n}\n\n/**\n * Mask coefficients per anchor when no prototype shape says otherwise.\n *\n * Every Ultralytics seg head (v8, v11) emits 32; it is the fallback when the\n * prototype output's channel axis is dynamic or the runtime reports no shapes.\n */\nconst DEFAULT_MASK_COEFS = 32;\n\n/**\n * Infer how many classes a YOLO segmentation head emits.\n *\n * The per-anchor output declares `(B, 4 + nc + nm, N)`: the detection layout\n * with `nm` mask coefficients stacked under the class scores. Reading it with\n * {@link detectionNumClasses} counts those coefficients as classes — 33 for a\n * one-class YOLO11n-seg, 112 for a COCO one — and the label check then rejects\n * the model's own baked-in names. `nm` is the channel axis of the prototype\n * output `(B, nm, H, W)`, so it is read from there.\n *\n * @param shapes Declared shapes of every output, in declaration order.\n * @returns The class count, or `null` when the per-anchor shape is missing or\n * leaves it undeterminable.\n */\nexport function segmentationNumClasses(shapes: readonly DeclaredShape[]): number | null {\n const perAnchor = shapes.find((shape) => shape.length === 3);\n if (perAnchor === undefined) return null;\n const staticDims = perAnchor.filter((dim): dim is number => dim !== null && dim > 1);\n if (staticDims.length === 0) return null;\n const channels = Math.min(...staticDims);\n const prototypes = shapes.find((shape) => shape.length === 4);\n const declared = prototypes?.[1];\n const coefs = typeof declared === \"number\" && declared > 0 ? declared : DEFAULT_MASK_COEFS;\n const classes = channels - 4 - coefs;\n return classes > 0 ? classes : null;\n}\n\n/**\n * Infer how many classes a classification head emits.\n *\n * A classifier declares `(B, nc)`, so the count is the last static axis.\n *\n * @param shape Declared shape of the model's first output.\n * @returns The class count, or `null` when the last axis is dynamic or absent.\n */\nexport function classificationNumClasses(shape: DeclaredShape): number | null {\n const last = shape[shape.length - 1];\n if (last === null || last === undefined || last < 1) return null;\n return last;\n}\n\nexport interface ResolveInputSizeOptions {\n /** Declared shape of the model's image input, from {@link declaredShapesFrom}. */\n readonly graphShape?: DeclaredShape;\n /** Size the caller asked for, if any. */\n readonly requested?: readonly [number, number];\n /** Size to use when neither the graph nor the caller pins one. */\n readonly fallback: readonly [number, number];\n}\n\n/**\n * Decide the input size a task will preprocess to.\n *\n * Precedence is graph → caller → fallback. The graph wins over an explicit\n * `inputSize` because a static shape is not a preference, it is what ORT will\n * accept: honoring the caller there would only turn a fixable mismatch into a\n * failed run. A disagreement is a configuration bug in the caller, so it is\n * reported through `console.warn` instead of being swallowed.\n *\n * @param options Graph shape, requested size and per-task fallback.\n * @returns The `[width, height]` to preprocess to.\n */\nexport function resolveInputSize(options: ResolveInputSizeOptions): readonly [number, number] {\n const graph = options.graphShape === undefined ? null : spatialInputSize(options.graphShape);\n const requested = options.requested;\n if (graph === null) return requested ?? options.fallback;\n if (requested !== undefined && (requested[0] !== graph[0] || requested[1] !== graph[1])) {\n console.warn(\n `[ort-vision-sdk] The model declares a ${graph[0]}x${graph[1]} input; ` +\n `ignoring the requested ${requested[0]}x${requested[1]}, which ONNX Runtime would reject.`,\n );\n }\n return graph;\n}\n"],"mappings":";AAkCA,SAAgBA,EACZ,GACwB;CAExB,OADIC,MAAa,KAAA,IAAkB,CAAC,IAC7BA,EAAS,KAAK,MACjBC,EAAM,WACAA,EAAM,MAAM,KAAK,MACb,OAAOC,KAAQ,YAAY,OAAO,UAAUA,CAAG,KAAKA,IAAM,IAAIA,IAAM,IACxE,IACA,CAAC,CACX;AACJ;AAUA,SAAgBC,EAAiB,GAAwD;CACrF,IAAIC,EAAM,WAAW,GAAG,OAAO;CAC/B,IAAMC,IAASD,EAAM,IACfE,IAAQF,EAAM;CAGpB,OAFIC,KAAW,QAAgCC,KAAU,OAC9C,OACJ,CAACA,GAAOD,CAAM;AACzB;AAaA,SAAgBE,EAAoB,GAAqC;CACrE,IAAMC,IAAaJ,EAAM,QAAQ,MAAuBF,MAAQ,QAAQA,IAAM,CAAC;CAC/E,IAAIM,EAAW,WAAW,GAAG,OAAO;CACpC,IAAMC,IAAW,KAAK,IAAI,GAAGD,CAAU;CAEvC,OADIC,IAAW,IAAU,OAClBA,IAAW;AACtB;AAwBA,SAAgBC,EAAuB,GAAiD;CACpF,IAAMC,IAAYC,EAAO,MAAM,MAAUR,EAAM,WAAW,CAAC;CAC3D,IAAIO,MAAc,KAAA,GAAW,OAAO;CACpC,IAAMH,IAAaG,EAAU,QAAQ,MAAuBT,MAAQ,QAAQA,IAAM,CAAC;CACnF,IAAIM,EAAW,WAAW,GAAG,OAAO;CACpC,IAAMC,IAAW,KAAK,IAAI,GAAGD,CAAU,GAEjCK,IADaD,EAAO,MAAM,MAAUR,EAAM,WAAW,CAC1C,CAAA,GAAa,IACxBU,IAAQ,OAAOD,KAAa,YAAYA,IAAW,IAAIA,IAAW,IAClEE,IAAUN,IAAW,IAAIK;CAC/B,OAAOC,IAAU,IAAIA,IAAU;AACnC;AAUA,SAAgBC,EAAyB,GAAqC;CAC1E,IAAMC,IAAOb,EAAMA,EAAM,SAAS;CAElC,OADIa,KAAS,QAA8BA,IAAO,IAAU,OACrDA;AACX;AAuBA,SAAgBC,EAAiB,GAA6D;CAC1F,IAAMC,IAAQC,EAAQ,eAAe,KAAA,IAAY,OAAOjB,EAAiBiB,EAAQ,UAAU,GACrFC,IAAYD,EAAQ;CAQ1B,OAPID,MAAU,OAAaE,KAAaD,EAAQ,YAC5CC,MAAc,KAAA,MAAcA,EAAU,OAAOF,EAAM,MAAME,EAAU,OAAOF,EAAM,OAChF,QAAQ,KACJ,yCAAyCA,EAAM,GAAG,GAAGA,EAAM,GAAG,iCAChCE,EAAU,GAAG,GAAGA,EAAU,GAAG,mCAC/D,GAEGF;AACX"}
@@ -1,3 +1,3 @@
1
- function e(e){let t=0,n=0;for(;e.pos<e.end;){let r=e.bytes[e.pos];if(e.pos+=1,t+=(r&127)*2**n,!(r&128))return t;if(n+=7,n>63)return null}return null}function t(t,n){switch(n){case 0:return e(t)!==null;case 1:return t.pos+=8,t.pos<=t.end;case 2:{let n=e(t);return n!==null&&(t.pos+=n,t.pos<=t.end)}case 5:return t.pos+=4,t.pos<=t.end;default:return!1}}function n(t,n=1048576){let r=e(t);if(r===null||r>n)return null;let i=t.pos,a=i+r;return a>t.end?null:(t.pos=a,{start:i,end:a})}function r(r,i,a){let o={bytes:r,end:a,pos:i},s=new TextDecoder(`utf-8`,{fatal:!1}),c=null,l=null;for(;o.pos<a;){let i=e(o);if(i===null)return null;let a=i>>>3,u=i&7;if(u===2&&(a===1||a===2)){let e=n(o);if(e===null)return null;let t=s.decode(r.subarray(e.start,e.end));a===1?c=t:l=t;continue}if(!t(o,u))return null}return c===null||l===null?null:[c,l]}function i(i){let a=i instanceof Uint8Array?i:new Uint8Array(i),o={bytes:a,end:a.length,pos:0},s={};for(;o.pos<o.end;){let i=e(o);if(i===null)break;let c=i>>>3,l=i&7;if(c===14&&l===2){let e=n(o);if(e===null)break;let t=r(a,e.start,e.end);t&&(s[t[0]]=t[1]);continue}if(!t(o,l))break}return s}var a={elemType:null,shape:[]};function o(n,r,i){let a={bytes:n,end:i,pos:r};for(;a.pos<a.end;){let n=e(a);if(n===null)return null;let r=n>>>3,i=n&7;if(r===1&&i===0){let t=e(a);return t!==null&&Number.isSafeInteger(t)&&t>0?t:null}if(!t(a,i))return null}return null}function s(r,i,a){let s={bytes:r,end:a,pos:i},c=[];for(;s.pos<s.end;){let i=e(s);if(i===null)return[];let a=i>>>3,l=i&7;if(a===1&&l===2){let e=n(s);if(e===null)return[];c.push(o(r,e.start,e.end));continue}if(!t(s,l))return[]}return c}function c(r,i,a){let o={bytes:r,end:a,pos:i},c=null,l=[];for(;o.pos<o.end;){let i=e(o);if(i===null)break;let a=i>>>3,u=i&7;if(a===1&&u===0){c=e(o);continue}if(a===2&&u===2){let e=n(o);if(e===null)break;l=s(r,e.start,e.end);continue}if(!t(o,u))break}return{elemType:c,shape:l}}function l(r,i,o){let s={bytes:r,end:o,pos:i};for(;s.pos<s.end;){let i=e(s);if(i===null)return a;let o=i>>>3,l=i&7;if(o===1&&l===2){let e=n(s);return e===null?a:c(r,e.start,e.end)}if(!t(s,l))return a}return a}function u(r,i,o){let s={bytes:r,end:o,pos:i},c=null,u=a;for(;s.pos<s.end;){let i=e(s);if(i===null)return null;let a=i>>>3,o=i&7;if(o===2){let e=n(s);if(e===null)return null;a===1?c=new TextDecoder(`utf-8`,{fatal:!1}).decode(r.subarray(e.start,e.end)):a===2&&(u=l(r,e.start,e.end));continue}if(!t(s,o))return null}return c===null?null:{name:c,...u}}function d(r){let i=r instanceof Uint8Array?r:new Uint8Array(r),a={bytes:i,end:i.length,pos:0},o=[],s=[];for(;a.pos<a.end;){let r=e(a);if(r===null)break;let c=r>>>3,l=r&7;if(c===7&&l===2){let r=n(a,i.length);if(r===null)break;let c={bytes:i,end:r.end,pos:r.start};for(;c.pos<c.end;){let r=e(c);if(r===null)break;let a=r>>>3,l=r&7;if((a===11||a===12)&&l===2){let e=n(c);if(e===null)break;let t=u(i,e.start,e.end);t&&(a===11?o:s).push(t);continue}if(!t(c,l))break}continue}if(!t(a,l))break}return{inputs:o,outputs:s}}function f(e){let t={};for(let n of d(e).inputs)n.elemType!==null&&(t[n.name]=n.elemType);return t}function p(e){let{inputs:t,outputs:n}=d(e);return{inputs:Object.fromEntries(t.map(e=>[e.name,e.shape])),outputs:Object.fromEntries(n.map(e=>[e.name,e.shape]))}}function m(e){return h(e?.names)}function h(e){let t=e?.trim();if(!t||!t.startsWith(`{`)||!t.endsWith(`}`))return null;let n=t.slice(1,-1).trim();if(!n)return null;let r=new Map,i=/(-?\d+)\s*:\s*(?:'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)")/g,a=0;for(let e of n.matchAll(i)){let t=Number(e[1]),n=e[2]??e[3];if(!Number.isInteger(t)||n===void 0)return null;r.set(t,g(n)),a+=e[0].length}if(r.size===0||n.length-a>r.size*3)return null;let o=[];for(let e=0;e<r.size;e+=1){let t=r.get(e);if(t===void 0)return null;o.push(t)}return o}function g(e){return e.replace(/\\(.)/g,(e,t)=>t===`n`?`
1
+ function e(e){let t=0,n=0;for(;e.pos<e.end;){let r=e.bytes[e.pos];if(e.pos+=1,t+=(r&127)*2**n,!(r&128))return t;if(n+=7,n>63)return null}return null}function t(t,n){switch(n){case 0:return e(t)!==null;case 1:return t.pos+=8,t.pos<=t.end;case 2:{let n=e(t);return n!==null&&(t.pos+=n,t.pos<=t.end)}case 5:return t.pos+=4,t.pos<=t.end;default:return!1}}function n(t,n=1048576){let r=e(t);if(r===null||r>n)return null;let i=t.pos,a=i+r;return a>t.end?null:(t.pos=a,{start:i,end:a})}function r(r,i,a){let o={bytes:r,end:a,pos:i},s=new TextDecoder(`utf-8`,{fatal:!1}),c=null,l=null;for(;o.pos<a;){let i=e(o);if(i===null)return null;let a=i>>>3,u=i&7;if(u===2&&(a===1||a===2)){let e=n(o);if(e===null)return null;let t=s.decode(r.subarray(e.start,e.end));a===1?c=t:l=t}else if(!t(o,u))return null}return c===null||l===null?null:[c,l]}function i(i){let a=i instanceof Uint8Array?i:new Uint8Array(i),o={bytes:a,end:a.length,pos:0},s={};for(;o.pos<o.end;){let i=e(o);if(i===null)break;let c=i>>>3,l=i&7;if(c===14&&l===2){let e=n(o);if(e===null)break;let t=r(a,e.start,e.end);t&&(s[t[0]]=t[1])}else if(!t(o,l))break}return s}var a={elemType:null,shape:[]};function o(n,r,i){let a={bytes:n,end:i,pos:r};for(;a.pos<a.end;){let n=e(a);if(n===null)return null;let r=n>>>3,i=n&7;if(r===1&&i===0){let t=e(a);return t!==null&&Number.isSafeInteger(t)&&t>0?t:null}if(!t(a,i))return null}return null}function s(r,i,a){let s={bytes:r,end:a,pos:i},c=[];for(;s.pos<s.end;){let i=e(s);if(i===null)return[];let a=i>>>3,l=i&7;if(a===1&&l===2){let e=n(s);if(e===null)return[];c.push(o(r,e.start,e.end))}else if(!t(s,l))return[]}return c}function c(r,i,a){let o={bytes:r,end:a,pos:i},c=null,l=[];for(;o.pos<o.end;){let i=e(o);if(i===null)break;let a=i>>>3,u=i&7;if(a===1&&u===0)c=e(o);else if(a===2&&u===2){let e=n(o);if(e===null)break;l=s(r,e.start,e.end)}else if(!t(o,u))break}return{elemType:c,shape:l}}function l(r,i,o){let s={bytes:r,end:o,pos:i};for(;s.pos<s.end;){let i=e(s);if(i===null)return a;let o=i>>>3,l=i&7;if(o===1&&l===2){let e=n(s);return e===null?a:c(r,e.start,e.end)}if(!t(s,l))return a}return a}function u(r,i,o){let s={bytes:r,end:o,pos:i},c=null,u=a;for(;s.pos<s.end;){let i=e(s);if(i===null)return null;let a=i>>>3,o=i&7;if(o===2){let e=n(s);if(e===null)return null;a===1?c=new TextDecoder(`utf-8`,{fatal:!1}).decode(r.subarray(e.start,e.end)):a===2&&(u=l(r,e.start,e.end))}else if(!t(s,o))return null}return c===null?null:{name:c,...u}}function d(r){let i=r instanceof Uint8Array?r:new Uint8Array(r),a={bytes:i,end:i.length,pos:0},o=[],s=[];for(;a.pos<a.end;){let r=e(a);if(r===null)break;let c=r>>>3,l=r&7;if(c===7&&l===2){let r=n(a,i.length);if(r===null)break;let c={bytes:i,end:r.end,pos:r.start};for(;c.pos<c.end;){let r=e(c);if(r===null)break;let a=r>>>3,l=r&7;if((a===11||a===12)&&l===2){let e=n(c);if(e===null)break;let t=u(i,e.start,e.end);t&&(a===11?o:s).push(t)}else if(!t(c,l))break}}else if(!t(a,l))break}return{inputs:o,outputs:s}}function f(e){let t={};for(let n of d(e).inputs)n.elemType!==null&&(t[n.name]=n.elemType);return t}function p(e){let{inputs:t,outputs:n}=d(e);return{inputs:Object.fromEntries(t.map(e=>[e.name,e.shape])),outputs:Object.fromEntries(n.map(e=>[e.name,e.shape]))}}function m(e){return h(e?.names)}function h(e){let t=e?.trim();if(!t||!t.startsWith(`{`)||!t.endsWith(`}`))return null;let n=t.slice(1,-1).trim();if(!n)return null;let r=new Map,i=/(-?\d+)\s*:\s*(?:'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)")/g,a=0;for(let e of n.matchAll(i)){let t=Number(e[1]),n=e[2]??e[3];if(!Number.isInteger(t)||n===void 0)return null;r.set(t,g(n)),a+=e[0].length}if(r.size===0||n.length-a>r.size*3)return null;let o=[];for(let e=0;e<r.size;e+=1){let t=r.get(e);if(t===void 0)return null;o.push(t)}return o}function g(e){return e.replace(/\\(.)/g,(e,t)=>t===`n`?`
2
2
  `:t===`r`?`\r`:t===`t`?` `:t)}exports.modelNames=m,exports.parseNames=h,exports.readModelInputTypes=f,exports.readModelMetadata=i,exports.readModelShapes=p;
3
3
  //# sourceMappingURL=metadata.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.cjs","names":[],"sources":["../../../src/vision/core/metadata.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Read the metadata an exporter baked into a `.onnx` file.\n *\n * `onnxruntime-web` exposes input/output metadata but **not** the model's\n * custom metadata map, which is where Ultralytics writes `names`, `task` and\n * `imgsz`. The Python SDK gets it for free from\n * `InferenceSession.get_modelmeta().custom_metadata_map`; in the browser the\n * only way to the same information is to read it out of the file, so this\n * module walks just enough of the ModelProto wire format to collect\n * `metadata_props`.\n *\n * It never throws and never allocates unbounded: a truncated, hostile or\n * simply unexpected file yields an empty map, and every caller treats that as\n * \"the model says nothing\", falling back to what it was given.\n */\n\nimport type { DeclaredDim, DeclaredShape } from \"./graph\";\n\n/** Field number of `metadata_props` in `ModelProto` (repeated StringStringEntryProto). */\nconst MODEL_METADATA_PROPS_FIELD = 14;\n\n/** Field number of `graph` in `ModelProto` (GraphProto). */\nconst MODEL_GRAPH_FIELD = 7;\n\n/** Field number of `input` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_INPUT_FIELD = 11;\n\n/** Field number of `output` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_OUTPUT_FIELD = 12;\n\n/** Field numbers of `name` and `type` in `ValueInfoProto`. */\nconst VALUE_INFO_NAME_FIELD = 1;\nconst VALUE_INFO_TYPE_FIELD = 2;\n\n/** Field number of `tensor_type` in `TypeProto` (TypeProto.Tensor). */\nconst TYPE_TENSOR_FIELD = 1;\n\n/** Field number of `elem_type` in `TypeProto.Tensor` (a `TensorProto.DataType`). */\nconst TENSOR_ELEM_TYPE_FIELD = 1;\n\n/** Field number of `shape` in `TypeProto.Tensor` (TensorShapeProto). */\nconst TENSOR_SHAPE_FIELD = 2;\n\n/** Field number of `dim` in `TensorShapeProto` (repeated Dimension). */\nconst SHAPE_DIM_FIELD = 1;\n\n/** Field number of `dim_value` in `TensorShapeProto.Dimension` (int64). */\nconst DIM_VALUE_FIELD = 1;\n\n/** Field numbers of `key` and `value` in `StringStringEntryProto`. */\nconst ENTRY_KEY_FIELD = 1;\nconst ENTRY_VALUE_FIELD = 2;\n\n/** Protobuf wire types this reader understands. */\nconst WIRE_VARINT = 0;\nconst WIRE_FIXED64 = 1;\nconst WIRE_LENGTH_DELIMITED = 2;\nconst WIRE_FIXED32 = 5;\n\n/**\n * Hard ceiling on a single length-delimited field, as a guard against a corrupt\n * length turning into a huge slice. Model metadata values are strings — a class\n * name map for thousands of classes still fits well inside this.\n *\n * It applies to leaf fields being read *out* of the file, not to the messages\n * walked *through* to reach them. The `graph` of a real export is the file: 21.79\n * MB on a reported YOLO detector. Applying this ceiling there made the reader\n * give up on every model anyone would actually load, and give up silently.\n */\nconst MAX_FIELD_BYTES = 1 << 20;\n\n/** A cursor over a byte range, tracking its own position. */\ninterface Cursor {\n readonly bytes: Uint8Array;\n readonly end: number;\n pos: number;\n}\n\n/**\n * Read a base-128 varint.\n *\n * @param cursor Cursor to advance.\n * @returns The value, or `null` when the varint is truncated or overlong\n * (beyond the 64-bit range protobuf allows).\n */\nfunction readVarint(cursor: Cursor): number | null {\n let result = 0;\n let shift = 0;\n while (cursor.pos < cursor.end) {\n const byte = cursor.bytes[cursor.pos]!;\n cursor.pos += 1;\n result += (byte & 0x7f) * 2 ** shift;\n if ((byte & 0x80) === 0) return result;\n shift += 7;\n if (shift > 63) return null;\n }\n return null;\n}\n\n/**\n * Skip a field whose contents are not needed.\n *\n * @param cursor Cursor to advance past the field's payload.\n * @param wireType Wire type read from the field's tag.\n * @returns `true` when the field was skipped, `false` when the stream is\n * unreadable from here (unknown wire type or truncated payload).\n */\nfunction skipField(cursor: Cursor, wireType: number): boolean {\n switch (wireType) {\n case WIRE_VARINT:\n return readVarint(cursor) !== null;\n case WIRE_FIXED64:\n cursor.pos += 8;\n return cursor.pos <= cursor.end;\n case WIRE_LENGTH_DELIMITED: {\n const length = readVarint(cursor);\n if (length === null) return false;\n cursor.pos += length;\n return cursor.pos <= cursor.end;\n }\n case WIRE_FIXED32:\n cursor.pos += 4;\n return cursor.pos <= cursor.end;\n default:\n return false;\n }\n}\n\n/**\n * Read a length-delimited payload as a byte range.\n *\n * @param cursor Cursor to advance past the payload.\n * @param maxBytes Largest payload to accept, defaulting to\n * {@link MAX_FIELD_BYTES}. Pass the buffer length when descending into a\n * message whose size is the file's size rather than a leaf value's.\n * @returns Start and end offsets of the payload, or `null` when the length is\n * truncated, overruns the buffer, or exceeds `maxBytes`.\n */\nfunction readLengthDelimited(\n cursor: Cursor,\n maxBytes: number = MAX_FIELD_BYTES,\n): { start: number; end: number } | null {\n const length = readVarint(cursor);\n if (length === null || length > maxBytes) return null;\n const start = cursor.pos;\n const end = start + length;\n if (end > cursor.end) return null;\n cursor.pos = end;\n return { start, end };\n}\n\n/**\n * Decode one `StringStringEntryProto` into a key/value pair.\n *\n * @param bytes The model buffer.\n * @param start Offset the entry's payload starts at.\n * @param end Offset the entry's payload ends at.\n * @returns The pair, or `null` when either half is missing or undecodable.\n */\nfunction readEntry(\n bytes: Uint8Array,\n start: number,\n end: number,\n): readonly [string, string] | null {\n const cursor: Cursor = { bytes, end, pos: start };\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n let key: string | null = null;\n let value: string | null = null;\n\n while (cursor.pos < end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (\n wireType === WIRE_LENGTH_DELIMITED &&\n (field === ENTRY_KEY_FIELD || field === ENTRY_VALUE_FIELD)\n ) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n const text = decoder.decode(bytes.subarray(range.start, range.end));\n if (field === ENTRY_KEY_FIELD) key = text;\n else value = text;\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n\n if (key === null || value === null) return null;\n return [key, value];\n}\n\n/**\n * Collect a model's custom metadata map straight out of its bytes.\n *\n * @param model The `.onnx` file contents.\n * @returns Key/value metadata — `names`, `task`, `imgsz`, ... for an\n * Ultralytics export — or an empty object when the file carries none or\n * cannot be walked.\n */\nexport function readModelMetadata(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, string>> {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const metadata: Record<string, string> = {};\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_METADATA_PROPS_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n const entry = readEntry(bytes, range.start, range.end);\n if (entry) metadata[entry[0]] = entry[1];\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return metadata;\n}\n\n/** What a graph value declares about itself: its element type and its shape. */\ninterface DeclaredTensor {\n readonly elemType: number | null;\n readonly shape: DeclaredShape;\n}\n\n/** A graph value with nothing readable declared. */\nconst UNDECLARED: DeclaredTensor = { elemType: null, shape: [] };\n\n/**\n * Read one `TensorShapeProto.Dimension`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The size when the graph pins it to a positive integer, `null` for a\n * symbolic (`dim_param`) or absent one — the same convention as\n * `declaredShapesFrom`, so both sources read alike downstream.\n */\nfunction readDimension(bytes: Uint8Array, start: number, end: number): DeclaredDim {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === DIM_VALUE_FIELD && wireType === WIRE_VARINT) {\n const value = readVarint(cursor);\n return value !== null && Number.isSafeInteger(value) && value > 0 ? value : null;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n return null;\n}\n\n/**\n * Read a `TensorShapeProto` into a declared shape.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns One entry per dimension, or an empty shape when the message cannot\n * be walked — a half-read shape would claim the wrong rank.\n */\nfunction readShape(bytes: Uint8Array, start: number, end: number): DeclaredShape {\n const cursor: Cursor = { bytes, end, pos: start };\n const dims: DeclaredDim[] = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return [];\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === SHAPE_DIM_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return [];\n dims.push(readDimension(bytes, range.start, range.end));\n continue;\n }\n if (!skipField(cursor, wireType)) return [];\n }\n return dims;\n}\n\n/**\n * Read a `TypeProto.Tensor` message.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns Its element type and shape; either is left undeclared when the\n * message carries none or cannot be walked.\n */\nfunction readTensorType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n let elemType: number | null = null;\n let shape: DeclaredShape = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TENSOR_ELEM_TYPE_FIELD && wireType === WIRE_VARINT) {\n elemType = readVarint(cursor);\n continue;\n }\n if (field === TENSOR_SHAPE_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n shape = readShape(bytes, range.start, range.end);\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n return { elemType, shape };\n}\n\n/**\n * Read a `TypeProto`, which wraps the tensor type.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The tensor's declarations, or {@link UNDECLARED} for a non-tensor\n * type (sequence, map, optional) or an unreadable message.\n */\nfunction readType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return UNDECLARED;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TYPE_TENSOR_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return UNDECLARED;\n return readTensorType(bytes, range.start, range.end);\n }\n if (!skipField(cursor, wireType)) return UNDECLARED;\n }\n return UNDECLARED;\n}\n\n/**\n * Read one `ValueInfoProto`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The value's name and declarations, or `null` when the name is\n * missing or the message is unreadable.\n */\nfunction readValueInfo(\n bytes: Uint8Array,\n start: number,\n end: number,\n): (DeclaredTensor & { readonly name: string }) | null {\n const cursor: Cursor = { bytes, end, pos: start };\n let name: string | null = null;\n let declared: DeclaredTensor = UNDECLARED;\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n if (field === VALUE_INFO_NAME_FIELD) {\n name = new TextDecoder(\"utf-8\", { fatal: false }).decode(\n bytes.subarray(range.start, range.end),\n );\n } else if (field === VALUE_INFO_TYPE_FIELD) {\n declared = readType(bytes, range.start, range.end);\n }\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n if (name === null) return null;\n return { name, ...declared };\n}\n\n/** The graph's declared inputs and outputs, each in declaration order. */\ninterface GraphValues {\n readonly inputs: readonly (DeclaredTensor & { readonly name: string })[];\n readonly outputs: readonly (DeclaredTensor & { readonly name: string })[];\n}\n\n/**\n * Walk the `GraphProto` and collect what its inputs and outputs declare.\n *\n * @param model The `.onnx` file contents.\n * @returns Both lists, empty when the file carries no readable graph.\n */\nfunction readGraphValues(model: Uint8Array | ArrayBufferLike): GraphValues {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const inputs: (DeclaredTensor & { readonly name: string })[] = [];\n const outputs: (DeclaredTensor & { readonly name: string })[] = [];\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_GRAPH_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const graph = readLengthDelimited(cursor, bytes.length);\n if (graph === null) break;\n const inner: Cursor = { bytes, end: graph.end, pos: graph.start };\n while (inner.pos < inner.end) {\n const innerTag = readVarint(inner);\n if (innerTag === null) break;\n const innerField = innerTag >>> 3;\n const innerWire = innerTag & 0x07;\n if (\n (innerField === GRAPH_INPUT_FIELD || innerField === GRAPH_OUTPUT_FIELD) &&\n innerWire === WIRE_LENGTH_DELIMITED\n ) {\n const range = readLengthDelimited(inner);\n if (range === null) break;\n const info = readValueInfo(bytes, range.start, range.end);\n if (info) (innerField === GRAPH_INPUT_FIELD ? inputs : outputs).push(info);\n continue;\n }\n if (!skipField(inner, innerWire)) break;\n }\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return { inputs, outputs };\n}\n\n/**\n * Read the element type each graph input declares.\n *\n * `onnxruntime-web` does not expose this. `session.inputMetadata` is\n * `undefined` on 1.20.1 — the same version where `declaredShapesFrom` comes\n * back empty — so the declared types have to come from the file, which the SDK\n * already downloads and walks for {@link readModelMetadata}. Same bytes, one\n * more pass, no extra request.\n *\n * @param model The `.onnx` file contents.\n * @returns Input name → `TensorProto.DataType` value. An empty object when the\n * file carries no readable graph, which every caller treats as \"assume\n * float32\" — the behaviour before any of this existed.\n */\nexport function readModelInputTypes(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, number>> {\n const types: Record<string, number> = {};\n for (const input of readGraphValues(model).inputs) {\n if (input.elemType !== null) types[input.name] = input.elemType;\n }\n return types;\n}\n\n/**\n * Read the shape each graph input and output declares, straight from the file.\n *\n * `onnxruntime-web` reports these through `inputMetadata` / `outputMetadata`\n * only from 1.22 on. Below that the session answers nothing, and a task that\n * reads its input size or class count off the session silently fell back to\n * its defaults: a 64x64 detector was fed 640x640 and ORT aborted with\n * `Got invalid dimensions for input` (measured on 1.17.3, 1.18.0, 1.19.2,\n * 1.20.1 and 1.21.0). The\n * file carries the same declarations, in the same `ValueInfoProto` the element\n * types are read from.\n *\n * Keyed by name rather than position: in an older IR the graph's `input` list\n * also carries the initializers, so its order does not line up with the\n * session's `inputNames`.\n *\n * @param model The `.onnx` file contents.\n * @returns Input and output name → shape, dynamic axes as `null`. Both maps\n * are empty when the file carries no readable graph.\n */\nexport function readModelShapes(model: Uint8Array | ArrayBufferLike): {\n readonly inputs: Readonly<Record<string, DeclaredShape>>;\n readonly outputs: Readonly<Record<string, DeclaredShape>>;\n} {\n const { inputs, outputs } = readGraphValues(model);\n return {\n inputs: Object.fromEntries(inputs.map((value) => [value.name, value.shape])),\n outputs: Object.fromEntries(outputs.map((value) => [value.name, value.shape])),\n };\n}\n\n/**\n * Read the class names an export baked into the model metadata.\n *\n * Ultralytics writes `names` as the Python `repr` of a `dict[int, str]` — e.g.\n * `\"{0: 'deworm', 1: 'not_deworm'}\"`. The value is parsed structurally (never\n * evaluated), and anything unparseable, non-`dict`, or not keyed by contiguous\n * integers from zero is rejected whole rather than half-applied: a partial name\n * map would silently mislabel predictions.\n *\n * @param metadata A model's custom metadata map.\n * @returns Class names in class-id order, or `null` when the model carries no\n * usable `names` entry.\n */\nexport function modelNames(\n metadata: Readonly<Record<string, string>> | undefined,\n): readonly string[] | null {\n return parseNames(metadata?.names);\n}\n\n/**\n * Parse a `repr`-encoded `dict[int, str]` class map.\n *\n * Split out of {@link modelNames} because the same encoding is reused by a\n * fused pipeline, which carries one class map per stage and therefore cannot\n * store both under the single `names` key Ultralytics uses.\n *\n * @param encoded The encoded map — e.g. `\"{0: 'deworm', 1: 'not_deworm'}\"`.\n * @returns Class names in class-id order, or `null` when the value is missing,\n * unparseable, not a `dict`, or not keyed by contiguous integers from zero.\n */\nexport function parseNames(encoded: string | undefined): readonly string[] | null {\n const raw = encoded?.trim();\n if (!raw || !raw.startsWith(\"{\") || !raw.endsWith(\"}\")) return null;\n\n const body = raw.slice(1, -1).trim();\n if (!body) return null;\n\n const names = new Map<number, string>();\n const entryPattern = /(-?\\d+)\\s*:\\s*(?:'((?:[^'\\\\]|\\\\.)*)'|\"((?:[^\"\\\\]|\\\\.)*)\")/g;\n let consumed = 0;\n for (const match of body.matchAll(entryPattern)) {\n const id = Number(match[1]);\n const text = match[2] ?? match[3];\n if (!Number.isInteger(id) || text === undefined) return null;\n names.set(id, unescapeQuoted(text));\n consumed += match[0].length;\n }\n if (names.size === 0) return null;\n\n const separators = body.length - consumed;\n if (separators > names.size * 3) return null;\n\n const ordered: string[] = [];\n for (let id = 0; id < names.size; id += 1) {\n const name = names.get(id);\n if (name === undefined) return null;\n ordered.push(name);\n }\n return ordered;\n}\n\n/**\n * Resolve the backslash escapes Python's `repr` emits inside a quoted string.\n *\n * @param text The quoted string's contents, escapes intact.\n * @returns The same text with `\\\\`, `\\'`, `\\\"`, `\\n`, `\\r` and `\\t` resolved.\n */\nfunction unescapeQuoted(text: string): string {\n return text.replace(/\\\\(.)/g, (_, char: string) => {\n if (char === \"n\") return \"\\n\";\n if (char === \"r\") return \"\\r\";\n if (char === \"t\") return \"\\t\";\n return char;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"metadata.cjs","names":["readVarint","result","shift","cursor","byte","skipField","wireType","length","readLengthDelimited","maxBytes","start","end","readEntry","decoder","key","value","tag","field","range","text","bytes","readModelMetadata","model","metadata","entry","UNDECLARED","readDimension","readShape","dims","readTensorType","elemType","shape","readType","readValueInfo","name","declared","readGraphValues","inputs","outputs","graph","inner","innerTag","innerField","innerWire","info","readModelInputTypes","types","input","readModelShapes","modelNames","parseNames","raw","encoded","body","names","entryPattern","consumed","match","id","unescapeQuoted","ordered","char"],"sources":["../../../src/vision/core/metadata.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Read the metadata an exporter baked into a `.onnx` file.\n *\n * `onnxruntime-web` exposes input/output metadata but **not** the model's\n * custom metadata map, which is where Ultralytics writes `names`, `task` and\n * `imgsz`. The Python SDK gets it for free from\n * `InferenceSession.get_modelmeta().custom_metadata_map`; in the browser the\n * only way to the same information is to read it out of the file, so this\n * module walks just enough of the ModelProto wire format to collect\n * `metadata_props`.\n *\n * It never throws and never allocates unbounded: a truncated, hostile or\n * simply unexpected file yields an empty map, and every caller treats that as\n * \"the model says nothing\", falling back to what it was given.\n */\n\nimport type { DeclaredDim, DeclaredShape } from \"./graph\";\n\n/** Field number of `metadata_props` in `ModelProto` (repeated StringStringEntryProto). */\nconst MODEL_METADATA_PROPS_FIELD = 14;\n\n/** Field number of `graph` in `ModelProto` (GraphProto). */\nconst MODEL_GRAPH_FIELD = 7;\n\n/** Field number of `input` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_INPUT_FIELD = 11;\n\n/** Field number of `output` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_OUTPUT_FIELD = 12;\n\n/** Field numbers of `name` and `type` in `ValueInfoProto`. */\nconst VALUE_INFO_NAME_FIELD = 1;\nconst VALUE_INFO_TYPE_FIELD = 2;\n\n/** Field number of `tensor_type` in `TypeProto` (TypeProto.Tensor). */\nconst TYPE_TENSOR_FIELD = 1;\n\n/** Field number of `elem_type` in `TypeProto.Tensor` (a `TensorProto.DataType`). */\nconst TENSOR_ELEM_TYPE_FIELD = 1;\n\n/** Field number of `shape` in `TypeProto.Tensor` (TensorShapeProto). */\nconst TENSOR_SHAPE_FIELD = 2;\n\n/** Field number of `dim` in `TensorShapeProto` (repeated Dimension). */\nconst SHAPE_DIM_FIELD = 1;\n\n/** Field number of `dim_value` in `TensorShapeProto.Dimension` (int64). */\nconst DIM_VALUE_FIELD = 1;\n\n/** Field numbers of `key` and `value` in `StringStringEntryProto`. */\nconst ENTRY_KEY_FIELD = 1;\nconst ENTRY_VALUE_FIELD = 2;\n\n/** Protobuf wire types this reader understands. */\nconst WIRE_VARINT = 0;\nconst WIRE_FIXED64 = 1;\nconst WIRE_LENGTH_DELIMITED = 2;\nconst WIRE_FIXED32 = 5;\n\n/**\n * Hard ceiling on a single length-delimited field, as a guard against a corrupt\n * length turning into a huge slice. Model metadata values are strings — a class\n * name map for thousands of classes still fits well inside this.\n *\n * It applies to leaf fields being read *out* of the file, not to the messages\n * walked *through* to reach them. The `graph` of a real export is the file: 21.79\n * MB on a reported YOLO detector. Applying this ceiling there made the reader\n * give up on every model anyone would actually load, and give up silently.\n */\nconst MAX_FIELD_BYTES = 1 << 20;\n\n/** A cursor over a byte range, tracking its own position. */\ninterface Cursor {\n readonly bytes: Uint8Array;\n readonly end: number;\n pos: number;\n}\n\n/**\n * Read a base-128 varint.\n *\n * @param cursor Cursor to advance.\n * @returns The value, or `null` when the varint is truncated or overlong\n * (beyond the 64-bit range protobuf allows).\n */\nfunction readVarint(cursor: Cursor): number | null {\n let result = 0;\n let shift = 0;\n while (cursor.pos < cursor.end) {\n const byte = cursor.bytes[cursor.pos]!;\n cursor.pos += 1;\n result += (byte & 0x7f) * 2 ** shift;\n if ((byte & 0x80) === 0) return result;\n shift += 7;\n if (shift > 63) return null;\n }\n return null;\n}\n\n/**\n * Skip a field whose contents are not needed.\n *\n * @param cursor Cursor to advance past the field's payload.\n * @param wireType Wire type read from the field's tag.\n * @returns `true` when the field was skipped, `false` when the stream is\n * unreadable from here (unknown wire type or truncated payload).\n */\nfunction skipField(cursor: Cursor, wireType: number): boolean {\n switch (wireType) {\n case WIRE_VARINT:\n return readVarint(cursor) !== null;\n case WIRE_FIXED64:\n cursor.pos += 8;\n return cursor.pos <= cursor.end;\n case WIRE_LENGTH_DELIMITED: {\n const length = readVarint(cursor);\n if (length === null) return false;\n cursor.pos += length;\n return cursor.pos <= cursor.end;\n }\n case WIRE_FIXED32:\n cursor.pos += 4;\n return cursor.pos <= cursor.end;\n default:\n return false;\n }\n}\n\n/**\n * Read a length-delimited payload as a byte range.\n *\n * @param cursor Cursor to advance past the payload.\n * @param maxBytes Largest payload to accept, defaulting to\n * {@link MAX_FIELD_BYTES}. Pass the buffer length when descending into a\n * message whose size is the file's size rather than a leaf value's.\n * @returns Start and end offsets of the payload, or `null` when the length is\n * truncated, overruns the buffer, or exceeds `maxBytes`.\n */\nfunction readLengthDelimited(\n cursor: Cursor,\n maxBytes: number = MAX_FIELD_BYTES,\n): { start: number; end: number } | null {\n const length = readVarint(cursor);\n if (length === null || length > maxBytes) return null;\n const start = cursor.pos;\n const end = start + length;\n if (end > cursor.end) return null;\n cursor.pos = end;\n return { start, end };\n}\n\n/**\n * Decode one `StringStringEntryProto` into a key/value pair.\n *\n * @param bytes The model buffer.\n * @param start Offset the entry's payload starts at.\n * @param end Offset the entry's payload ends at.\n * @returns The pair, or `null` when either half is missing or undecodable.\n */\nfunction readEntry(\n bytes: Uint8Array,\n start: number,\n end: number,\n): readonly [string, string] | null {\n const cursor: Cursor = { bytes, end, pos: start };\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n let key: string | null = null;\n let value: string | null = null;\n\n while (cursor.pos < end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (\n wireType === WIRE_LENGTH_DELIMITED &&\n (field === ENTRY_KEY_FIELD || field === ENTRY_VALUE_FIELD)\n ) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n const text = decoder.decode(bytes.subarray(range.start, range.end));\n if (field === ENTRY_KEY_FIELD) key = text;\n else value = text;\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n\n if (key === null || value === null) return null;\n return [key, value];\n}\n\n/**\n * Collect a model's custom metadata map straight out of its bytes.\n *\n * @param model The `.onnx` file contents.\n * @returns Key/value metadata — `names`, `task`, `imgsz`, ... for an\n * Ultralytics export — or an empty object when the file carries none or\n * cannot be walked.\n */\nexport function readModelMetadata(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, string>> {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const metadata: Record<string, string> = {};\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_METADATA_PROPS_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n const entry = readEntry(bytes, range.start, range.end);\n if (entry) metadata[entry[0]] = entry[1];\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return metadata;\n}\n\n/** What a graph value declares about itself: its element type and its shape. */\ninterface DeclaredTensor {\n readonly elemType: number | null;\n readonly shape: DeclaredShape;\n}\n\n/** A graph value with nothing readable declared. */\nconst UNDECLARED: DeclaredTensor = { elemType: null, shape: [] };\n\n/**\n * Read one `TensorShapeProto.Dimension`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The size when the graph pins it to a positive integer, `null` for a\n * symbolic (`dim_param`) or absent one — the same convention as\n * `declaredShapesFrom`, so both sources read alike downstream.\n */\nfunction readDimension(bytes: Uint8Array, start: number, end: number): DeclaredDim {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === DIM_VALUE_FIELD && wireType === WIRE_VARINT) {\n const value = readVarint(cursor);\n return value !== null && Number.isSafeInteger(value) && value > 0 ? value : null;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n return null;\n}\n\n/**\n * Read a `TensorShapeProto` into a declared shape.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns One entry per dimension, or an empty shape when the message cannot\n * be walked — a half-read shape would claim the wrong rank.\n */\nfunction readShape(bytes: Uint8Array, start: number, end: number): DeclaredShape {\n const cursor: Cursor = { bytes, end, pos: start };\n const dims: DeclaredDim[] = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return [];\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === SHAPE_DIM_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return [];\n dims.push(readDimension(bytes, range.start, range.end));\n continue;\n }\n if (!skipField(cursor, wireType)) return [];\n }\n return dims;\n}\n\n/**\n * Read a `TypeProto.Tensor` message.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns Its element type and shape; either is left undeclared when the\n * message carries none or cannot be walked.\n */\nfunction readTensorType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n let elemType: number | null = null;\n let shape: DeclaredShape = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TENSOR_ELEM_TYPE_FIELD && wireType === WIRE_VARINT) {\n elemType = readVarint(cursor);\n continue;\n }\n if (field === TENSOR_SHAPE_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n shape = readShape(bytes, range.start, range.end);\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n return { elemType, shape };\n}\n\n/**\n * Read a `TypeProto`, which wraps the tensor type.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The tensor's declarations, or {@link UNDECLARED} for a non-tensor\n * type (sequence, map, optional) or an unreadable message.\n */\nfunction readType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return UNDECLARED;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TYPE_TENSOR_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return UNDECLARED;\n return readTensorType(bytes, range.start, range.end);\n }\n if (!skipField(cursor, wireType)) return UNDECLARED;\n }\n return UNDECLARED;\n}\n\n/**\n * Read one `ValueInfoProto`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The value's name and declarations, or `null` when the name is\n * missing or the message is unreadable.\n */\nfunction readValueInfo(\n bytes: Uint8Array,\n start: number,\n end: number,\n): (DeclaredTensor & { readonly name: string }) | null {\n const cursor: Cursor = { bytes, end, pos: start };\n let name: string | null = null;\n let declared: DeclaredTensor = UNDECLARED;\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n if (field === VALUE_INFO_NAME_FIELD) {\n name = new TextDecoder(\"utf-8\", { fatal: false }).decode(\n bytes.subarray(range.start, range.end),\n );\n } else if (field === VALUE_INFO_TYPE_FIELD) {\n declared = readType(bytes, range.start, range.end);\n }\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n if (name === null) return null;\n return { name, ...declared };\n}\n\n/** The graph's declared inputs and outputs, each in declaration order. */\ninterface GraphValues {\n readonly inputs: readonly (DeclaredTensor & { readonly name: string })[];\n readonly outputs: readonly (DeclaredTensor & { readonly name: string })[];\n}\n\n/**\n * Walk the `GraphProto` and collect what its inputs and outputs declare.\n *\n * @param model The `.onnx` file contents.\n * @returns Both lists, empty when the file carries no readable graph.\n */\nfunction readGraphValues(model: Uint8Array | ArrayBufferLike): GraphValues {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const inputs: (DeclaredTensor & { readonly name: string })[] = [];\n const outputs: (DeclaredTensor & { readonly name: string })[] = [];\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_GRAPH_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const graph = readLengthDelimited(cursor, bytes.length);\n if (graph === null) break;\n const inner: Cursor = { bytes, end: graph.end, pos: graph.start };\n while (inner.pos < inner.end) {\n const innerTag = readVarint(inner);\n if (innerTag === null) break;\n const innerField = innerTag >>> 3;\n const innerWire = innerTag & 0x07;\n if (\n (innerField === GRAPH_INPUT_FIELD || innerField === GRAPH_OUTPUT_FIELD) &&\n innerWire === WIRE_LENGTH_DELIMITED\n ) {\n const range = readLengthDelimited(inner);\n if (range === null) break;\n const info = readValueInfo(bytes, range.start, range.end);\n if (info) (innerField === GRAPH_INPUT_FIELD ? inputs : outputs).push(info);\n continue;\n }\n if (!skipField(inner, innerWire)) break;\n }\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return { inputs, outputs };\n}\n\n/**\n * Read the element type each graph input declares.\n *\n * `onnxruntime-web` does not expose this. `session.inputMetadata` is\n * `undefined` on 1.20.1 — the same version where `declaredShapesFrom` comes\n * back empty — so the declared types have to come from the file, which the SDK\n * already downloads and walks for {@link readModelMetadata}. Same bytes, one\n * more pass, no extra request.\n *\n * @param model The `.onnx` file contents.\n * @returns Input name → `TensorProto.DataType` value. An empty object when the\n * file carries no readable graph, which every caller treats as \"assume\n * float32\" — the behaviour before any of this existed.\n */\nexport function readModelInputTypes(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, number>> {\n const types: Record<string, number> = {};\n for (const input of readGraphValues(model).inputs) {\n if (input.elemType !== null) types[input.name] = input.elemType;\n }\n return types;\n}\n\n/**\n * Read the shape each graph input and output declares, straight from the file.\n *\n * `onnxruntime-web` reports these through `inputMetadata` / `outputMetadata`\n * only from 1.22 on. Below that the session answers nothing, and a task that\n * reads its input size or class count off the session silently fell back to\n * its defaults: a 64x64 detector was fed 640x640 and ORT aborted with\n * `Got invalid dimensions for input` (measured on 1.17.3, 1.18.0, 1.19.2,\n * 1.20.1 and 1.21.0). The\n * file carries the same declarations, in the same `ValueInfoProto` the element\n * types are read from.\n *\n * Keyed by name rather than position: in an older IR the graph's `input` list\n * also carries the initializers, so its order does not line up with the\n * session's `inputNames`.\n *\n * @param model The `.onnx` file contents.\n * @returns Input and output name → shape, dynamic axes as `null`. Both maps\n * are empty when the file carries no readable graph.\n */\nexport function readModelShapes(model: Uint8Array | ArrayBufferLike): {\n readonly inputs: Readonly<Record<string, DeclaredShape>>;\n readonly outputs: Readonly<Record<string, DeclaredShape>>;\n} {\n const { inputs, outputs } = readGraphValues(model);\n return {\n inputs: Object.fromEntries(inputs.map((value) => [value.name, value.shape])),\n outputs: Object.fromEntries(outputs.map((value) => [value.name, value.shape])),\n };\n}\n\n/**\n * Read the class names an export baked into the model metadata.\n *\n * Ultralytics writes `names` as the Python `repr` of a `dict[int, str]` — e.g.\n * `\"{0: 'deworm', 1: 'not_deworm'}\"`. The value is parsed structurally (never\n * evaluated), and anything unparseable, non-`dict`, or not keyed by contiguous\n * integers from zero is rejected whole rather than half-applied: a partial name\n * map would silently mislabel predictions.\n *\n * @param metadata A model's custom metadata map.\n * @returns Class names in class-id order, or `null` when the model carries no\n * usable `names` entry.\n */\nexport function modelNames(\n metadata: Readonly<Record<string, string>> | undefined,\n): readonly string[] | null {\n return parseNames(metadata?.names);\n}\n\n/**\n * Parse a `repr`-encoded `dict[int, str]` class map.\n *\n * Split out of {@link modelNames} because the same encoding is reused by a\n * fused pipeline, which carries one class map per stage and therefore cannot\n * store both under the single `names` key Ultralytics uses.\n *\n * @param encoded The encoded map — e.g. `\"{0: 'deworm', 1: 'not_deworm'}\"`.\n * @returns Class names in class-id order, or `null` when the value is missing,\n * unparseable, not a `dict`, or not keyed by contiguous integers from zero.\n */\nexport function parseNames(encoded: string | undefined): readonly string[] | null {\n const raw = encoded?.trim();\n if (!raw || !raw.startsWith(\"{\") || !raw.endsWith(\"}\")) return null;\n\n const body = raw.slice(1, -1).trim();\n if (!body) return null;\n\n const names = new Map<number, string>();\n const entryPattern = /(-?\\d+)\\s*:\\s*(?:'((?:[^'\\\\]|\\\\.)*)'|\"((?:[^\"\\\\]|\\\\.)*)\")/g;\n let consumed = 0;\n for (const match of body.matchAll(entryPattern)) {\n const id = Number(match[1]);\n const text = match[2] ?? match[3];\n if (!Number.isInteger(id) || text === undefined) return null;\n names.set(id, unescapeQuoted(text));\n consumed += match[0].length;\n }\n if (names.size === 0) return null;\n\n const separators = body.length - consumed;\n if (separators > names.size * 3) return null;\n\n const ordered: string[] = [];\n for (let id = 0; id < names.size; id += 1) {\n const name = names.get(id);\n if (name === undefined) return null;\n ordered.push(name);\n }\n return ordered;\n}\n\n/**\n * Resolve the backslash escapes Python's `repr` emits inside a quoted string.\n *\n * @param text The quoted string's contents, escapes intact.\n * @returns The same text with `\\\\`, `\\'`, `\\\"`, `\\n`, `\\r` and `\\t` resolved.\n */\nfunction unescapeQuoted(text: string): string {\n return text.replace(/\\\\(.)/g, (_, char: string) => {\n if (char === \"n\") return \"\\n\";\n if (char === \"r\") return \"\\r\";\n if (char === \"t\") return \"\\t\";\n return char;\n });\n}\n"],"mappings":"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"}
@@ -43,9 +43,7 @@ function r(r, i, a) {
43
43
  if (e === null) return null;
44
44
  let t = s.decode(r.subarray(e.start, e.end));
45
45
  a === 1 ? c = t : l = t;
46
- continue;
47
- }
48
- if (!t(o, u)) return null;
46
+ } else if (!t(o, u)) return null;
49
47
  }
50
48
  return c === null || l === null ? null : [c, l];
51
49
  }
@@ -64,9 +62,7 @@ function i(i) {
64
62
  if (e === null) break;
65
63
  let t = r(a, e.start, e.end);
66
64
  t && (s[t[0]] = t[1]);
67
- continue;
68
- }
69
- if (!t(o, l)) break;
65
+ } else if (!t(o, l)) break;
70
66
  }
71
67
  return s;
72
68
  }
@@ -106,9 +102,7 @@ function s(r, i, a) {
106
102
  let e = n(s);
107
103
  if (e === null) return [];
108
104
  c.push(o(r, e.start, e.end));
109
- continue;
110
- }
111
- if (!t(s, l)) return [];
105
+ } else if (!t(s, l)) return [];
112
106
  }
113
107
  return c;
114
108
  }
@@ -122,17 +116,12 @@ function c(r, i, a) {
122
116
  let i = e(o);
123
117
  if (i === null) break;
124
118
  let a = i >>> 3, u = i & 7;
125
- if (a === 1 && u === 0) {
126
- c = e(o);
127
- continue;
128
- }
129
- if (a === 2 && u === 2) {
119
+ if (a === 1 && u === 0) c = e(o);
120
+ else if (a === 2 && u === 2) {
130
121
  let e = n(o);
131
122
  if (e === null) break;
132
123
  l = s(r, e.start, e.end);
133
- continue;
134
- }
135
- if (!t(o, u)) break;
124
+ } else if (!t(o, u)) break;
136
125
  }
137
126
  return {
138
127
  elemType: c,
@@ -171,9 +160,7 @@ function u(r, i, o) {
171
160
  let e = n(s);
172
161
  if (e === null) return null;
173
162
  a === 1 ? c = new TextDecoder("utf-8", { fatal: !1 }).decode(r.subarray(e.start, e.end)) : a === 2 && (u = l(r, e.start, e.end));
174
- continue;
175
- }
176
- if (!t(s, o)) return null;
163
+ } else if (!t(s, o)) return null;
177
164
  }
178
165
  return c === null ? null : {
179
166
  name: c,
@@ -207,13 +194,9 @@ function d(r) {
207
194
  if (e === null) break;
208
195
  let t = u(i, e.start, e.end);
209
196
  t && (a === 11 ? o : s).push(t);
210
- continue;
211
- }
212
- if (!t(c, l)) break;
197
+ } else if (!t(c, l)) break;
213
198
  }
214
- continue;
215
- }
216
- if (!t(a, l)) break;
199
+ } else if (!t(a, l)) break;
217
200
  }
218
201
  return {
219
202
  inputs: o,
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","names":[],"sources":["../../../src/vision/core/metadata.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Read the metadata an exporter baked into a `.onnx` file.\n *\n * `onnxruntime-web` exposes input/output metadata but **not** the model's\n * custom metadata map, which is where Ultralytics writes `names`, `task` and\n * `imgsz`. The Python SDK gets it for free from\n * `InferenceSession.get_modelmeta().custom_metadata_map`; in the browser the\n * only way to the same information is to read it out of the file, so this\n * module walks just enough of the ModelProto wire format to collect\n * `metadata_props`.\n *\n * It never throws and never allocates unbounded: a truncated, hostile or\n * simply unexpected file yields an empty map, and every caller treats that as\n * \"the model says nothing\", falling back to what it was given.\n */\n\nimport type { DeclaredDim, DeclaredShape } from \"./graph\";\n\n/** Field number of `metadata_props` in `ModelProto` (repeated StringStringEntryProto). */\nconst MODEL_METADATA_PROPS_FIELD = 14;\n\n/** Field number of `graph` in `ModelProto` (GraphProto). */\nconst MODEL_GRAPH_FIELD = 7;\n\n/** Field number of `input` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_INPUT_FIELD = 11;\n\n/** Field number of `output` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_OUTPUT_FIELD = 12;\n\n/** Field numbers of `name` and `type` in `ValueInfoProto`. */\nconst VALUE_INFO_NAME_FIELD = 1;\nconst VALUE_INFO_TYPE_FIELD = 2;\n\n/** Field number of `tensor_type` in `TypeProto` (TypeProto.Tensor). */\nconst TYPE_TENSOR_FIELD = 1;\n\n/** Field number of `elem_type` in `TypeProto.Tensor` (a `TensorProto.DataType`). */\nconst TENSOR_ELEM_TYPE_FIELD = 1;\n\n/** Field number of `shape` in `TypeProto.Tensor` (TensorShapeProto). */\nconst TENSOR_SHAPE_FIELD = 2;\n\n/** Field number of `dim` in `TensorShapeProto` (repeated Dimension). */\nconst SHAPE_DIM_FIELD = 1;\n\n/** Field number of `dim_value` in `TensorShapeProto.Dimension` (int64). */\nconst DIM_VALUE_FIELD = 1;\n\n/** Field numbers of `key` and `value` in `StringStringEntryProto`. */\nconst ENTRY_KEY_FIELD = 1;\nconst ENTRY_VALUE_FIELD = 2;\n\n/** Protobuf wire types this reader understands. */\nconst WIRE_VARINT = 0;\nconst WIRE_FIXED64 = 1;\nconst WIRE_LENGTH_DELIMITED = 2;\nconst WIRE_FIXED32 = 5;\n\n/**\n * Hard ceiling on a single length-delimited field, as a guard against a corrupt\n * length turning into a huge slice. Model metadata values are strings — a class\n * name map for thousands of classes still fits well inside this.\n *\n * It applies to leaf fields being read *out* of the file, not to the messages\n * walked *through* to reach them. The `graph` of a real export is the file: 21.79\n * MB on a reported YOLO detector. Applying this ceiling there made the reader\n * give up on every model anyone would actually load, and give up silently.\n */\nconst MAX_FIELD_BYTES = 1 << 20;\n\n/** A cursor over a byte range, tracking its own position. */\ninterface Cursor {\n readonly bytes: Uint8Array;\n readonly end: number;\n pos: number;\n}\n\n/**\n * Read a base-128 varint.\n *\n * @param cursor Cursor to advance.\n * @returns The value, or `null` when the varint is truncated or overlong\n * (beyond the 64-bit range protobuf allows).\n */\nfunction readVarint(cursor: Cursor): number | null {\n let result = 0;\n let shift = 0;\n while (cursor.pos < cursor.end) {\n const byte = cursor.bytes[cursor.pos]!;\n cursor.pos += 1;\n result += (byte & 0x7f) * 2 ** shift;\n if ((byte & 0x80) === 0) return result;\n shift += 7;\n if (shift > 63) return null;\n }\n return null;\n}\n\n/**\n * Skip a field whose contents are not needed.\n *\n * @param cursor Cursor to advance past the field's payload.\n * @param wireType Wire type read from the field's tag.\n * @returns `true` when the field was skipped, `false` when the stream is\n * unreadable from here (unknown wire type or truncated payload).\n */\nfunction skipField(cursor: Cursor, wireType: number): boolean {\n switch (wireType) {\n case WIRE_VARINT:\n return readVarint(cursor) !== null;\n case WIRE_FIXED64:\n cursor.pos += 8;\n return cursor.pos <= cursor.end;\n case WIRE_LENGTH_DELIMITED: {\n const length = readVarint(cursor);\n if (length === null) return false;\n cursor.pos += length;\n return cursor.pos <= cursor.end;\n }\n case WIRE_FIXED32:\n cursor.pos += 4;\n return cursor.pos <= cursor.end;\n default:\n return false;\n }\n}\n\n/**\n * Read a length-delimited payload as a byte range.\n *\n * @param cursor Cursor to advance past the payload.\n * @param maxBytes Largest payload to accept, defaulting to\n * {@link MAX_FIELD_BYTES}. Pass the buffer length when descending into a\n * message whose size is the file's size rather than a leaf value's.\n * @returns Start and end offsets of the payload, or `null` when the length is\n * truncated, overruns the buffer, or exceeds `maxBytes`.\n */\nfunction readLengthDelimited(\n cursor: Cursor,\n maxBytes: number = MAX_FIELD_BYTES,\n): { start: number; end: number } | null {\n const length = readVarint(cursor);\n if (length === null || length > maxBytes) return null;\n const start = cursor.pos;\n const end = start + length;\n if (end > cursor.end) return null;\n cursor.pos = end;\n return { start, end };\n}\n\n/**\n * Decode one `StringStringEntryProto` into a key/value pair.\n *\n * @param bytes The model buffer.\n * @param start Offset the entry's payload starts at.\n * @param end Offset the entry's payload ends at.\n * @returns The pair, or `null` when either half is missing or undecodable.\n */\nfunction readEntry(\n bytes: Uint8Array,\n start: number,\n end: number,\n): readonly [string, string] | null {\n const cursor: Cursor = { bytes, end, pos: start };\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n let key: string | null = null;\n let value: string | null = null;\n\n while (cursor.pos < end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (\n wireType === WIRE_LENGTH_DELIMITED &&\n (field === ENTRY_KEY_FIELD || field === ENTRY_VALUE_FIELD)\n ) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n const text = decoder.decode(bytes.subarray(range.start, range.end));\n if (field === ENTRY_KEY_FIELD) key = text;\n else value = text;\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n\n if (key === null || value === null) return null;\n return [key, value];\n}\n\n/**\n * Collect a model's custom metadata map straight out of its bytes.\n *\n * @param model The `.onnx` file contents.\n * @returns Key/value metadata — `names`, `task`, `imgsz`, ... for an\n * Ultralytics export — or an empty object when the file carries none or\n * cannot be walked.\n */\nexport function readModelMetadata(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, string>> {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const metadata: Record<string, string> = {};\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_METADATA_PROPS_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n const entry = readEntry(bytes, range.start, range.end);\n if (entry) metadata[entry[0]] = entry[1];\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return metadata;\n}\n\n/** What a graph value declares about itself: its element type and its shape. */\ninterface DeclaredTensor {\n readonly elemType: number | null;\n readonly shape: DeclaredShape;\n}\n\n/** A graph value with nothing readable declared. */\nconst UNDECLARED: DeclaredTensor = { elemType: null, shape: [] };\n\n/**\n * Read one `TensorShapeProto.Dimension`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The size when the graph pins it to a positive integer, `null` for a\n * symbolic (`dim_param`) or absent one — the same convention as\n * `declaredShapesFrom`, so both sources read alike downstream.\n */\nfunction readDimension(bytes: Uint8Array, start: number, end: number): DeclaredDim {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === DIM_VALUE_FIELD && wireType === WIRE_VARINT) {\n const value = readVarint(cursor);\n return value !== null && Number.isSafeInteger(value) && value > 0 ? value : null;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n return null;\n}\n\n/**\n * Read a `TensorShapeProto` into a declared shape.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns One entry per dimension, or an empty shape when the message cannot\n * be walked — a half-read shape would claim the wrong rank.\n */\nfunction readShape(bytes: Uint8Array, start: number, end: number): DeclaredShape {\n const cursor: Cursor = { bytes, end, pos: start };\n const dims: DeclaredDim[] = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return [];\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === SHAPE_DIM_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return [];\n dims.push(readDimension(bytes, range.start, range.end));\n continue;\n }\n if (!skipField(cursor, wireType)) return [];\n }\n return dims;\n}\n\n/**\n * Read a `TypeProto.Tensor` message.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns Its element type and shape; either is left undeclared when the\n * message carries none or cannot be walked.\n */\nfunction readTensorType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n let elemType: number | null = null;\n let shape: DeclaredShape = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TENSOR_ELEM_TYPE_FIELD && wireType === WIRE_VARINT) {\n elemType = readVarint(cursor);\n continue;\n }\n if (field === TENSOR_SHAPE_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n shape = readShape(bytes, range.start, range.end);\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n return { elemType, shape };\n}\n\n/**\n * Read a `TypeProto`, which wraps the tensor type.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The tensor's declarations, or {@link UNDECLARED} for a non-tensor\n * type (sequence, map, optional) or an unreadable message.\n */\nfunction readType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return UNDECLARED;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TYPE_TENSOR_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return UNDECLARED;\n return readTensorType(bytes, range.start, range.end);\n }\n if (!skipField(cursor, wireType)) return UNDECLARED;\n }\n return UNDECLARED;\n}\n\n/**\n * Read one `ValueInfoProto`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The value's name and declarations, or `null` when the name is\n * missing or the message is unreadable.\n */\nfunction readValueInfo(\n bytes: Uint8Array,\n start: number,\n end: number,\n): (DeclaredTensor & { readonly name: string }) | null {\n const cursor: Cursor = { bytes, end, pos: start };\n let name: string | null = null;\n let declared: DeclaredTensor = UNDECLARED;\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n if (field === VALUE_INFO_NAME_FIELD) {\n name = new TextDecoder(\"utf-8\", { fatal: false }).decode(\n bytes.subarray(range.start, range.end),\n );\n } else if (field === VALUE_INFO_TYPE_FIELD) {\n declared = readType(bytes, range.start, range.end);\n }\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n if (name === null) return null;\n return { name, ...declared };\n}\n\n/** The graph's declared inputs and outputs, each in declaration order. */\ninterface GraphValues {\n readonly inputs: readonly (DeclaredTensor & { readonly name: string })[];\n readonly outputs: readonly (DeclaredTensor & { readonly name: string })[];\n}\n\n/**\n * Walk the `GraphProto` and collect what its inputs and outputs declare.\n *\n * @param model The `.onnx` file contents.\n * @returns Both lists, empty when the file carries no readable graph.\n */\nfunction readGraphValues(model: Uint8Array | ArrayBufferLike): GraphValues {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const inputs: (DeclaredTensor & { readonly name: string })[] = [];\n const outputs: (DeclaredTensor & { readonly name: string })[] = [];\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_GRAPH_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const graph = readLengthDelimited(cursor, bytes.length);\n if (graph === null) break;\n const inner: Cursor = { bytes, end: graph.end, pos: graph.start };\n while (inner.pos < inner.end) {\n const innerTag = readVarint(inner);\n if (innerTag === null) break;\n const innerField = innerTag >>> 3;\n const innerWire = innerTag & 0x07;\n if (\n (innerField === GRAPH_INPUT_FIELD || innerField === GRAPH_OUTPUT_FIELD) &&\n innerWire === WIRE_LENGTH_DELIMITED\n ) {\n const range = readLengthDelimited(inner);\n if (range === null) break;\n const info = readValueInfo(bytes, range.start, range.end);\n if (info) (innerField === GRAPH_INPUT_FIELD ? inputs : outputs).push(info);\n continue;\n }\n if (!skipField(inner, innerWire)) break;\n }\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return { inputs, outputs };\n}\n\n/**\n * Read the element type each graph input declares.\n *\n * `onnxruntime-web` does not expose this. `session.inputMetadata` is\n * `undefined` on 1.20.1 — the same version where `declaredShapesFrom` comes\n * back empty — so the declared types have to come from the file, which the SDK\n * already downloads and walks for {@link readModelMetadata}. Same bytes, one\n * more pass, no extra request.\n *\n * @param model The `.onnx` file contents.\n * @returns Input name → `TensorProto.DataType` value. An empty object when the\n * file carries no readable graph, which every caller treats as \"assume\n * float32\" — the behaviour before any of this existed.\n */\nexport function readModelInputTypes(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, number>> {\n const types: Record<string, number> = {};\n for (const input of readGraphValues(model).inputs) {\n if (input.elemType !== null) types[input.name] = input.elemType;\n }\n return types;\n}\n\n/**\n * Read the shape each graph input and output declares, straight from the file.\n *\n * `onnxruntime-web` reports these through `inputMetadata` / `outputMetadata`\n * only from 1.22 on. Below that the session answers nothing, and a task that\n * reads its input size or class count off the session silently fell back to\n * its defaults: a 64x64 detector was fed 640x640 and ORT aborted with\n * `Got invalid dimensions for input` (measured on 1.17.3, 1.18.0, 1.19.2,\n * 1.20.1 and 1.21.0). The\n * file carries the same declarations, in the same `ValueInfoProto` the element\n * types are read from.\n *\n * Keyed by name rather than position: in an older IR the graph's `input` list\n * also carries the initializers, so its order does not line up with the\n * session's `inputNames`.\n *\n * @param model The `.onnx` file contents.\n * @returns Input and output name → shape, dynamic axes as `null`. Both maps\n * are empty when the file carries no readable graph.\n */\nexport function readModelShapes(model: Uint8Array | ArrayBufferLike): {\n readonly inputs: Readonly<Record<string, DeclaredShape>>;\n readonly outputs: Readonly<Record<string, DeclaredShape>>;\n} {\n const { inputs, outputs } = readGraphValues(model);\n return {\n inputs: Object.fromEntries(inputs.map((value) => [value.name, value.shape])),\n outputs: Object.fromEntries(outputs.map((value) => [value.name, value.shape])),\n };\n}\n\n/**\n * Read the class names an export baked into the model metadata.\n *\n * Ultralytics writes `names` as the Python `repr` of a `dict[int, str]` — e.g.\n * `\"{0: 'deworm', 1: 'not_deworm'}\"`. The value is parsed structurally (never\n * evaluated), and anything unparseable, non-`dict`, or not keyed by contiguous\n * integers from zero is rejected whole rather than half-applied: a partial name\n * map would silently mislabel predictions.\n *\n * @param metadata A model's custom metadata map.\n * @returns Class names in class-id order, or `null` when the model carries no\n * usable `names` entry.\n */\nexport function modelNames(\n metadata: Readonly<Record<string, string>> | undefined,\n): readonly string[] | null {\n return parseNames(metadata?.names);\n}\n\n/**\n * Parse a `repr`-encoded `dict[int, str]` class map.\n *\n * Split out of {@link modelNames} because the same encoding is reused by a\n * fused pipeline, which carries one class map per stage and therefore cannot\n * store both under the single `names` key Ultralytics uses.\n *\n * @param encoded The encoded map — e.g. `\"{0: 'deworm', 1: 'not_deworm'}\"`.\n * @returns Class names in class-id order, or `null` when the value is missing,\n * unparseable, not a `dict`, or not keyed by contiguous integers from zero.\n */\nexport function parseNames(encoded: string | undefined): readonly string[] | null {\n const raw = encoded?.trim();\n if (!raw || !raw.startsWith(\"{\") || !raw.endsWith(\"}\")) return null;\n\n const body = raw.slice(1, -1).trim();\n if (!body) return null;\n\n const names = new Map<number, string>();\n const entryPattern = /(-?\\d+)\\s*:\\s*(?:'((?:[^'\\\\]|\\\\.)*)'|\"((?:[^\"\\\\]|\\\\.)*)\")/g;\n let consumed = 0;\n for (const match of body.matchAll(entryPattern)) {\n const id = Number(match[1]);\n const text = match[2] ?? match[3];\n if (!Number.isInteger(id) || text === undefined) return null;\n names.set(id, unescapeQuoted(text));\n consumed += match[0].length;\n }\n if (names.size === 0) return null;\n\n const separators = body.length - consumed;\n if (separators > names.size * 3) return null;\n\n const ordered: string[] = [];\n for (let id = 0; id < names.size; id += 1) {\n const name = names.get(id);\n if (name === undefined) return null;\n ordered.push(name);\n }\n return ordered;\n}\n\n/**\n * Resolve the backslash escapes Python's `repr` emits inside a quoted string.\n *\n * @param text The quoted string's contents, escapes intact.\n * @returns The same text with `\\\\`, `\\'`, `\\\"`, `\\n`, `\\r` and `\\t` resolved.\n */\nfunction unescapeQuoted(text: string): string {\n return text.replace(/\\\\(.)/g, (_, char: string) => {\n if (char === \"n\") return \"\\n\";\n if (char === \"r\") return \"\\r\";\n if (char === \"t\") return \"\\t\";\n return char;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","names":["readVarint","result","shift","cursor","byte","skipField","wireType","length","readLengthDelimited","maxBytes","start","end","readEntry","decoder","key","value","tag","field","range","text","bytes","readModelMetadata","model","metadata","entry","UNDECLARED","readDimension","readShape","dims","readTensorType","elemType","shape","readType","readValueInfo","name","declared","readGraphValues","inputs","outputs","graph","inner","innerTag","innerField","innerWire","info","readModelInputTypes","types","input","readModelShapes","modelNames","parseNames","raw","encoded","body","names","entryPattern","consumed","match","id","unescapeQuoted","ordered","char"],"sources":["../../../src/vision/core/metadata.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Read the metadata an exporter baked into a `.onnx` file.\n *\n * `onnxruntime-web` exposes input/output metadata but **not** the model's\n * custom metadata map, which is where Ultralytics writes `names`, `task` and\n * `imgsz`. The Python SDK gets it for free from\n * `InferenceSession.get_modelmeta().custom_metadata_map`; in the browser the\n * only way to the same information is to read it out of the file, so this\n * module walks just enough of the ModelProto wire format to collect\n * `metadata_props`.\n *\n * It never throws and never allocates unbounded: a truncated, hostile or\n * simply unexpected file yields an empty map, and every caller treats that as\n * \"the model says nothing\", falling back to what it was given.\n */\n\nimport type { DeclaredDim, DeclaredShape } from \"./graph\";\n\n/** Field number of `metadata_props` in `ModelProto` (repeated StringStringEntryProto). */\nconst MODEL_METADATA_PROPS_FIELD = 14;\n\n/** Field number of `graph` in `ModelProto` (GraphProto). */\nconst MODEL_GRAPH_FIELD = 7;\n\n/** Field number of `input` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_INPUT_FIELD = 11;\n\n/** Field number of `output` in `GraphProto` (repeated ValueInfoProto). */\nconst GRAPH_OUTPUT_FIELD = 12;\n\n/** Field numbers of `name` and `type` in `ValueInfoProto`. */\nconst VALUE_INFO_NAME_FIELD = 1;\nconst VALUE_INFO_TYPE_FIELD = 2;\n\n/** Field number of `tensor_type` in `TypeProto` (TypeProto.Tensor). */\nconst TYPE_TENSOR_FIELD = 1;\n\n/** Field number of `elem_type` in `TypeProto.Tensor` (a `TensorProto.DataType`). */\nconst TENSOR_ELEM_TYPE_FIELD = 1;\n\n/** Field number of `shape` in `TypeProto.Tensor` (TensorShapeProto). */\nconst TENSOR_SHAPE_FIELD = 2;\n\n/** Field number of `dim` in `TensorShapeProto` (repeated Dimension). */\nconst SHAPE_DIM_FIELD = 1;\n\n/** Field number of `dim_value` in `TensorShapeProto.Dimension` (int64). */\nconst DIM_VALUE_FIELD = 1;\n\n/** Field numbers of `key` and `value` in `StringStringEntryProto`. */\nconst ENTRY_KEY_FIELD = 1;\nconst ENTRY_VALUE_FIELD = 2;\n\n/** Protobuf wire types this reader understands. */\nconst WIRE_VARINT = 0;\nconst WIRE_FIXED64 = 1;\nconst WIRE_LENGTH_DELIMITED = 2;\nconst WIRE_FIXED32 = 5;\n\n/**\n * Hard ceiling on a single length-delimited field, as a guard against a corrupt\n * length turning into a huge slice. Model metadata values are strings — a class\n * name map for thousands of classes still fits well inside this.\n *\n * It applies to leaf fields being read *out* of the file, not to the messages\n * walked *through* to reach them. The `graph` of a real export is the file: 21.79\n * MB on a reported YOLO detector. Applying this ceiling there made the reader\n * give up on every model anyone would actually load, and give up silently.\n */\nconst MAX_FIELD_BYTES = 1 << 20;\n\n/** A cursor over a byte range, tracking its own position. */\ninterface Cursor {\n readonly bytes: Uint8Array;\n readonly end: number;\n pos: number;\n}\n\n/**\n * Read a base-128 varint.\n *\n * @param cursor Cursor to advance.\n * @returns The value, or `null` when the varint is truncated or overlong\n * (beyond the 64-bit range protobuf allows).\n */\nfunction readVarint(cursor: Cursor): number | null {\n let result = 0;\n let shift = 0;\n while (cursor.pos < cursor.end) {\n const byte = cursor.bytes[cursor.pos]!;\n cursor.pos += 1;\n result += (byte & 0x7f) * 2 ** shift;\n if ((byte & 0x80) === 0) return result;\n shift += 7;\n if (shift > 63) return null;\n }\n return null;\n}\n\n/**\n * Skip a field whose contents are not needed.\n *\n * @param cursor Cursor to advance past the field's payload.\n * @param wireType Wire type read from the field's tag.\n * @returns `true` when the field was skipped, `false` when the stream is\n * unreadable from here (unknown wire type or truncated payload).\n */\nfunction skipField(cursor: Cursor, wireType: number): boolean {\n switch (wireType) {\n case WIRE_VARINT:\n return readVarint(cursor) !== null;\n case WIRE_FIXED64:\n cursor.pos += 8;\n return cursor.pos <= cursor.end;\n case WIRE_LENGTH_DELIMITED: {\n const length = readVarint(cursor);\n if (length === null) return false;\n cursor.pos += length;\n return cursor.pos <= cursor.end;\n }\n case WIRE_FIXED32:\n cursor.pos += 4;\n return cursor.pos <= cursor.end;\n default:\n return false;\n }\n}\n\n/**\n * Read a length-delimited payload as a byte range.\n *\n * @param cursor Cursor to advance past the payload.\n * @param maxBytes Largest payload to accept, defaulting to\n * {@link MAX_FIELD_BYTES}. Pass the buffer length when descending into a\n * message whose size is the file's size rather than a leaf value's.\n * @returns Start and end offsets of the payload, or `null` when the length is\n * truncated, overruns the buffer, or exceeds `maxBytes`.\n */\nfunction readLengthDelimited(\n cursor: Cursor,\n maxBytes: number = MAX_FIELD_BYTES,\n): { start: number; end: number } | null {\n const length = readVarint(cursor);\n if (length === null || length > maxBytes) return null;\n const start = cursor.pos;\n const end = start + length;\n if (end > cursor.end) return null;\n cursor.pos = end;\n return { start, end };\n}\n\n/**\n * Decode one `StringStringEntryProto` into a key/value pair.\n *\n * @param bytes The model buffer.\n * @param start Offset the entry's payload starts at.\n * @param end Offset the entry's payload ends at.\n * @returns The pair, or `null` when either half is missing or undecodable.\n */\nfunction readEntry(\n bytes: Uint8Array,\n start: number,\n end: number,\n): readonly [string, string] | null {\n const cursor: Cursor = { bytes, end, pos: start };\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n let key: string | null = null;\n let value: string | null = null;\n\n while (cursor.pos < end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (\n wireType === WIRE_LENGTH_DELIMITED &&\n (field === ENTRY_KEY_FIELD || field === ENTRY_VALUE_FIELD)\n ) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n const text = decoder.decode(bytes.subarray(range.start, range.end));\n if (field === ENTRY_KEY_FIELD) key = text;\n else value = text;\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n\n if (key === null || value === null) return null;\n return [key, value];\n}\n\n/**\n * Collect a model's custom metadata map straight out of its bytes.\n *\n * @param model The `.onnx` file contents.\n * @returns Key/value metadata — `names`, `task`, `imgsz`, ... for an\n * Ultralytics export — or an empty object when the file carries none or\n * cannot be walked.\n */\nexport function readModelMetadata(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, string>> {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const metadata: Record<string, string> = {};\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_METADATA_PROPS_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n const entry = readEntry(bytes, range.start, range.end);\n if (entry) metadata[entry[0]] = entry[1];\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return metadata;\n}\n\n/** What a graph value declares about itself: its element type and its shape. */\ninterface DeclaredTensor {\n readonly elemType: number | null;\n readonly shape: DeclaredShape;\n}\n\n/** A graph value with nothing readable declared. */\nconst UNDECLARED: DeclaredTensor = { elemType: null, shape: [] };\n\n/**\n * Read one `TensorShapeProto.Dimension`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The size when the graph pins it to a positive integer, `null` for a\n * symbolic (`dim_param`) or absent one — the same convention as\n * `declaredShapesFrom`, so both sources read alike downstream.\n */\nfunction readDimension(bytes: Uint8Array, start: number, end: number): DeclaredDim {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === DIM_VALUE_FIELD && wireType === WIRE_VARINT) {\n const value = readVarint(cursor);\n return value !== null && Number.isSafeInteger(value) && value > 0 ? value : null;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n return null;\n}\n\n/**\n * Read a `TensorShapeProto` into a declared shape.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns One entry per dimension, or an empty shape when the message cannot\n * be walked — a half-read shape would claim the wrong rank.\n */\nfunction readShape(bytes: Uint8Array, start: number, end: number): DeclaredShape {\n const cursor: Cursor = { bytes, end, pos: start };\n const dims: DeclaredDim[] = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return [];\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === SHAPE_DIM_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return [];\n dims.push(readDimension(bytes, range.start, range.end));\n continue;\n }\n if (!skipField(cursor, wireType)) return [];\n }\n return dims;\n}\n\n/**\n * Read a `TypeProto.Tensor` message.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns Its element type and shape; either is left undeclared when the\n * message carries none or cannot be walked.\n */\nfunction readTensorType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n let elemType: number | null = null;\n let shape: DeclaredShape = [];\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TENSOR_ELEM_TYPE_FIELD && wireType === WIRE_VARINT) {\n elemType = readVarint(cursor);\n continue;\n }\n if (field === TENSOR_SHAPE_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) break;\n shape = readShape(bytes, range.start, range.end);\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n return { elemType, shape };\n}\n\n/**\n * Read a `TypeProto`, which wraps the tensor type.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The tensor's declarations, or {@link UNDECLARED} for a non-tensor\n * type (sequence, map, optional) or an unreadable message.\n */\nfunction readType(bytes: Uint8Array, start: number, end: number): DeclaredTensor {\n const cursor: Cursor = { bytes, end, pos: start };\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return UNDECLARED;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === TYPE_TENSOR_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return UNDECLARED;\n return readTensorType(bytes, range.start, range.end);\n }\n if (!skipField(cursor, wireType)) return UNDECLARED;\n }\n return UNDECLARED;\n}\n\n/**\n * Read one `ValueInfoProto`.\n *\n * @param bytes The whole model buffer.\n * @param start Offset of the message's first byte.\n * @param end Offset one past its last byte.\n * @returns The value's name and declarations, or `null` when the name is\n * missing or the message is unreadable.\n */\nfunction readValueInfo(\n bytes: Uint8Array,\n start: number,\n end: number,\n): (DeclaredTensor & { readonly name: string }) | null {\n const cursor: Cursor = { bytes, end, pos: start };\n let name: string | null = null;\n let declared: DeclaredTensor = UNDECLARED;\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) return null;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (wireType === WIRE_LENGTH_DELIMITED) {\n const range = readLengthDelimited(cursor);\n if (range === null) return null;\n if (field === VALUE_INFO_NAME_FIELD) {\n name = new TextDecoder(\"utf-8\", { fatal: false }).decode(\n bytes.subarray(range.start, range.end),\n );\n } else if (field === VALUE_INFO_TYPE_FIELD) {\n declared = readType(bytes, range.start, range.end);\n }\n continue;\n }\n if (!skipField(cursor, wireType)) return null;\n }\n if (name === null) return null;\n return { name, ...declared };\n}\n\n/** The graph's declared inputs and outputs, each in declaration order. */\ninterface GraphValues {\n readonly inputs: readonly (DeclaredTensor & { readonly name: string })[];\n readonly outputs: readonly (DeclaredTensor & { readonly name: string })[];\n}\n\n/**\n * Walk the `GraphProto` and collect what its inputs and outputs declare.\n *\n * @param model The `.onnx` file contents.\n * @returns Both lists, empty when the file carries no readable graph.\n */\nfunction readGraphValues(model: Uint8Array | ArrayBufferLike): GraphValues {\n const bytes = model instanceof Uint8Array ? model : new Uint8Array(model);\n const cursor: Cursor = { bytes, end: bytes.length, pos: 0 };\n const inputs: (DeclaredTensor & { readonly name: string })[] = [];\n const outputs: (DeclaredTensor & { readonly name: string })[] = [];\n\n while (cursor.pos < cursor.end) {\n const tag = readVarint(cursor);\n if (tag === null) break;\n const field = tag >>> 3;\n const wireType = tag & 0x07;\n if (field === MODEL_GRAPH_FIELD && wireType === WIRE_LENGTH_DELIMITED) {\n const graph = readLengthDelimited(cursor, bytes.length);\n if (graph === null) break;\n const inner: Cursor = { bytes, end: graph.end, pos: graph.start };\n while (inner.pos < inner.end) {\n const innerTag = readVarint(inner);\n if (innerTag === null) break;\n const innerField = innerTag >>> 3;\n const innerWire = innerTag & 0x07;\n if (\n (innerField === GRAPH_INPUT_FIELD || innerField === GRAPH_OUTPUT_FIELD) &&\n innerWire === WIRE_LENGTH_DELIMITED\n ) {\n const range = readLengthDelimited(inner);\n if (range === null) break;\n const info = readValueInfo(bytes, range.start, range.end);\n if (info) (innerField === GRAPH_INPUT_FIELD ? inputs : outputs).push(info);\n continue;\n }\n if (!skipField(inner, innerWire)) break;\n }\n continue;\n }\n if (!skipField(cursor, wireType)) break;\n }\n\n return { inputs, outputs };\n}\n\n/**\n * Read the element type each graph input declares.\n *\n * `onnxruntime-web` does not expose this. `session.inputMetadata` is\n * `undefined` on 1.20.1 — the same version where `declaredShapesFrom` comes\n * back empty — so the declared types have to come from the file, which the SDK\n * already downloads and walks for {@link readModelMetadata}. Same bytes, one\n * more pass, no extra request.\n *\n * @param model The `.onnx` file contents.\n * @returns Input name → `TensorProto.DataType` value. An empty object when the\n * file carries no readable graph, which every caller treats as \"assume\n * float32\" — the behaviour before any of this existed.\n */\nexport function readModelInputTypes(\n model: Uint8Array | ArrayBufferLike,\n): Readonly<Record<string, number>> {\n const types: Record<string, number> = {};\n for (const input of readGraphValues(model).inputs) {\n if (input.elemType !== null) types[input.name] = input.elemType;\n }\n return types;\n}\n\n/**\n * Read the shape each graph input and output declares, straight from the file.\n *\n * `onnxruntime-web` reports these through `inputMetadata` / `outputMetadata`\n * only from 1.22 on. Below that the session answers nothing, and a task that\n * reads its input size or class count off the session silently fell back to\n * its defaults: a 64x64 detector was fed 640x640 and ORT aborted with\n * `Got invalid dimensions for input` (measured on 1.17.3, 1.18.0, 1.19.2,\n * 1.20.1 and 1.21.0). The\n * file carries the same declarations, in the same `ValueInfoProto` the element\n * types are read from.\n *\n * Keyed by name rather than position: in an older IR the graph's `input` list\n * also carries the initializers, so its order does not line up with the\n * session's `inputNames`.\n *\n * @param model The `.onnx` file contents.\n * @returns Input and output name → shape, dynamic axes as `null`. Both maps\n * are empty when the file carries no readable graph.\n */\nexport function readModelShapes(model: Uint8Array | ArrayBufferLike): {\n readonly inputs: Readonly<Record<string, DeclaredShape>>;\n readonly outputs: Readonly<Record<string, DeclaredShape>>;\n} {\n const { inputs, outputs } = readGraphValues(model);\n return {\n inputs: Object.fromEntries(inputs.map((value) => [value.name, value.shape])),\n outputs: Object.fromEntries(outputs.map((value) => [value.name, value.shape])),\n };\n}\n\n/**\n * Read the class names an export baked into the model metadata.\n *\n * Ultralytics writes `names` as the Python `repr` of a `dict[int, str]` — e.g.\n * `\"{0: 'deworm', 1: 'not_deworm'}\"`. The value is parsed structurally (never\n * evaluated), and anything unparseable, non-`dict`, or not keyed by contiguous\n * integers from zero is rejected whole rather than half-applied: a partial name\n * map would silently mislabel predictions.\n *\n * @param metadata A model's custom metadata map.\n * @returns Class names in class-id order, or `null` when the model carries no\n * usable `names` entry.\n */\nexport function modelNames(\n metadata: Readonly<Record<string, string>> | undefined,\n): readonly string[] | null {\n return parseNames(metadata?.names);\n}\n\n/**\n * Parse a `repr`-encoded `dict[int, str]` class map.\n *\n * Split out of {@link modelNames} because the same encoding is reused by a\n * fused pipeline, which carries one class map per stage and therefore cannot\n * store both under the single `names` key Ultralytics uses.\n *\n * @param encoded The encoded map — e.g. `\"{0: 'deworm', 1: 'not_deworm'}\"`.\n * @returns Class names in class-id order, or `null` when the value is missing,\n * unparseable, not a `dict`, or not keyed by contiguous integers from zero.\n */\nexport function parseNames(encoded: string | undefined): readonly string[] | null {\n const raw = encoded?.trim();\n if (!raw || !raw.startsWith(\"{\") || !raw.endsWith(\"}\")) return null;\n\n const body = raw.slice(1, -1).trim();\n if (!body) return null;\n\n const names = new Map<number, string>();\n const entryPattern = /(-?\\d+)\\s*:\\s*(?:'((?:[^'\\\\]|\\\\.)*)'|\"((?:[^\"\\\\]|\\\\.)*)\")/g;\n let consumed = 0;\n for (const match of body.matchAll(entryPattern)) {\n const id = Number(match[1]);\n const text = match[2] ?? match[3];\n if (!Number.isInteger(id) || text === undefined) return null;\n names.set(id, unescapeQuoted(text));\n consumed += match[0].length;\n }\n if (names.size === 0) return null;\n\n const separators = body.length - consumed;\n if (separators > names.size * 3) return null;\n\n const ordered: string[] = [];\n for (let id = 0; id < names.size; id += 1) {\n const name = names.get(id);\n if (name === undefined) return null;\n ordered.push(name);\n }\n return ordered;\n}\n\n/**\n * Resolve the backslash escapes Python's `repr` emits inside a quoted string.\n *\n * @param text The quoted string's contents, escapes intact.\n * @returns The same text with `\\\\`, `\\'`, `\\\"`, `\\n`, `\\r` and `\\t` resolved.\n */\nfunction unescapeQuoted(text: string): string {\n return text.replace(/\\\\(.)/g, (_, char: string) => {\n if (char === \"n\") return \"\\n\";\n if (char === \"r\") return \"\\r\";\n if (char === \"t\") return \"\\t\";\n return char;\n });\n}\n"],"mappings":"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"}