@symbiote-native/audio 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +96 -52
  2. package/build/angular/index.d.ts +8 -0
  3. package/build/angular/index.js +8 -3
  4. package/build/angular/inject-audio-player-status.d.ts +4 -0
  5. package/build/angular/inject-audio-player-status.js +4 -0
  6. package/build/angular/inject-audio-player.d.ts +4 -0
  7. package/build/angular/inject-audio-player.js +8 -0
  8. package/build/angular/inject-audio-playlist-status.d.ts +3 -0
  9. package/build/angular/inject-audio-playlist-status.js +4 -0
  10. package/build/angular/inject-audio-playlist.d.ts +5 -0
  11. package/build/angular/inject-audio-playlist.js +7 -0
  12. package/build/angular/inject-audio-recorder-state.d.ts +5 -0
  13. package/build/angular/inject-audio-recorder-state.js +10 -0
  14. package/build/angular/inject-audio-recorder.d.ts +5 -0
  15. package/build/angular/inject-audio-recorder.js +13 -0
  16. package/build/angular/inject-audio-sample-listener.d.ts +4 -0
  17. package/build/angular/inject-audio-sample-listener.js +7 -0
  18. package/build/angular/inject-audio-stream.d.ts +4 -0
  19. package/build/angular/inject-audio-stream.js +17 -0
  20. package/build/core/audio-module.js +1 -1
  21. package/build/core/audio-player-controller.d.ts +7 -0
  22. package/build/core/audio-player-controller.js +10 -0
  23. package/build/core/audio-player.js +16 -4
  24. package/build/core/audio-playlist-controller.d.ts +4 -0
  25. package/build/core/audio-playlist-controller.js +5 -0
  26. package/build/core/audio-recorder-controller.d.ts +4 -0
  27. package/build/core/audio-recorder-controller.js +5 -0
  28. package/build/core/audio-recorder-polling.d.ts +5 -0
  29. package/build/core/audio-recorder-polling.js +10 -0
  30. package/build/core/audio-recorder-state.d.ts +2 -0
  31. package/build/core/audio-recorder-state.js +18 -0
  32. package/build/core/audio-recorder-status.d.ts +8 -0
  33. package/build/core/audio-recorder-status.js +6 -0
  34. package/build/core/audio-recorder.d.ts +2 -0
  35. package/build/core/audio-recorder.js +4 -0
  36. package/build/core/audio-sample-listener.d.ts +11 -0
  37. package/build/core/audio-sample-listener.js +9 -0
  38. package/build/core/audio-stream-controller.d.ts +4 -0
  39. package/build/core/audio-stream-controller.js +5 -0
  40. package/build/core/audio-stream-hooks.d.ts +8 -0
  41. package/build/core/audio-stream-hooks.js +13 -0
  42. package/build/core/audio-stream-lifecycle.d.ts +3 -0
  43. package/build/core/audio-stream-lifecycle.js +9 -0
  44. package/build/core/audio-stream-subscription.d.ts +10 -0
  45. package/build/core/audio-stream-subscription.js +12 -0
  46. package/build/core/audio-stream.d.ts +9 -10
  47. package/build/core/audio-stream.js +1 -9
  48. package/build/core/index.d.ts +14 -2
  49. package/build/core/index.js +9 -1
  50. package/build/core/json-keyed-resource-controller.d.ts +1 -0
  51. package/build/core/json-keyed-resource-controller.js +1 -0
  52. package/build/core/resolve-source.d.ts +2 -7
  53. package/build/core/resolve-source.js +69 -15
  54. package/build/core/subscribe-single-event.d.ts +5 -0
  55. package/build/core/subscribe-single-event.js +8 -0
  56. package/build/core/types.d.ts +11 -5
  57. package/build/react/index.d.ts +9 -0
  58. package/build/react/index.js +9 -0
  59. package/build/react/use-audio-player-status.d.ts +4 -0
  60. package/build/react/use-audio-player-status.js +4 -0
  61. package/build/react/use-audio-player.d.ts +3 -0
  62. package/build/react/use-audio-player.js +7 -0
  63. package/build/react/use-audio-playlist-status.d.ts +3 -0
  64. package/build/react/use-audio-playlist-status.js +4 -0
  65. package/build/react/use-audio-playlist.d.ts +4 -0
  66. package/build/react/use-audio-playlist.js +7 -0
  67. package/build/react/use-audio-recorder-state.d.ts +4 -0
  68. package/build/react/use-audio-recorder-state.js +9 -0
  69. package/build/react/use-audio-recorder.d.ts +4 -0
  70. package/build/react/use-audio-recorder.js +11 -0
  71. package/build/react/use-audio-sample-listener.d.ts +4 -0
  72. package/build/react/use-audio-sample-listener.js +6 -0
  73. package/build/react/use-audio-stream.d.ts +3 -0
  74. package/build/react/use-audio-stream.js +14 -0
  75. package/build/solid/index.d.ts +9 -0
  76. package/build/solid/index.js +9 -0
  77. package/build/solid/use-audio-player-status.d.ts +4 -0
  78. package/build/solid/use-audio-player-status.js +4 -0
  79. package/build/solid/use-audio-player.d.ts +5 -0
  80. package/build/solid/use-audio-player.js +7 -0
  81. package/build/solid/use-audio-playlist-status.d.ts +3 -0
  82. package/build/solid/use-audio-playlist-status.js +4 -0
  83. package/build/solid/use-audio-playlist.d.ts +5 -0
  84. package/build/solid/use-audio-playlist.js +7 -0
  85. package/build/solid/use-audio-recorder-state.d.ts +5 -0
  86. package/build/solid/use-audio-recorder-state.js +9 -0
  87. package/build/solid/use-audio-recorder.d.ts +5 -0
  88. package/build/solid/use-audio-recorder.js +13 -0
  89. package/build/solid/use-audio-sample-listener.d.ts +4 -0
  90. package/build/solid/use-audio-sample-listener.js +8 -0
  91. package/build/solid/use-audio-stream.d.ts +4 -0
  92. package/build/solid/use-audio-stream.js +16 -0
  93. package/build/svelte/index.d.ts +9 -0
  94. package/build/svelte/index.js +9 -0
  95. package/build/svelte/use-audio-player-status.svelte.d.ts +6 -0
  96. package/build/svelte/use-audio-player-status.svelte.js +4 -0
  97. package/build/svelte/use-audio-player.svelte.d.ts +6 -0
  98. package/build/svelte/use-audio-player.svelte.js +8 -0
  99. package/build/svelte/use-audio-playlist-status.svelte.d.ts +5 -0
  100. package/build/svelte/use-audio-playlist-status.svelte.js +4 -0
  101. package/build/svelte/use-audio-playlist.svelte.d.ts +6 -0
  102. package/build/svelte/use-audio-playlist.svelte.js +8 -0
  103. package/build/svelte/use-audio-recorder-state.svelte.d.ts +7 -0
  104. package/build/svelte/use-audio-recorder-state.svelte.js +14 -0
  105. package/build/svelte/use-audio-recorder.svelte.d.ts +6 -0
  106. package/build/svelte/use-audio-recorder.svelte.js +11 -0
  107. package/build/svelte/use-audio-sample-listener.svelte.d.ts +4 -0
  108. package/build/svelte/use-audio-sample-listener.svelte.js +5 -0
  109. package/build/svelte/use-audio-stream.svelte.d.ts +4 -0
  110. package/build/svelte/use-audio-stream.svelte.js +29 -0
  111. package/build/vue/index.d.ts +9 -0
  112. package/build/vue/index.js +9 -0
  113. package/build/vue/use-audio-player-status.d.ts +4 -0
  114. package/build/vue/use-audio-player-status.js +4 -0
  115. package/build/vue/use-audio-player.d.ts +5 -0
  116. package/build/vue/use-audio-player.js +8 -0
  117. package/build/vue/use-audio-playlist-status.d.ts +3 -0
  118. package/build/vue/use-audio-playlist-status.js +4 -0
  119. package/build/vue/use-audio-playlist.d.ts +5 -0
  120. package/build/vue/use-audio-playlist.js +8 -0
  121. package/build/vue/use-audio-recorder-state.d.ts +5 -0
  122. package/build/vue/use-audio-recorder-state.js +12 -0
  123. package/build/vue/use-audio-recorder.d.ts +5 -0
  124. package/build/vue/use-audio-recorder.js +11 -0
  125. package/build/vue/use-audio-sample-listener.d.ts +4 -0
  126. package/build/vue/use-audio-sample-listener.js +11 -0
  127. package/build/vue/use-audio-stream.d.ts +4 -0
  128. package/build/vue/use-audio-stream.js +18 -0
  129. package/build-ngc/angular/index.d.ts +8 -0
  130. package/build-ngc/angular/index.js +8 -3
  131. package/build-ngc/angular/index.js.map +1 -1
  132. package/build-ngc/angular/inject-audio-player-status.d.ts +4 -0
  133. package/build-ngc/angular/inject-audio-player-status.js +5 -0
  134. package/build-ngc/angular/inject-audio-player-status.js.map +1 -0
  135. package/build-ngc/angular/inject-audio-player.d.ts +4 -0
  136. package/build-ngc/angular/inject-audio-player.js +9 -0
  137. package/build-ngc/angular/inject-audio-player.js.map +1 -0
  138. package/build-ngc/angular/inject-audio-playlist-status.d.ts +3 -0
  139. package/build-ngc/angular/inject-audio-playlist-status.js +5 -0
  140. package/build-ngc/angular/inject-audio-playlist-status.js.map +1 -0
  141. package/build-ngc/angular/inject-audio-playlist.d.ts +5 -0
  142. package/build-ngc/angular/inject-audio-playlist.js +8 -0
  143. package/build-ngc/angular/inject-audio-playlist.js.map +1 -0
  144. package/build-ngc/angular/inject-audio-recorder-state.d.ts +5 -0
  145. package/build-ngc/angular/inject-audio-recorder-state.js +12 -0
  146. package/build-ngc/angular/inject-audio-recorder-state.js.map +1 -0
  147. package/build-ngc/angular/inject-audio-recorder.d.ts +5 -0
  148. package/build-ngc/angular/inject-audio-recorder.js +14 -0
  149. package/build-ngc/angular/inject-audio-recorder.js.map +1 -0
  150. package/build-ngc/angular/inject-audio-sample-listener.d.ts +4 -0
  151. package/build-ngc/angular/inject-audio-sample-listener.js +8 -0
  152. package/build-ngc/angular/inject-audio-sample-listener.js.map +1 -0
  153. package/build-ngc/angular/inject-audio-stream.d.ts +4 -0
  154. package/build-ngc/angular/inject-audio-stream.js +18 -0
  155. package/build-ngc/angular/inject-audio-stream.js.map +1 -0
  156. package/build-ngc/core/audio-module.js +1 -1
  157. package/build-ngc/core/audio-module.js.map +1 -1
  158. package/build-ngc/core/audio-player-controller.d.ts +7 -0
  159. package/build-ngc/core/audio-player-controller.js +11 -0
  160. package/build-ngc/core/audio-player-controller.js.map +1 -0
  161. package/build-ngc/core/audio-player.js +16 -4
  162. package/build-ngc/core/audio-player.js.map +1 -1
  163. package/build-ngc/core/audio-playlist-controller.d.ts +4 -0
  164. package/build-ngc/core/audio-playlist-controller.js +6 -0
  165. package/build-ngc/core/audio-playlist-controller.js.map +1 -0
  166. package/build-ngc/core/audio-recorder-controller.d.ts +4 -0
  167. package/build-ngc/core/audio-recorder-controller.js +6 -0
  168. package/build-ngc/core/audio-recorder-controller.js.map +1 -0
  169. package/build-ngc/core/audio-recorder-polling.d.ts +5 -0
  170. package/build-ngc/core/audio-recorder-polling.js +11 -0
  171. package/build-ngc/core/audio-recorder-polling.js.map +1 -0
  172. package/build-ngc/core/audio-recorder-state.d.ts +2 -0
  173. package/build-ngc/core/audio-recorder-state.js +19 -0
  174. package/build-ngc/core/audio-recorder-state.js.map +1 -0
  175. package/build-ngc/core/audio-recorder-status.d.ts +8 -0
  176. package/build-ngc/core/audio-recorder-status.js +7 -0
  177. package/build-ngc/core/audio-recorder-status.js.map +1 -0
  178. package/build-ngc/core/audio-recorder.d.ts +2 -0
  179. package/build-ngc/core/audio-recorder.js +4 -0
  180. package/build-ngc/core/audio-recorder.js.map +1 -1
  181. package/build-ngc/core/audio-sample-listener.d.ts +11 -0
  182. package/build-ngc/core/audio-sample-listener.js +10 -0
  183. package/build-ngc/core/audio-sample-listener.js.map +1 -0
  184. package/build-ngc/core/audio-stream-controller.d.ts +4 -0
  185. package/build-ngc/core/audio-stream-controller.js +6 -0
  186. package/build-ngc/core/audio-stream-controller.js.map +1 -0
  187. package/build-ngc/core/audio-stream-hooks.d.ts +8 -0
  188. package/build-ngc/core/audio-stream-hooks.js +14 -0
  189. package/build-ngc/core/audio-stream-hooks.js.map +1 -0
  190. package/build-ngc/core/audio-stream-lifecycle.d.ts +3 -0
  191. package/build-ngc/core/audio-stream-lifecycle.js +10 -0
  192. package/build-ngc/core/audio-stream-lifecycle.js.map +1 -0
  193. package/build-ngc/core/audio-stream-subscription.d.ts +10 -0
  194. package/build-ngc/core/audio-stream-subscription.js +13 -0
  195. package/build-ngc/core/audio-stream-subscription.js.map +1 -0
  196. package/build-ngc/core/audio-stream.d.ts +9 -10
  197. package/build-ngc/core/audio-stream.js +1 -9
  198. package/build-ngc/core/audio-stream.js.map +1 -1
  199. package/build-ngc/core/index.d.ts +14 -2
  200. package/build-ngc/core/index.js +9 -1
  201. package/build-ngc/core/index.js.map +1 -1
  202. package/build-ngc/core/json-keyed-resource-controller.d.ts +1 -0
  203. package/build-ngc/core/json-keyed-resource-controller.js +2 -0
  204. package/build-ngc/core/json-keyed-resource-controller.js.map +1 -0
  205. package/build-ngc/core/resolve-source.d.ts +2 -7
  206. package/build-ngc/core/resolve-source.js +69 -15
  207. package/build-ngc/core/resolve-source.js.map +1 -1
  208. package/build-ngc/core/subscribe-single-event.d.ts +5 -0
  209. package/build-ngc/core/subscribe-single-event.js +9 -0
  210. package/build-ngc/core/subscribe-single-event.js.map +1 -0
  211. package/build-ngc/core/types.d.ts +11 -5
  212. package/build-ngc/core/types.js.map +1 -1
  213. package/package.json +24 -23
  214. package/src/angular/index.ts +8 -3
  215. package/src/angular/inject-audio-player-status.ts +11 -0
  216. package/src/angular/inject-audio-player.ts +17 -0
  217. package/src/angular/inject-audio-playlist-status.ts +11 -0
  218. package/src/angular/inject-audio-playlist.ts +16 -0
  219. package/src/angular/inject-audio-recorder-state.ts +21 -0
  220. package/src/angular/inject-audio-recorder.ts +24 -0
  221. package/src/angular/inject-audio-sample-listener.ts +13 -0
  222. package/src/angular/inject-audio-stream.ts +41 -0
  223. package/src/core/audio-module.ts +2 -1
  224. package/src/core/audio-player-controller.ts +25 -0
  225. package/src/core/audio-player.ts +17 -4
  226. package/src/core/audio-playlist-controller.ts +14 -0
  227. package/src/core/audio-recorder-controller.ts +14 -0
  228. package/src/core/audio-recorder-polling.ts +20 -0
  229. package/src/core/audio-recorder-state.ts +26 -0
  230. package/src/core/audio-recorder-status.ts +22 -0
  231. package/src/core/audio-recorder.ts +5 -0
  232. package/src/core/audio-sample-listener.ts +23 -0
  233. package/src/core/audio-stream-controller.ts +14 -0
  234. package/src/core/audio-stream-hooks.ts +31 -0
  235. package/src/core/audio-stream-lifecycle.ts +19 -0
  236. package/src/core/audio-stream-subscription.ts +28 -0
  237. package/src/core/audio-stream.ts +11 -10
  238. package/src/core/index.ts +20 -1
  239. package/src/core/json-keyed-resource-controller.ts +1 -0
  240. package/src/core/resolve-source.ts +80 -18
  241. package/src/core/subscribe-single-event.ts +17 -0
  242. package/src/core/types.ts +13 -14
  243. package/src/react/index.ts +9 -0
  244. package/src/react/use-audio-player-status.ts +11 -0
  245. package/src/react/use-audio-player.ts +14 -0
  246. package/src/react/use-audio-playlist-status.ts +11 -0
  247. package/src/react/use-audio-playlist.ts +13 -0
  248. package/src/react/use-audio-recorder-state.ts +23 -0
  249. package/src/react/use-audio-recorder.ts +23 -0
  250. package/src/react/use-audio-sample-listener.ts +15 -0
  251. package/src/react/use-audio-stream.ts +39 -0
  252. package/src/solid/index.ts +9 -0
  253. package/src/solid/use-audio-player-status.ts +11 -0
  254. package/src/solid/use-audio-player.ts +15 -0
  255. package/src/solid/use-audio-playlist-status.ts +11 -0
  256. package/src/solid/use-audio-playlist.ts +14 -0
  257. package/src/solid/use-audio-recorder-state.ts +18 -0
  258. package/src/solid/use-audio-recorder.ts +22 -0
  259. package/src/solid/use-audio-sample-listener.ts +14 -0
  260. package/src/solid/use-audio-stream.ts +34 -0
  261. package/src/svelte/index.ts +9 -0
  262. package/src/svelte/svelte-ambient.d.ts +3 -0
  263. package/src/svelte/svelte-compile.test-helper.ts +7 -0
  264. package/src/svelte/use-audio-player-status.svelte.ts +11 -0
  265. package/src/svelte/use-audio-player.svelte.ts +20 -0
  266. package/src/svelte/use-audio-playlist-status.svelte.ts +11 -0
  267. package/src/svelte/use-audio-playlist.svelte.ts +19 -0
  268. package/src/svelte/use-audio-recorder-state.svelte.ts +29 -0
  269. package/src/svelte/use-audio-recorder.svelte.ts +25 -0
  270. package/src/svelte/use-audio-sample-listener.svelte.ts +11 -0
  271. package/src/svelte/use-audio-stream.svelte.ts +44 -0
  272. package/src/vue/index.ts +9 -0
  273. package/src/vue/use-audio-player-status.ts +11 -0
  274. package/src/vue/use-audio-player.ts +19 -0
  275. package/src/vue/use-audio-playlist-status.ts +11 -0
  276. package/src/vue/use-audio-playlist.ts +15 -0
  277. package/src/vue/use-audio-recorder-state.ts +21 -0
  278. package/src/vue/use-audio-recorder.ts +30 -0
  279. package/src/vue/use-audio-sample-listener.ts +22 -0
  280. package/src/vue/use-audio-stream.ts +40 -0
@@ -1 +1 @@
1
- {"version":3,"file":"audio-module.js","sourceRoot":"","sources":["../../src/core/audio-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA2B,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAe;IACzD,OAAO,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAyB;IAEzB,MAAM,SAAS,GACb,QAAQ,CAAC,EAAE,KAAK,KAAK;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;YACzD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACR,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,gCAAgC;IACpD,OAAO,SAAS,CAAC,gCAAgC,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC;IACvD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,mCAAmC,EAAE,CAAC;AACzD,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,OAAO,SAAS,CAAC,4BAA4B,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAoB,EACpB,UAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,EAAE,8BAA8B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACxD,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AACrE,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoB;IAEpB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,OAAO,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,OAAO,SAAS,CAAC,wBAAwB,EAAE,CAAC;AAC9C,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,SAAS,CAAC,mBAAmB,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"audio-module.js","sourceRoot":"","sources":["../../src/core/audio-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA2B,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAe;IACzD,OAAO,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAyB;IAEzB,MAAM,SAAS,GACb,QAAQ,CAAC,EAAE,KAAK,KAAK;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,gBAAgB,EACd,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,uBAAuB;YACvD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;YACzD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACR,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,gCAAgC;IACpD,OAAO,SAAS,CAAC,gCAAgC,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC;IACvD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,mCAAmC,EAAE,CAAC;AACzD,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,OAAO,SAAS,CAAC,4BAA4B,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAoB,EACpB,UAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,EAAE,8BAA8B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACxD,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;AACrE,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoB;IAEpB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,OAAO,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,OAAO,SAAS,CAAC,wBAAwB,EAAE,CAAC;AAC9C,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,SAAS,CAAC,mBAAmB,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type AudioPlayer } from './audio-player';
2
+ import type { IAudioPlayerOptions, IAudioSource } from './types';
3
+ export declare function createAudioPlayerController(): {
4
+ resolve: (source: IAudioSource, options: IAudioPlayerOptions) => AudioPlayer;
5
+ flushDispose: () => void;
6
+ dispose: () => void;
7
+ };
@@ -0,0 +1,11 @@
1
+ import { createJsonKeyedResourceController } from './json-keyed-resource-controller';
2
+ import { createAudioPlayer } from './audio-player';
3
+ export function createAudioPlayerController() {
4
+ const controller = createJsonKeyedResourceController(key => createAudioPlayer(key.source, key.options), player => player.remove());
5
+ return {
6
+ resolve: (source, options) => controller.resolve({ source, options }),
7
+ flushDispose: controller.flushDispose,
8
+ dispose: controller.dispose,
9
+ };
10
+ }
11
+ //# sourceMappingURL=audio-player-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-player-controller.js","sourceRoot":"","sources":["../../src/core/audio-player-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAKrE,MAAM,UAAU,2BAA2B;IAKzC,MAAM,UAAU,GAAG,iCAAiC,CAIlD,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAC1B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACrE,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Platform } from 'expo-modules-core';
2
2
  import { expoAudio } from './native-module';
3
- import { resolveSource } from './resolve-source';
3
+ import { resolveSource, resolveSourceWithDownload } from './resolve-source';
4
4
  // Upstream shims these two methods onto `AudioModule.AudioPlayer.prototype` at module load
5
5
  // (ExpoAudio.ts). We do the equivalent by subclassing instead of monkey-patching the native
6
6
  // class's prototype — same shape packages/media-library/src/next/asset.ts uses for its own
@@ -25,8 +25,20 @@ export class AudioPlayer extends expoAudio.AudioPlayer {
25
25
  * upstream's `useReleasingSharedObject`.
26
26
  */
27
27
  export function createAudioPlayer(source = null, options = {}) {
28
- const { updateInterval = 500, keepAudioSessionActive = false, preferredForwardBufferDuration = 0, } = options;
29
- const resolvedSource = resolveSource(source);
30
- return new AudioPlayer(resolvedSource, updateInterval, keepAudioSessionActive, preferredForwardBufferDuration);
28
+ const { updateInterval = 500, downloadFirst = false, keepAudioSessionActive = false, preferredForwardBufferDuration = 0, } = options;
29
+ const player = new AudioPlayer(downloadFirst ? null : resolveSource(source), updateInterval, keepAudioSessionActive, preferredForwardBufferDuration);
30
+ if (downloadFirst && source) {
31
+ resolveSourceWithDownload(source)
32
+ .then(resolved => {
33
+ if (resolved)
34
+ player.replace(resolved);
35
+ })
36
+ .catch(() => {
37
+ const fallback = resolveSource(source);
38
+ if (fallback)
39
+ player.replace(fallback);
40
+ });
41
+ }
42
+ return player;
31
43
  }
32
44
  //# sourceMappingURL=audio-player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-player.js","sourceRoot":"","sources":["../../src/core/audio-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,2FAA2F;AAC3F,4FAA4F;AAC5F,2FAA2F;AAC3F,kCAAkC;AAClC,MAAM,OAAO,WAAY,SAAQ,SAAS,CAAC,WAAW;IAC3C,OAAO,CAAC,MAAoB;QACnC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC;IAEQ,eAAe,CACtB,IAAY,EACZ,sBAAgD;QAEhD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuB,IAAI,EAC3B,UAA+B,EAAE;IAEjC,MAAM,EACJ,cAAc,GAAG,GAAG,EACpB,sBAAsB,GAAG,KAAK,EAC9B,8BAA8B,GAAG,CAAC,GACnC,GAAG,OAAO,CAAC;IACZ,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,WAAW,CACpB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,8BAA8B,CAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"audio-player.js","sourceRoot":"","sources":["../../src/core/audio-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAO5E,2FAA2F;AAC3F,4FAA4F;AAC5F,2FAA2F;AAC3F,kCAAkC;AAClC,MAAM,OAAO,WAAY,SAAQ,SAAS,CAAC,WAAW;IAC3C,OAAO,CAAC,MAAoB;QACnC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC;IAEQ,eAAe,CACtB,IAAY,EACZ,sBAAgD;QAEhD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuB,IAAI,EAC3B,UAA+B,EAAE;IAEjC,MAAM,EACJ,cAAc,GAAG,GAAG,EACpB,aAAa,GAAG,KAAK,EACrB,sBAAsB,GAAG,KAAK,EAC9B,8BAA8B,GAAG,CAAC,GACnC,GAAG,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAC5C,cAAc,EACd,sBAAsB,EACtB,8BAA8B,CAC/B,CAAC;IAEF,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;QAC5B,yBAAyB,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,IAAI,QAAQ;gBAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,QAAQ;gBAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IResourceController } from '@symbiote-native/engine';
2
+ import { type AudioPlaylist } from './audio-playlist';
3
+ import type { IAudioPlaylistOptions } from './types';
4
+ export declare function createAudioPlaylistController(): IResourceController<IAudioPlaylistOptions, AudioPlaylist>;
@@ -0,0 +1,6 @@
1
+ import { createJsonKeyedResourceController } from './json-keyed-resource-controller';
2
+ import { createAudioPlaylist } from './audio-playlist';
3
+ export function createAudioPlaylistController() {
4
+ return createJsonKeyedResourceController(createAudioPlaylist, playlist => playlist.destroy());
5
+ }
6
+ //# sourceMappingURL=audio-playlist-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-playlist-controller.js","sourceRoot":"","sources":["../../src/core/audio-playlist-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,UAAU,6BAA6B;IAI3C,OAAO,iCAAiC,CAGtC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IResourceController } from '@symbiote-native/engine';
2
+ import { type AudioRecorder } from './audio-recorder';
3
+ import type { IRecordingOptions } from './types';
4
+ export declare function createAudioRecorderController(): IResourceController<IRecordingOptions, AudioRecorder>;
@@ -0,0 +1,6 @@
1
+ import { createJsonKeyedResourceController } from './json-keyed-resource-controller';
2
+ import { createAudioRecorder } from './audio-recorder';
3
+ export function createAudioRecorderController() {
4
+ return createJsonKeyedResourceController(createAudioRecorder, recorder => recorder.release());
5
+ }
6
+ //# sourceMappingURL=audio-recorder-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-recorder-controller.js","sourceRoot":"","sources":["../../src/core/audio-recorder-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,UAAU,6BAA6B;IAI3C,OAAO,iCAAiC,CACtC,mBAAmB,EACnB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { IRecorderState } from './types';
2
+ export type IPollableRecorder = {
3
+ getStatus: () => IRecorderState;
4
+ };
5
+ export declare function pollRecorderState(recorder: IPollableRecorder, interval: number, update: (updater: (prev: IRecorderState) => IRecorderState) => void): () => void;
@@ -0,0 +1,11 @@
1
+ import { shouldUpdateRecorderState } from './audio-recorder-state';
2
+ // Ported from `useAudioRecorderState`'s `setInterval` body; `update` matches every adapter's
3
+ // own state setter (`useState`, Solid's `createSignal`, a plain `(prev) => next` writer, ...)
4
+ export function pollRecorderState(recorder, interval, update) {
5
+ const id = setInterval(() => {
6
+ const next = recorder.getStatus();
7
+ update(prev => (shouldUpdateRecorderState(prev, next) ? next : prev));
8
+ }, interval);
9
+ return () => clearInterval(id);
10
+ }
11
+ //# sourceMappingURL=audio-recorder-polling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-recorder-polling.js","sourceRoot":"","sources":["../../src/core/audio-recorder-polling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAOnE,6FAA6F;AAC7F,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAC/B,QAA2B,EAC3B,QAAgB,EAChB,MAAmE;IAEnE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACb,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { IRecorderState } from './types';
2
+ export declare function shouldUpdateRecorderState(prev: IRecorderState, next: IRecorderState): boolean;
@@ -0,0 +1,19 @@
1
+ const METERING_EPSILON = 0.1;
2
+ const DURATION_EPSILON_MS = 50;
3
+ function meteringChanged(prev, next) {
4
+ if ((prev.metering === undefined) !== (next.metering === undefined))
5
+ return true;
6
+ if (prev.metering === undefined || next.metering === undefined)
7
+ return false;
8
+ return Math.abs(prev.metering - next.metering) > METERING_EPSILON;
9
+ }
10
+ // Ported from `useAudioRecorderState`'s poll-diff `setState` body
11
+ export function shouldUpdateRecorderState(prev, next) {
12
+ return (prev.canRecord !== next.canRecord ||
13
+ prev.isRecording !== next.isRecording ||
14
+ prev.mediaServicesDidReset !== next.mediaServicesDidReset ||
15
+ prev.url !== next.url ||
16
+ Math.abs(prev.durationMillis - next.durationMillis) > DURATION_EPSILON_MS ||
17
+ meteringChanged(prev, next));
18
+ }
19
+ //# sourceMappingURL=audio-recorder-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-recorder-state.js","sourceRoot":"","sources":["../../src/core/audio-recorder-state.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,SAAS,eAAe,CAAC,IAAoB,EAAE,IAAoB;IACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;AACpE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,yBAAyB,CACvC,IAAoB,EACpB,IAAoB;IAEpB,OAAO,CACL,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;QACjC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;QACrC,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,qBAAqB;QACzD,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,mBAAmB;QACzE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { RECORDING_STATUS_UPDATE } from './types';
2
+ import type { IRecordingStatus } from './types';
3
+ export type IStatusRecorder = {
4
+ addListener: (event: typeof RECORDING_STATUS_UPDATE, listener: (status: IRecordingStatus) => void) => {
5
+ remove: () => void;
6
+ };
7
+ };
8
+ export declare function subscribeRecordingStatus(recorder: IStatusRecorder, statusListener: ((status: IRecordingStatus) => void) | undefined): () => void;
@@ -0,0 +1,7 @@
1
+ import { RECORDING_STATUS_UPDATE } from './types';
2
+ import { subscribeSingleEvent } from './subscribe-single-event';
3
+ // Ported from `useAudioRecorder`'s status-listener `useEffect` body
4
+ export function subscribeRecordingStatus(recorder, statusListener) {
5
+ return subscribeSingleEvent(recorder, RECORDING_STATUS_UPDATE, statusListener);
6
+ }
7
+ //# sourceMappingURL=audio-recorder-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-recorder-status.js","sourceRoot":"","sources":["../../src/core/audio-recorder-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAUhE,oEAAoE;AACpE,MAAM,UAAU,wBAAwB,CACtC,QAAyB,EACzB,cAAgE;IAEhE,OAAO,oBAAoB,CACzB,QAAQ,EACR,uBAAuB,EACvB,cAAc,CACf,CAAC;AACJ,CAAC"}
@@ -3,3 +3,5 @@ import type { IRecordingOptions } from './types';
3
3
  export declare class AudioRecorder extends expoAudio.AudioRecorder {
4
4
  prepareToRecordAsync(options?: Partial<IRecordingOptions>): Promise<void>;
5
5
  }
6
+ /** Does not release automatically, same lifecycle note as `createAudioPlayer` */
7
+ export declare function createAudioRecorder(options: IRecordingOptions): AudioRecorder;
@@ -38,4 +38,8 @@ export class AudioRecorder extends expoAudio.AudioRecorder {
38
38
  return super.prepareToRecordAsync(processedOptions);
39
39
  }
40
40
  }
41
+ /** Does not release automatically, same lifecycle note as `createAudioPlayer` */
42
+ export function createAudioRecorder(options) {
43
+ return new AudioRecorder(createRecordingOptions(options));
44
+ }
41
45
  //# sourceMappingURL=audio-recorder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-recorder.js","sourceRoot":"","sources":["../../src/core/audio-recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,OAA0B;IACxD,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;KACtD,CAAC;IAEF,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,aAAa;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,OAAO,CAAC,OAAO;SACnB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC;AAED,6FAA6F;AAC7F,+FAA+F;AAC/F,+FAA+F;AAC/F,+EAA+E;AAC/E,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,aAAa;IAC/C,oBAAoB,CAC3B,OAAoC;QAEpC,MAAM,gBAAgB,GAAG,OAAO;YAC9B,CAAC,CAAC,sBAAsB,CAAC,OAA4B,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"audio-recorder.js","sourceRoot":"","sources":["../../src/core/audio-recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,OAA0B;IACxD,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;KACtD,CAAC;IAEF,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,aAAa;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,OAAO,CAAC,OAAO;SACnB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC;AAED,6FAA6F;AAC7F,+FAA+F;AAC/F,+FAA+F;AAC/F,+EAA+E;AAC/E,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,aAAa;IAC/C,oBAAoB,CAC3B,OAAoC;QAEpC,MAAM,gBAAgB,GAAG,OAAO;YAC9B,CAAC,CAAC,sBAAsB,CAAC,OAA4B,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACtD,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,OAA0B;IAC5D,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { AUDIO_SAMPLE_UPDATE } from './types';
2
+ import type { IAudioSample } from './types';
3
+ export type IAudioSamplePlayer = {
4
+ isAudioSamplingSupported: boolean;
5
+ setAudioSamplingEnabled: (enabled: boolean) => void;
6
+ addListener: (event: typeof AUDIO_SAMPLE_UPDATE, listener: (data: IAudioSample) => void) => {
7
+ remove: () => void;
8
+ };
9
+ };
10
+ /** Ported from `expo-audio`'s `useAudioSampleListener` (its `useEffect` body factored out) */
11
+ export declare function subscribeAudioSampleListener(player: IAudioSamplePlayer, listener: (data: IAudioSample) => void): () => void;
@@ -0,0 +1,10 @@
1
+ import { AUDIO_SAMPLE_UPDATE } from './types';
2
+ /** Ported from `expo-audio`'s `useAudioSampleListener` (its `useEffect` body factored out) */
3
+ export function subscribeAudioSampleListener(player, listener) {
4
+ if (!player.isAudioSamplingSupported)
5
+ return () => { };
6
+ player.setAudioSamplingEnabled(true);
7
+ const subscription = player.addListener(AUDIO_SAMPLE_UPDATE, listener);
8
+ return () => subscription.remove();
9
+ }
10
+ //# sourceMappingURL=audio-sample-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-sample-listener.js","sourceRoot":"","sources":["../../src/core/audio-sample-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAY9C,8FAA8F;AAC9F,MAAM,UAAU,4BAA4B,CAC1C,MAA0B,EAC1B,QAAsC;IAEtC,IAAI,CAAC,MAAM,CAAC,wBAAwB;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAEtD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACvE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IResourceController } from '@symbiote-native/engine';
2
+ import { type AudioStream } from './audio-stream';
3
+ import type { IAudioStreamOptions } from './types';
4
+ export declare function createAudioStreamController(): IResourceController<IAudioStreamOptions, AudioStream>;
@@ -0,0 +1,6 @@
1
+ import { createJsonKeyedResourceController } from './json-keyed-resource-controller';
2
+ import { createAudioStream } from './audio-stream';
3
+ export function createAudioStreamController() {
4
+ return createJsonKeyedResourceController(createAudioStream, stream => stream.release());
5
+ }
6
+ //# sourceMappingURL=audio-stream-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-stream-controller.js","sourceRoot":"","sources":["../../src/core/audio-stream-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAGrE,MAAM,UAAU,2BAA2B;IAIzC,OAAO,iCAAiC,CACtC,iBAAiB,EACjB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IResourceController } from '@symbiote-native/engine';
2
+ import { AUDIO_STREAM_STATUS } from './types';
3
+ import type { AudioStream } from './audio-stream';
4
+ import type { IAudioStreamOptions, IAudioStreamStatus } from './types';
5
+ export declare function createAudioStreamHooks<TResourceBox, TStatusBox>(createResourceHook: (createController: () => IResourceController<IAudioStreamOptions, AudioStream>) => (getArgs: () => [IAudioStreamOptions]) => TResourceBox, createEventValueHook: (event: typeof AUDIO_STREAM_STATUS, getValue: (source: AudioStream) => IAudioStreamStatus) => (getSource: () => AudioStream) => TStatusBox): {
6
+ useStreamResource: (getArgs: () => [IAudioStreamOptions]) => TResourceBox;
7
+ useStreamStatus: (getSource: () => AudioStream) => TStatusBox;
8
+ };
@@ -0,0 +1,14 @@
1
+ import { createAudioStreamController } from './audio-stream-controller';
2
+ import { AUDIO_STREAM_STATUS } from './types';
3
+ // Binds `createAudioStreamController`/`AUDIO_STREAM_STATUS` behind the getter-based
4
+ // `createResourceHook`/`createEventValueHook` shape Vue/Solid/Angular share (React keeps its own
5
+ // ref-based wiring, same split as `runAudioStreamBufferEffect`)
6
+ export function createAudioStreamHooks(createResourceHook, createEventValueHook) {
7
+ return {
8
+ useStreamResource: createResourceHook(createAudioStreamController),
9
+ useStreamStatus: createEventValueHook(AUDIO_STREAM_STATUS, stream => ({
10
+ isStreaming: stream.isStreaming,
11
+ })),
12
+ };
13
+ }
14
+ //# sourceMappingURL=audio-stream-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-stream-hooks.js","sourceRoot":"","sources":["../../src/core/audio-stream-hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI9C,oFAAoF;AACpF,iGAAiG;AACjG,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CACpC,kBAK2D,EAC3D,oBAGiD;IAKjD,OAAO;QACL,iBAAiB,EAAE,kBAAkB,CAAC,2BAA2B,CAAC;QAClE,eAAe,EAAE,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACpE,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAudioStreamBufferSource } from './audio-stream-subscription';
2
+ import type { IAudioStreamBuffer } from './types';
3
+ export declare function runAudioStreamBufferEffect<TStream extends IAudioStreamBufferSource>(getStream: () => TStream, getOnBuffer: () => ((buffer: IAudioStreamBuffer) => void) | undefined, runEffect: (effect: () => void) => void, registerCleanup: (cleanup: () => void) => void): void;
@@ -0,0 +1,10 @@
1
+ import { subscribeAudioStreamBuffer } from './audio-stream-subscription';
2
+ // Shared by adapters whose reactivity auto-tracks reads inside a plain effect (Vue's
3
+ // `watchEffect`, Solid's `createEffect`, Angular's `effect`); React's render model doesn't, so
4
+ // it keeps its own ref-based wiring - same split as `createNetworkRequestObserverLifecycle`
5
+ export function runAudioStreamBufferEffect(getStream, getOnBuffer, runEffect, registerCleanup) {
6
+ runEffect(() => {
7
+ registerCleanup(subscribeAudioStreamBuffer(getStream(), getOnBuffer()));
8
+ });
9
+ }
10
+ //# sourceMappingURL=audio-stream-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-stream-lifecycle.js","sourceRoot":"","sources":["../../src/core/audio-stream-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAIzE,qFAAqF;AACrF,+FAA+F;AAC/F,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAGxC,SAAwB,EACxB,WAAqE,EACrE,SAAuC,EACvC,eAA8C;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AUDIO_STREAM_BUFFER } from './types';
2
+ import type { IAudioStreamBuffer, IAudioStreamOptions } from './types';
3
+ import type { IUseAudioStreamOptions } from './audio-stream';
4
+ export type IAudioStreamBufferSource = {
5
+ addListener: (event: typeof AUDIO_STREAM_BUFFER, listener: (buffer: IAudioStreamBuffer) => void) => {
6
+ remove: () => void;
7
+ };
8
+ };
9
+ export declare function subscribeAudioStreamBuffer(stream: IAudioStreamBufferSource, onBuffer: ((buffer: IAudioStreamBuffer) => void) | undefined): () => void;
10
+ export declare function toAudioStreamKey(options: IUseAudioStreamOptions): IAudioStreamOptions;
@@ -0,0 +1,13 @@
1
+ import { AUDIO_STREAM_BUFFER } from './types';
2
+ import { subscribeSingleEvent } from './subscribe-single-event';
3
+ // Ported from `useAudioStream`'s buffer-listener `useEffect` body
4
+ export function subscribeAudioStreamBuffer(stream, onBuffer) {
5
+ return subscribeSingleEvent(stream, AUDIO_STREAM_BUFFER, onBuffer);
6
+ }
7
+ // Drops `onBuffer` so a callback identity change doesn't recreate the native stream - matches
8
+ // upstream's own `[sampleRate, channels, encoding]` dependency array
9
+ export function toAudioStreamKey(options) {
10
+ const { sampleRate, channels, encoding } = options;
11
+ return { sampleRate, channels, encoding };
12
+ }
13
+ //# sourceMappingURL=audio-stream-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-stream-subscription.js","sourceRoot":"","sources":["../../src/core/audio-stream-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAWhE,kEAAkE;AAClE,MAAM,UAAU,0BAA0B,CACxC,MAAgC,EAChC,QAA4D;IAE5D,OAAO,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED,8FAA8F;AAC9F,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAC9B,OAA+B;IAE/B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5C,CAAC"}
@@ -1,13 +1,12 @@
1
- import type { IAudioStreamOptions } from './types';
1
+ import type { IAudioStreamBuffer, IAudioStreamOptions } from './types';
2
2
  export declare const AudioStream: typeof import("./native-module").NativeAudioStream;
3
3
  export type AudioStream = InstanceType<typeof AudioStream>;
4
- /**
5
- * Creates a native `AudioStream` for real-time PCM microphone capture. Call `.start()` to
6
- * begin and `.stop()` to end; requires microphone permission — see
7
- * `requestRecordingPermissionsAsync`. Upstream only exposes this via the `useAudioStream` hook
8
- * (React-only, see the package README); this factory is the framework-agnostic equivalent — the
9
- * hook itself just applies these same defaults and wires `addListener` for
10
- * `AUDIO_STREAM_STATUS`/`AUDIO_STREAM_BUFFER` on top, which each adapter's own lifecycle wrapper
11
- * is responsible for.
12
- */
4
+ export type IUseAudioStreamOptions = IAudioStreamOptions & {
5
+ onBuffer?: (buffer: IAudioStreamBuffer) => void;
6
+ };
7
+ export type IAudioStreamResult = {
8
+ stream: AudioStream;
9
+ isStreaming: boolean;
10
+ };
11
+ /** Requires microphone permission - see `requestRecordingPermissionsAsync`. */
13
12
  export declare function createAudioStream(options?: IAudioStreamOptions): AudioStream;
@@ -1,15 +1,7 @@
1
1
  import { expoAudio } from './native-module';
2
2
  // Plain re-export — upstream has no prototype shim for `AudioStream` either.
3
3
  export const AudioStream = expoAudio.AudioStream;
4
- /**
5
- * Creates a native `AudioStream` for real-time PCM microphone capture. Call `.start()` to
6
- * begin and `.stop()` to end; requires microphone permission — see
7
- * `requestRecordingPermissionsAsync`. Upstream only exposes this via the `useAudioStream` hook
8
- * (React-only, see the package README); this factory is the framework-agnostic equivalent — the
9
- * hook itself just applies these same defaults and wires `addListener` for
10
- * `AUDIO_STREAM_STATUS`/`AUDIO_STREAM_BUFFER` on top, which each adapter's own lifecycle wrapper
11
- * is responsible for.
12
- */
4
+ /** Requires microphone permission - see `requestRecordingPermissionsAsync`. */
13
5
  export function createAudioStream(options = {}) {
14
6
  const { sampleRate = 48000, channels = 1, encoding = 'float32' } = options;
15
7
  return new AudioStream({ sampleRate, channels, encoding });
@@ -1 +1 @@
1
- {"version":3,"file":"audio-stream.js","sourceRoot":"","sources":["../../src/core/audio-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAGjD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA+B,EAAE;IAEjC,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IAC3E,OAAO,IAAI,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"audio-stream.js","sourceRoot":"","sources":["../../src/core/audio-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAYjD,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAC/B,UAA+B,EAAE;IAEjC,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IAC3E,OAAO,IAAI,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7D,CAAC"}
@@ -1,9 +1,21 @@
1
1
  export { AudioPlayer, createAudioPlayer } from './audio-player';
2
- export { AudioRecorder } from './audio-recorder';
2
+ export { AudioRecorder, createAudioRecorder } from './audio-recorder';
3
3
  export { AudioPlaylist, createAudioPlaylist } from './audio-playlist';
4
4
  export { AudioStream, createAudioStream } from './audio-stream';
5
+ export type { IUseAudioStreamOptions, IAudioStreamResult, } from './audio-stream';
6
+ export { createAudioStreamController } from './audio-stream-controller';
7
+ export { subscribeAudioStreamBuffer, toAudioStreamKey, } from './audio-stream-subscription';
8
+ export type { IAudioStreamBufferSource } from './audio-stream-subscription';
9
+ export { runAudioStreamBufferEffect } from './audio-stream-lifecycle';
10
+ export { createAudioStreamHooks } from './audio-stream-hooks';
5
11
  export { setIsAudioActiveAsync, setAudioModeAsync, requestRecordingPermissionsAsync, requestNotificationPermissionsAsync, getRecordingPermissionsAsync, preload, clearPreloadedSource, clearAllPreloadedSources, getPreloadedSources, } from './audio-module';
6
12
  export { resolveSource, resolveSources } from './resolve-source';
13
+ export { subscribeAudioSampleListener } from './audio-sample-listener';
14
+ export type { IAudioSamplePlayer } from './audio-sample-listener';
15
+ export { subscribeRecordingStatus } from './audio-recorder-status';
16
+ export type { IStatusRecorder } from './audio-recorder-status';
17
+ export { shouldUpdateRecorderState } from './audio-recorder-state';
18
+ export { pollRecorderState } from './audio-recorder-polling';
7
19
  export { RecordingPresets, IOSOutputFormat, AudioQuality, } from './recording-presets';
8
20
  export { PLAYBACK_STATUS_UPDATE, AUDIO_SAMPLE_UPDATE, RECORDING_STATUS_UPDATE, PLAYLIST_STATUS_UPDATE, TRACK_CHANGED, AUDIO_STREAM_BUFFER, AUDIO_STREAM_STATUS, } from './types';
9
- export type { IAudioSource, IAudioSourceInfo, IAudioPlayerOptions, IPreloadOptions, IRecordingInput, IPitchCorrectionQuality, IAudioStatus, IRecordingStatus, IRecorderState, IAndroidOutputFormat, IAndroidAudioEncoder, IRecordingStartOptions, IRecordingDirectory, IRecordingOptions, IRecordingOptionsWeb, IRecordingOptionsIos, IRecordingOptionsAndroid, IRecordingSource, IAudioMode, IInterruptionMode, IAudioMetadata, IAudioPlaylistLoopMode, IAudioPlaylistOptions, IAudioPlaylistStatus, IAudioLockScreenOptions, IAudioSample, IAudioStreamEncoding, IAudioStreamOptions, IAudioStreamBuffer, IAudioStreamStatus, } from './types';
21
+ export type { IAudioSource, IAudioSourceInfo, IAudioPlayerOptions, IAudioLoadOptions, IPreloadOptions, IRecordingInput, IPitchCorrectionQuality, IAudioStatus, IRecordingStatus, IRecorderState, IAndroidOutputFormat, IAndroidAudioEncoder, IRecordingStartOptions, IRecordingDirectory, IRecordingOptions, IRecordingOptionsWeb, IRecordingOptionsIos, IRecordingOptionsAndroid, IRecordingSource, IAudioMode, IInterruptionMode, IAudioMetadata, IAudioPlaylistLoopMode, IAudioPlaylistOptions, IAudioPlaylistStatus, IAudioLockScreenOptions, IAudioSample, IAudioStreamEncoding, IAudioStreamOptions, IAudioStreamBuffer, IAudioStreamStatus, } from './types';
@@ -1,9 +1,17 @@
1
1
  export { AudioPlayer, createAudioPlayer } from './audio-player';
2
- export { AudioRecorder } from './audio-recorder';
2
+ export { AudioRecorder, createAudioRecorder } from './audio-recorder';
3
3
  export { AudioPlaylist, createAudioPlaylist } from './audio-playlist';
4
4
  export { AudioStream, createAudioStream } from './audio-stream';
5
+ export { createAudioStreamController } from './audio-stream-controller';
6
+ export { subscribeAudioStreamBuffer, toAudioStreamKey, } from './audio-stream-subscription';
7
+ export { runAudioStreamBufferEffect } from './audio-stream-lifecycle';
8
+ export { createAudioStreamHooks } from './audio-stream-hooks';
5
9
  export { setIsAudioActiveAsync, setAudioModeAsync, requestRecordingPermissionsAsync, requestNotificationPermissionsAsync, getRecordingPermissionsAsync, preload, clearPreloadedSource, clearAllPreloadedSources, getPreloadedSources, } from './audio-module';
6
10
  export { resolveSource, resolveSources } from './resolve-source';
11
+ export { subscribeAudioSampleListener } from './audio-sample-listener';
12
+ export { subscribeRecordingStatus } from './audio-recorder-status';
13
+ export { shouldUpdateRecorderState } from './audio-recorder-state';
14
+ export { pollRecorderState } from './audio-recorder-polling';
7
15
  export { RecordingPresets, IOSOutputFormat, AudioQuality, } from './recording-presets';
8
16
  export { PLAYBACK_STATUS_UPDATE, AUDIO_SAMPLE_UPDATE, RECORDING_STATUS_UPDATE, PLAYLIST_STATUS_UPDATE, TRACK_CHANGED, AUDIO_STREAM_BUFFER, AUDIO_STREAM_STATUS, } from './types';
9
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,OAAO,EACP,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gCAAgC,EAChC,mCAAmC,EACnC,4BAA4B,EAC5B,OAAO,EACP,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export { createJsonKeyedResourceController } from '@symbiote-native/engine';
@@ -0,0 +1,2 @@
1
+ export { createJsonKeyedResourceController } from '@symbiote-native/engine';
2
+ //# sourceMappingURL=json-keyed-resource-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-keyed-resource-controller.js","sourceRoot":"","sources":["../../src/core/json-keyed-resource-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,10 +1,5 @@
1
1
  import type { IAudioSource } from './types';
2
- /**
3
- * Normalizes a source into the shape the native player accepts. A `number` (a `require()`'d
4
- * local asset) resolves via `@symbiote-native/engine`'s `resolveAssetSource` seam — RN's own
5
- * generic asset-registry lookup, wired by `bootstrapHost`. An actual `expo-asset` `Asset`
6
- * instance is still not ported, see `types.ts`'s header comment on `IAudioSource`. A plain
7
- * string is treated as a URI, matching upstream.
8
- */
9
2
  export declare function resolveSource(source?: IAudioSource): IAudioSource | null;
10
3
  export declare function resolveSources(sources: IAudioSource[]): NonNullable<IAudioSource>[];
4
+ /** Resolves `source` and, unlike `resolveSource`, downloads it to a local cache file first. */
5
+ export declare function resolveSourceWithDownload(source?: IAudioSource): Promise<IAudioSource | null>;
@@ -1,27 +1,61 @@
1
- import { resolveAssetSource } from '@symbiote-native/engine';
2
- // resolveAssetSource returns `unknown` by design (the seam serves every require()'d-asset
3
- // consumer, not just this package) — narrow it instead of casting.
4
- function isAudioSourceObject(value) {
5
- return typeof value === 'object' && value !== null;
1
+ // Ported from expo-audio/src/utils/resolveSource.ts (sdk-57), against @symbiote-native/asset's
2
+ // Asset class instead of importing expo-asset directly (same pattern as packages/font).
3
+ import { Asset } from '@symbiote-native/asset';
4
+ function getAssetFromSource(source) {
5
+ if (!source) {
6
+ return null;
7
+ }
8
+ if (source instanceof Asset) {
9
+ return source;
10
+ }
11
+ if (typeof source === 'number') {
12
+ return Asset.fromModule(source);
13
+ }
14
+ if (typeof source === 'object') {
15
+ if ('assetId' in source && typeof source.assetId === 'number') {
16
+ return Asset.fromModule(source.assetId);
17
+ }
18
+ if ('uri' in source && typeof source.uri === 'string') {
19
+ return Asset.fromURI(source.uri);
20
+ }
21
+ }
22
+ if (typeof source === 'string') {
23
+ return Asset.fromURI(source);
24
+ }
25
+ return null;
26
+ }
27
+ function createSourceFromAsset(asset, extras = {}) {
28
+ const result = {
29
+ uri: asset.localUri ?? asset.uri,
30
+ };
31
+ if (asset.name) {
32
+ result.name = asset.name;
33
+ }
34
+ if (extras.assetId != null) {
35
+ result.assetId = extras.assetId;
36
+ }
37
+ if (extras.headers) {
38
+ result.headers = extras.headers;
39
+ }
40
+ return result;
6
41
  }
7
- /**
8
- * Normalizes a source into the shape the native player accepts. A `number` (a `require()`'d
9
- * local asset) resolves via `@symbiote-native/engine`'s `resolveAssetSource` seam — RN's own
10
- * generic asset-registry lookup, wired by `bootstrapHost`. An actual `expo-asset` `Asset`
11
- * instance is still not ported, see `types.ts`'s header comment on `IAudioSource`. A plain
12
- * string is treated as a URI, matching upstream.
13
- */
14
42
  export function resolveSource(source) {
15
43
  if (source == null) {
16
44
  return null;
17
45
  }
18
- if (typeof source === 'number') {
19
- const resolved = resolveAssetSource(source);
20
- return isAudioSourceObject(resolved) ? resolved : null;
46
+ if (source instanceof Asset) {
47
+ return createSourceFromAsset(source);
21
48
  }
22
49
  if (typeof source === 'string') {
23
50
  return { uri: source };
24
51
  }
52
+ if (typeof source === 'number') {
53
+ return createSourceFromAsset(Asset.fromModule(source), { assetId: source });
54
+ }
55
+ if ('assetId' in source && typeof source.assetId === 'number') {
56
+ const asset = Asset.fromModule(source.assetId);
57
+ return { ...source, uri: asset.localUri ?? asset.uri };
58
+ }
25
59
  return source;
26
60
  }
27
61
  export function resolveSources(sources) {
@@ -29,4 +63,24 @@ export function resolveSources(sources) {
29
63
  .map(source => resolveSource(source))
30
64
  .filter((source) => source != null);
31
65
  }
66
+ /** Resolves `source` and, unlike `resolveSource`, downloads it to a local cache file first. */
67
+ export async function resolveSourceWithDownload(source) {
68
+ const asset = getAssetFromSource(source);
69
+ const fallback = resolveSource(source);
70
+ if (!asset) {
71
+ return fallback;
72
+ }
73
+ try {
74
+ await asset.downloadAsync();
75
+ if (asset.localUri) {
76
+ return fallback && typeof fallback === 'object'
77
+ ? { ...fallback, uri: asset.localUri }
78
+ : { uri: asset.localUri };
79
+ }
80
+ }
81
+ catch {
82
+ // Falls through to the un-downloaded source below, matching upstream's own recovery path.
83
+ }
84
+ return fallback;
85
+ }
32
86
  //# sourceMappingURL=resolve-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-source.js","sourceRoot":"","sources":["../../src/core/resolve-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D,0FAA0F;AAC1F,mEAAmE;AACnE,SAAS,mBAAmB,CAC1B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAuB;IAEvB,OAAO,OAAO;SACX,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACpC,MAAM,CAAC,CAAC,MAAM,EAAuC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"resolve-source.js","sourceRoot":"","sources":["../../src/core/resolve-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function subscribeSingleEvent<TEvent extends string, TPayload>(source: {
2
+ addListener: (event: TEvent, listener: (payload: TPayload) => void) => {
3
+ remove: () => void;
4
+ };
5
+ }, event: TEvent, listener: ((payload: TPayload) => void) | undefined): () => void;