@symbiote-native/audio 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +2 -0
  51. package/build/core/json-keyed-resource-controller.js +5 -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 +2 -0
  203. package/build-ngc/core/json-keyed-resource-controller.js +6 -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 +16 -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,2 @@
1
+ import { type IResourceController } from '@symbiote-native/engine';
2
+ export declare function createJsonKeyedResourceController<TKey, TResource>(create: (key: TKey) => TResource, dispose: (resource: TResource) => void): IResourceController<TKey, TResource>;
@@ -0,0 +1,6 @@
1
+ import { createResourceController, } from '@symbiote-native/engine';
2
+ // Shared shape behind the player/playlist/recorder controllers, keyed by JSON.stringify
3
+ export function createJsonKeyedResourceController(create, dispose) {
4
+ return createResourceController(create, dispose, (a, b) => JSON.stringify(a) === JSON.stringify(b));
5
+ }
6
+ //# 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,EACL,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AAEjC,wFAAwF;AACxF,MAAM,UAAU,iCAAiC,CAC/C,MAAgC,EAChC,OAAsC;IAEtC,OAAO,wBAAwB,CAC7B,MAAM,EACN,OAAO,EACP,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAClD,CAAC;AACJ,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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"}