@signalwire/js 3.29.2 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/dist/base-A5AZTrAd.d.cts +23 -0
  2. package/dist/base-A5AZTrAd.d.cts.map +1 -0
  3. package/dist/base-aVtoG8Wk.d.mts +23 -0
  4. package/dist/base-aVtoG8Wk.d.mts.map +1 -0
  5. package/dist/browser.mjs +16625 -0
  6. package/dist/browser.mjs.map +1 -0
  7. package/dist/browser.umd.js +16646 -0
  8. package/dist/browser.umd.js.map +1 -0
  9. package/dist/index.cjs +6210 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.cts +2690 -0
  12. package/dist/index.d.cts.map +1 -0
  13. package/dist/index.d.mts +2690 -0
  14. package/dist/index.d.mts.map +1 -0
  15. package/dist/index.mjs +6194 -0
  16. package/dist/index.mjs.map +1 -0
  17. package/dist/operators/index.cjs +6 -0
  18. package/dist/operators/index.d.cts +109 -0
  19. package/dist/operators/index.d.cts.map +1 -0
  20. package/dist/operators/index.d.mts +109 -0
  21. package/dist/operators/index.d.mts.map +1 -0
  22. package/dist/operators/index.mjs +3 -0
  23. package/dist/operators-BHQMSEzq.mjs +371 -0
  24. package/dist/operators-BHQMSEzq.mjs.map +1 -0
  25. package/dist/operators-DT4UB24-.cjs +596 -0
  26. package/dist/operators-DT4UB24-.cjs.map +1 -0
  27. package/package.json +73 -37
  28. package/README.md +0 -40
  29. package/dist/core/src/BaseClient.d.ts +0 -19
  30. package/dist/core/src/BaseClient.d.ts.map +0 -1
  31. package/dist/core/src/BaseComponent.d.ts +0 -101
  32. package/dist/core/src/BaseComponent.d.ts.map +0 -1
  33. package/dist/core/src/BaseComponent.test.d.ts +0 -2
  34. package/dist/core/src/BaseComponent.test.d.ts.map +0 -1
  35. package/dist/core/src/BaseConsumer.d.ts +0 -18
  36. package/dist/core/src/BaseConsumer.d.ts.map +0 -1
  37. package/dist/core/src/BaseConsumer.test.d.ts +0 -2
  38. package/dist/core/src/BaseConsumer.test.d.ts.map +0 -1
  39. package/dist/core/src/BaseJWTSession.d.ts +0 -47
  40. package/dist/core/src/BaseJWTSession.d.ts.map +0 -1
  41. package/dist/core/src/BaseJWTSession.test.d.ts +0 -2
  42. package/dist/core/src/BaseJWTSession.test.d.ts.map +0 -1
  43. package/dist/core/src/BaseSession.d.ts +0 -117
  44. package/dist/core/src/BaseSession.d.ts.map +0 -1
  45. package/dist/core/src/BaseSession.test.d.ts +0 -2
  46. package/dist/core/src/BaseSession.test.d.ts.map +0 -1
  47. package/dist/core/src/CustomErrors.d.ts +0 -17
  48. package/dist/core/src/CustomErrors.d.ts.map +0 -1
  49. package/dist/core/src/RPCMessages/RPCConnect.d.ts +0 -42
  50. package/dist/core/src/RPCMessages/RPCConnect.d.ts.map +0 -1
  51. package/dist/core/src/RPCMessages/RPCDisconnect.d.ts +0 -8
  52. package/dist/core/src/RPCMessages/RPCDisconnect.d.ts.map +0 -1
  53. package/dist/core/src/RPCMessages/RPCEventAck.d.ts +0 -8
  54. package/dist/core/src/RPCMessages/RPCEventAck.d.ts.map +0 -1
  55. package/dist/core/src/RPCMessages/RPCExecute.d.ts +0 -16
  56. package/dist/core/src/RPCMessages/RPCExecute.d.ts.map +0 -1
  57. package/dist/core/src/RPCMessages/RPCPing.d.ts +0 -16
  58. package/dist/core/src/RPCMessages/RPCPing.d.ts.map +0 -1
  59. package/dist/core/src/RPCMessages/RPCReauthenticate.d.ts +0 -13
  60. package/dist/core/src/RPCMessages/RPCReauthenticate.d.ts.map +0 -1
  61. package/dist/core/src/RPCMessages/VertoMessages.d.ts +0 -84
  62. package/dist/core/src/RPCMessages/VertoMessages.d.ts.map +0 -1
  63. package/dist/core/src/RPCMessages/helpers.d.ts +0 -31
  64. package/dist/core/src/RPCMessages/helpers.d.ts.map +0 -1
  65. package/dist/core/src/RPCMessages/index.d.ts +0 -9
  66. package/dist/core/src/RPCMessages/index.d.ts.map +0 -1
  67. package/dist/core/src/RPCMessages/index.test.d.ts +0 -2
  68. package/dist/core/src/RPCMessages/index.test.d.ts.map +0 -1
  69. package/dist/core/src/chat/BaseChat.d.ts +0 -23
  70. package/dist/core/src/chat/BaseChat.d.ts.map +0 -1
  71. package/dist/core/src/chat/ChatMember.d.ts +0 -15
  72. package/dist/core/src/chat/ChatMember.d.ts.map +0 -1
  73. package/dist/core/src/chat/ChatMessage.d.ts +0 -10
  74. package/dist/core/src/chat/ChatMessage.d.ts.map +0 -1
  75. package/dist/core/src/chat/applyCommonMethods.d.ts +0 -22
  76. package/dist/core/src/chat/applyCommonMethods.d.ts.map +0 -1
  77. package/dist/core/src/chat/index.d.ts +0 -6
  78. package/dist/core/src/chat/index.d.ts.map +0 -1
  79. package/dist/core/src/chat/methods.d.ts +0 -31
  80. package/dist/core/src/chat/methods.d.ts.map +0 -1
  81. package/dist/core/src/chat/utils/index.d.ts +0 -3
  82. package/dist/core/src/chat/utils/index.d.ts.map +0 -1
  83. package/dist/core/src/chat/utils/toInternalChatChannels.d.ts +0 -3
  84. package/dist/core/src/chat/utils/toInternalChatChannels.d.ts.map +0 -1
  85. package/dist/core/src/chat/utils/toInternalChatChannels.test.d.ts +0 -2
  86. package/dist/core/src/chat/utils/toInternalChatChannels.test.d.ts.map +0 -1
  87. package/dist/core/src/chat/workers/chatWorker.d.ts +0 -4
  88. package/dist/core/src/chat/workers/chatWorker.d.ts.map +0 -1
  89. package/dist/core/src/chat/workers/index.d.ts +0 -2
  90. package/dist/core/src/chat/workers/index.d.ts.map +0 -1
  91. package/dist/core/src/index.d.ts +0 -45
  92. package/dist/core/src/index.d.ts.map +0 -1
  93. package/dist/core/src/index.test.d.ts +0 -1
  94. package/dist/core/src/index.test.d.ts.map +0 -1
  95. package/dist/core/src/memberPosition/index.d.ts +0 -2
  96. package/dist/core/src/memberPosition/index.d.ts.map +0 -1
  97. package/dist/core/src/memberPosition/workers.d.ts +0 -13
  98. package/dist/core/src/memberPosition/workers.d.ts.map +0 -1
  99. package/dist/core/src/memberPosition/workers.test.d.ts +0 -2
  100. package/dist/core/src/memberPosition/workers.test.d.ts.map +0 -1
  101. package/dist/core/src/pubSub/BasePubSub.d.ts +0 -43
  102. package/dist/core/src/pubSub/BasePubSub.d.ts.map +0 -1
  103. package/dist/core/src/pubSub/PubSubMessage.d.ts +0 -19
  104. package/dist/core/src/pubSub/PubSubMessage.d.ts.map +0 -1
  105. package/dist/core/src/pubSub/index.d.ts +0 -3
  106. package/dist/core/src/pubSub/index.d.ts.map +0 -1
  107. package/dist/core/src/pubSub/workers/index.d.ts +0 -2
  108. package/dist/core/src/pubSub/workers/index.d.ts.map +0 -1
  109. package/dist/core/src/pubSub/workers/pubSubWorker.d.ts +0 -4
  110. package/dist/core/src/pubSub/workers/pubSubWorker.d.ts.map +0 -1
  111. package/dist/core/src/redux/actions.d.ts +0 -25
  112. package/dist/core/src/redux/actions.d.ts.map +0 -1
  113. package/dist/core/src/redux/connect.d.ts +0 -23
  114. package/dist/core/src/redux/connect.d.ts.map +0 -1
  115. package/dist/core/src/redux/connect.test.d.ts +0 -2
  116. package/dist/core/src/redux/connect.test.d.ts.map +0 -1
  117. package/dist/core/src/redux/features/component/componentSaga.d.ts +0 -4
  118. package/dist/core/src/redux/features/component/componentSaga.d.ts.map +0 -1
  119. package/dist/core/src/redux/features/component/componentSaga.test.d.ts +0 -2
  120. package/dist/core/src/redux/features/component/componentSaga.test.d.ts.map +0 -1
  121. package/dist/core/src/redux/features/component/componentSelectors.d.ts +0 -7
  122. package/dist/core/src/redux/features/component/componentSelectors.d.ts.map +0 -1
  123. package/dist/core/src/redux/features/component/componentSelectors.test.d.ts +0 -2
  124. package/dist/core/src/redux/features/component/componentSelectors.test.d.ts.map +0 -1
  125. package/dist/core/src/redux/features/component/componentSlice.d.ts +0 -2319
  126. package/dist/core/src/redux/features/component/componentSlice.d.ts.map +0 -1
  127. package/dist/core/src/redux/features/component/componentSlice.test.d.ts +0 -2
  128. package/dist/core/src/redux/features/component/componentSlice.test.d.ts.map +0 -1
  129. package/dist/core/src/redux/features/index.d.ts +0 -3
  130. package/dist/core/src/redux/features/index.d.ts.map +0 -1
  131. package/dist/core/src/redux/features/session/sessionSaga.d.ts +0 -11
  132. package/dist/core/src/redux/features/session/sessionSaga.d.ts.map +0 -1
  133. package/dist/core/src/redux/features/session/sessionSelectors.d.ts +0 -9
  134. package/dist/core/src/redux/features/session/sessionSelectors.d.ts.map +0 -1
  135. package/dist/core/src/redux/features/session/sessionSlice.d.ts +0 -521
  136. package/dist/core/src/redux/features/session/sessionSlice.d.ts.map +0 -1
  137. package/dist/core/src/redux/features/session/sessionSlice.test.d.ts +0 -2
  138. package/dist/core/src/redux/features/session/sessionSlice.test.d.ts.map +0 -1
  139. package/dist/core/src/redux/index.d.ts +0 -31
  140. package/dist/core/src/redux/index.d.ts.map +0 -1
  141. package/dist/core/src/redux/interfaces.d.ts +0 -87
  142. package/dist/core/src/redux/interfaces.d.ts.map +0 -1
  143. package/dist/core/src/redux/rootReducer.d.ts +0 -457
  144. package/dist/core/src/redux/rootReducer.d.ts.map +0 -1
  145. package/dist/core/src/redux/rootSaga.d.ts +0 -40
  146. package/dist/core/src/redux/rootSaga.d.ts.map +0 -1
  147. package/dist/core/src/redux/rootSaga.test.d.ts +0 -2
  148. package/dist/core/src/redux/rootSaga.test.d.ts.map +0 -1
  149. package/dist/core/src/redux/toolkit/configureStore.d.ts +0 -77
  150. package/dist/core/src/redux/toolkit/configureStore.d.ts.map +0 -1
  151. package/dist/core/src/redux/toolkit/createAction.d.ts +0 -180
  152. package/dist/core/src/redux/toolkit/createAction.d.ts.map +0 -1
  153. package/dist/core/src/redux/toolkit/createReducer.d.ts +0 -42
  154. package/dist/core/src/redux/toolkit/createReducer.d.ts.map +0 -1
  155. package/dist/core/src/redux/toolkit/createSlice.d.ts +0 -142
  156. package/dist/core/src/redux/toolkit/createSlice.d.ts.map +0 -1
  157. package/dist/core/src/redux/toolkit/devtoolsExtension.d.ts +0 -185
  158. package/dist/core/src/redux/toolkit/devtoolsExtension.d.ts.map +0 -1
  159. package/dist/core/src/redux/toolkit/getDefaultMiddleware.d.ts +0 -12
  160. package/dist/core/src/redux/toolkit/getDefaultMiddleware.d.ts.map +0 -1
  161. package/dist/core/src/redux/toolkit/index.d.ts +0 -13
  162. package/dist/core/src/redux/toolkit/index.d.ts.map +0 -1
  163. package/dist/core/src/redux/toolkit/isPlainObject.d.ts +0 -12
  164. package/dist/core/src/redux/toolkit/isPlainObject.d.ts.map +0 -1
  165. package/dist/core/src/redux/toolkit/mapBuilders.d.ts +0 -38
  166. package/dist/core/src/redux/toolkit/mapBuilders.d.ts.map +0 -1
  167. package/dist/core/src/redux/toolkit/tsHelpers.d.ts +0 -51
  168. package/dist/core/src/redux/toolkit/tsHelpers.d.ts.map +0 -1
  169. package/dist/core/src/redux/toolkit/utils.d.ts +0 -11
  170. package/dist/core/src/redux/toolkit/utils.d.ts.map +0 -1
  171. package/dist/core/src/redux/utils/createDestroyableSlice.d.ts +0 -9
  172. package/dist/core/src/redux/utils/createDestroyableSlice.d.ts.map +0 -1
  173. package/dist/core/src/redux/utils/createDestroyableSlice.test.d.ts +0 -2
  174. package/dist/core/src/redux/utils/createDestroyableSlice.test.d.ts.map +0 -1
  175. package/dist/core/src/redux/utils/sagaHelpers.d.ts +0 -5
  176. package/dist/core/src/redux/utils/sagaHelpers.d.ts.map +0 -1
  177. package/dist/core/src/redux/utils/useInstanceMap.d.ts +0 -3
  178. package/dist/core/src/redux/utils/useInstanceMap.d.ts.map +0 -1
  179. package/dist/core/src/redux/utils/useSession.d.ts +0 -16
  180. package/dist/core/src/redux/utils/useSession.d.ts.map +0 -1
  181. package/dist/core/src/rooms/RoomSessionPlayback.d.ts +0 -40
  182. package/dist/core/src/rooms/RoomSessionPlayback.d.ts.map +0 -1
  183. package/dist/core/src/rooms/RoomSessionPlayback.test.d.ts +0 -2
  184. package/dist/core/src/rooms/RoomSessionPlayback.test.d.ts.map +0 -1
  185. package/dist/core/src/rooms/RoomSessionRecording.d.ts +0 -30
  186. package/dist/core/src/rooms/RoomSessionRecording.d.ts.map +0 -1
  187. package/dist/core/src/rooms/RoomSessionRecording.test.d.ts +0 -2
  188. package/dist/core/src/rooms/RoomSessionRecording.test.d.ts.map +0 -1
  189. package/dist/core/src/rooms/RoomSessionStream.d.ts +0 -29
  190. package/dist/core/src/rooms/RoomSessionStream.d.ts.map +0 -1
  191. package/dist/core/src/rooms/RoomSessionStream.test.d.ts +0 -2
  192. package/dist/core/src/rooms/RoomSessionStream.test.d.ts.map +0 -1
  193. package/dist/core/src/rooms/index.d.ts +0 -11
  194. package/dist/core/src/rooms/index.d.ts.map +0 -1
  195. package/dist/core/src/rooms/methods.d.ts +0 -179
  196. package/dist/core/src/rooms/methods.d.ts.map +0 -1
  197. package/dist/core/src/rooms/methods.test.d.ts +0 -2
  198. package/dist/core/src/rooms/methods.test.d.ts.map +0 -1
  199. package/dist/core/src/setupTests.d.ts +0 -1
  200. package/dist/core/src/setupTests.d.ts.map +0 -1
  201. package/dist/core/src/testUtils.d.ts +0 -54
  202. package/dist/core/src/testUtils.d.ts.map +0 -1
  203. package/dist/core/src/types/cantina.d.ts +0 -82
  204. package/dist/core/src/types/cantina.d.ts.map +0 -1
  205. package/dist/core/src/types/chat.d.ts +0 -270
  206. package/dist/core/src/types/chat.d.ts.map +0 -1
  207. package/dist/core/src/types/common.d.ts +0 -34
  208. package/dist/core/src/types/common.d.ts.map +0 -1
  209. package/dist/core/src/types/conversation.d.ts +0 -33
  210. package/dist/core/src/types/conversation.d.ts.map +0 -1
  211. package/dist/core/src/types/fabric.d.ts +0 -15
  212. package/dist/core/src/types/fabric.d.ts.map +0 -1
  213. package/dist/core/src/types/fabricLayout.d.ts +0 -25
  214. package/dist/core/src/types/fabricLayout.d.ts.map +0 -1
  215. package/dist/core/src/types/fabricMember.d.ts +0 -148
  216. package/dist/core/src/types/fabricMember.d.ts.map +0 -1
  217. package/dist/core/src/types/fabricRoomSession.d.ts +0 -631
  218. package/dist/core/src/types/fabricRoomSession.d.ts.map +0 -1
  219. package/dist/core/src/types/index.d.ts +0 -276
  220. package/dist/core/src/types/index.d.ts.map +0 -1
  221. package/dist/core/src/types/messaging.d.ts +0 -90
  222. package/dist/core/src/types/messaging.d.ts.map +0 -1
  223. package/dist/core/src/types/pubSub.d.ts +0 -123
  224. package/dist/core/src/types/pubSub.d.ts.map +0 -1
  225. package/dist/core/src/types/task.d.ts +0 -36
  226. package/dist/core/src/types/task.d.ts.map +0 -1
  227. package/dist/core/src/types/utils.d.ts +0 -71
  228. package/dist/core/src/types/utils.d.ts.map +0 -1
  229. package/dist/core/src/types/video.d.ts +0 -62
  230. package/dist/core/src/types/video.d.ts.map +0 -1
  231. package/dist/core/src/types/videoLayout.d.ts +0 -75
  232. package/dist/core/src/types/videoLayout.d.ts.map +0 -1
  233. package/dist/core/src/types/videoMember.d.ts +0 -384
  234. package/dist/core/src/types/videoMember.d.ts.map +0 -1
  235. package/dist/core/src/types/videoPlayback.d.ts +0 -123
  236. package/dist/core/src/types/videoPlayback.d.ts.map +0 -1
  237. package/dist/core/src/types/videoRecording.d.ts +0 -114
  238. package/dist/core/src/types/videoRecording.d.ts.map +0 -1
  239. package/dist/core/src/types/videoRoomDevice.d.ts +0 -23
  240. package/dist/core/src/types/videoRoomDevice.d.ts.map +0 -1
  241. package/dist/core/src/types/videoRoomSession.d.ts +0 -921
  242. package/dist/core/src/types/videoRoomSession.d.ts.map +0 -1
  243. package/dist/core/src/types/videoStream.d.ts +0 -104
  244. package/dist/core/src/types/videoStream.d.ts.map +0 -1
  245. package/dist/core/src/types/voice.d.ts +0 -15
  246. package/dist/core/src/types/voice.d.ts.map +0 -1
  247. package/dist/core/src/types/voiceCall.d.ts +0 -253
  248. package/dist/core/src/types/voiceCall.d.ts.map +0 -1
  249. package/dist/core/src/types/voiceCollect.d.ts +0 -166
  250. package/dist/core/src/types/voiceCollect.d.ts.map +0 -1
  251. package/dist/core/src/types/voiceConnect.d.ts +0 -77
  252. package/dist/core/src/types/voiceConnect.d.ts.map +0 -1
  253. package/dist/core/src/types/voiceDetect.d.ts +0 -127
  254. package/dist/core/src/types/voiceDetect.d.ts.map +0 -1
  255. package/dist/core/src/types/voicePlayback.d.ts +0 -141
  256. package/dist/core/src/types/voicePlayback.d.ts.map +0 -1
  257. package/dist/core/src/types/voicePrompt.d.ts +0 -105
  258. package/dist/core/src/types/voicePrompt.d.ts.map +0 -1
  259. package/dist/core/src/types/voiceRecording.d.ts +0 -107
  260. package/dist/core/src/types/voiceRecording.d.ts.map +0 -1
  261. package/dist/core/src/types/voiceSendDigits.d.ts +0 -21
  262. package/dist/core/src/types/voiceSendDigits.d.ts.map +0 -1
  263. package/dist/core/src/types/voiceTap.d.ts +0 -116
  264. package/dist/core/src/types/voiceTap.d.ts.map +0 -1
  265. package/dist/core/src/utils/EventEmitter.d.ts +0 -9
  266. package/dist/core/src/utils/EventEmitter.d.ts.map +0 -1
  267. package/dist/core/src/utils/EventEmitter.test.d.ts +0 -2
  268. package/dist/core/src/utils/EventEmitter.test.d.ts.map +0 -1
  269. package/dist/core/src/utils/SWCloseEvent.d.ts +0 -18
  270. package/dist/core/src/utils/SWCloseEvent.d.ts.map +0 -1
  271. package/dist/core/src/utils/asyncRetry.d.ts +0 -18
  272. package/dist/core/src/utils/asyncRetry.d.ts.map +0 -1
  273. package/dist/core/src/utils/asyncRetry.test.d.ts +0 -2
  274. package/dist/core/src/utils/asyncRetry.test.d.ts.map +0 -1
  275. package/dist/core/src/utils/common.d.ts +0 -9
  276. package/dist/core/src/utils/common.d.ts.map +0 -1
  277. package/dist/core/src/utils/constants.d.ts +0 -44
  278. package/dist/core/src/utils/constants.d.ts.map +0 -1
  279. package/dist/core/src/utils/debounce.d.ts +0 -8
  280. package/dist/core/src/utils/debounce.d.ts.map +0 -1
  281. package/dist/core/src/utils/eventUtils.d.ts +0 -2
  282. package/dist/core/src/utils/eventUtils.d.ts.map +0 -1
  283. package/dist/core/src/utils/extendComponent.d.ts +0 -4
  284. package/dist/core/src/utils/extendComponent.d.ts.map +0 -1
  285. package/dist/core/src/utils/extendComponent.test.d.ts +0 -2
  286. package/dist/core/src/utils/extendComponent.test.d.ts.map +0 -1
  287. package/dist/core/src/utils/index.d.ts +0 -47
  288. package/dist/core/src/utils/index.d.ts.map +0 -1
  289. package/dist/core/src/utils/index.test.d.ts +0 -2
  290. package/dist/core/src/utils/index.test.d.ts.map +0 -1
  291. package/dist/core/src/utils/interfaces.d.ts +0 -296
  292. package/dist/core/src/utils/interfaces.d.ts.map +0 -1
  293. package/dist/core/src/utils/logger.d.ts +0 -6
  294. package/dist/core/src/utils/logger.d.ts.map +0 -1
  295. package/dist/core/src/utils/logger.test.d.ts +0 -2
  296. package/dist/core/src/utils/logger.test.d.ts.map +0 -1
  297. package/dist/core/src/utils/parseRPCResponse.d.ts +0 -10
  298. package/dist/core/src/utils/parseRPCResponse.d.ts.map +0 -1
  299. package/dist/core/src/utils/parseRPCResponse.test.d.ts +0 -2
  300. package/dist/core/src/utils/parseRPCResponse.test.d.ts.map +0 -1
  301. package/dist/core/src/utils/storage/index.d.ts +0 -11
  302. package/dist/core/src/utils/storage/index.d.ts.map +0 -1
  303. package/dist/core/src/utils/storage/index.native.d.ts +0 -11
  304. package/dist/core/src/utils/storage/index.native.d.ts.map +0 -1
  305. package/dist/core/src/utils/toExternalJSON.d.ts +0 -34
  306. package/dist/core/src/utils/toExternalJSON.d.ts.map +0 -1
  307. package/dist/core/src/utils/toExternalJSON.test.d.ts +0 -2
  308. package/dist/core/src/utils/toExternalJSON.test.d.ts.map +0 -1
  309. package/dist/core/src/utils/toInternalAction.d.ts +0 -7
  310. package/dist/core/src/utils/toInternalAction.d.ts.map +0 -1
  311. package/dist/core/src/utils/toInternalAction.test.d.ts +0 -2
  312. package/dist/core/src/utils/toInternalAction.test.d.ts.map +0 -1
  313. package/dist/core/src/utils/toInternalEventName.d.ts +0 -8
  314. package/dist/core/src/utils/toInternalEventName.d.ts.map +0 -1
  315. package/dist/core/src/utils/toInternalEventName.test.d.ts +0 -2
  316. package/dist/core/src/utils/toInternalEventName.test.d.ts.map +0 -1
  317. package/dist/core/src/utils/toSnakeCaseKeys.d.ts +0 -7
  318. package/dist/core/src/utils/toSnakeCaseKeys.d.ts.map +0 -1
  319. package/dist/core/src/utils/toSnakeCaseKeys.test.d.ts +0 -2
  320. package/dist/core/src/utils/toSnakeCaseKeys.test.d.ts.map +0 -1
  321. package/dist/core/src/workers/executeActionWorker.d.ts +0 -7
  322. package/dist/core/src/workers/executeActionWorker.d.ts.map +0 -1
  323. package/dist/core/src/workers/index.d.ts +0 -2
  324. package/dist/core/src/workers/index.d.ts.map +0 -1
  325. package/dist/index.esm.js +0 -4673
  326. package/dist/index.esm.js.map +0 -7
  327. package/dist/index.js +0 -4655
  328. package/dist/index.js.map +0 -7
  329. package/dist/index.umd.js +0 -31
  330. package/dist/index.umd.js.map +0 -1
  331. package/dist/js/src/BaseRoomSession.d.ts +0 -52
  332. package/dist/js/src/BaseRoomSession.d.ts.map +0 -1
  333. package/dist/js/src/Client.d.ts +0 -38
  334. package/dist/js/src/Client.d.ts.map +0 -1
  335. package/dist/js/src/JWTSession.d.ts +0 -31
  336. package/dist/js/src/JWTSession.d.ts.map +0 -1
  337. package/dist/js/src/RoomSessionDevice.d.ts +0 -30
  338. package/dist/js/src/RoomSessionDevice.d.ts.map +0 -1
  339. package/dist/js/src/RoomSessionScreenShare.d.ts +0 -26
  340. package/dist/js/src/RoomSessionScreenShare.d.ts.map +0 -1
  341. package/dist/js/src/VideoOverlays.d.ts +0 -42
  342. package/dist/js/src/VideoOverlays.d.ts.map +0 -1
  343. package/dist/js/src/buildVideoElement.d.ts +0 -18
  344. package/dist/js/src/buildVideoElement.d.ts.map +0 -1
  345. package/dist/js/src/cantina/VideoManager.d.ts +0 -16
  346. package/dist/js/src/cantina/VideoManager.d.ts.map +0 -1
  347. package/dist/js/src/cantina/index.d.ts +0 -2
  348. package/dist/js/src/cantina/index.d.ts.map +0 -1
  349. package/dist/js/src/cantina/workers/index.d.ts +0 -2
  350. package/dist/js/src/cantina/workers/index.d.ts.map +0 -1
  351. package/dist/js/src/cantina/workers/videoManagerRoomWorker.d.ts +0 -4
  352. package/dist/js/src/cantina/workers/videoManagerRoomWorker.d.ts.map +0 -1
  353. package/dist/js/src/cantina/workers/videoManagerRoomsWorker.d.ts +0 -4
  354. package/dist/js/src/cantina/workers/videoManagerRoomsWorker.d.ts.map +0 -1
  355. package/dist/js/src/cantina/workers/videoManagerWorker.d.ts +0 -7
  356. package/dist/js/src/cantina/workers/videoManagerWorker.d.ts.map +0 -1
  357. package/dist/js/src/chat/Client.d.ts +0 -46
  358. package/dist/js/src/chat/Client.d.ts.map +0 -1
  359. package/dist/js/src/chat/index.d.ts +0 -5
  360. package/dist/js/src/chat/index.d.ts.map +0 -1
  361. package/dist/js/src/createClient.d.ts +0 -26
  362. package/dist/js/src/createClient.d.ts.map +0 -1
  363. package/dist/js/src/createRoomObject.d.ts +0 -38
  364. package/dist/js/src/createRoomObject.d.ts.map +0 -1
  365. package/dist/js/src/fabric/FabricRoomSession.d.ts +0 -80
  366. package/dist/js/src/fabric/FabricRoomSession.d.ts.map +0 -1
  367. package/dist/js/src/fabric/FabricRoomSessionMember.d.ts +0 -46
  368. package/dist/js/src/fabric/FabricRoomSessionMember.d.ts.map +0 -1
  369. package/dist/js/src/fabric/HTTPClient.d.ts +0 -16
  370. package/dist/js/src/fabric/HTTPClient.d.ts.map +0 -1
  371. package/dist/js/src/fabric/IncomingCallManager.d.ts +0 -19
  372. package/dist/js/src/fabric/IncomingCallManager.d.ts.map +0 -1
  373. package/dist/js/src/fabric/SATSession.d.ts +0 -25
  374. package/dist/js/src/fabric/SATSession.d.ts.map +0 -1
  375. package/dist/js/src/fabric/SignalWire.d.ts +0 -3
  376. package/dist/js/src/fabric/SignalWire.d.ts.map +0 -1
  377. package/dist/js/src/fabric/WSClient.d.ts +0 -33
  378. package/dist/js/src/fabric/WSClient.d.ts.map +0 -1
  379. package/dist/js/src/fabric/createHttpClient.d.ts +0 -22
  380. package/dist/js/src/fabric/createHttpClient.d.ts.map +0 -1
  381. package/dist/js/src/fabric/createWSClient.d.ts +0 -38
  382. package/dist/js/src/fabric/createWSClient.d.ts.map +0 -1
  383. package/dist/js/src/fabric/index.d.ts +0 -15
  384. package/dist/js/src/fabric/index.d.ts.map +0 -1
  385. package/dist/js/src/fabric/interfaces/address.d.ts +0 -37
  386. package/dist/js/src/fabric/interfaces/address.d.ts.map +0 -1
  387. package/dist/js/src/fabric/interfaces/capabilities.d.ts +0 -29
  388. package/dist/js/src/fabric/interfaces/capabilities.d.ts.map +0 -1
  389. package/dist/js/src/fabric/interfaces/conversation.d.ts +0 -105
  390. package/dist/js/src/fabric/interfaces/conversation.d.ts.map +0 -1
  391. package/dist/js/src/fabric/interfaces/device.d.ts +0 -18
  392. package/dist/js/src/fabric/interfaces/device.d.ts.map +0 -1
  393. package/dist/js/src/fabric/interfaces/httpClient.d.ts +0 -41
  394. package/dist/js/src/fabric/interfaces/httpClient.d.ts.map +0 -1
  395. package/dist/js/src/fabric/interfaces/incomingCallManager.d.ts +0 -30
  396. package/dist/js/src/fabric/interfaces/incomingCallManager.d.ts.map +0 -1
  397. package/dist/js/src/fabric/interfaces/index.d.ts +0 -71
  398. package/dist/js/src/fabric/interfaces/index.d.ts.map +0 -1
  399. package/dist/js/src/fabric/interfaces/wsClient.d.ts +0 -132
  400. package/dist/js/src/fabric/interfaces/wsClient.d.ts.map +0 -1
  401. package/dist/js/src/fabric/utils/capabilitiesHelpers.d.ts +0 -28
  402. package/dist/js/src/fabric/utils/capabilitiesHelpers.d.ts.map +0 -1
  403. package/dist/js/src/fabric/utils/constants.d.ts +0 -5
  404. package/dist/js/src/fabric/utils/constants.d.ts.map +0 -1
  405. package/dist/js/src/fabric/utils/eventMappers.d.ts +0 -151
  406. package/dist/js/src/fabric/utils/eventMappers.d.ts.map +0 -1
  407. package/dist/js/src/fabric/utils/typeGuard.d.ts +0 -6
  408. package/dist/js/src/fabric/utils/typeGuard.d.ts.map +0 -1
  409. package/dist/js/src/fabric/utils/validationProxy.d.ts +0 -13
  410. package/dist/js/src/fabric/utils/validationProxy.d.ts.map +0 -1
  411. package/dist/js/src/fabric/utils/validators.d.ts +0 -20
  412. package/dist/js/src/fabric/utils/validators.d.ts.map +0 -1
  413. package/dist/js/src/fabric/workers/callJoinWorker.d.ts +0 -4
  414. package/dist/js/src/fabric/workers/callJoinWorker.d.ts.map +0 -1
  415. package/dist/js/src/fabric/workers/callLeftWorker.d.ts +0 -4
  416. package/dist/js/src/fabric/workers/callLeftWorker.d.ts.map +0 -1
  417. package/dist/js/src/fabric/workers/callSegmentWorker.d.ts +0 -4
  418. package/dist/js/src/fabric/workers/callSegmentWorker.d.ts.map +0 -1
  419. package/dist/js/src/fabric/workers/fabricMemberWorker.d.ts +0 -4
  420. package/dist/js/src/fabric/workers/fabricMemberWorker.d.ts.map +0 -1
  421. package/dist/js/src/fabric/workers/fabricWorker.d.ts +0 -7
  422. package/dist/js/src/fabric/workers/fabricWorker.d.ts.map +0 -1
  423. package/dist/js/src/fabric/workers/index.d.ts +0 -3
  424. package/dist/js/src/fabric/workers/index.d.ts.map +0 -1
  425. package/dist/js/src/fabric/workers/wsClientWorker.d.ts +0 -4
  426. package/dist/js/src/fabric/workers/wsClientWorker.d.ts.map +0 -1
  427. package/dist/js/src/features/actions.d.ts +0 -2
  428. package/dist/js/src/features/actions.d.ts.map +0 -1
  429. package/dist/js/src/features/mediaElements/mediaElementsSagas.d.ts +0 -7
  430. package/dist/js/src/features/mediaElements/mediaElementsSagas.d.ts.map +0 -1
  431. package/dist/js/src/index.d.ts +0 -87
  432. package/dist/js/src/index.d.ts.map +0 -1
  433. package/dist/js/src/joinRoom.d.ts +0 -24
  434. package/dist/js/src/joinRoom.d.ts.map +0 -1
  435. package/dist/js/src/pubSub/Client.d.ts +0 -46
  436. package/dist/js/src/pubSub/Client.d.ts.map +0 -1
  437. package/dist/js/src/pubSub/index.d.ts +0 -6
  438. package/dist/js/src/pubSub/index.d.ts.map +0 -1
  439. package/dist/js/src/setupTests.d.ts +0 -2
  440. package/dist/js/src/setupTests.d.ts.map +0 -1
  441. package/dist/js/src/testUtils.d.ts +0 -77
  442. package/dist/js/src/testUtils.d.ts.map +0 -1
  443. package/dist/js/src/utils/CloseEvent.d.ts +0 -7
  444. package/dist/js/src/utils/CloseEvent.d.ts.map +0 -1
  445. package/dist/js/src/utils/audioElement.d.ts +0 -6
  446. package/dist/js/src/utils/audioElement.d.ts.map +0 -1
  447. package/dist/js/src/utils/constants.d.ts +0 -2
  448. package/dist/js/src/utils/constants.d.ts.map +0 -1
  449. package/dist/js/src/utils/interfaces/base.d.ts +0 -55
  450. package/dist/js/src/utils/interfaces/base.d.ts.map +0 -1
  451. package/dist/js/src/utils/interfaces/fabric.d.ts +0 -71
  452. package/dist/js/src/utils/interfaces/fabric.d.ts.map +0 -1
  453. package/dist/js/src/utils/interfaces/index.d.ts +0 -4
  454. package/dist/js/src/utils/interfaces/index.d.ts.map +0 -1
  455. package/dist/js/src/utils/interfaces/video.d.ts +0 -307
  456. package/dist/js/src/utils/interfaces/video.d.ts.map +0 -1
  457. package/dist/js/src/utils/makeQueryParamsUrl.d.ts +0 -9
  458. package/dist/js/src/utils/makeQueryParamsUrl.d.ts.map +0 -1
  459. package/dist/js/src/utils/paginatedResult.d.ts +0 -12
  460. package/dist/js/src/utils/paginatedResult.d.ts.map +0 -1
  461. package/dist/js/src/utils/roomSession.d.ts +0 -26
  462. package/dist/js/src/utils/roomSession.d.ts.map +0 -1
  463. package/dist/js/src/utils/storage.d.ts +0 -10
  464. package/dist/js/src/utils/storage.d.ts.map +0 -1
  465. package/dist/js/src/utils/videoElement.d.ts +0 -35
  466. package/dist/js/src/utils/videoElement.d.ts.map +0 -1
  467. package/dist/js/src/video/RoomSession.d.ts +0 -38
  468. package/dist/js/src/video/RoomSession.d.ts.map +0 -1
  469. package/dist/js/src/video/VideoRoomSession.d.ts +0 -57
  470. package/dist/js/src/video/VideoRoomSession.d.ts.map +0 -1
  471. package/dist/js/src/video/index.d.ts +0 -16
  472. package/dist/js/src/video/index.d.ts.map +0 -1
  473. package/dist/js/src/video/workers/childMemberJoinedWorker.d.ts +0 -10
  474. package/dist/js/src/video/workers/childMemberJoinedWorker.d.ts.map +0 -1
  475. package/dist/js/src/video/workers/index.d.ts +0 -7
  476. package/dist/js/src/video/workers/index.d.ts.map +0 -1
  477. package/dist/js/src/video/workers/memberListUpdatedWorker.d.ts +0 -14
  478. package/dist/js/src/video/workers/memberListUpdatedWorker.d.ts.map +0 -1
  479. package/dist/js/src/video/workers/videoPlaybackWorker.d.ts +0 -4
  480. package/dist/js/src/video/workers/videoPlaybackWorker.d.ts.map +0 -1
  481. package/dist/js/src/video/workers/videoRecordWorker.d.ts +0 -4
  482. package/dist/js/src/video/workers/videoRecordWorker.d.ts.map +0 -1
  483. package/dist/js/src/video/workers/videoStreamWorker.d.ts +0 -4
  484. package/dist/js/src/video/workers/videoStreamWorker.d.ts.map +0 -1
  485. package/dist/js/src/video/workers/videoWorker.d.ts +0 -7
  486. package/dist/js/src/video/workers/videoWorker.d.ts.map +0 -1
  487. package/dist/js/src/webrtc.d.ts +0 -3
  488. package/dist/js/src/webrtc.d.ts.map +0 -1
  489. package/dist/js/tsconfig.build.tsbuildinfo +0 -1
  490. package/dist/webrtc/src/BaseConnection.d.ts +0 -232
  491. package/dist/webrtc/src/BaseConnection.d.ts.map +0 -1
  492. package/dist/webrtc/src/RTCPeer.d.ts +0 -134
  493. package/dist/webrtc/src/RTCPeer.d.ts.map +0 -1
  494. package/dist/webrtc/src/RTCPeer.test.d.ts +0 -2
  495. package/dist/webrtc/src/RTCPeer.test.d.ts.map +0 -1
  496. package/dist/webrtc/src/RTCPeerConnectionManager.d.ts +0 -63
  497. package/dist/webrtc/src/RTCPeerConnectionManager.d.ts.map +0 -1
  498. package/dist/webrtc/src/RTCPeerConnectionManager.test.d.ts +0 -2
  499. package/dist/webrtc/src/RTCPeerConnectionManager.test.d.ts.map +0 -1
  500. package/dist/webrtc/src/connectionPoolManager.d.ts +0 -14
  501. package/dist/webrtc/src/connectionPoolManager.d.ts.map +0 -1
  502. package/dist/webrtc/src/index.d.ts +0 -7
  503. package/dist/webrtc/src/index.d.ts.map +0 -1
  504. package/dist/webrtc/src/index.test.d.ts +0 -1
  505. package/dist/webrtc/src/index.test.d.ts.map +0 -1
  506. package/dist/webrtc/src/setupTests.d.ts +0 -2
  507. package/dist/webrtc/src/setupTests.d.ts.map +0 -1
  508. package/dist/webrtc/src/utils/constants.d.ts +0 -7
  509. package/dist/webrtc/src/utils/constants.d.ts.map +0 -1
  510. package/dist/webrtc/src/utils/deviceHelpers.d.ts +0 -319
  511. package/dist/webrtc/src/utils/deviceHelpers.d.ts.map +0 -1
  512. package/dist/webrtc/src/utils/deviceHelpers.test.d.ts +0 -2
  513. package/dist/webrtc/src/utils/deviceHelpers.test.d.ts.map +0 -1
  514. package/dist/webrtc/src/utils/enumerateDevices.d.ts +0 -25
  515. package/dist/webrtc/src/utils/enumerateDevices.d.ts.map +0 -1
  516. package/dist/webrtc/src/utils/getDisplayMedia.d.ts +0 -17
  517. package/dist/webrtc/src/utils/getDisplayMedia.d.ts.map +0 -1
  518. package/dist/webrtc/src/utils/getUserMedia.d.ts +0 -35
  519. package/dist/webrtc/src/utils/getUserMedia.d.ts.map +0 -1
  520. package/dist/webrtc/src/utils/helpers.d.ts +0 -18
  521. package/dist/webrtc/src/utils/helpers.d.ts.map +0 -1
  522. package/dist/webrtc/src/utils/helpers.test.d.ts +0 -2
  523. package/dist/webrtc/src/utils/helpers.test.d.ts.map +0 -1
  524. package/dist/webrtc/src/utils/index.d.ts +0 -8
  525. package/dist/webrtc/src/utils/index.d.ts.map +0 -1
  526. package/dist/webrtc/src/utils/interfaces.d.ts +0 -139
  527. package/dist/webrtc/src/utils/interfaces.d.ts.map +0 -1
  528. package/dist/webrtc/src/utils/mockTracks.d.ts +0 -26
  529. package/dist/webrtc/src/utils/mockTracks.d.ts.map +0 -1
  530. package/dist/webrtc/src/utils/permissions.d.ts +0 -48
  531. package/dist/webrtc/src/utils/permissions.d.ts.map +0 -1
  532. package/dist/webrtc/src/utils/primitives.d.ts +0 -54
  533. package/dist/webrtc/src/utils/primitives.d.ts.map +0 -1
  534. package/dist/webrtc/src/utils/primitives.native.d.ts +0 -36
  535. package/dist/webrtc/src/utils/primitives.native.d.ts.map +0 -1
  536. package/dist/webrtc/src/utils/requestPermissions.d.ts +0 -27
  537. package/dist/webrtc/src/utils/requestPermissions.d.ts.map +0 -1
  538. package/dist/webrtc/src/utils/sdpHelpers.d.ts +0 -61
  539. package/dist/webrtc/src/utils/sdpHelpers.d.ts.map +0 -1
  540. package/dist/webrtc/src/utils/sdpHelpers.test.d.ts +0 -2
  541. package/dist/webrtc/src/utils/sdpHelpers.test.d.ts.map +0 -1
  542. package/dist/webrtc/src/utils/watchRTCPeerMediaPackets.d.ts +0 -7
  543. package/dist/webrtc/src/utils/watchRTCPeerMediaPackets.d.ts.map +0 -1
  544. package/dist/webrtc/src/utils/webrtcHelpers.test.d.ts +0 -2
  545. package/dist/webrtc/src/utils/webrtcHelpers.test.d.ts.map +0 -1
  546. package/dist/webrtc/src/webrtcMocks.d.ts +0 -110
  547. package/dist/webrtc/src/webrtcMocks.d.ts.map +0 -1
  548. package/dist/webrtc/src/workers/connectionPoolWorker.d.ts +0 -7
  549. package/dist/webrtc/src/workers/connectionPoolWorker.d.ts.map +0 -1
  550. package/dist/webrtc/src/workers/index.d.ts +0 -7
  551. package/dist/webrtc/src/workers/index.d.ts.map +0 -1
  552. package/dist/webrtc/src/workers/promoteDemoteWorker.d.ts +0 -10
  553. package/dist/webrtc/src/workers/promoteDemoteWorker.d.ts.map +0 -1
  554. package/dist/webrtc/src/workers/roomSubscribedWorker.d.ts +0 -10
  555. package/dist/webrtc/src/workers/roomSubscribedWorker.d.ts.map +0 -1
  556. package/dist/webrtc/src/workers/sessionAuthWorker.d.ts +0 -10
  557. package/dist/webrtc/src/workers/sessionAuthWorker.d.ts.map +0 -1
  558. package/dist/webrtc/src/workers/sessionConnectionPoolWorker.d.ts +0 -7
  559. package/dist/webrtc/src/workers/sessionConnectionPoolWorker.d.ts.map +0 -1
  560. package/dist/webrtc/src/workers/vertoEventWorker.d.ts +0 -10
  561. package/dist/webrtc/src/workers/vertoEventWorker.d.ts.map +0 -1
  562. package/dist/webrtc/src/workers/vertoEventWorker.test.d.ts +0 -2
  563. package/dist/webrtc/src/workers/vertoEventWorker.test.d.ts.map +0 -1
  564. package/src/BaseRoomSession.ts +0 -302
  565. package/src/Client.ts +0 -193
  566. package/src/JWTSession.test.ts +0 -60
  567. package/src/JWTSession.ts +0 -146
  568. package/src/RoomSessionDevice.test.ts +0 -25
  569. package/src/RoomSessionDevice.ts +0 -62
  570. package/src/RoomSessionScreenShare.test.ts +0 -25
  571. package/src/RoomSessionScreenShare.ts +0 -58
  572. package/src/VideoOverlays.ts +0 -171
  573. package/src/buildVideoElement.test.ts +0 -933
  574. package/src/buildVideoElement.ts +0 -290
  575. package/src/cantina/VideoManager.test.ts +0 -95
  576. package/src/cantina/VideoManager.ts +0 -72
  577. package/src/cantina/index.ts +0 -1
  578. package/src/cantina/workers/index.ts +0 -1
  579. package/src/cantina/workers/videoManagerRoomWorker.ts +0 -28
  580. package/src/cantina/workers/videoManagerRoomsWorker.ts +0 -34
  581. package/src/cantina/workers/videoManagerWorker.ts +0 -64
  582. package/src/chat/Client.test.ts +0 -688
  583. package/src/chat/Client.ts +0 -94
  584. package/src/chat/index.ts +0 -31
  585. package/src/createClient.test.ts +0 -124
  586. package/src/createClient.ts +0 -48
  587. package/src/createRoomObject.ts +0 -149
  588. package/src/fabric/FabricRoomSession.test.ts +0 -695
  589. package/src/fabric/FabricRoomSession.ts +0 -446
  590. package/src/fabric/FabricRoomSessionMember.ts +0 -188
  591. package/src/fabric/HTTPClient.test.ts +0 -28
  592. package/src/fabric/HTTPClient.ts +0 -154
  593. package/src/fabric/IncomingCallManager.test.ts +0 -295
  594. package/src/fabric/IncomingCallManager.ts +0 -92
  595. package/src/fabric/SATSession.test.ts +0 -65
  596. package/src/fabric/SATSession.ts +0 -102
  597. package/src/fabric/SignalWire.test.ts +0 -115
  598. package/src/fabric/SignalWire.ts +0 -101
  599. package/src/fabric/WSClient.ts +0 -430
  600. package/src/fabric/createHttpClient.ts +0 -188
  601. package/src/fabric/createWSClient.ts +0 -12
  602. package/src/fabric/index.ts +0 -30
  603. package/src/fabric/interfaces/address.ts +0 -46
  604. package/src/fabric/interfaces/capabilities.ts +0 -30
  605. package/src/fabric/interfaces/conversation.ts +0 -145
  606. package/src/fabric/interfaces/device.ts +0 -21
  607. package/src/fabric/interfaces/httpClient.ts +0 -50
  608. package/src/fabric/interfaces/incomingCallManager.ts +0 -36
  609. package/src/fabric/interfaces/index.ts +0 -118
  610. package/src/fabric/interfaces/wsClient.ts +0 -154
  611. package/src/fabric/utils/capabilitiesHelpers.test.ts +0 -201
  612. package/src/fabric/utils/capabilitiesHelpers.ts +0 -208
  613. package/src/fabric/utils/constants.ts +0 -4
  614. package/src/fabric/utils/eventMappers.ts +0 -184
  615. package/src/fabric/utils/typeGuard.ts +0 -31
  616. package/src/fabric/utils/validationProxy.ts +0 -83
  617. package/src/fabric/utils/validators.ts +0 -242
  618. package/src/fabric/workers/callJoinWorker.ts +0 -88
  619. package/src/fabric/workers/callLeftWorker.ts +0 -32
  620. package/src/fabric/workers/callSegmentWorker.ts +0 -154
  621. package/src/fabric/workers/fabricMemberWorker.ts +0 -62
  622. package/src/fabric/workers/fabricWorker.ts +0 -100
  623. package/src/fabric/workers/index.ts +0 -2
  624. package/src/fabric/workers/wsClientWorker.ts +0 -60
  625. package/src/features/actions.ts +0 -5
  626. package/src/features/mediaElements/mediaElementsSagas.ts +0 -129
  627. package/src/index.test.ts +0 -5
  628. package/src/index.ts +0 -153
  629. package/src/joinRoom.ts +0 -29
  630. package/src/pubSub/Client.test.ts +0 -245
  631. package/src/pubSub/Client.ts +0 -90
  632. package/src/pubSub/index.ts +0 -10
  633. package/src/setupTests.ts +0 -122
  634. package/src/testUtils.ts +0 -259
  635. package/src/utils/CloseEvent.ts +0 -6
  636. package/src/utils/audioElement.ts +0 -21
  637. package/src/utils/constants.ts +0 -7
  638. package/src/utils/interfaces/base.ts +0 -55
  639. package/src/utils/interfaces/fabric.ts +0 -156
  640. package/src/utils/interfaces/index.ts +0 -3
  641. package/src/utils/interfaces/video.ts +0 -440
  642. package/src/utils/makeQueryParamsUrl.ts +0 -14
  643. package/src/utils/paginatedResult.ts +0 -35
  644. package/src/utils/roomSession.test.ts +0 -140
  645. package/src/utils/roomSession.ts +0 -85
  646. package/src/utils/storage.test.ts +0 -24
  647. package/src/utils/storage.ts +0 -37
  648. package/src/utils/videoElement.ts +0 -342
  649. package/src/video/RoomSession.test.ts +0 -31
  650. package/src/video/RoomSession.ts +0 -290
  651. package/src/video/VideoRoomSession.test.ts +0 -672
  652. package/src/video/VideoRoomSession.ts +0 -304
  653. package/src/video/index.ts +0 -43
  654. package/src/video/workers/childMemberJoinedWorker.test.ts +0 -99
  655. package/src/video/workers/childMemberJoinedWorker.ts +0 -75
  656. package/src/video/workers/index.ts +0 -6
  657. package/src/video/workers/memberListUpdatedWorker.ts +0 -217
  658. package/src/video/workers/videoPlaybackWorker.ts +0 -54
  659. package/src/video/workers/videoRecordWorker.ts +0 -54
  660. package/src/video/workers/videoStreamWorker.ts +0 -48
  661. package/src/video/workers/videoWorker.ts +0 -113
  662. package/src/webrtc.ts +0 -33
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.umd.js","names":["createErrorClass_1","__values","__read","__spreadArray","from","isFunction_1","UnsubscriptionError_1","arrRemove_1","Subscription","empty","__read","__spreadArray","from","timeout","config_1","timeoutProvider_1","config_1","__extends","b","isFunction_1","Subscription_1","config_1","reportUnhandledError_1","noop_1","errorContext_1","Subscriber","ConsumerObserver","SafeSubscriber","identity_1","pipe","Subscriber_1","Subscription_1","observable_1","pipe_1","config_1","isFunction_1","errorContext_1","Observable","isFunction_1","__extends","b","Subscriber_1","OperatorSubscriber","err","lift_1","OperatorSubscriber_1","__extends","b","Observable_1","Subscription_1","refCount_1","OperatorSubscriber_1","lift_1","ConnectableObservable","__read","__spreadArray","from","Subscription_1","timestamp","Observable_1","animationFrameProvider_1","timestamp","createErrorClass_1","__extends","b","__values","Observable_1","Subscription_1","ObjectUnsubscribedError_1","arrRemove_1","Subject","AnonymousSubject","__extends","b","BehaviorSubject","__extends","b","Subject_1","dateTimestampProvider_1","ReplaySubject","last","__extends","b","AsyncSubject","__extends","b","Action","delay","__read","__spreadArray","from","timeout","__extends","b","arrRemove_1","AsyncAction","delay","__read","__spreadArray","from","__extends","b","AsyncAction_1","AsapAction","delay","dateTimestampProvider_1","Scheduler","delay","__extends","b","Scheduler_1","AsyncScheduler","__extends","b","AsapScheduler","AsyncAction_1","__extends","b","QueueAction","delay","__extends","b","QueueScheduler","__extends","b","AsyncAction_1","AnimationFrameAction","delay","__extends","b","AnimationFrameScheduler","b","Subscription_1","VirtualTimeScheduler","VirtualAction","delay","Observable_1","isFunction_1","isFunction_1","isScheduler_1","last","isFunction_1","observable_1","isFunction_1","isFunction_1","iterator_1","isFunction_1","__generator","isFunction_1","__generator","__values","v","isArrayLike_1","isPromise_1","Observable_1","isInteropObservable_1","isAsyncIterable_1","throwUnobservableError_1","isIterable_1","isReadableStreamLike_1","isFunction_1","observable_1","process","delay","repeat","executeSchedule_1","lift_1","OperatorSubscriber_1","delay","lift_1","delay","innerFrom_1","observeOn_1","subscribeOn_1","innerFrom_1","observeOn_1","subscribeOn_1","Observable_1","Observable_1","isFunction_1","executeSchedule_1","Observable_1","executeSchedule_1","scheduleAsyncIterable_1","isReadableStreamLike_1","scheduleIterable_1","isArrayLike_1","scheduled_1","innerFrom_1","from","args_1","from_1","of","Observable_1","isFunction_1","empty_1","of_1","throwError_1","isFunction_1","Notification","Observable_1","isFunction_1","createErrorClass_1","EmptyError_1","lastValueFrom","EmptyError_1","Subscriber_1","firstValueFrom","createErrorClass_1","createErrorClass_1","createErrorClass_1","async_1","isDate_1","lift_1","innerFrom_1","OperatorSubscriber_1","executeSchedule_1","timeout","first","delay","lift_1","OperatorSubscriber_1","map","__read","__spreadArray","from","map_1","isArray","__read","__spreadArray","from","isScheduler_1","Observable_1","subscribeOn_1","mapOneOrManyArgs_1","observeOn_1","AsyncSubject_1","_i","bindCallbackInternals_1","isArray","first_1","Observable_1","argsArgArrayOrObject_1","from_1","identity_1","mapOneOrManyArgs_1","args_1","createObject_1","OperatorSubscriber_1","executeSchedule_1","combineLatest","i","innerFrom_1","executeSchedule_1","OperatorSubscriber_1","buffer","expand","map_1","innerFrom_1","lift_1","mergeInternals_1","isFunction_1","mergeMap_1","identity_1","mergeAll_1","concatAll_1","args_1","from_1","concat","Observable_1","innerFrom_1","defer","Subject_1","Observable_1","defer_1","DEFAULT_CONFIG","Observable_1","innerFrom_1","args_1","OperatorSubscriber_1","mapOneOrManyArgs_1","sourceIndex","__read","innerFrom_1","Observable_1","mergeMap_1","isFunction_1","mapOneOrManyArgs_1","Observable_1","isFunction_1","mapOneOrManyArgs_1","identity_1","isScheduler_1","defer_1","initialState","_a","defer_1","Observable_1","async_1","isDate_1","async_1","timer_1","interval","mergeAll_1","innerFrom_1","empty_1","args_1","from_1","merge","Observable_1","noop_1","Observable_1","argsOrArgArray_1","OperatorSubscriber_1","noop_1","innerFrom_1","from_1","lift_1","OperatorSubscriber_1","filter","not_1","filter_1","innerFrom_1","partition","Observable_1","innerFrom_1","argsOrArgArray_1","OperatorSubscriber_1","race","i","Observable_1","empty_1","count","Observable_1","innerFrom_1","empty_1","__read","__spreadArray","from","Observable_1","innerFrom_1","argsOrArgArray_1","empty_1","OperatorSubscriber_1","args_1","zip","sourceIndex","buffer","lift_1","innerFrom_1","OperatorSubscriber_1","async_1","audit_1","timer_1","auditTime","lift_1","noop_1","OperatorSubscriber_1","innerFrom_1","__values","lift_1","OperatorSubscriber_1","arrRemove_1","count","buffer","__values","Subscription_1","lift_1","OperatorSubscriber_1","arrRemove_1","async_1","args_1","executeSchedule_1","buffer","_a","__values","Subscription_1","lift_1","innerFrom_1","OperatorSubscriber_1","noop_1","arrRemove_1","buffer","lift_1","noop_1","OperatorSubscriber_1","innerFrom_1","buffer","innerFrom_1","OperatorSubscriber_1","lift_1","catchError","OperatorSubscriber_1","scanInternals_1","lift_1","reduce_1","lift_1","identity_1","mapOneOrManyArgs_1","pipe_1","mergeMap_1","toArray_1","combineLatest_1","joinAllInternals_1","combineLatestAll_1","__read","__spreadArray","from","combineLatest_1","lift_1","argsOrArgArray_1","pipe_1","args_1","combineLatest","__read","__spreadArray","from","combineLatest_1","mergeMap_1","isFunction_1","concatMap_1","isFunction_1","__read","__spreadArray","from","lift_1","concatAll_1","args_1","from_1","__read","__spreadArray","from","concat_1","Observable_1","Subject_1","innerFrom_1","lift_1","reduce_1","lift_1","noop_1","OperatorSubscriber_1","innerFrom_1","async_1","lift_1","OperatorSubscriber_1","debounceTime","lift_1","OperatorSubscriber_1","empty_1","lift_1","OperatorSubscriber_1","take","count","lift_1","OperatorSubscriber_1","noop_1","map_1","concat_1","take_1","ignoreElements_1","mapTo_1","mergeMap_1","innerFrom_1","async_1","delayWhen_1","timer_1","Notification_1","lift_1","OperatorSubscriber_1","lift_1","OperatorSubscriber_1","noop_1","innerFrom_1","identity_1","lift_1","OperatorSubscriber_1","distinctUntilChanged","first","distinctUntilChanged_1","EmptyError_1","lift_1","OperatorSubscriber_1","ArgumentOutOfRangeError_1","filter_1","throwIfEmpty_1","defaultIfEmpty_1","take_1","__read","__spreadArray","from","concat_1","of_1","lift_1","OperatorSubscriber_1","map_1","innerFrom_1","lift_1","OperatorSubscriber_1","exhaustMap","exhaustMap_1","identity_1","exhaustAll_1","lift_1","mergeInternals_1","lift_1","lift_1","OperatorSubscriber_1","findIndex","lift_1","find_1","EmptyError_1","filter_1","take_1","defaultIfEmpty_1","throwIfEmpty_1","identity_1","Observable_1","innerFrom_1","Subject_1","lift_1","OperatorSubscriber_1","lift_1","OperatorSubscriber_1","__values","empty_1","lift_1","OperatorSubscriber_1","count","buffer","buffer_1","EmptyError_1","filter_1","takeLast_1","throwIfEmpty_1","defaultIfEmpty_1","identity_1","Notification_1","lift_1","OperatorSubscriber_1","reduce_1","isFunction_1","mergeMap_1","mergeMap_1","isFunction_1","lift_1","__read","__spreadArray","from","lift_1","mergeAll_1","args_1","from_1","merge","__read","__spreadArray","from","merge_1","reduce_1","isFunction_1","ConnectableObservable_1","isFunction_1","connect_1","__read","__spreadArray","from","argsOrArgArray_1","onErrorResumeNext_1","lift_1","OperatorSubscriber_1","map_1","Subject_1","multicast_1","connect_1","BehaviorSubject_1","ConnectableObservable_1","AsyncSubject_1","ConnectableObservable_1","ReplaySubject_1","multicast_1","isFunction_1","windowTime","__read","__spreadArray","from","race_1","lift_1","identity_1","empty_1","lift_1","OperatorSubscriber_1","innerFrom_1","timer_1","count","delay","innerFrom_1","Subject_1","lift_1","OperatorSubscriber_1","lift_1","OperatorSubscriber_1","identity_1","timer_1","innerFrom_1","count","delay","innerFrom_1","Subject_1","lift_1","OperatorSubscriber_1","innerFrom_1","lift_1","noop_1","OperatorSubscriber_1","async_1","sample_1","interval_1","lift_1","lift_1","OperatorSubscriber_1","innerFrom_1","buffer","__read","__spreadArray","from","innerFrom_1","Subject_1","Subscriber_1","lift_1","share","refCount","ReplaySubject_1","share_1","shareReplay","refCount","windowTime","EmptyError_1","SequenceError_1","NotFoundError_1","lift_1","OperatorSubscriber_1","filter_1","skip","count","identity_1","lift_1","OperatorSubscriber_1","lift_1","OperatorSubscriber_1","innerFrom_1","noop_1","lift_1","OperatorSubscriber_1","skipWhile","concat_1","args_1","lift_1","innerFrom_1","lift_1","OperatorSubscriber_1","switchMap","switchMap_1","identity_1","switchMap_1","isFunction_1","switchMap_1","lift_1","lift_1","OperatorSubscriber_1","innerFrom_1","noop_1","takeUntil","lift_1","OperatorSubscriber_1","lift_1","OperatorSubscriber_1","identity_1","tap","_a","lift_1","OperatorSubscriber_1","innerFrom_1","async_1","throttle_1","timer_1","async_1","lift_1","OperatorSubscriber_1","last","interval","TimeInterval","async_1","timeout_1","first","map_1","Subject_1","lift_1","OperatorSubscriber_1","noop_1","innerFrom_1","window","__values","Subject_1","lift_1","OperatorSubscriber_1","count","Subject_1","async_1","Subscription_1","lift_1","OperatorSubscriber_1","arrRemove_1","args_1","window","window_1","_a","Subject_1","Subscription_1","lift_1","innerFrom_1","OperatorSubscriber_1","noop_1","window","Subject_1","lift_1","OperatorSubscriber_1","innerFrom_1","window","__read","__spreadArray","from","lift_1","identity_1","noop_1","withLatestFrom","ready","i","zip_1","__read","__spreadArray","from","zip_1","__read","__spreadArray","from","zip_1","exports","timeout_1","combineLatest_1","concat_1","merge_1","partition_1","race_1","zip_1","audit_1","auditTime_1","buffer_1","bufferCount_1","bufferTime_1","bufferToggle_1","bufferWhen_1","catchError_1","combineAll_1","combineLatestAll_1","combineLatestWith_1","concatAll_1","concatMap_1","concatMapTo_1","concatWith_1","connect_1","count_1","debounce_1","debounceTime_1","defaultIfEmpty_1","delay_1","delayWhen_1","dematerialize_1","distinct_1","distinctUntilChanged_1","distinctUntilKeyChanged_1","elementAt_1","endWith_1","every_1","exhaust_1","exhaustAll_1","exhaustMap_1","expand_1","filter_1","finalize_1","find_1","findIndex_1","first_1","groupBy_1","ignoreElements_1","isEmpty_1","last_1","map_1","mapTo_1","materialize_1","max_1","mergeAll_1","flatMap_1","mergeMap_1","mergeMapTo_1","mergeScan_1","mergeWith_1","min_1","multicast_1","observeOn_1","onErrorResumeNextWith_1","pairwise_1","pluck_1","publish_1","publishBehavior_1","publishLast_1","publishReplay_1","raceWith_1","reduce_1","repeat_1","repeatWhen_1","retry_1","retryWhen_1","refCount_1","sample_1","sampleTime_1","scan_1","sequenceEqual_1","share_1","shareReplay_1","single_1","skip_1","skipLast_1","skipUntil_1","skipWhile_1","startWith_1","subscribeOn_1","switchAll_1","switchMap_1","switchMapTo_1","switchScan_1","take_1","takeLast_1","takeUntil_1","takeWhile_1","tap_1","throttle_1","throttleTime_1","throwIfEmpty_1","timeInterval_1","timeoutWith_1","timestamp_1","toArray_1","window_1","windowCount_1","windowTime_1","windowToggle_1","windowWhen_1","withLatestFrom_1","zipAll_1","zipWith_1","Subject","ReplaySubject","windowTime","BehaviorSubject","at?: string","requestId: string","timeoutMs: number","error: unknown","storageType: string","key: string","originalError: Error","description: string","message: string","code: number","data?: unknown","originalError: unknown","operation: string","kind: string","noop","defaultLogger","getLogger","logger","log","userLogger: SDKLogger | null","debugOptions: LoggerOptions['debug']","wsTraffic: InternalSDKLogger['wsTraffic']","logger","delay","result: Awaited<T>","logger","baseURL: string","credential: SDKCredential","Subject","BehaviorSubject","timeout","headers: HTTPHeaders","logger","STORED_NUMBER_KEYS: (keyof StoredPreferences & keyof Preferences)[]","STORED_BOOLEAN_KEYS: (keyof StoredPreferences & keyof Preferences)[]","logger","initialDevicesState: DevicesState","initialSelectedDevicesState: SelectedDevicesState","device","devicesByKind: DevicesState","storageImpl: Storage","item: string | null","fromPath: string","http: HTTPRequestController","native","uuid","timestamp","tmpMap: VertoParams","VertoByeCauseCodes: Record<VertoByeCause, string>","logger","storage: StorageManager","deviceController: DeviceController","reconnectCallsTimeout: number","attachKey: string","timeout","filter_1","from","raceWith_1","race","DEFAULT_ON_OFF: OnOffCapability","DEFAULT_MEMBER_CAPABILITIES: MemberCapabilities","DEFAULT_CALL_CAPABILITIES: CallCapabilitiesState","logger","initialState: Partial<ParticipantState>","executeMethod: ExecuteMethod","deviceController: DeviceController","vertoManager: VertoManager","logger","logger","initialSessionState: Partial<SessionState>","webRtcCallSession: CallManager","options: WebRTCCallEventManagerOptions","mediaSectionsValidCandidates: number[]","count","logger","peerConnection: RTCPeerConnection","peerConnectionControllerNegotiating$: Observable<boolean>","timer","logger","options: LocalStreamControllerOptions","stream: MediaStream","constraints: MediaStreamConstraints","logger","transceiverParams: RTCRtpTransceiverInit","constraints: MediaStreamConstraints","constraintsToApply: MediaTrackConstraints","logger","options: RTCPeerConnectionControllerOptionsPartial","track","uuid","options","options: RTCOfferOptions","sender","answer: RTCSessionDescriptionInit","logger","webRtcCallSession: WebRTCCall","attachManager: AttachManager","deviceController: DeviceController","vertoMethod: VertoMethod","vertoByeOrAccepted: boolean | VertoByeParams","deviceKind: 'audio' | 'video' | 'both' | undefined","rtcPeerConnController: RTCPeerConnectionController | null","removeTrack: 'audio' | 'video' | 'both' | undefined","executeMethod: ExecuteMethod","vertoManager: VertoManager","deviceController: DeviceController","logger","clientSession: ClientSession","options: CallOptions","address?: Address","uuid","sessionManager: ClientSession","deviceController: DeviceController","attachManager: AttachManager","logger","endpoint: string","http: HTTPRequestController","fetchController: FetchController<T>","update$: Observable<Partial<T>>","onError?: (error: Error) => void","Subject","ReplaySubject","originalCollection: EntityCollection<O>","filter: (i: unknown) => i is O","mapper: (item: O) => T","addressId: string","conversationManager: ConversationsProvider","addressProvider: AddressProvider<Address>","logger","uuid","Observable","timer","NEVER","logger","from","credential: SDKCredential","transport: TransportManager","storage: StorageManager","authorizationStateKey: string","attachManager: AttachManager","error","params: RPCConnectParams","clientSessionManager: ClientSessionManager","logger","groupId: string","clientSession: ClientSessionManager","http: HTTPRequestController","getSubscriberAddressId: () => string","onError?: (error: Error) => void","logger","http: HTTPRequestController","conversationManager: ConversationsProvider","onError?: (error: Error) => void","logger","WebSocketConstructor: WebSocketAdapter | NodeSocketAdapter","endpoint: string","outgoingMessages$: Observable<string | ArrayBuffer | Blob>","logger","storage: StorageManager","protocolKey: string","onError?: (error: Error) => void","EMPTY","logger","decodeHeader: JWTHeader","error: unknown","ready","host: string","embedToken: string","timeout","credentials: SDKCredential","version: string","ready: boolean"],"sources":["../../../node_modules/jwt-decode/build/esm/index.js","../../../node_modules/rxjs/dist/cjs/internal/util/isFunction.js","../../../node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js","../../../node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js","../../../node_modules/rxjs/dist/cjs/internal/util/arrRemove.js","../../../node_modules/rxjs/dist/cjs/internal/Subscription.js","../../../node_modules/rxjs/dist/cjs/internal/config.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js","../../../node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js","../../../node_modules/rxjs/dist/cjs/internal/util/noop.js","../../../node_modules/rxjs/dist/cjs/internal/NotificationFactories.js","../../../node_modules/rxjs/dist/cjs/internal/util/errorContext.js","../../../node_modules/rxjs/dist/cjs/internal/Subscriber.js","../../../node_modules/rxjs/dist/cjs/internal/symbol/observable.js","../../../node_modules/rxjs/dist/cjs/internal/util/identity.js","../../../node_modules/rxjs/dist/cjs/internal/util/pipe.js","../../../node_modules/rxjs/dist/cjs/internal/Observable.js","../../../node_modules/rxjs/dist/cjs/internal/util/lift.js","../../../node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js","../../../node_modules/rxjs/dist/cjs/internal/operators/refCount.js","../../../node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js","../../../node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js","../../../node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js","../../../node_modules/rxjs/dist/cjs/internal/Subject.js","../../../node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js","../../../node_modules/rxjs/dist/cjs/internal/ReplaySubject.js","../../../node_modules/rxjs/dist/cjs/internal/AsyncSubject.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/Action.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js","../../../node_modules/rxjs/dist/cjs/internal/util/Immediate.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js","../../../node_modules/rxjs/dist/cjs/internal/Scheduler.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/asap.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/async.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/queue.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js","../../../node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/observable/empty.js","../../../node_modules/rxjs/dist/cjs/internal/util/isScheduler.js","../../../node_modules/rxjs/dist/cjs/internal/util/args.js","../../../node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js","../../../node_modules/rxjs/dist/cjs/internal/util/isPromise.js","../../../node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js","../../../node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js","../../../node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js","../../../node_modules/rxjs/dist/cjs/internal/symbol/iterator.js","../../../node_modules/rxjs/dist/cjs/internal/util/isIterable.js","../../../node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js","../../../node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js","../../../node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js","../../../node_modules/rxjs/dist/cjs/internal/operators/observeOn.js","../../../node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js","../../../node_modules/rxjs/dist/cjs/internal/observable/from.js","../../../node_modules/rxjs/dist/cjs/internal/observable/of.js","../../../node_modules/rxjs/dist/cjs/internal/observable/throwError.js","../../../node_modules/rxjs/dist/cjs/internal/Notification.js","../../../node_modules/rxjs/dist/cjs/internal/util/isObservable.js","../../../node_modules/rxjs/dist/cjs/internal/util/EmptyError.js","../../../node_modules/rxjs/dist/cjs/internal/lastValueFrom.js","../../../node_modules/rxjs/dist/cjs/internal/firstValueFrom.js","../../../node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js","../../../node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js","../../../node_modules/rxjs/dist/cjs/internal/util/SequenceError.js","../../../node_modules/rxjs/dist/cjs/internal/util/isDate.js","../../../node_modules/rxjs/dist/cjs/internal/operators/timeout.js","../../../node_modules/rxjs/dist/cjs/internal/operators/map.js","../../../node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js","../../../node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js","../../../node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js","../../../node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js","../../../node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js","../../../node_modules/rxjs/dist/cjs/internal/util/createObject.js","../../../node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/concatAll.js","../../../node_modules/rxjs/dist/cjs/internal/observable/concat.js","../../../node_modules/rxjs/dist/cjs/internal/observable/defer.js","../../../node_modules/rxjs/dist/cjs/internal/observable/connectable.js","../../../node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js","../../../node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js","../../../node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js","../../../node_modules/rxjs/dist/cjs/internal/observable/generate.js","../../../node_modules/rxjs/dist/cjs/internal/observable/iif.js","../../../node_modules/rxjs/dist/cjs/internal/observable/timer.js","../../../node_modules/rxjs/dist/cjs/internal/observable/interval.js","../../../node_modules/rxjs/dist/cjs/internal/observable/merge.js","../../../node_modules/rxjs/dist/cjs/internal/observable/never.js","../../../node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js","../../../node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js","../../../node_modules/rxjs/dist/cjs/internal/observable/pairs.js","../../../node_modules/rxjs/dist/cjs/internal/util/not.js","../../../node_modules/rxjs/dist/cjs/internal/operators/filter.js","../../../node_modules/rxjs/dist/cjs/internal/observable/partition.js","../../../node_modules/rxjs/dist/cjs/internal/observable/race.js","../../../node_modules/rxjs/dist/cjs/internal/observable/range.js","../../../node_modules/rxjs/dist/cjs/internal/observable/using.js","../../../node_modules/rxjs/dist/cjs/internal/observable/zip.js","../../../node_modules/rxjs/dist/cjs/internal/types.js","../../../node_modules/rxjs/dist/cjs/internal/operators/audit.js","../../../node_modules/rxjs/dist/cjs/internal/operators/auditTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/buffer.js","../../../node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js","../../../node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js","../../../node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js","../../../node_modules/rxjs/dist/cjs/internal/operators/catchError.js","../../../node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js","../../../node_modules/rxjs/dist/cjs/internal/operators/reduce.js","../../../node_modules/rxjs/dist/cjs/internal/operators/toArray.js","../../../node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js","../../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/combineAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js","../../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/concatMap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js","../../../node_modules/rxjs/dist/cjs/internal/operators/concat.js","../../../node_modules/rxjs/dist/cjs/internal/operators/concatWith.js","../../../node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js","../../../node_modules/rxjs/dist/cjs/internal/operators/connect.js","../../../node_modules/rxjs/dist/cjs/internal/operators/count.js","../../../node_modules/rxjs/dist/cjs/internal/operators/debounce.js","../../../node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js","../../../node_modules/rxjs/dist/cjs/internal/operators/take.js","../../../node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mapTo.js","../../../node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js","../../../node_modules/rxjs/dist/cjs/internal/operators/delay.js","../../../node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js","../../../node_modules/rxjs/dist/cjs/internal/operators/distinct.js","../../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js","../../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js","../../../node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js","../../../node_modules/rxjs/dist/cjs/internal/operators/elementAt.js","../../../node_modules/rxjs/dist/cjs/internal/operators/endWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/every.js","../../../node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/exhaust.js","../../../node_modules/rxjs/dist/cjs/internal/operators/expand.js","../../../node_modules/rxjs/dist/cjs/internal/operators/finalize.js","../../../node_modules/rxjs/dist/cjs/internal/operators/find.js","../../../node_modules/rxjs/dist/cjs/internal/operators/findIndex.js","../../../node_modules/rxjs/dist/cjs/internal/operators/first.js","../../../node_modules/rxjs/dist/cjs/internal/operators/groupBy.js","../../../node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js","../../../node_modules/rxjs/dist/cjs/internal/operators/takeLast.js","../../../node_modules/rxjs/dist/cjs/internal/operators/last.js","../../../node_modules/rxjs/dist/cjs/internal/operators/materialize.js","../../../node_modules/rxjs/dist/cjs/internal/operators/max.js","../../../node_modules/rxjs/dist/cjs/internal/operators/flatMap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js","../../../node_modules/rxjs/dist/cjs/internal/operators/merge.js","../../../node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/min.js","../../../node_modules/rxjs/dist/cjs/internal/operators/multicast.js","../../../node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/pairwise.js","../../../node_modules/rxjs/dist/cjs/internal/operators/pluck.js","../../../node_modules/rxjs/dist/cjs/internal/operators/publish.js","../../../node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js","../../../node_modules/rxjs/dist/cjs/internal/operators/publishLast.js","../../../node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js","../../../node_modules/rxjs/dist/cjs/internal/operators/raceWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/repeat.js","../../../node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js","../../../node_modules/rxjs/dist/cjs/internal/operators/retry.js","../../../node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js","../../../node_modules/rxjs/dist/cjs/internal/operators/sample.js","../../../node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/scan.js","../../../node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js","../../../node_modules/rxjs/dist/cjs/internal/operators/share.js","../../../node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js","../../../node_modules/rxjs/dist/cjs/internal/operators/single.js","../../../node_modules/rxjs/dist/cjs/internal/operators/skip.js","../../../node_modules/rxjs/dist/cjs/internal/operators/skipLast.js","../../../node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js","../../../node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js","../../../node_modules/rxjs/dist/cjs/internal/operators/startWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/switchMap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/switchAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js","../../../node_modules/rxjs/dist/cjs/internal/operators/switchScan.js","../../../node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js","../../../node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js","../../../node_modules/rxjs/dist/cjs/internal/operators/tap.js","../../../node_modules/rxjs/dist/cjs/internal/operators/throttle.js","../../../node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js","../../../node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js","../../../node_modules/rxjs/dist/cjs/internal/operators/timestamp.js","../../../node_modules/rxjs/dist/cjs/internal/operators/window.js","../../../node_modules/rxjs/dist/cjs/internal/operators/windowCount.js","../../../node_modules/rxjs/dist/cjs/internal/operators/windowTime.js","../../../node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js","../../../node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js","../../../node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js","../../../node_modules/rxjs/dist/cjs/internal/operators/zipAll.js","../../../node_modules/rxjs/dist/cjs/internal/operators/zip.js","../../../node_modules/rxjs/dist/cjs/internal/operators/zipWith.js","../../../node_modules/rxjs/dist/cjs/index.js","../src/behaviors/Destroyable.ts","../src/core/errors.ts","../../../node_modules/loglevel/lib/loglevel.js","../src/utils/logger.ts","../src/utils/asyncRetry.ts","../src/controllers/HTTPRequestController.ts","../src/core/constants.ts","../src/utils/time.ts","../src/containers/PreferencesContainer.ts","../src/controllers/NavigatorDeviceController.ts","../src/dependencies/DefaultLocalStorage.ts","../src/managers/StorageManager.ts","../src/containers/DependencyContainer.ts","../src/behaviors/Fetchable.ts","../src/core/entities/Subscriber.ts","../../../node_modules/uuid/dist-node/stringify.js","../../../node_modules/uuid/dist-node/rng.js","../../../node_modules/uuid/dist-node/native.js","../../../node_modules/uuid/dist-node/v4.js","../src/core/RPCMessages/helpers.ts","../src/core/RPCMessages/RPCConnect.ts","../src/core/RPCMessages/RPCPing.ts","../src/core/RPCMessages/RPCExecute.ts","../src/core/RPCMessages/VertoMessages.ts","../src/core/RPCMessages/RPCEventAck.ts","../src/managers/AttachManager.ts","../../../node_modules/rxjs/dist/cjs/internal/operators/partition.js","../../../node_modules/rxjs/dist/cjs/internal/operators/race.js","../../../node_modules/rxjs/dist/cjs/operators/index.js","../src/operators/filterNull.ts","../src/core/capabilities/types.ts","../src/core/capabilities/computeCapabilities.ts","../src/core/capabilities/SelfCapabilities.ts","../src/core/RPCMessages/utils.ts","../src/core/entities/Participant.ts","../src/core/RPCMessages/guards/base.guards.ts","../src/core/RPCMessages/guards/events.guards.ts","../src/utils/getValueFrom.ts","../src/operators/filterEventAs.ts","../src/operators/throwOnRPCError.ts","../src/managers/CallEventsManager.ts","../src/helpers/SDPHelper.ts","../src/controllers/ICEGatheringController.ts","../src/controllers/LocalStreamController.ts","../src/controllers/TransceiverController.ts","../src/controllers/RTCPeerConnectionController.ts","../src/core/RPCMessages/guards/verto.guards.ts","../src/managers/VertoManager.ts","../src/managers/ParticipantFactory.ts","../src/core/entities/Call.ts","../src/managers/CallFactory.ts","../src/behaviors/Collection.ts","../src/core/entities/Address.ts","../src/core/utils.ts","../src/managers/ClientSessionManager.ts","../src/utils/isString.ts","../src/managers/ConversationsManager.ts","../src/utils/arrays.ts","../src/utils/warnup.ts","../src/managers/DirectoryManager.ts","../src/controllers/WebSocketController.ts","../src/core/RPCMessages/guards/methods.guards.ts","../src/managers/TransportManager.ts","../src/clients/SignalWire.ts","../src/dependencies/EmbedTokenCredentialProvider.ts","../src/utils/embeddableCall.ts","../src/dependencies/StaticCredentialProvider.ts","../src/index.ts","../src/browser-entry.ts"],"sourcesContent":["export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFunction = void 0;\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createErrorClass = void 0;\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\nexports.createErrorClass = createErrorClass;\n//# sourceMappingURL=createErrorClass.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsubscriptionError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.UnsubscriptionError = createErrorClass_1.createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.arrRemove = void 0;\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\nexports.arrRemove = arrRemove;\n//# sourceMappingURL=arrRemove.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSubscription = exports.EMPTY_SUBSCRIPTION = exports.Subscription = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction_1.isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove_1.arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove_1.arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexports.Subscription = Subscription;\nexports.EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe)));\n}\nexports.isSubscription = isSubscription;\nfunction execFinalizer(finalizer) {\n if (isFunction_1.isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.config = void 0;\nexports.config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutProvider = void 0;\nexports.timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = exports.timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = exports.timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportUnhandledError = void 0;\nvar config_1 = require(\"../config\");\nvar timeoutProvider_1 = require(\"../scheduler/timeoutProvider\");\nfunction reportUnhandledError(err) {\n timeoutProvider_1.timeoutProvider.setTimeout(function () {\n var onUnhandledError = config_1.config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\nexports.reportUnhandledError = reportUnhandledError;\n//# sourceMappingURL=reportUnhandledError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = void 0;\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNotification = exports.nextNotification = exports.errorNotification = exports.COMPLETE_NOTIFICATION = void 0;\nexports.COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nfunction errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexports.errorNotification = errorNotification;\nfunction nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexports.nextNotification = nextNotification;\nfunction createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\nexports.createNotification = createNotification;\n//# sourceMappingURL=NotificationFactories.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureError = exports.errorContext = void 0;\nvar config_1 = require(\"../config\");\nvar context = null;\nfunction errorContext(cb) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexports.errorContext = errorContext;\nfunction captureError(err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\nexports.captureError = captureError;\n//# sourceMappingURL=errorContext.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMPTY_OBSERVER = exports.SafeSubscriber = exports.Subscriber = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Subscription_1 = require(\"./Subscription\");\nvar config_1 = require(\"./config\");\nvar reportUnhandledError_1 = require(\"./util/reportUnhandledError\");\nvar noop_1 = require(\"./util/noop\");\nvar NotificationFactories_1 = require(\"./NotificationFactories\");\nvar timeoutProvider_1 = require(\"./scheduler/timeoutProvider\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (Subscription_1.isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = exports.EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config_1.config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\nfunction handleUnhandledError(error) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n errorContext_1.captureError(error);\n }\n else {\n reportUnhandledError_1.reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config_1.config.onStoppedNotification;\n onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexports.EMPTY_OBSERVER = {\n closed: true,\n next: noop_1.noop,\n error: defaultErrorHandler,\n complete: noop_1.noop,\n};\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = void 0;\nexports.observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.identity = void 0;\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pipeFromArray = exports.pipe = void 0;\nvar identity_1 = require(\"./identity\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity_1.identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Observable = void 0;\nvar Subscriber_1 = require(\"./Subscriber\");\nvar Subscription_1 = require(\"./Subscription\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete);\n errorContext_1.errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new Subscriber_1.SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber_1.Subscriber) || (isObserver(value) && Subscription_1.isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operate = exports.hasLift = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction hasLift(source) {\n return isFunction_1.isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexports.hasLift = hasLift;\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\nexports.operate = operate;\n//# sourceMappingURL=lift.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OperatorSubscriber = exports.createOperatorSubscriber = void 0;\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexports.createOperatorSubscriber = createOperatorSubscriber;\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OperatorSubscriber = OperatorSubscriber;\n//# sourceMappingURL=OperatorSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.refCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction refCount() {\n return lift_1.operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\nexports.refCount = refCount;\n//# sourceMappingURL=refCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectableObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar refCount_1 = require(\"../operators/refCount\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (lift_1.hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription_1.Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription_1.Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return refCount_1.refCount()(this);\n };\n return ConnectableObservable;\n}(Observable_1.Observable));\nexports.ConnectableObservable = ConnectableObservable;\n//# sourceMappingURL=ConnectableObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.performanceTimestampProvider = void 0;\nexports.performanceTimestampProvider = {\n now: function () {\n return (exports.performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrameProvider = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nexports.animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = exports.animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription_1.Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrames = void 0;\nvar Observable_1 = require(\"../../Observable\");\nvar performanceTimestampProvider_1 = require(\"../../scheduler/performanceTimestampProvider\");\nvar animationFrameProvider_1 = require(\"../../scheduler/animationFrameProvider\");\nfunction animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nexports.animationFrames = animationFrames;\nfunction animationFramesFactory(timestampProvider) {\n return new Observable_1.Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectUnsubscribedError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ObjectUnsubscribedError = createErrorClass_1.createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnonymousSubject = exports.Subject = void 0;\nvar Observable_1 = require(\"./Observable\");\nvar Subscription_1 = require(\"./Subscription\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext_1.errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext_1.errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext_1.errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return Subscription_1.EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription_1.Subscription(function () {\n _this.currentObservers = null;\n arrRemove_1.arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable_1.Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable_1.Observable));\nexports.Subject = Subject;\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : Subscription_1.EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexports.AnonymousSubject = AnonymousSubject;\n//# sourceMappingURL=Subject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BehaviorSubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject_1.Subject));\nexports.BehaviorSubject = BehaviorSubject;\n//# sourceMappingURL=BehaviorSubject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dateTimestampProvider = void 0;\nexports.dateTimestampProvider = {\n now: function () {\n return (exports.dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReplaySubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar dateTimestampProvider_1 = require(\"./scheduler/dateTimestampProvider\");\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider_1.dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject_1.Subject));\nexports.ReplaySubject = ReplaySubject;\n//# sourceMappingURL=ReplaySubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncSubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject_1.Subject));\nexports.AsyncSubject = AsyncSubject;\n//# sourceMappingURL=AsyncSubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Action = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.intervalProvider = void 0;\nexports.intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = exports.intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = exports.intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncAction = void 0;\nvar Action_1 = require(\"./Action\");\nvar intervalProvider_1 = require(\"./intervalProvider\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider_1.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider_1.intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove_1.arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestTools = exports.Immediate = void 0;\nvar nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexports.Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexports.TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.immediateProvider = void 0;\nvar Immediate_1 = require(\"../util/Immediate\");\nvar setImmediate = Immediate_1.Immediate.setImmediate, clearImmediate = Immediate_1.Immediate.clearImmediate;\nexports.immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar immediateProvider_1 = require(\"./immediateProvider\");\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider_1.immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction_1.AsyncAction));\nexports.AsapAction = AsapAction;\n//# sourceMappingURL=AsapAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Scheduler = void 0;\nvar dateTimestampProvider_1 = require(\"./scheduler/dateTimestampProvider\");\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider_1.dateTimestampProvider.now;\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncScheduler = void 0;\nvar Scheduler_1 = require(\"../Scheduler\");\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler_1.Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AsapScheduler = AsapScheduler;\n//# sourceMappingURL=AsapScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.asap = exports.asapScheduler = void 0;\nvar AsapAction_1 = require(\"./AsapAction\");\nvar AsapScheduler_1 = require(\"./AsapScheduler\");\nexports.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);\nexports.asap = exports.asapScheduler;\n//# sourceMappingURL=asap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.async = exports.asyncScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nexports.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\nexports.async = exports.asyncScheduler;\n//# sourceMappingURL=async.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction_1.AsyncAction));\nexports.QueueAction = QueueAction;\n//# sourceMappingURL=QueueAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.QueueScheduler = QueueScheduler;\n//# sourceMappingURL=QueueScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.queue = exports.queueScheduler = void 0;\nvar QueueAction_1 = require(\"./QueueAction\");\nvar QueueScheduler_1 = require(\"./QueueScheduler\");\nexports.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);\nexports.queue = exports.queueScheduler;\n//# sourceMappingURL=queue.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar animationFrameProvider_1 = require(\"./animationFrameProvider\");\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction_1.AsyncAction));\nexports.AnimationFrameAction = AnimationFrameAction;\n//# sourceMappingURL=AnimationFrameAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AnimationFrameScheduler = AnimationFrameScheduler;\n//# sourceMappingURL=AnimationFrameScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrame = exports.animationFrameScheduler = void 0;\nvar AnimationFrameAction_1 = require(\"./AnimationFrameAction\");\nvar AnimationFrameScheduler_1 = require(\"./AnimationFrameScheduler\");\nexports.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);\nexports.animationFrame = exports.animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VirtualAction = exports.VirtualTimeScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar Subscription_1 = require(\"../Subscription\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.VirtualTimeScheduler = VirtualTimeScheduler;\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription_1.Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction_1.AsyncAction));\nexports.VirtualAction = VirtualAction;\n//# sourceMappingURL=VirtualTimeScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.empty = exports.EMPTY = void 0;\nvar Observable_1 = require(\"../Observable\");\nexports.EMPTY = new Observable_1.Observable(function (subscriber) { return subscriber.complete(); });\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : exports.EMPTY;\n}\nexports.empty = empty;\nfunction emptyScheduled(scheduler) {\n return new Observable_1.Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isScheduler = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isScheduler(value) {\n return value && isFunction_1.isFunction(value.schedule);\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.popNumber = exports.popScheduler = exports.popResultSelector = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nvar isScheduler_1 = require(\"./isScheduler\");\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction popResultSelector(args) {\n return isFunction_1.isFunction(last(args)) ? args.pop() : undefined;\n}\nexports.popResultSelector = popResultSelector;\nfunction popScheduler(args) {\n return isScheduler_1.isScheduler(last(args)) ? args.pop() : undefined;\n}\nexports.popScheduler = popScheduler;\nfunction popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\nexports.popNumber = popNumber;\n//# sourceMappingURL=args.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayLike = void 0;\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromise = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isPromise(value) {\n return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInteropObservable = void 0;\nvar observable_1 = require(\"../symbol/observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isInteropObservable(input) {\n return isFunction_1.isFunction(input[observable_1.observable]);\n}\nexports.isInteropObservable = isInteropObservable;\n//# sourceMappingURL=isInteropObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsyncIterable = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\nexports.isAsyncIterable = isAsyncIterable;\n//# sourceMappingURL=isAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInvalidObservableTypeError = void 0;\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\nexports.createInvalidObservableTypeError = createInvalidObservableTypeError;\n//# sourceMappingURL=throwUnobservableError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iterator = exports.getSymbolIterator = void 0;\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexports.getSymbolIterator = getSymbolIterator;\nexports.iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterable = void 0;\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isIterable(input) {\n return isFunction_1.isFunction(input === null || input === void 0 ? void 0 : input[iterator_1.iterator]);\n}\nexports.isIterable = isIterable;\n//# sourceMappingURL=isIterable.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReadableStreamLike = exports.readableStreamLikeToAsyncGenerator = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexports.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator;\nfunction isReadableStreamLike(obj) {\n return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\nexports.isReadableStreamLike = isReadableStreamLike;\n//# sourceMappingURL=isReadableStreamLike.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromReadableStreamLike = exports.fromAsyncIterable = exports.fromIterable = exports.fromPromise = exports.fromArrayLike = exports.fromInteropObservable = exports.innerFrom = void 0;\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar Observable_1 = require(\"../Observable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar reportUnhandledError_1 = require(\"../util/reportUnhandledError\");\nvar observable_1 = require(\"../symbol/observable\");\nfunction innerFrom(input) {\n if (input instanceof Observable_1.Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise_1.isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable_1.isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.innerFrom = innerFrom;\nfunction fromInteropObservable(obj) {\n return new Observable_1.Observable(function (subscriber) {\n var obs = obj[observable_1.observable]();\n if (isFunction_1.isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexports.fromInteropObservable = fromInteropObservable;\nfunction fromArrayLike(array) {\n return new Observable_1.Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexports.fromArrayLike = fromArrayLike;\nfunction fromPromise(promise) {\n return new Observable_1.Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError_1.reportUnhandledError);\n });\n}\nexports.fromPromise = fromPromise;\nfunction fromIterable(iterable) {\n return new Observable_1.Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexports.fromIterable = fromIterable;\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable_1.Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexports.fromAsyncIterable = fromAsyncIterable;\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream));\n}\nexports.fromReadableStreamLike = fromReadableStreamLike;\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.executeSchedule = void 0;\nfunction executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\nexports.executeSchedule = executeSchedule;\n//# sourceMappingURL=executeSchedule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeOn = void 0;\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\nexports.observeOn = observeOn;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeOn = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\nexports.subscribeOn = subscribeOn;\n//# sourceMappingURL=subscribeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleObservable = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction scheduleObservable(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.scheduleObservable = scheduleObservable;\n//# sourceMappingURL=scheduleObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.schedulePromise = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction schedulePromise(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.schedulePromise = schedulePromise;\n//# sourceMappingURL=schedulePromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleArray = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction scheduleArray(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\nexports.scheduleArray = scheduleArray;\n//# sourceMappingURL=scheduleArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleIterable(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var iterator;\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator = input[iterator_1.iterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\nexports.scheduleIterable = scheduleIterable;\n//# sourceMappingURL=scheduleIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleAsyncIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable_1.Observable(function (subscriber) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\nexports.scheduleAsyncIterable = scheduleAsyncIterable;\n//# sourceMappingURL=scheduleAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleReadableStreamLike = void 0;\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler);\n}\nexports.scheduleReadableStreamLike = scheduleReadableStreamLike;\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduled = void 0;\nvar scheduleObservable_1 = require(\"./scheduleObservable\");\nvar schedulePromise_1 = require(\"./schedulePromise\");\nvar scheduleArray_1 = require(\"./scheduleArray\");\nvar scheduleIterable_1 = require(\"./scheduleIterable\");\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar scheduleReadableStreamLike_1 = require(\"./scheduleReadableStreamLike\");\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return scheduleObservable_1.scheduleObservable(input, scheduler);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n if (isPromise_1.isPromise(input)) {\n return schedulePromise_1.schedulePromise(input, scheduler);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable_1.isIterable(input)) {\n return scheduleIterable_1.scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.scheduled = scheduled;\n//# sourceMappingURL=scheduled.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.from = void 0;\nvar scheduled_1 = require(\"../scheduled/scheduled\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction from(input, scheduler) {\n return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input);\n}\nexports.from = from;\n//# sourceMappingURL=from.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.of = void 0;\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return from_1.from(args, scheduler);\n}\nexports.of = of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwError = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable_1.Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeNotification = exports.Notification = exports.NotificationKind = void 0;\nvar empty_1 = require(\"./observable/empty\");\nvar of_1 = require(\"./observable/of\");\nvar throwError_1 = require(\"./observable/throwError\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind = exports.NotificationKind || (exports.NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction_1.isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of_1.of(value)\n :\n kind === 'E'\n ?\n throwError_1.throwError(function () { return error; })\n :\n kind === 'C'\n ?\n empty_1.EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexports.Notification = Notification;\nfunction observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\nexports.observeNotification = observeNotification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable_1.Observable || (isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe)));\n}\nexports.isObservable = isObservable;\n//# sourceMappingURL=isObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmptyError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.EmptyError = createErrorClass_1.createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lastValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nfunction lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError_1.EmptyError());\n }\n },\n });\n });\n}\nexports.lastValueFrom = lastValueFrom;\n//# sourceMappingURL=lastValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nvar Subscriber_1 = require(\"./Subscriber\");\nfunction firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new Subscriber_1.SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError_1.EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\nexports.firstValueFrom = firstValueFrom;\n//# sourceMappingURL=firstValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArgumentOutOfRangeError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotFoundError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.NotFoundError = createErrorClass_1.createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SequenceError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.SequenceError = createErrorClass_1.createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidDate = void 0;\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\nexports.isValidDate = isValidDate;\n//# sourceMappingURL=isDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeout = exports.TimeoutError = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar createErrorClass_1 = require(\"../util/createErrorClass\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nexports.TimeoutError = createErrorClass_1.createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nfunction timeout(config, schedulerArg) {\n var _a = (isDate_1.isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return lift_1.operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom_1.innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nexports.timeout = timeout;\nfunction timeoutErrorFactory(info) {\n throw new exports.TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction map(project, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapOneOrManyArgs = void 0;\nvar map_1 = require(\"../operators/map\");\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nfunction mapOneOrManyArgs(fn) {\n return map_1.map(function (args) { return callOrApply(fn, args); });\n}\nexports.mapOneOrManyArgs = mapOneOrManyArgs;\n//# sourceMappingURL=mapOneOrManyArgs.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallbackInternals = void 0;\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar Observable_1 = require(\"../Observable\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nfunction bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler_1.isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler)\n .apply(this, args)\n .pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n };\n }\n }\n if (scheduler) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc)\n .apply(this, args)\n .pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n };\n }\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var subject = new AsyncSubject_1.AsyncSubject();\n var uninitialized = true;\n return new Observable_1.Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [\n function () {\n var results = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n if (isNodeStyle) {\n var err = results.shift();\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n if (isAsync_1) {\n subject.complete();\n }\n },\n ]));\n if (isComplete_1) {\n subject.complete();\n }\n isAsync_1 = true;\n }\n return subs;\n });\n };\n}\nexports.bindCallbackInternals = bindCallbackInternals;\n//# sourceMappingURL=bindCallbackInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\nexports.bindCallback = bindCallback;\n//# sourceMappingURL=bindCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindNodeCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\nexports.bindNodeCallback = bindNodeCallback;\n//# sourceMappingURL=bindNodeCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsArgArrayOrObject = void 0;\nvar isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nexports.argsArgArrayOrObject = argsArgArrayOrObject;\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createObject = void 0;\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\nexports.createObject = createObject;\n//# sourceMappingURL=createObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestInit = exports.combineLatest = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar from_1 = require(\"./from\");\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar args_1 = require(\"../util/args\");\nvar createObject_1 = require(\"../util/createObject\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from_1.from([], scheduler);\n }\n var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject_1.createObject(keys, values); }\n :\n identity_1.identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.combineLatest = combineLatest;\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity_1.identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from_1.from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nexports.combineLatestInit = combineLatestInit;\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule_1.executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeInternals = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\nexports.mergeInternals = mergeInternals;\n//# sourceMappingURL=mergeInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom_1.innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return lift_1.operate(function (source, subscriber) { return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent); });\n}\nexports.mergeMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeAll = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap_1.mergeMap(identity_1.identity, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatAll = void 0;\nvar mergeAll_1 = require(\"./mergeAll\");\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar concatAll_1 = require(\"../operators/concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args)));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction defer(observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\nexports.defer = defer;\n//# sourceMappingURL=defer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connectable = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Observable_1 = require(\"../Observable\");\nvar defer_1 = require(\"./defer\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n resetOnDisconnect: true,\n};\nfunction connectable(source, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connection = null;\n var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable_1.Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer_1.defer(function () { return source; }).subscribe(subject);\n if (resetOnDisconnect) {\n connection.add(function () { return (subject = connector()); });\n }\n }\n return connection;\n };\n return result;\n}\nexports.connectable = connectable;\n//# sourceMappingURL=connectable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forkJoin = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar args_1 = require(\"../util/args\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar createObject_1 = require(\"../util/createObject\");\nfunction forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new Observable_1.Observable(function (subscriber) {\n var length = sources.length;\n if (!length) {\n subscriber.complete();\n return;\n }\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () { return remainingCompletions--; }, undefined, function () {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject_1.createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n };\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.forkJoin = forkJoin;\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEvent = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Observable_1 = require(\"../Observable\");\nvar mergeMap_1 = require(\"../operators/mergeMap\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction_1.isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike_1.isArrayLike(target)) {\n return mergeMap_1.mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom_1.innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable_1.Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nexports.fromEvent = fromEvent;\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEventPattern = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n }\n return new Observable_1.Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue = addHandler(handler);\n return isFunction_1.isFunction(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\nexports.fromEventPattern = fromEventPattern;\n//# sourceMappingURL=fromEventPattern.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generate = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar defer_1 = require(\"./defer\");\nvar scheduleIterable_1 = require(\"../scheduled/scheduleIterable\");\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n var resultSelector;\n var initialState;\n if (arguments.length === 1) {\n (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity_1.identity;\n scheduler = resultSelectorOrScheduler;\n }\n else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n state = iterate(state);\n return [3, 1];\n case 4: return [2];\n }\n });\n }\n return defer_1.defer((scheduler\n ?\n function () { return scheduleIterable_1.scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\nexports.generate = generate;\n//# sourceMappingURL=generate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iif = void 0;\nvar defer_1 = require(\"./defer\");\nfunction iif(condition, trueResult, falseResult) {\n return defer_1.defer(function () { return (condition() ? trueResult : falseResult); });\n}\nexports.iif = iif;\n//# sourceMappingURL=iif.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar async_1 = require(\"../scheduler/async\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar isDate_1 = require(\"../util/isDate\");\nfunction timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = async_1.async; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler_1.isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable_1.Observable(function (subscriber) {\n var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\nexports.timer = timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar timer_1 = require(\"./timer\");\nfunction interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer_1.timer(period, period, scheduler);\n}\nexports.interval = interval;\n//# sourceMappingURL=interval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar mergeAll_1 = require(\"../operators/mergeAll\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n empty_1.EMPTY\n : sources.length === 1\n ?\n innerFrom_1.innerFrom(sources[0])\n :\n mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.never = exports.NEVER = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar noop_1 = require(\"../util/noop\");\nexports.NEVER = new Observable_1.Observable(noop_1.noop);\nfunction never() {\n return exports.NEVER;\n}\nexports.never = never;\n//# sourceMappingURL=never.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsOrArgArray = void 0;\nvar isArray = Array.isArray;\nfunction argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\nexports.argsOrArgArray = argsOrArgArray;\n//# sourceMappingURL=argsOrArgArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return new Observable_1.Observable(function (subscriber) {\n var sourceIndex = 0;\n var subscribeNext = function () {\n if (sourceIndex < nextSources.length) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]);\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, undefined, noop_1.noop, noop_1.noop);\n nextSource.subscribe(innerSubscriber);\n innerSubscriber.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n };\n subscribeNext();\n });\n}\nexports.onErrorResumeNext = onErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairs = void 0;\nvar from_1 = require(\"./from\");\nfunction pairs(obj, scheduler) {\n return from_1.from(Object.entries(obj), scheduler);\n}\nexports.pairs = pairs;\n//# sourceMappingURL=pairs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.not = void 0;\nfunction not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\nexports.not = not;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filter = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction filter(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partition = void 0;\nvar not_1 = require(\"../util/not\");\nvar filter_1 = require(\"../operators/filter\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction partition(source, predicate, thisArg) {\n return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source))];\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceInit = exports.race = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nfunction race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray_1.argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources));\n}\nexports.race = race;\nfunction raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom_1.innerFrom(sources[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\nexports.raceInit = raceInit;\n//# sourceMappingURL=race.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.range = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar empty_1 = require(\"./empty\");\nfunction range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return empty_1.EMPTY;\n }\n var end = count + start;\n return new Observable_1.Observable(scheduler\n ?\n function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n }\n else {\n subscriber.complete();\n }\n });\n }\n :\n function (subscriber) {\n var n = start;\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n subscriber.complete();\n });\n}\nexports.range = range;\n//# sourceMappingURL=range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.using = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nfunction using(resourceFactory, observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\nexports.using = using;\n//# sourceMappingURL=using.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar empty_1 = require(\"./empty\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar args_1 = require(\"../util/args\");\nfunction zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var sources = argsOrArgArray_1.argsOrArgArray(args);\n return sources.length\n ? new Observable_1.Observable(function (subscriber) {\n var buffers = sources.map(function () { return []; });\n var completed = sources.map(function () { return false; });\n subscriber.add(function () {\n buffers = completed = null;\n });\n var _loop_1 = function (sourceIndex) {\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n if (buffers.every(function (buffer) { return buffer.length; })) {\n var result = buffers.map(function (buffer) { return buffer.shift(); });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n return function () {\n buffers = completed = null;\n };\n })\n : empty_1.EMPTY;\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.audit = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction audit(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom_1.innerFrom(durationSelector(value)).subscribe((durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\nexports.audit = audit;\n//# sourceMappingURL=audit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.auditTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar audit_1 = require(\"./audit\");\nvar timer_1 = require(\"../observable/timer\");\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return audit_1.audit(function () { return timer_1.timer(duration, scheduler); });\n}\nexports.auditTime = auditTime;\n//# sourceMappingURL=auditTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buffer = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction buffer(closingNotifier) {\n return lift_1.operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop_1.noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\nexports.buffer = buffer;\n//# sourceMappingURL=buffer.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n var toEmit = null;\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }, function () {\n var e_3, _a;\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\nexports.bufferCount = bufferCount;\n//# sourceMappingURL=bufferCount.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferTime = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar async_1 = require(\"../scheduler/async\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction bufferTime(bufferTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n var emit = function (record) {\n var buffer = record.buffer, subs = record.subs;\n subs.unsubscribe();\n arrRemove_1.arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs,\n };\n bufferRecords.push(record_1);\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);\n }\n };\n if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n }\n else {\n restartOnEmit = true;\n }\n startBuffer();\n var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var recordsCopy = bufferRecords.slice();\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () { return (bufferRecords = null); });\n source.subscribe(bufferTimeSubscriber);\n });\n}\nexports.bufferTime = bufferTime;\n//# sourceMappingURL=bufferTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferToggle = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription_1.Subscription();\n var emitBuffer = function () {\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n subscriber.complete();\n }));\n });\n}\nexports.bufferToggle = bufferToggle;\n//# sourceMappingURL=bufferToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferWhen = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction bufferWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom_1.innerFrom(closingSelector()).subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop)));\n };\n openBuffer();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () { return (buffer = closingSubscriber = null); }));\n });\n}\nexports.bufferWhen = bufferWhen;\n//# sourceMappingURL=bufferWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.catchError = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction catchError(selector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\nexports.catchError = catchError;\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scanInternals = void 0;\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\nexports.scanInternals = scanInternals;\n//# sourceMappingURL=scanInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduce = void 0;\nvar scanInternals_1 = require(\"./scanInternals\");\nvar lift_1 = require(\"../util/lift\");\nfunction reduce(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\nexports.reduce = reduce;\n//# sourceMappingURL=reduce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toArray = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar lift_1 = require(\"../util/lift\");\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nfunction toArray() {\n return lift_1.operate(function (source, subscriber) {\n reduce_1.reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\nexports.toArray = toArray;\n//# sourceMappingURL=toArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinAllInternals = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar toArray_1 = require(\"./toArray\");\nfunction joinAllInternals(joinFn, project) {\n return pipe_1.pipe(toArray_1.toArray(), mergeMap_1.mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity);\n}\nexports.joinAllInternals = joinAllInternals;\n//# sourceMappingURL=joinAllInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestAll = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction combineLatestAll(project) {\n return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project);\n}\nexports.combineLatestAll = combineLatestAll;\n//# sourceMappingURL=combineLatestAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineAll = void 0;\nvar combineLatestAll_1 = require(\"./combineLatestAll\");\nexports.combineAll = combineLatestAll_1.combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatest = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar lift_1 = require(\"../util/lift\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar args_1 = require(\"../util/args\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n return resultSelector\n ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector))\n : lift_1.operate(function (source, subscriber) {\n combineLatest_1.combineLatestInit(__spreadArray([source], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber);\n });\n}\nexports.combineLatest = combineLatest;\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestWith = void 0;\nvar combineLatest_1 = require(\"./combineLatest\");\nfunction combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.combineLatestWith = combineLatestWith;\n//# sourceMappingURL=combineLatestWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMap(project, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMapTo = void 0;\nvar concatMap_1 = require(\"./concatMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function () { return innerObservable; }, resultSelector) : concatMap_1.concatMap(function () { return innerObservable; });\n}\nexports.concatMapTo = concatMapTo;\n//# sourceMappingURL=concatMapTo.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar concatAll_1 = require(\"./concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return lift_1.operate(function (source, subscriber) {\n concatAll_1.concatAll()(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatWith = void 0;\nvar concat_1 = require(\"./concat\");\nfunction concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.concatWith = concatWith;\n//# sourceMappingURL=concatWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSubscribable = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction fromSubscribable(subscribable) {\n return new Observable_1.Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\nexports.fromSubscribable = fromSubscribable;\n//# sourceMappingURL=fromSubscribable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connect = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar fromSubscribable_1 = require(\"../observable/fromSubscribable\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n};\nfunction connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return lift_1.operate(function (source, subscriber) {\n var subject = connector();\n innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\nexports.connect = connect;\n//# sourceMappingURL=connect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.count = void 0;\nvar reduce_1 = require(\"./reduce\");\nfunction count(predicate) {\n return reduce_1.reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\nexports.count = count;\n//# sourceMappingURL=count.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounce = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction debounce(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop);\n innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\nexports.debounce = debounce;\n//# sourceMappingURL=debounce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounceTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\nexports.debounceTime = debounceTime;\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultIfEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction defaultIfEmpty(defaultValue) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\nexports.defaultIfEmpty = defaultIfEmpty;\n//# sourceMappingURL=defaultIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.take = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction take(count) {\n return count <= 0\n ?\n function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\nexports.take = take;\n//# sourceMappingURL=take.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ignoreElements = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nfunction ignoreElements() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop));\n });\n}\nexports.ignoreElements = ignoreElements;\n//# sourceMappingURL=ignoreElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapTo = void 0;\nvar map_1 = require(\"./map\");\nfunction mapTo(value) {\n return map_1.map(function () { return value; });\n}\nexports.mapTo = mapTo;\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delayWhen = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar take_1 = require(\"./take\");\nvar ignoreElements_1 = require(\"./ignoreElements\");\nvar mapTo_1 = require(\"./mapTo\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap_1.mergeMap(function (value, index) { return innerFrom_1.innerFrom(delayDurationSelector(value, index)).pipe(take_1.take(1), mapTo_1.mapTo(value)); });\n}\nexports.delayWhen = delayWhen;\n//# sourceMappingURL=delayWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar delayWhen_1 = require(\"./delayWhen\");\nvar timer_1 = require(\"../observable/timer\");\nfunction delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration = timer_1.timer(due, scheduler);\n return delayWhen_1.delayWhen(function () { return duration; });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dematerialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction dematerialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (notification) { return Notification_1.observeNotification(notification, subscriber); }));\n });\n}\nexports.dematerialize = dematerialize;\n//# sourceMappingURL=dematerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinct = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction distinct(keySelector, flushes) {\n return lift_1.operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop_1.noop));\n });\n}\nexports.distinct = distinct;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilChanged = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity_1.identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return lift_1.operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nexports.distinctUntilChanged = distinctUntilChanged;\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilKeyChanged = void 0;\nvar distinctUntilChanged_1 = require(\"./distinctUntilChanged\");\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged_1.distinctUntilChanged(function (x, y) { return (compare ? compare(x[key], y[key]) : x[key] === y[key]); });\n}\nexports.distinctUntilKeyChanged = distinctUntilKeyChanged;\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwIfEmpty = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nexports.throwIfEmpty = throwIfEmpty;\nfunction defaultErrorFactory() {\n return new EmptyError_1.EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementAt = void 0;\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar filter_1 = require(\"./filter\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar take_1 = require(\"./take\");\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter_1.filter(function (v, i) { return i === index; }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); }));\n };\n}\nexports.elementAt = elementAt;\n//# sourceMappingURL=elementAt.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar of_1 = require(\"../observable/of\");\nfunction endWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return function (source) { return concat_1.concat(source, of_1.of.apply(void 0, __spreadArray([], __read(values)))); };\n}\nexports.endWith = endWith;\n//# sourceMappingURL=endWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.every = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction every(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.every = every;\n//# sourceMappingURL=every.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\nexports.exhaustMap = exhaustMap;\n//# sourceMappingURL=exhaustMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustAll = void 0;\nvar exhaustMap_1 = require(\"./exhaustMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction exhaustAll() {\n return exhaustMap_1.exhaustMap(identity_1.identity);\n}\nexports.exhaustAll = exhaustAll;\n//# sourceMappingURL=exhaustAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaust = void 0;\nvar exhaustAll_1 = require(\"./exhaustAll\");\nexports.exhaust = exhaustAll_1.exhaustAll;\n//# sourceMappingURL=exhaust.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expand = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return lift_1.operate(function (source, subscriber) {\n return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\nexports.expand = expand;\n//# sourceMappingURL=expand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.finalize = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction finalize(callback) {\n return lift_1.operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\nexports.finalize = finalize;\n//# sourceMappingURL=finalize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFind = exports.find = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction find(predicate, thisArg) {\n return lift_1.operate(createFind(predicate, thisArg, 'value'));\n}\nexports.find = find;\nfunction createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\nexports.createFind = createFind;\n//# sourceMappingURL=find.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findIndex = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar find_1 = require(\"./find\");\nfunction findIndex(predicate, thisArg) {\n return lift_1.operate(find_1.createFind(predicate, thisArg, 'index'));\n}\nexports.findIndex = findIndex;\n//# sourceMappingURL=findIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.first = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar take_1 = require(\"./take\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.first = first;\n//# sourceMappingURL=first.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupBy = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction groupBy(keySelector, elementOrOptions, duration, connector) {\n return lift_1.operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject_1.Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable_1.Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nexports.groupBy = groupBy;\n//# sourceMappingURL=groupBy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction isEmpty() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.isEmpty = isEmpty;\n//# sourceMappingURL=isEmpty.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeLast = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeLast(count) {\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\nexports.takeLast = takeLast;\n//# sourceMappingURL=takeLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.last = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar takeLast_1 = require(\"./takeLast\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.last = last;\n//# sourceMappingURL=last.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction materialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification_1.Notification.createNext(value));\n }, function () {\n subscriber.next(Notification_1.Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification_1.Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\nexports.materialize = materialize;\n//# sourceMappingURL=materialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.max = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction max(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\nexports.max = max;\n//# sourceMappingURL=max.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nexports.flatMap = mergeMap_1.mergeMap;\n//# sourceMappingURL=flatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMapTo = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap_1.mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap_1.mergeMap(function () { return innerObservable; }, concurrent);\n}\nexports.mergeMapTo = mergeMapTo;\n//# sourceMappingURL=mergeMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeScan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals_1.mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\nexports.mergeScan = mergeScan;\n//# sourceMappingURL=mergeScan.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeAll_1 = require(\"./mergeAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n return lift_1.operate(function (source, subscriber) {\n mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeWith = void 0;\nvar merge_1 = require(\"./merge\");\nfunction mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.mergeWith = mergeWith;\n//# sourceMappingURL=mergeWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.min = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction min(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\nexports.min = min;\n//# sourceMappingURL=min.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multicast = void 0;\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar connect_1 = require(\"./connect\");\nfunction multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction_1.isFunction(selector)) {\n return connect_1.connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable_1.ConnectableObservable(source, subjectFactory); };\n}\nexports.multicast = multicast;\n//# sourceMappingURL=multicast.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = exports.onErrorResumeNextWith = void 0;\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar onErrorResumeNext_1 = require(\"../observable/onErrorResumeNext\");\nfunction onErrorResumeNextWith() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return function (source) { return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source], __read(nextSources))); };\n}\nexports.onErrorResumeNextWith = onErrorResumeNextWith;\nexports.onErrorResumeNext = onErrorResumeNextWith;\n//# sourceMappingURL=onErrorResumeNextWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairwise = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction pairwise() {\n return lift_1.operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\nexports.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pluck = void 0;\nvar map_1 = require(\"./map\");\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map_1.map(function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\nexports.pluck = pluck;\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publish = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar multicast_1 = require(\"./multicast\");\nvar connect_1 = require(\"./connect\");\nfunction publish(selector) {\n return selector ? function (source) { return connect_1.connect(selector)(source); } : function (source) { return multicast_1.multicast(new Subject_1.Subject())(source); };\n}\nexports.publish = publish;\n//# sourceMappingURL=publish.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishBehavior = void 0;\nvar BehaviorSubject_1 = require(\"../BehaviorSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject_1.BehaviorSubject(initialValue);\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishBehavior = publishBehavior;\n//# sourceMappingURL=publishBehavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishLast = void 0;\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishLast() {\n return function (source) {\n var subject = new AsyncSubject_1.AsyncSubject();\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishLast = publishLast;\n//# sourceMappingURL=publishLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar multicast_1 = require(\"./multicast\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\nexports.publishReplay = publishReplay;\n//# sourceMappingURL=publishReplay.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceWith = void 0;\nvar race_1 = require(\"../observable/race\");\nvar lift_1 = require(\"../util/lift\");\nvar identity_1 = require(\"../util/identity\");\nfunction raceWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return !otherSources.length\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n race_1.raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\nexports.raceWith = raceWith;\n//# sourceMappingURL=raceWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeat = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar timer_1 = require(\"../observable/timer\");\nfunction repeat(countOrConfig) {\n var _a;\n var count = Infinity;\n var delay;\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n }\n else {\n count = countOrConfig;\n }\n }\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var sourceSub;\n var resubscribe = function () {\n sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n subscribeToSource();\n }\n };\n var subscribeToSource = function () {\n var syncUnsub = false;\n sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n resubscribe();\n }\n };\n subscribeToSource();\n });\n}\nexports.repeat = repeat;\n//# sourceMappingURL=repeat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeatWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction repeatWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); };\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n }\n else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n return completions$;\n };\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n subscribeForRepeatWhen();\n });\n}\nexports.repeatWhen = repeatWhen;\n//# sourceMappingURL=repeatWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retry = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nvar timer_1 = require(\"../observable/timer\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\nexports.retry = retry;\n//# sourceMappingURL=retry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction retryWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : (syncResub = true);\n }));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\n });\n}\nexports.retryWhen = retryWhen;\n//# sourceMappingURL=retryWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sample = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction sample(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n }, noop_1.noop));\n });\n}\nexports.sample = sample;\n//# sourceMappingURL=sample.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sampleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar sample_1 = require(\"./sample\");\nvar interval_1 = require(\"../observable/interval\");\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return sample_1.sample(interval_1.interval(period, scheduler));\n}\nexports.sampleTime = sampleTime;\n//# sourceMappingURL=sampleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar scanInternals_1 = require(\"./scanInternals\");\nfunction scan(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\nexports.scan = scan;\n//# sourceMappingURL=scan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceEqual = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return lift_1.operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer, complete = otherState.complete;\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n }\n else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete, buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n source.subscribe(createSubscriber(aState, bState));\n innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n });\n}\nexports.sequenceEqual = sequenceEqual;\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.share = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject_1.Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return lift_1.operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new Subscriber_1.SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom_1.innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nexports.share = share;\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new Subscriber_1.SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shareReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar share_1 = require(\"./share\");\nfunction shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share_1.share({\n connector: function () { return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\nexports.shareReplay = shareReplay;\n//# sourceMappingURL=shareReplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.single = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar SequenceError_1 = require(\"../util/SequenceError\");\nvar NotFoundError_1 = require(\"../util/NotFoundError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction single(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError_1.SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n }\n else {\n subscriber.error(seenValue ? new NotFoundError_1.NotFoundError('No matching values') : new EmptyError_1.EmptyError());\n }\n }));\n });\n}\nexports.single = single;\n//# sourceMappingURL=single.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skip = void 0;\nvar filter_1 = require(\"./filter\");\nfunction skip(count) {\n return filter_1.filter(function (_, index) { return count <= index; });\n}\nexports.skip = skip;\n//# sourceMappingURL=skip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipLast = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n }\n else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\nexports.skipLast = skipLast;\n//# sourceMappingURL=skipLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction skipUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop_1.noop);\n innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\nexports.skipUntil = skipUntil;\n//# sourceMappingURL=skipUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipWhile(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\nexports.skipWhile = skipWhile;\n//# sourceMappingURL=skipWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.startWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar args_1 = require(\"../util/args\");\nvar lift_1 = require(\"../util/lift\");\nfunction startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(values);\n return lift_1.operate(function (source, subscriber) {\n (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber);\n });\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMap = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction switchMap(project, resultSelector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom_1.innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\nexports.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchAll = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction switchAll() {\n return switchMap_1.switchMap(identity_1.identity);\n}\nexports.switchAll = switchAll;\n//# sourceMappingURL=switchAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMapTo = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction switchMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function () { return innerObservable; }, resultSelector) : switchMap_1.switchMap(function () { return innerObservable; });\n}\nexports.switchMapTo = switchMapTo;\n//# sourceMappingURL=switchMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchScan = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar lift_1 = require(\"../util/lift\");\nfunction switchScan(accumulator, seed) {\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n switchMap_1.switchMap(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\nexports.switchScan = switchScan;\n//# sourceMappingURL=switchScan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction takeUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop_1.noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\nexports.takeUntil = takeUntil;\n//# sourceMappingURL=takeUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\nexports.takeWhile = takeWhile;\n//# sourceMappingURL=takeWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tap = void 0;\nvar isFunction_1 = require(\"../util/isFunction\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nfunction tap(observerOrNext, error, complete) {\n var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? lift_1.operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity_1.identity;\n}\nexports.tap = tap;\n//# sourceMappingURL=tap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttle = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction throttle(durationSelector, config) {\n return lift_1.operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\nexports.throttle = throttle;\n//# sourceMappingURL=throttle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar throttle_1 = require(\"./throttle\");\nvar timer_1 = require(\"../observable/timer\");\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration$ = timer_1.timer(duration, scheduler);\n return throttle_1.throttle(function () { return duration$; }, config);\n}\nexports.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeInterval = exports.timeInterval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var last = scheduler.now();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var now = scheduler.now();\n var interval = now - last;\n last = now;\n subscriber.next(new TimeInterval(value, interval));\n }));\n });\n}\nexports.timeInterval = timeInterval;\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexports.TimeInterval = TimeInterval;\n//# sourceMappingURL=timeInterval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutWith = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar timeout_1 = require(\"./timeout\");\nfunction timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async;\n if (isDate_1.isValidDate(due)) {\n first = due;\n }\n else if (typeof due === 'number') {\n each = due;\n }\n if (withObservable) {\n _with = function () { return withObservable; };\n }\n else {\n throw new TypeError('No observable provided to switch to');\n }\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return timeout_1.timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\nexports.timeoutWith = timeoutWith;\n//# sourceMappingURL=timeoutWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timestamp = void 0;\nvar dateTimestampProvider_1 = require(\"../scheduler/dateTimestampProvider\");\nvar map_1 = require(\"./map\");\nfunction timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider_1.dateTimestampProvider; }\n return map_1.map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\nexports.timestamp = timestamp;\n//# sourceMappingURL=timestamp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.window = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction window(windowBoundaries) {\n return lift_1.operate(function (source, subscriber) {\n var windowSubject = new Subject_1.Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject_1.Subject()));\n }, noop_1.noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\nexports.window = window;\n//# sourceMappingURL=window.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowCount = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return lift_1.operate(function (source, subscriber) {\n var windows = [new Subject_1.Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n if (++count % startEvery === 0) {\n var window_2 = new Subject_1.Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\nexports.windowCount = windowCount;\n//# sourceMappingURL=windowCount.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowTime = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar async_1 = require(\"../scheduler/async\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction windowTime(windowTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n var closeWindow = function (record) {\n var window = record.window, subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove_1.arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var window_1 = new Subject_1.Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0,\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan);\n }\n };\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n }\n else {\n restartOnClose = true;\n }\n startWindow();\n var loop = function (cb) { return windowRecords.slice().forEach(cb); };\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); }));\n return function () {\n windowRecords = null;\n };\n });\n}\nexports.windowTime = windowTime;\n//# sourceMappingURL=windowTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowToggle = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction windowToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var windows = [];\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n };\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject_1.Subject();\n windows.push(window);\n var closingSubscription = new Subscription_1.Subscription();\n var closeWindow = function () {\n arrRemove_1.arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var windowsCopy = windows.slice();\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\nexports.windowToggle = windowToggle;\n//# sourceMappingURL=windowToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowWhen = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction windowWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject_1.Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return window.next(value); }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\nexports.windowWhen = windowWhen;\n//# sourceMappingURL=windowWhen.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withLatestFrom = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar identity_1 = require(\"../util/identity\");\nvar noop_1 = require(\"../util/noop\");\nvar args_1 = require(\"../util/args\");\nfunction withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = args_1.popResultSelector(inputs);\n return lift_1.operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom_1.innerFrom(inputs[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity_1.identity)) && (hasValue = null);\n }\n }, noop_1.noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\nexports.withLatestFrom = withLatestFrom;\n//# sourceMappingURL=withLatestFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipAll = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction zipAll(project) {\n return joinAllInternals_1.joinAllInternals(zip_1.zip, project);\n}\nexports.zipAll = zipAll;\n//# sourceMappingURL=zipAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar lift_1 = require(\"../util/lift\");\nfunction zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return lift_1.operate(function (source, subscriber) {\n zip_1.zip.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipWith = void 0;\nvar zip_1 = require(\"./zip\");\nfunction zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\nexports.zipWith = zipWith;\n//# sourceMappingURL=zipWith.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = exports.iif = exports.generate = exports.fromEventPattern = exports.fromEvent = exports.from = exports.forkJoin = exports.empty = exports.defer = exports.connectable = exports.concat = exports.combineLatest = exports.bindNodeCallback = exports.bindCallback = exports.UnsubscriptionError = exports.TimeoutError = exports.SequenceError = exports.ObjectUnsubscribedError = exports.NotFoundError = exports.EmptyError = exports.ArgumentOutOfRangeError = exports.firstValueFrom = exports.lastValueFrom = exports.isObservable = exports.identity = exports.noop = exports.pipe = exports.NotificationKind = exports.Notification = exports.Subscriber = exports.Subscription = exports.Scheduler = exports.VirtualAction = exports.VirtualTimeScheduler = exports.animationFrameScheduler = exports.animationFrame = exports.queueScheduler = exports.queue = exports.asyncScheduler = exports.async = exports.asapScheduler = exports.asap = exports.AsyncSubject = exports.ReplaySubject = exports.BehaviorSubject = exports.Subject = exports.animationFrames = exports.observable = exports.ConnectableObservable = exports.Observable = void 0;\nexports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.combineLatestWith = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = exports.config = exports.NEVER = exports.EMPTY = exports.scheduled = exports.zip = exports.using = exports.timer = exports.throwError = exports.range = exports.race = exports.partition = exports.pairs = exports.onErrorResumeNext = exports.of = exports.never = exports.merge = void 0;\nexports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.pairwise = exports.onErrorResumeNextWith = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = exports.mergeAll = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = void 0;\nexports.zipWith = exports.zipAll = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = exports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = void 0;\nvar Observable_1 = require(\"./internal/Observable\");\nObject.defineProperty(exports, \"Observable\", { enumerable: true, get: function () { return Observable_1.Observable; } });\nvar ConnectableObservable_1 = require(\"./internal/observable/ConnectableObservable\");\nObject.defineProperty(exports, \"ConnectableObservable\", { enumerable: true, get: function () { return ConnectableObservable_1.ConnectableObservable; } });\nvar observable_1 = require(\"./internal/symbol/observable\");\nObject.defineProperty(exports, \"observable\", { enumerable: true, get: function () { return observable_1.observable; } });\nvar animationFrames_1 = require(\"./internal/observable/dom/animationFrames\");\nObject.defineProperty(exports, \"animationFrames\", { enumerable: true, get: function () { return animationFrames_1.animationFrames; } });\nvar Subject_1 = require(\"./internal/Subject\");\nObject.defineProperty(exports, \"Subject\", { enumerable: true, get: function () { return Subject_1.Subject; } });\nvar BehaviorSubject_1 = require(\"./internal/BehaviorSubject\");\nObject.defineProperty(exports, \"BehaviorSubject\", { enumerable: true, get: function () { return BehaviorSubject_1.BehaviorSubject; } });\nvar ReplaySubject_1 = require(\"./internal/ReplaySubject\");\nObject.defineProperty(exports, \"ReplaySubject\", { enumerable: true, get: function () { return ReplaySubject_1.ReplaySubject; } });\nvar AsyncSubject_1 = require(\"./internal/AsyncSubject\");\nObject.defineProperty(exports, \"AsyncSubject\", { enumerable: true, get: function () { return AsyncSubject_1.AsyncSubject; } });\nvar asap_1 = require(\"./internal/scheduler/asap\");\nObject.defineProperty(exports, \"asap\", { enumerable: true, get: function () { return asap_1.asap; } });\nObject.defineProperty(exports, \"asapScheduler\", { enumerable: true, get: function () { return asap_1.asapScheduler; } });\nvar async_1 = require(\"./internal/scheduler/async\");\nObject.defineProperty(exports, \"async\", { enumerable: true, get: function () { return async_1.async; } });\nObject.defineProperty(exports, \"asyncScheduler\", { enumerable: true, get: function () { return async_1.asyncScheduler; } });\nvar queue_1 = require(\"./internal/scheduler/queue\");\nObject.defineProperty(exports, \"queue\", { enumerable: true, get: function () { return queue_1.queue; } });\nObject.defineProperty(exports, \"queueScheduler\", { enumerable: true, get: function () { return queue_1.queueScheduler; } });\nvar animationFrame_1 = require(\"./internal/scheduler/animationFrame\");\nObject.defineProperty(exports, \"animationFrame\", { enumerable: true, get: function () { return animationFrame_1.animationFrame; } });\nObject.defineProperty(exports, \"animationFrameScheduler\", { enumerable: true, get: function () { return animationFrame_1.animationFrameScheduler; } });\nvar VirtualTimeScheduler_1 = require(\"./internal/scheduler/VirtualTimeScheduler\");\nObject.defineProperty(exports, \"VirtualTimeScheduler\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualTimeScheduler; } });\nObject.defineProperty(exports, \"VirtualAction\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualAction; } });\nvar Scheduler_1 = require(\"./internal/Scheduler\");\nObject.defineProperty(exports, \"Scheduler\", { enumerable: true, get: function () { return Scheduler_1.Scheduler; } });\nvar Subscription_1 = require(\"./internal/Subscription\");\nObject.defineProperty(exports, \"Subscription\", { enumerable: true, get: function () { return Subscription_1.Subscription; } });\nvar Subscriber_1 = require(\"./internal/Subscriber\");\nObject.defineProperty(exports, \"Subscriber\", { enumerable: true, get: function () { return Subscriber_1.Subscriber; } });\nvar Notification_1 = require(\"./internal/Notification\");\nObject.defineProperty(exports, \"Notification\", { enumerable: true, get: function () { return Notification_1.Notification; } });\nObject.defineProperty(exports, \"NotificationKind\", { enumerable: true, get: function () { return Notification_1.NotificationKind; } });\nvar pipe_1 = require(\"./internal/util/pipe\");\nObject.defineProperty(exports, \"pipe\", { enumerable: true, get: function () { return pipe_1.pipe; } });\nvar noop_1 = require(\"./internal/util/noop\");\nObject.defineProperty(exports, \"noop\", { enumerable: true, get: function () { return noop_1.noop; } });\nvar identity_1 = require(\"./internal/util/identity\");\nObject.defineProperty(exports, \"identity\", { enumerable: true, get: function () { return identity_1.identity; } });\nvar isObservable_1 = require(\"./internal/util/isObservable\");\nObject.defineProperty(exports, \"isObservable\", { enumerable: true, get: function () { return isObservable_1.isObservable; } });\nvar lastValueFrom_1 = require(\"./internal/lastValueFrom\");\nObject.defineProperty(exports, \"lastValueFrom\", { enumerable: true, get: function () { return lastValueFrom_1.lastValueFrom; } });\nvar firstValueFrom_1 = require(\"./internal/firstValueFrom\");\nObject.defineProperty(exports, \"firstValueFrom\", { enumerable: true, get: function () { return firstValueFrom_1.firstValueFrom; } });\nvar ArgumentOutOfRangeError_1 = require(\"./internal/util/ArgumentOutOfRangeError\");\nObject.defineProperty(exports, \"ArgumentOutOfRangeError\", { enumerable: true, get: function () { return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError; } });\nvar EmptyError_1 = require(\"./internal/util/EmptyError\");\nObject.defineProperty(exports, \"EmptyError\", { enumerable: true, get: function () { return EmptyError_1.EmptyError; } });\nvar NotFoundError_1 = require(\"./internal/util/NotFoundError\");\nObject.defineProperty(exports, \"NotFoundError\", { enumerable: true, get: function () { return NotFoundError_1.NotFoundError; } });\nvar ObjectUnsubscribedError_1 = require(\"./internal/util/ObjectUnsubscribedError\");\nObject.defineProperty(exports, \"ObjectUnsubscribedError\", { enumerable: true, get: function () { return ObjectUnsubscribedError_1.ObjectUnsubscribedError; } });\nvar SequenceError_1 = require(\"./internal/util/SequenceError\");\nObject.defineProperty(exports, \"SequenceError\", { enumerable: true, get: function () { return SequenceError_1.SequenceError; } });\nvar timeout_1 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nvar UnsubscriptionError_1 = require(\"./internal/util/UnsubscriptionError\");\nObject.defineProperty(exports, \"UnsubscriptionError\", { enumerable: true, get: function () { return UnsubscriptionError_1.UnsubscriptionError; } });\nvar bindCallback_1 = require(\"./internal/observable/bindCallback\");\nObject.defineProperty(exports, \"bindCallback\", { enumerable: true, get: function () { return bindCallback_1.bindCallback; } });\nvar bindNodeCallback_1 = require(\"./internal/observable/bindNodeCallback\");\nObject.defineProperty(exports, \"bindNodeCallback\", { enumerable: true, get: function () { return bindNodeCallback_1.bindNodeCallback; } });\nvar combineLatest_1 = require(\"./internal/observable/combineLatest\");\nObject.defineProperty(exports, \"combineLatest\", { enumerable: true, get: function () { return combineLatest_1.combineLatest; } });\nvar concat_1 = require(\"./internal/observable/concat\");\nObject.defineProperty(exports, \"concat\", { enumerable: true, get: function () { return concat_1.concat; } });\nvar connectable_1 = require(\"./internal/observable/connectable\");\nObject.defineProperty(exports, \"connectable\", { enumerable: true, get: function () { return connectable_1.connectable; } });\nvar defer_1 = require(\"./internal/observable/defer\");\nObject.defineProperty(exports, \"defer\", { enumerable: true, get: function () { return defer_1.defer; } });\nvar empty_1 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"empty\", { enumerable: true, get: function () { return empty_1.empty; } });\nvar forkJoin_1 = require(\"./internal/observable/forkJoin\");\nObject.defineProperty(exports, \"forkJoin\", { enumerable: true, get: function () { return forkJoin_1.forkJoin; } });\nvar from_1 = require(\"./internal/observable/from\");\nObject.defineProperty(exports, \"from\", { enumerable: true, get: function () { return from_1.from; } });\nvar fromEvent_1 = require(\"./internal/observable/fromEvent\");\nObject.defineProperty(exports, \"fromEvent\", { enumerable: true, get: function () { return fromEvent_1.fromEvent; } });\nvar fromEventPattern_1 = require(\"./internal/observable/fromEventPattern\");\nObject.defineProperty(exports, \"fromEventPattern\", { enumerable: true, get: function () { return fromEventPattern_1.fromEventPattern; } });\nvar generate_1 = require(\"./internal/observable/generate\");\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return generate_1.generate; } });\nvar iif_1 = require(\"./internal/observable/iif\");\nObject.defineProperty(exports, \"iif\", { enumerable: true, get: function () { return iif_1.iif; } });\nvar interval_1 = require(\"./internal/observable/interval\");\nObject.defineProperty(exports, \"interval\", { enumerable: true, get: function () { return interval_1.interval; } });\nvar merge_1 = require(\"./internal/observable/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar never_1 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"never\", { enumerable: true, get: function () { return never_1.never; } });\nvar of_1 = require(\"./internal/observable/of\");\nObject.defineProperty(exports, \"of\", { enumerable: true, get: function () { return of_1.of; } });\nvar onErrorResumeNext_1 = require(\"./internal/observable/onErrorResumeNext\");\nObject.defineProperty(exports, \"onErrorResumeNext\", { enumerable: true, get: function () { return onErrorResumeNext_1.onErrorResumeNext; } });\nvar pairs_1 = require(\"./internal/observable/pairs\");\nObject.defineProperty(exports, \"pairs\", { enumerable: true, get: function () { return pairs_1.pairs; } });\nvar partition_1 = require(\"./internal/observable/partition\");\nObject.defineProperty(exports, \"partition\", { enumerable: true, get: function () { return partition_1.partition; } });\nvar race_1 = require(\"./internal/observable/race\");\nObject.defineProperty(exports, \"race\", { enumerable: true, get: function () { return race_1.race; } });\nvar range_1 = require(\"./internal/observable/range\");\nObject.defineProperty(exports, \"range\", { enumerable: true, get: function () { return range_1.range; } });\nvar throwError_1 = require(\"./internal/observable/throwError\");\nObject.defineProperty(exports, \"throwError\", { enumerable: true, get: function () { return throwError_1.throwError; } });\nvar timer_1 = require(\"./internal/observable/timer\");\nObject.defineProperty(exports, \"timer\", { enumerable: true, get: function () { return timer_1.timer; } });\nvar using_1 = require(\"./internal/observable/using\");\nObject.defineProperty(exports, \"using\", { enumerable: true, get: function () { return using_1.using; } });\nvar zip_1 = require(\"./internal/observable/zip\");\nObject.defineProperty(exports, \"zip\", { enumerable: true, get: function () { return zip_1.zip; } });\nvar scheduled_1 = require(\"./internal/scheduled/scheduled\");\nObject.defineProperty(exports, \"scheduled\", { enumerable: true, get: function () { return scheduled_1.scheduled; } });\nvar empty_2 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"EMPTY\", { enumerable: true, get: function () { return empty_2.EMPTY; } });\nvar never_2 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"NEVER\", { enumerable: true, get: function () { return never_2.NEVER; } });\n__exportStar(require(\"./internal/types\"), exports);\nvar config_1 = require(\"./internal/config\");\nObject.defineProperty(exports, \"config\", { enumerable: true, get: function () { return config_1.config; } });\nvar audit_1 = require(\"./internal/operators/audit\");\nObject.defineProperty(exports, \"audit\", { enumerable: true, get: function () { return audit_1.audit; } });\nvar auditTime_1 = require(\"./internal/operators/auditTime\");\nObject.defineProperty(exports, \"auditTime\", { enumerable: true, get: function () { return auditTime_1.auditTime; } });\nvar buffer_1 = require(\"./internal/operators/buffer\");\nObject.defineProperty(exports, \"buffer\", { enumerable: true, get: function () { return buffer_1.buffer; } });\nvar bufferCount_1 = require(\"./internal/operators/bufferCount\");\nObject.defineProperty(exports, \"bufferCount\", { enumerable: true, get: function () { return bufferCount_1.bufferCount; } });\nvar bufferTime_1 = require(\"./internal/operators/bufferTime\");\nObject.defineProperty(exports, \"bufferTime\", { enumerable: true, get: function () { return bufferTime_1.bufferTime; } });\nvar bufferToggle_1 = require(\"./internal/operators/bufferToggle\");\nObject.defineProperty(exports, \"bufferToggle\", { enumerable: true, get: function () { return bufferToggle_1.bufferToggle; } });\nvar bufferWhen_1 = require(\"./internal/operators/bufferWhen\");\nObject.defineProperty(exports, \"bufferWhen\", { enumerable: true, get: function () { return bufferWhen_1.bufferWhen; } });\nvar catchError_1 = require(\"./internal/operators/catchError\");\nObject.defineProperty(exports, \"catchError\", { enumerable: true, get: function () { return catchError_1.catchError; } });\nvar combineAll_1 = require(\"./internal/operators/combineAll\");\nObject.defineProperty(exports, \"combineAll\", { enumerable: true, get: function () { return combineAll_1.combineAll; } });\nvar combineLatestAll_1 = require(\"./internal/operators/combineLatestAll\");\nObject.defineProperty(exports, \"combineLatestAll\", { enumerable: true, get: function () { return combineLatestAll_1.combineLatestAll; } });\nvar combineLatestWith_1 = require(\"./internal/operators/combineLatestWith\");\nObject.defineProperty(exports, \"combineLatestWith\", { enumerable: true, get: function () { return combineLatestWith_1.combineLatestWith; } });\nvar concatAll_1 = require(\"./internal/operators/concatAll\");\nObject.defineProperty(exports, \"concatAll\", { enumerable: true, get: function () { return concatAll_1.concatAll; } });\nvar concatMap_1 = require(\"./internal/operators/concatMap\");\nObject.defineProperty(exports, \"concatMap\", { enumerable: true, get: function () { return concatMap_1.concatMap; } });\nvar concatMapTo_1 = require(\"./internal/operators/concatMapTo\");\nObject.defineProperty(exports, \"concatMapTo\", { enumerable: true, get: function () { return concatMapTo_1.concatMapTo; } });\nvar concatWith_1 = require(\"./internal/operators/concatWith\");\nObject.defineProperty(exports, \"concatWith\", { enumerable: true, get: function () { return concatWith_1.concatWith; } });\nvar connect_1 = require(\"./internal/operators/connect\");\nObject.defineProperty(exports, \"connect\", { enumerable: true, get: function () { return connect_1.connect; } });\nvar count_1 = require(\"./internal/operators/count\");\nObject.defineProperty(exports, \"count\", { enumerable: true, get: function () { return count_1.count; } });\nvar debounce_1 = require(\"./internal/operators/debounce\");\nObject.defineProperty(exports, \"debounce\", { enumerable: true, get: function () { return debounce_1.debounce; } });\nvar debounceTime_1 = require(\"./internal/operators/debounceTime\");\nObject.defineProperty(exports, \"debounceTime\", { enumerable: true, get: function () { return debounceTime_1.debounceTime; } });\nvar defaultIfEmpty_1 = require(\"./internal/operators/defaultIfEmpty\");\nObject.defineProperty(exports, \"defaultIfEmpty\", { enumerable: true, get: function () { return defaultIfEmpty_1.defaultIfEmpty; } });\nvar delay_1 = require(\"./internal/operators/delay\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_1.delay; } });\nvar delayWhen_1 = require(\"./internal/operators/delayWhen\");\nObject.defineProperty(exports, \"delayWhen\", { enumerable: true, get: function () { return delayWhen_1.delayWhen; } });\nvar dematerialize_1 = require(\"./internal/operators/dematerialize\");\nObject.defineProperty(exports, \"dematerialize\", { enumerable: true, get: function () { return dematerialize_1.dematerialize; } });\nvar distinct_1 = require(\"./internal/operators/distinct\");\nObject.defineProperty(exports, \"distinct\", { enumerable: true, get: function () { return distinct_1.distinct; } });\nvar distinctUntilChanged_1 = require(\"./internal/operators/distinctUntilChanged\");\nObject.defineProperty(exports, \"distinctUntilChanged\", { enumerable: true, get: function () { return distinctUntilChanged_1.distinctUntilChanged; } });\nvar distinctUntilKeyChanged_1 = require(\"./internal/operators/distinctUntilKeyChanged\");\nObject.defineProperty(exports, \"distinctUntilKeyChanged\", { enumerable: true, get: function () { return distinctUntilKeyChanged_1.distinctUntilKeyChanged; } });\nvar elementAt_1 = require(\"./internal/operators/elementAt\");\nObject.defineProperty(exports, \"elementAt\", { enumerable: true, get: function () { return elementAt_1.elementAt; } });\nvar endWith_1 = require(\"./internal/operators/endWith\");\nObject.defineProperty(exports, \"endWith\", { enumerable: true, get: function () { return endWith_1.endWith; } });\nvar every_1 = require(\"./internal/operators/every\");\nObject.defineProperty(exports, \"every\", { enumerable: true, get: function () { return every_1.every; } });\nvar exhaust_1 = require(\"./internal/operators/exhaust\");\nObject.defineProperty(exports, \"exhaust\", { enumerable: true, get: function () { return exhaust_1.exhaust; } });\nvar exhaustAll_1 = require(\"./internal/operators/exhaustAll\");\nObject.defineProperty(exports, \"exhaustAll\", { enumerable: true, get: function () { return exhaustAll_1.exhaustAll; } });\nvar exhaustMap_1 = require(\"./internal/operators/exhaustMap\");\nObject.defineProperty(exports, \"exhaustMap\", { enumerable: true, get: function () { return exhaustMap_1.exhaustMap; } });\nvar expand_1 = require(\"./internal/operators/expand\");\nObject.defineProperty(exports, \"expand\", { enumerable: true, get: function () { return expand_1.expand; } });\nvar filter_1 = require(\"./internal/operators/filter\");\nObject.defineProperty(exports, \"filter\", { enumerable: true, get: function () { return filter_1.filter; } });\nvar finalize_1 = require(\"./internal/operators/finalize\");\nObject.defineProperty(exports, \"finalize\", { enumerable: true, get: function () { return finalize_1.finalize; } });\nvar find_1 = require(\"./internal/operators/find\");\nObject.defineProperty(exports, \"find\", { enumerable: true, get: function () { return find_1.find; } });\nvar findIndex_1 = require(\"./internal/operators/findIndex\");\nObject.defineProperty(exports, \"findIndex\", { enumerable: true, get: function () { return findIndex_1.findIndex; } });\nvar first_1 = require(\"./internal/operators/first\");\nObject.defineProperty(exports, \"first\", { enumerable: true, get: function () { return first_1.first; } });\nvar groupBy_1 = require(\"./internal/operators/groupBy\");\nObject.defineProperty(exports, \"groupBy\", { enumerable: true, get: function () { return groupBy_1.groupBy; } });\nvar ignoreElements_1 = require(\"./internal/operators/ignoreElements\");\nObject.defineProperty(exports, \"ignoreElements\", { enumerable: true, get: function () { return ignoreElements_1.ignoreElements; } });\nvar isEmpty_1 = require(\"./internal/operators/isEmpty\");\nObject.defineProperty(exports, \"isEmpty\", { enumerable: true, get: function () { return isEmpty_1.isEmpty; } });\nvar last_1 = require(\"./internal/operators/last\");\nObject.defineProperty(exports, \"last\", { enumerable: true, get: function () { return last_1.last; } });\nvar map_1 = require(\"./internal/operators/map\");\nObject.defineProperty(exports, \"map\", { enumerable: true, get: function () { return map_1.map; } });\nvar mapTo_1 = require(\"./internal/operators/mapTo\");\nObject.defineProperty(exports, \"mapTo\", { enumerable: true, get: function () { return mapTo_1.mapTo; } });\nvar materialize_1 = require(\"./internal/operators/materialize\");\nObject.defineProperty(exports, \"materialize\", { enumerable: true, get: function () { return materialize_1.materialize; } });\nvar max_1 = require(\"./internal/operators/max\");\nObject.defineProperty(exports, \"max\", { enumerable: true, get: function () { return max_1.max; } });\nvar mergeAll_1 = require(\"./internal/operators/mergeAll\");\nObject.defineProperty(exports, \"mergeAll\", { enumerable: true, get: function () { return mergeAll_1.mergeAll; } });\nvar flatMap_1 = require(\"./internal/operators/flatMap\");\nObject.defineProperty(exports, \"flatMap\", { enumerable: true, get: function () { return flatMap_1.flatMap; } });\nvar mergeMap_1 = require(\"./internal/operators/mergeMap\");\nObject.defineProperty(exports, \"mergeMap\", { enumerable: true, get: function () { return mergeMap_1.mergeMap; } });\nvar mergeMapTo_1 = require(\"./internal/operators/mergeMapTo\");\nObject.defineProperty(exports, \"mergeMapTo\", { enumerable: true, get: function () { return mergeMapTo_1.mergeMapTo; } });\nvar mergeScan_1 = require(\"./internal/operators/mergeScan\");\nObject.defineProperty(exports, \"mergeScan\", { enumerable: true, get: function () { return mergeScan_1.mergeScan; } });\nvar mergeWith_1 = require(\"./internal/operators/mergeWith\");\nObject.defineProperty(exports, \"mergeWith\", { enumerable: true, get: function () { return mergeWith_1.mergeWith; } });\nvar min_1 = require(\"./internal/operators/min\");\nObject.defineProperty(exports, \"min\", { enumerable: true, get: function () { return min_1.min; } });\nvar multicast_1 = require(\"./internal/operators/multicast\");\nObject.defineProperty(exports, \"multicast\", { enumerable: true, get: function () { return multicast_1.multicast; } });\nvar observeOn_1 = require(\"./internal/operators/observeOn\");\nObject.defineProperty(exports, \"observeOn\", { enumerable: true, get: function () { return observeOn_1.observeOn; } });\nvar onErrorResumeNextWith_1 = require(\"./internal/operators/onErrorResumeNextWith\");\nObject.defineProperty(exports, \"onErrorResumeNextWith\", { enumerable: true, get: function () { return onErrorResumeNextWith_1.onErrorResumeNextWith; } });\nvar pairwise_1 = require(\"./internal/operators/pairwise\");\nObject.defineProperty(exports, \"pairwise\", { enumerable: true, get: function () { return pairwise_1.pairwise; } });\nvar pluck_1 = require(\"./internal/operators/pluck\");\nObject.defineProperty(exports, \"pluck\", { enumerable: true, get: function () { return pluck_1.pluck; } });\nvar publish_1 = require(\"./internal/operators/publish\");\nObject.defineProperty(exports, \"publish\", { enumerable: true, get: function () { return publish_1.publish; } });\nvar publishBehavior_1 = require(\"./internal/operators/publishBehavior\");\nObject.defineProperty(exports, \"publishBehavior\", { enumerable: true, get: function () { return publishBehavior_1.publishBehavior; } });\nvar publishLast_1 = require(\"./internal/operators/publishLast\");\nObject.defineProperty(exports, \"publishLast\", { enumerable: true, get: function () { return publishLast_1.publishLast; } });\nvar publishReplay_1 = require(\"./internal/operators/publishReplay\");\nObject.defineProperty(exports, \"publishReplay\", { enumerable: true, get: function () { return publishReplay_1.publishReplay; } });\nvar raceWith_1 = require(\"./internal/operators/raceWith\");\nObject.defineProperty(exports, \"raceWith\", { enumerable: true, get: function () { return raceWith_1.raceWith; } });\nvar reduce_1 = require(\"./internal/operators/reduce\");\nObject.defineProperty(exports, \"reduce\", { enumerable: true, get: function () { return reduce_1.reduce; } });\nvar repeat_1 = require(\"./internal/operators/repeat\");\nObject.defineProperty(exports, \"repeat\", { enumerable: true, get: function () { return repeat_1.repeat; } });\nvar repeatWhen_1 = require(\"./internal/operators/repeatWhen\");\nObject.defineProperty(exports, \"repeatWhen\", { enumerable: true, get: function () { return repeatWhen_1.repeatWhen; } });\nvar retry_1 = require(\"./internal/operators/retry\");\nObject.defineProperty(exports, \"retry\", { enumerable: true, get: function () { return retry_1.retry; } });\nvar retryWhen_1 = require(\"./internal/operators/retryWhen\");\nObject.defineProperty(exports, \"retryWhen\", { enumerable: true, get: function () { return retryWhen_1.retryWhen; } });\nvar refCount_1 = require(\"./internal/operators/refCount\");\nObject.defineProperty(exports, \"refCount\", { enumerable: true, get: function () { return refCount_1.refCount; } });\nvar sample_1 = require(\"./internal/operators/sample\");\nObject.defineProperty(exports, \"sample\", { enumerable: true, get: function () { return sample_1.sample; } });\nvar sampleTime_1 = require(\"./internal/operators/sampleTime\");\nObject.defineProperty(exports, \"sampleTime\", { enumerable: true, get: function () { return sampleTime_1.sampleTime; } });\nvar scan_1 = require(\"./internal/operators/scan\");\nObject.defineProperty(exports, \"scan\", { enumerable: true, get: function () { return scan_1.scan; } });\nvar sequenceEqual_1 = require(\"./internal/operators/sequenceEqual\");\nObject.defineProperty(exports, \"sequenceEqual\", { enumerable: true, get: function () { return sequenceEqual_1.sequenceEqual; } });\nvar share_1 = require(\"./internal/operators/share\");\nObject.defineProperty(exports, \"share\", { enumerable: true, get: function () { return share_1.share; } });\nvar shareReplay_1 = require(\"./internal/operators/shareReplay\");\nObject.defineProperty(exports, \"shareReplay\", { enumerable: true, get: function () { return shareReplay_1.shareReplay; } });\nvar single_1 = require(\"./internal/operators/single\");\nObject.defineProperty(exports, \"single\", { enumerable: true, get: function () { return single_1.single; } });\nvar skip_1 = require(\"./internal/operators/skip\");\nObject.defineProperty(exports, \"skip\", { enumerable: true, get: function () { return skip_1.skip; } });\nvar skipLast_1 = require(\"./internal/operators/skipLast\");\nObject.defineProperty(exports, \"skipLast\", { enumerable: true, get: function () { return skipLast_1.skipLast; } });\nvar skipUntil_1 = require(\"./internal/operators/skipUntil\");\nObject.defineProperty(exports, \"skipUntil\", { enumerable: true, get: function () { return skipUntil_1.skipUntil; } });\nvar skipWhile_1 = require(\"./internal/operators/skipWhile\");\nObject.defineProperty(exports, \"skipWhile\", { enumerable: true, get: function () { return skipWhile_1.skipWhile; } });\nvar startWith_1 = require(\"./internal/operators/startWith\");\nObject.defineProperty(exports, \"startWith\", { enumerable: true, get: function () { return startWith_1.startWith; } });\nvar subscribeOn_1 = require(\"./internal/operators/subscribeOn\");\nObject.defineProperty(exports, \"subscribeOn\", { enumerable: true, get: function () { return subscribeOn_1.subscribeOn; } });\nvar switchAll_1 = require(\"./internal/operators/switchAll\");\nObject.defineProperty(exports, \"switchAll\", { enumerable: true, get: function () { return switchAll_1.switchAll; } });\nvar switchMap_1 = require(\"./internal/operators/switchMap\");\nObject.defineProperty(exports, \"switchMap\", { enumerable: true, get: function () { return switchMap_1.switchMap; } });\nvar switchMapTo_1 = require(\"./internal/operators/switchMapTo\");\nObject.defineProperty(exports, \"switchMapTo\", { enumerable: true, get: function () { return switchMapTo_1.switchMapTo; } });\nvar switchScan_1 = require(\"./internal/operators/switchScan\");\nObject.defineProperty(exports, \"switchScan\", { enumerable: true, get: function () { return switchScan_1.switchScan; } });\nvar take_1 = require(\"./internal/operators/take\");\nObject.defineProperty(exports, \"take\", { enumerable: true, get: function () { return take_1.take; } });\nvar takeLast_1 = require(\"./internal/operators/takeLast\");\nObject.defineProperty(exports, \"takeLast\", { enumerable: true, get: function () { return takeLast_1.takeLast; } });\nvar takeUntil_1 = require(\"./internal/operators/takeUntil\");\nObject.defineProperty(exports, \"takeUntil\", { enumerable: true, get: function () { return takeUntil_1.takeUntil; } });\nvar takeWhile_1 = require(\"./internal/operators/takeWhile\");\nObject.defineProperty(exports, \"takeWhile\", { enumerable: true, get: function () { return takeWhile_1.takeWhile; } });\nvar tap_1 = require(\"./internal/operators/tap\");\nObject.defineProperty(exports, \"tap\", { enumerable: true, get: function () { return tap_1.tap; } });\nvar throttle_1 = require(\"./internal/operators/throttle\");\nObject.defineProperty(exports, \"throttle\", { enumerable: true, get: function () { return throttle_1.throttle; } });\nvar throttleTime_1 = require(\"./internal/operators/throttleTime\");\nObject.defineProperty(exports, \"throttleTime\", { enumerable: true, get: function () { return throttleTime_1.throttleTime; } });\nvar throwIfEmpty_1 = require(\"./internal/operators/throwIfEmpty\");\nObject.defineProperty(exports, \"throwIfEmpty\", { enumerable: true, get: function () { return throwIfEmpty_1.throwIfEmpty; } });\nvar timeInterval_1 = require(\"./internal/operators/timeInterval\");\nObject.defineProperty(exports, \"timeInterval\", { enumerable: true, get: function () { return timeInterval_1.timeInterval; } });\nvar timeout_2 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"timeout\", { enumerable: true, get: function () { return timeout_2.timeout; } });\nvar timeoutWith_1 = require(\"./internal/operators/timeoutWith\");\nObject.defineProperty(exports, \"timeoutWith\", { enumerable: true, get: function () { return timeoutWith_1.timeoutWith; } });\nvar timestamp_1 = require(\"./internal/operators/timestamp\");\nObject.defineProperty(exports, \"timestamp\", { enumerable: true, get: function () { return timestamp_1.timestamp; } });\nvar toArray_1 = require(\"./internal/operators/toArray\");\nObject.defineProperty(exports, \"toArray\", { enumerable: true, get: function () { return toArray_1.toArray; } });\nvar window_1 = require(\"./internal/operators/window\");\nObject.defineProperty(exports, \"window\", { enumerable: true, get: function () { return window_1.window; } });\nvar windowCount_1 = require(\"./internal/operators/windowCount\");\nObject.defineProperty(exports, \"windowCount\", { enumerable: true, get: function () { return windowCount_1.windowCount; } });\nvar windowTime_1 = require(\"./internal/operators/windowTime\");\nObject.defineProperty(exports, \"windowTime\", { enumerable: true, get: function () { return windowTime_1.windowTime; } });\nvar windowToggle_1 = require(\"./internal/operators/windowToggle\");\nObject.defineProperty(exports, \"windowToggle\", { enumerable: true, get: function () { return windowToggle_1.windowToggle; } });\nvar windowWhen_1 = require(\"./internal/operators/windowWhen\");\nObject.defineProperty(exports, \"windowWhen\", { enumerable: true, get: function () { return windowWhen_1.windowWhen; } });\nvar withLatestFrom_1 = require(\"./internal/operators/withLatestFrom\");\nObject.defineProperty(exports, \"withLatestFrom\", { enumerable: true, get: function () { return withLatestFrom_1.withLatestFrom; } });\nvar zipAll_1 = require(\"./internal/operators/zipAll\");\nObject.defineProperty(exports, \"zipAll\", { enumerable: true, get: function () { return zipAll_1.zipAll; } });\nvar zipWith_1 = require(\"./internal/operators/zipWith\");\nObject.defineProperty(exports, \"zipWith\", { enumerable: true, get: function () { return zipWith_1.zipWith; } });\n//# sourceMappingURL=index.js.map","import { Subject, ReplaySubject, BehaviorSubject, merge, map, skip } from 'rxjs';\n\nimport type { Observable, Subscription, Observer } from 'rxjs';\n\nexport abstract class Destroyable {\n protected subscriptions: Subscription[] = [];\n protected subjects: Subject<unknown>[] = [];\n protected _destroyed$ = new Subject<void>();\n\n public destroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n this.subjects.forEach((subject) => subject.complete());\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n\n protected subscribeTo<T>(\n observable: Observable<T>,\n observerOrNext: Partial<Observer<T>> | ((value: T) => void) | undefined\n ): void {\n const subscription = observable.subscribe(observerOrNext);\n this.subscriptions.push(subscription);\n }\n\n protected createSubject<T>(): Subject<T> {\n const subject = new Subject<T>();\n this.subjects.push(subject as Subject<unknown>);\n return subject;\n }\n\n protected createReplaySubject<T>(bufferSize?: number, windowTime?: number): ReplaySubject<T> {\n const subject = new ReplaySubject<T>(bufferSize, windowTime);\n this.subjects.push(subject as Subject<unknown>);\n return subject;\n }\n\n protected createBehaviorSubject<T>(initialValue: T): BehaviorSubject<T> {\n const subject = new BehaviorSubject<T>(initialValue);\n this.subjects.push(subject as Subject<unknown>);\n return subject;\n }\n\n public get $(): Observable<this> {\n return merge(\n // skip a burst of initial values from BehaviorSubjects\n ...this.subjects.map((s) => (s instanceof BehaviorSubject ? s.pipe(skip(1)) : s))\n ).pipe(map((_) => this));\n }\n\n /**\n * Observable that emits when the instance is destroyed\n */\n public get destroyed$(): Observable<void> {\n return this._destroyed$.asObservable();\n }\n}\n","export class UnexpectedError extends Error {\n constructor(\n public at?: string,\n options?: ErrorOptions\n ) {\n super(`Unexpected Error${at ? ` at ${at}` : ''}`, options);\n this.name = 'UnexpectedError';\n }\n}\n\nexport class UnimplementedError extends Error {\n constructor(\n public reason = 'Not Implemented',\n options?: ErrorOptions\n ) {\n super(reason, options);\n this.name = 'UnimplementedError';\n }\n}\n\nexport class NotConnectedError extends Error {\n constructor(\n public reason = 'Not Connected',\n options?: ErrorOptions\n ) {\n super(reason, options);\n this.name = 'NotConnectedError';\n }\n}\n\nexport class InvalidCredentialsError extends Error {\n constructor(\n public reason = 'Invalid Credentials',\n options?: ErrorOptions\n ) {\n super(reason, options);\n this.name = 'InvalidCredentialsError';\n }\n}\n\nexport class WebSocketConnectionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'WebSocketConnectionError';\n }\n}\n\nexport class TransportConnectionError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'TransportConnectionError';\n }\n}\n\nexport class WebSocketTimeoutError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'WebSocketTimeoutError';\n }\n}\n\nexport class RequestTimeoutError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'RequestTimeoutError';\n }\n}\n\nexport class RequestError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'RequestError';\n }\n}\n\nexport class InvalidListenerError extends Error {\n constructor(options?: ErrorOptions) {\n super('listener is not a function', options);\n this.name = 'InvalidListenerError';\n }\n}\n\nexport class RPCTimeoutError extends Error {\n constructor(\n public requestId: string,\n public timeoutMs: number,\n options?: ErrorOptions\n ) {\n super(`RPC request ${requestId} timed out after ${timeoutMs}ms`, options);\n this.name = 'RPCTimeoutError';\n }\n}\n\nexport class AuthStateHandlerError extends Error {\n constructor(\n public error: unknown = null,\n options?: ErrorOptions\n ) {\n super('Error handling authorization state update', {\n ...options,\n cause: options?.cause ?? (error instanceof Error ? error : undefined)\n });\n this.name = 'AuthStateHandlerError';\n }\n}\n\nexport class InvalidStateTransitionError extends Error {\n constructor(\n public currentState: string,\n public targetState: string,\n options?: ErrorOptions\n ) {\n super(\n `Invalid transition: cannot transition from \"${currentState}\" to \"${targetState}\"`,\n options\n );\n this.name = 'InvalidStateTransitionError';\n }\n}\n\nexport class InvalidOptionError extends Error {\n constructor(\n public value: string,\n public availableOptions: string[],\n options?: ErrorOptions\n ) {\n super(\n `Invalid option: \"${value}\" must be one of the available options: ${availableOptions.join(', ')}`,\n options\n );\n this.name = 'InvalidOptionError';\n }\n}\n\nexport class StorageNotAvailableError extends Error {\n constructor(\n public storageType: string = 'localStorage',\n options?: ErrorOptions\n ) {\n super(`${storageType} is not available in this environment`, options);\n this.name = 'StorageNotAvailableError';\n }\n}\n\nexport class SerializationError extends Error {\n constructor(\n public key: string,\n public originalError: Error\n ) {\n super(`Failed to serialize value for key \"${key}\": ${originalError.message}`, {\n cause: originalError\n });\n this.name = 'SerializationError';\n }\n}\n\nexport class DeserializationError extends Error {\n constructor(\n public key: string,\n public originalError: Error\n ) {\n super(`Failed to deserialize value for key \"${key}\": ${originalError.message}`, {\n cause: originalError\n });\n this.name = 'DeserializationError';\n }\n}\n\nexport class StorageWriteError extends Error {\n constructor(\n public key: string,\n public originalError: Error\n ) {\n super(`Failed to write to storage for key \"${key}\": ${originalError.message}`, {\n cause: originalError\n });\n this.name = 'StorageWriteError';\n }\n}\n\nexport class StorageReadError extends Error {\n constructor(\n public key: string,\n public originalError: Error\n ) {\n super(`Failed to read from storage \"${key}\": ${originalError.message}`, {\n cause: originalError\n });\n this.name = 'StorageReadError';\n }\n}\n\nexport class InvalidStorageValueError extends Error {\n constructor(\n public key: string,\n public valueType: string,\n options?: ErrorOptions\n ) {\n super(\n `Cannot serialize value of type \"${valueType}\" for key \"${key}\": This type cannot be serialized to JSON`,\n options\n );\n this.name = 'InvalidStorageValueError';\n }\n}\n\nexport class DependencyError extends Error {\n constructor(\n public description: string,\n options?: ErrorOptions\n ) {\n super(`Dependency ${description} is not set or available.`, options);\n this.name = 'DependencyError';\n }\n}\n\nexport class DeviceNotFoundError extends Error {\n constructor(\n public message: string,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'DeviceNotFoundError';\n }\n}\n\nexport class CallCreateError extends Error {\n constructor(\n public message: string,\n public error: unknown = null,\n options?: ErrorOptions\n ) {\n super(message, {\n ...options,\n cause: options?.cause ?? (error instanceof Error ? error : undefined)\n });\n this.name = 'CallCreateError';\n }\n}\n\nexport class JSONRPCError extends Error {\n constructor(\n public code: number,\n message: string,\n public data?: unknown,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'JSONRPCError';\n }\n}\n\nexport class InvalidParams extends Error {\n constructor(\n public message: string,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'InvalidParams';\n }\n}\n\nexport class ConversationError extends Error {\n constructor(\n public message: string,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'ConversationError';\n }\n}\n\nexport class VertoInviteHandlerError extends Error {\n constructor(\n public error: unknown = null,\n options?: ErrorOptions\n ) {\n super('Error handling Verto invite', {\n ...options,\n cause: options?.cause ?? (error instanceof Error ? error : undefined)\n });\n this.name = 'VertoInviteHandlerError';\n }\n}\n\nexport class HttpRequestError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'HttpRequestError';\n }\n}\n\nexport class ValidationError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'ValidationError';\n }\n}\n\nexport class VertoPongError extends Error {\n constructor(public originalError: unknown) {\n super('Failed to send Verto pong - call may disconnect', {\n cause: originalError instanceof Error ? originalError : undefined\n });\n this.name = 'VertoPongError';\n }\n}\n\nexport class MessageParseError extends Error {\n constructor(public originalError: unknown) {\n super('Failed to parse incoming WebSocket message', {\n cause: originalError instanceof Error ? originalError : undefined\n });\n this.name = 'MessageParseError';\n }\n}\n\nexport class CollectionFetchError extends Error {\n constructor(\n public operation: string,\n public originalError: unknown\n ) {\n super(`Collection fetch failed during ${operation}`, {\n cause: originalError instanceof Error ? originalError : undefined\n });\n this.name = 'CollectionFetchError';\n }\n}\n\nexport class MediaTrackError extends Error {\n constructor(\n public operation: string,\n public kind: string,\n public originalError: unknown\n ) {\n super(`Media track ${operation} failed for ${kind}`, {\n cause: originalError instanceof Error ? originalError : undefined\n });\n this.name = 'MediaTrackError';\n }\n}\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n var _loggersByName = {};\n var defaultLogger = null;\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods() {\n /*jshint validthis:true */\n var level = this.getLevel();\n\n // Replace the actual methods.\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, this.name);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n\n // Return any important warnings.\n if (typeof console === undefinedType && level < this.levels.SILENT) {\n return \"No console available for logging\";\n }\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, _level, _loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, factory) {\n // Private instance variables.\n var self = this;\n /**\n * The level inherited from a parent logger (or a global default). We\n * cache this here rather than delegating to the parent so that it stays\n * in sync with the actual logging methods that we have installed (the\n * parent could change levels but we might not have rebuilt the loggers\n * in this child yet).\n * @type {number}\n */\n var inheritedLevel;\n /**\n * The default level for this logger, if any. If set, this overrides\n * `inheritedLevel`.\n * @type {number|null}\n */\n var defaultLevel;\n /**\n * A user-specific level for this logger. If set, this overrides\n * `defaultLevel`.\n * @type {number|null}\n */\n var userLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var cookieName = encodeURIComponent(storageKey);\n var location = cookie.indexOf(cookieName + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(\n cookie.slice(location + cookieName.length + 1)\n )[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n function normalizeLevel(input) {\n var level = input;\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n return level;\n } else {\n throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n }\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n if (userLevel != null) {\n return userLevel;\n } else if (defaultLevel != null) {\n return defaultLevel;\n } else {\n return inheritedLevel;\n }\n };\n\n self.setLevel = function (level, persist) {\n userLevel = normalizeLevel(level);\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(userLevel);\n }\n\n // NOTE: in v2, this should call rebuild(), which updates children.\n return replaceLoggingMethods.call(self);\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = normalizeLevel(level);\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n userLevel = null;\n clearPersistedLevel();\n replaceLoggingMethods.call(self);\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n self.rebuild = function () {\n if (defaultLogger !== self) {\n inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n }\n replaceLoggingMethods.call(self);\n\n if (defaultLogger === self) {\n for (var childName in _loggersByName) {\n _loggersByName[childName].rebuild();\n }\n }\n };\n\n // Initialize all the internal levels.\n inheritedLevel = normalizeLevel(\n defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n );\n var initialLevel = getPersistedLevel();\n if (initialLevel != null) {\n userLevel = normalizeLevel(initialLevel);\n }\n replaceLoggingMethods.call(self);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n defaultLogger = new Logger();\n\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name,\n defaultLogger.methodFactory\n );\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","import log from 'loglevel';\n\ninterface LogFn {\n <T extends object>(obj: T, msg?: string, ...args: unknown[]): void;\n (obj: unknown, msg?: string, ...args: unknown[]): void;\n (msg: string, ...args: unknown[]): void;\n}\nexport interface SDKLogger {\n fatal: LogFn;\n error: LogFn;\n warn: LogFn;\n info: LogFn;\n debug: LogFn;\n trace: LogFn;\n}\n\nexport interface WsTrafficOptions {\n type: 'send' | 'recv' | 'http';\n payload: unknown;\n}\n\nexport interface LoggerOptions {\n /** @internal */\n devTools?: boolean;\n /** @internal */\n debug?: {\n logWsTraffic?: boolean;\n };\n /** @internal */\n logger?: SDKLogger;\n}\n\nexport interface InternalSDKLogger extends SDKLogger {\n wsTraffic: (options: WsTrafficOptions) => void;\n}\n\nconst datetime = () => new Date().toISOString();\nconst defaultLogger = log.getLogger('signalwire');\n\nconst originalFactory = defaultLogger.methodFactory;\ndefaultLogger.methodFactory = (methodName, logLevel, loggerName) => {\n const rawMethod = originalFactory(methodName, logLevel, loggerName);\n\n return function (...args: unknown[]) {\n args.unshift(datetime(), '-');\n // eslint-disable-next-line prefer-spread\n rawMethod.apply(undefined, args);\n };\n};\n\nconst defaultLoggerLevel = defaultLogger.levels.DEBUG;\ndefaultLogger.setLevel(defaultLoggerLevel);\n\nlet userLogger: SDKLogger | null;\nconst setLogger = (logger: SDKLogger | null): void => {\n userLogger = logger;\n};\n\nlet debugOptions: LoggerOptions['debug'] = {};\nconst setDebugOptions = (options: unknown): void => {\n if (options == null) {\n debugOptions = {};\n return;\n }\n debugOptions = {\n ...debugOptions,\n ...options\n } as LoggerOptions['debug'];\n};\n\nconst getLoggerInstance = (): SDKLogger => {\n return userLogger ?? (defaultLogger as unknown as SDKLogger);\n};\n\nconst shouldStringify = (payload: WsTrafficOptions['payload']) => {\n //@ts-expect-error we don;t cara that payload is unknown\n if ('method' in payload && payload.method === 'signalwire.ping') {\n return false;\n }\n\n return true;\n};\n\nconst wsTraffic: InternalSDKLogger['wsTraffic'] = ({ type, payload }) => {\n const logger = getLoggerInstance();\n const { logWsTraffic } = debugOptions ?? {};\n\n if (!logWsTraffic) {\n return undefined;\n }\n\n const msg = shouldStringify(payload) ? JSON.stringify(payload, null, 2) : payload;\n\n return logger.debug(`${type.toUpperCase()}: \\n`, msg, '\\n');\n};\n\nconst getLogger = (): InternalSDKLogger => {\n const logger = getLoggerInstance();\n\n return new Proxy(logger, {\n get(target, prop: keyof InternalSDKLogger, receiver) {\n if (prop === 'wsTraffic') {\n return wsTraffic;\n }\n\n return Reflect.get(target, prop, receiver);\n }\n }) as InternalSDKLogger;\n};\n\nexport { setLogger, getLogger, setDebugOptions };\n","import { getLogger } from './logger';\nimport { ValidationError } from '../core/errors';\n\nconst DEFAULT_MAX_RETRIES = 10;\nconst DEFAULT_INITIAL_DELAY = 100;\nconst DEFAULT_DELAY_VARIATION = 1;\n\ninterface AsyncRetryOptions<T> {\n asyncCallable: () => Promise<T>;\n maxRetries?: number;\n delayFn?: () => number;\n validator?: (promiseResult: T) => void | never;\n expectedErrorHandler?: (error: unknown) => boolean;\n}\n\ninterface DelayOptions {\n initialDelay?: number;\n variation?: number;\n delayLimit?: number;\n}\n\nexport const increasingDelay = ({\n delayLimit: upperDelayLimit = Number.MAX_SAFE_INTEGER,\n initialDelay = DEFAULT_INITIAL_DELAY,\n variation = DEFAULT_DELAY_VARIATION\n}: DelayOptions): (() => number) => {\n if (initialDelay < 0) {\n throw new ValidationError('initialDelay must be gte 0');\n }\n if (upperDelayLimit < 0) {\n throw new ValidationError('upperDelayLimit must be gte 0');\n }\n if (variation < 0) {\n throw new ValidationError('variation must be gte 0');\n }\n if (initialDelay > upperDelayLimit) {\n throw new ValidationError('initialDelay must be lte delayLimit');\n }\n\n let delay = Math.min(initialDelay, upperDelayLimit);\n return () => {\n if (delay === upperDelayLimit) {\n // stop incrementing the delay and just return upperDelayLimit\n return upperDelayLimit;\n }\n const currentDelay = delay;\n delay = Math.min(delay + variation, upperDelayLimit);\n\n return currentDelay;\n };\n};\n\nexport const decreasingDelay = ({\n delayLimit: bottomDelayLimit = 0,\n initialDelay = DEFAULT_INITIAL_DELAY,\n variation = DEFAULT_DELAY_VARIATION\n}: DelayOptions): (() => number) => {\n if (initialDelay < 0) {\n throw new ValidationError('initialDelay must be gte 0');\n }\n if (bottomDelayLimit < 0) {\n throw new ValidationError('bottomDelayLimit must be gte 0');\n }\n if (variation < 0) {\n throw new ValidationError('variation must be gte 0');\n }\n if (initialDelay < bottomDelayLimit) {\n throw new ValidationError('initialDelay must be gte delayLimit');\n }\n\n let delay = Math.max(initialDelay, bottomDelayLimit);\n\n return () => {\n if (delay === bottomDelayLimit) {\n // stop incrementing the delay and just return upperDelayLimit\n return bottomDelayLimit;\n }\n const currentDelay = delay;\n delay = Math.max(delay - variation, bottomDelayLimit);\n\n return currentDelay;\n };\n};\n\nexport const constDelay = ({\n initialDelay = DEFAULT_INITIAL_DELAY\n}: Pick<DelayOptions, 'initialDelay'>): (() => number) => {\n if (initialDelay < 0) {\n throw new ValidationError('initialDelay must be gte 0');\n }\n return () => initialDelay;\n};\n\nexport const asyncRetry = async <T>({\n asyncCallable,\n maxRetries: retries = DEFAULT_MAX_RETRIES,\n delayFn,\n validator,\n expectedErrorHandler\n}: AsyncRetryOptions<T>): Promise<T> => {\n let remainingAttempts = retries - 1; // the 1st call counts as an attempt\n let wait = 0;\n\n const promiseAttempt = async (): Promise<T> => {\n try {\n let result: Awaited<T>;\n\n // Should not defer the call when: wait <= 0\n if (wait <= 0) {\n result = await asyncCallable();\n } else {\n result = await new Promise<T>((resolve, reject) =>\n setTimeout(() => {\n asyncCallable().then(resolve).catch(reject);\n }, wait)\n );\n }\n\n if (remainingAttempts) {\n // avoid messing with the normal returns in the last attempt\n validator?.(result);\n }\n\n return result;\n } catch (error) {\n if (remainingAttempts-- > 0 && !expectedErrorHandler?.(error)) {\n wait = delayFn?.() ?? 0;\n getLogger().debug(`Retrying request: ${retries - remainingAttempts} of ${retries}`);\n return promiseAttempt();\n } else {\n throw error;\n }\n }\n };\n\n return promiseAttempt();\n};\n","import { BehaviorSubject, Subject } from 'rxjs';\n\nimport { RequestTimeoutError, UnexpectedError } from '../core/errors';\nimport { asyncRetry, increasingDelay } from '../utils/asyncRetry';\nimport { getLogger } from '../utils/logger';\n\nimport type {\n HTTPRequest,\n HTTPResponse,\n HTTPHeaders,\n SDKCredential\n} from '../core/types/common.types';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nexport type HTTPRequestStatus = 'idle' | 'requesting' | 'success' | 'error';\n\nexport interface HTTPRequestControllerOptions {\n maxRetries?: number;\n retryDelayMin?: number;\n retryDelayMax?: number;\n requestTimeout?: number;\n}\n\nexport const GET_PARAMS = {\n method: 'GET',\n headers: {\n Accept: 'application/json'\n }\n} as const;\n\nexport const POST_PARAMS = {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n\n 'Content-Type': 'application/json'\n }\n} as const;\n\nexport class HTTPRequestController {\n // Default configuration values\n private static readonly defaultMaxRetries = 3;\n private static readonly defaultRetryDelayMinMs = 1000;\n private static readonly defaultRetryDelayMaxMs = 30000;\n private static readonly defaultRequestTimeoutMs = 30000;\n\n // Configuration\n private readonly maxRetries: number;\n private readonly retryDelayMin: number;\n private readonly retryDelayMax: number;\n private readonly requestTimeout: number;\n private _responses$ = new Subject<HTTPResponse>();\n private _errors$ = new Subject<Error>();\n\n // Observable streams\n private _status$ = new BehaviorSubject<HTTPRequestStatus>('idle');\n\n constructor(\n private baseURL: string,\n private credential: SDKCredential,\n options: HTTPRequestControllerOptions = {}\n ) {\n this.maxRetries = options.maxRetries ?? HTTPRequestController.defaultMaxRetries;\n this.retryDelayMin = options.retryDelayMin ?? HTTPRequestController.defaultRetryDelayMinMs;\n this.retryDelayMax = options.retryDelayMax ?? HTTPRequestController.defaultRetryDelayMaxMs;\n this.requestTimeout = options.requestTimeout ?? HTTPRequestController.defaultRequestTimeoutMs;\n }\n\n public get status$(): Observable<HTTPRequestStatus> {\n return this._status$.asObservable();\n }\n\n public get status(): HTTPRequestStatus {\n return this._status$.value;\n }\n\n public get responses$(): Observable<HTTPResponse> {\n return this._responses$.asObservable();\n }\n\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable();\n }\n\n public async request(request: HTTPRequest): Promise<HTTPResponse> {\n this._status$.next('requesting');\n\n try {\n const response = await this.executeWithRetry(request);\n this._status$.next('success');\n this._responses$.next(response);\n return response;\n } catch (error) {\n logger.error('[HTTPRequestController] Request error:', error);\n this._status$.next('error');\n const err =\n error instanceof Error ? error : new Error('HTTP request failed', { cause: error });\n this._errors$.next(err);\n throw err;\n }\n }\n\n private async executeWithRetry(request: HTTPRequest): Promise<HTTPResponse> {\n // Calculate variation to spread delays evenly across retry attempts\n const variation = Math.ceil(\n (this.retryDelayMax - this.retryDelayMin) / Math.max(this.maxRetries - 1, 1)\n );\n\n const delayFn = increasingDelay({\n initialDelay: this.retryDelayMin,\n variation,\n delayLimit: this.retryDelayMax\n });\n\n return asyncRetry({\n asyncCallable: async () => this.executeRequest(request),\n maxRetries: this.maxRetries,\n delayFn,\n validator: (response) => {\n // Retry on 5xx server errors\n if (response.status >= 500 && response.status < 600) {\n throw new UnexpectedError(`Server error: ${response.status} ${response.statusText}`);\n }\n }\n });\n }\n\n private async executeRequest(request: HTTPRequest): Promise<HTTPResponse> {\n const url = this.buildURL(request.url);\n const headers = this.buildHeaders(request.headers);\n const timeout = request.timeout ?? this.requestTimeout;\n\n logger.debug('[HTTPRequestController] Executing request:', {\n method: request.method,\n url,\n headers: Object.keys(headers).reduce((acc, key) => {\n // Mask Authorization header for security\n // eslint-disable-next-line no-param-reassign\n acc[key] = key === 'Authorization' ? `${headers[key].substring(0, 20)}...` : headers[key];\n return acc;\n }, {} as HTTPHeaders),\n body: request.body\n });\n // {\"from_fabric_address_id\":\"03a98611-d38f-405a-af49-fcb51e7f22ad\",\"fabric_address_ids\":[\"31c0afc2-93f3-4530-9a7d-55613d40850d\",\"03a98611-d38f-405a-af49-fcb51e7f22ad\"]}\n // {\"from_fabric_address_id\":\"060b5d3e-5df0-45d9-911e-660779e593da\",\"fabric_address_ids\":[\"31c0afc2-93f3-4530-9a7d-55613d40850d\",\"060b5d3e-5df0-45d9-911e-660779e593da\"]}\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method: request.method,\n headers,\n body: request.body,\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n const httpResponse = await this.convertResponse(response);\n\n logger.debug('[HTTPRequestController] Response received:', {\n status: response.status,\n statusText: response.statusText,\n headers: [...response.headers.entries()],\n body: httpResponse.body ? httpResponse.body.substring(0, 200) : '(empty)' // Show first 200 chars\n });\n\n return httpResponse;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new RequestTimeoutError(`Request timeout after ${timeout}ms`, { cause: error });\n }\n\n logger.error('[HTTPRequestController] Request failed:', error);\n throw error;\n }\n }\n\n private buildURL(url: string | URL): string {\n const urlString = typeof url === 'string' ? url : url.toString();\n\n // If URL is absolute, return as-is\n if (urlString.startsWith('http://') || urlString.startsWith('https://')) {\n return urlString;\n }\n\n // Ensure base URL doesn't end with '/' and path starts with '/'\n const base = this.baseURL.endsWith('/') ? this.baseURL.slice(0, -1) : this.baseURL;\n const path = urlString.startsWith('/') ? urlString : `/${urlString}`;\n\n return `${base}${path}`;\n }\n\n private buildHeaders(requestHeaders?: HTTPHeaders): HTTPHeaders {\n const headers: HTTPHeaders = { ...(requestHeaders ?? {}) };\n\n // Add authentication header\n if (this.credential.token) {\n headers.Authorization = `Bearer ${this.credential.token}`;\n logger.debug(\n '[HTTPRequestController] Using Bearer token auth, token length:',\n this.credential.token.length\n );\n } else {\n logger.warn('[HTTPRequestController] No credentials available for authentication');\n }\n\n return headers;\n }\n\n private async convertResponse(response: Response): Promise<HTTPResponse> {\n // Convert Headers to plain object\n const headers: HTTPHeaders = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n // Read response body as text\n const bodyText = await response.text();\n\n return {\n status: response.status,\n statusText: response.statusText,\n headers,\n body: bodyText,\n ok: response.ok,\n url: response.url\n };\n }\n}\n","export const INVITE_VERSION = 1000;\nexport const DEFAULT_ICE_CANDIDATE_TIMEOUT_MS = 600;\nexport const DEFAULT_ICE_GATHERING_TIMEOUT_MS = 6_000;\nexport const DEFAULT_RECONNECT_CALLS_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\nexport const DEFAULT_CONNECTION_TIMEOUT_MS = 10_000;\nexport const DEFAULT_RECONNECT_DELAY_MIN_MS = 100;\nexport const DEFAULT_RECONNECT_DELAY_MAX_MS = 3000;\nexport const DEFAULT_DEVICE_DEBOUNCE_TIME_MS = 1500;\nexport const DEFAULT_DEVICE_POLLING_INTERVAL_MS = 0; // Disabled by default\nexport const PREFERENCES_STORAGE_KEY = 'sw:preferences';\n","export function fromSecToMs(seconds: number): number {\n return seconds * 1000;\n}\n\nexport function fromMsToSec(milliseconds: number): number {\n return Math.round(milliseconds / 100) / 10;\n}\n","import {\n DEFAULT_CONNECTION_TIMEOUT_MS,\n DEFAULT_DEVICE_DEBOUNCE_TIME_MS,\n DEFAULT_DEVICE_POLLING_INTERVAL_MS,\n DEFAULT_ICE_CANDIDATE_TIMEOUT_MS,\n DEFAULT_ICE_GATHERING_TIMEOUT_MS,\n DEFAULT_RECONNECT_CALLS_TIMEOUT_MS,\n DEFAULT_RECONNECT_DELAY_MAX_MS,\n DEFAULT_RECONNECT_DELAY_MIN_MS,\n PREFERENCES_STORAGE_KEY\n} from '../core/constants';\nimport { getLogger } from '../utils/logger';\nimport { fromMsToSec, fromSecToMs } from '../utils/time';\n\nimport type { MediaOptions } from '../core/types/media.types';\nimport type { StorageManager } from '../managers/StorageManager';\n\nconst logger = getLogger();\n\nexport interface Preferences {\n connectionTimeout: number;\n reconnectDelayMin: number;\n reconnectDelayMax: number;\n reconnectCallsTimeout: number;\n relayHost?: string;\n receiveVideo: boolean;\n receiveAudio: boolean;\n preferredAudioInput: MediaDeviceInfo | null;\n preferredAudioOutput: MediaDeviceInfo | null;\n preferredVideoInput: MediaDeviceInfo | null;\n inputAudioDeviceConstraints: MediaTrackConstraints | undefined;\n inputVideoDeviceConstraints: MediaTrackConstraints | undefined;\n disableUdpIceServers: boolean;\n relayOnly: boolean;\n iceCandidateTimeout: number;\n iceGatheringTimeout: number;\n deviceDebounceTime: number;\n devicePollingInterval: number;\n iceServers?: RTCIceServer[];\n defaultSignalWireOptions: {\n skipConnection: boolean;\n skipRegister: boolean;\n reconnectAttachedCalls: boolean;\n skipDeviceMonitoring: boolean;\n savePreferences: boolean;\n };\n inviteSubscribeScreenshare: string[];\n inviteSubscribeAdditionalDevice: string[];\n inviteSubscribeMainDevice: string[];\n userVariables: Record<string, unknown>;\n readonly preferredMediaOptions: MediaOptions;\n}\nexport class PreferencesContainer implements Preferences {\n static get instance(): Preferences {\n this._instance ??= new PreferencesContainer();\n return this._instance;\n }\n\n deviceDebounceTime = DEFAULT_DEVICE_DEBOUNCE_TIME_MS;\n devicePollingInterval = DEFAULT_DEVICE_POLLING_INTERVAL_MS;\n\n reconnectCallsTimeout = DEFAULT_RECONNECT_CALLS_TIMEOUT_MS;\n // 5 minutes\n iceServers?: RTCIceServer[];\n connectionTimeout = DEFAULT_CONNECTION_TIMEOUT_MS;\n reconnectDelayMin = DEFAULT_RECONNECT_DELAY_MIN_MS;\n reconnectDelayMax = DEFAULT_RECONNECT_DELAY_MAX_MS;\n disableUdpIceServers = false;\n relayOnly = false;\n iceCandidateTimeout = DEFAULT_ICE_CANDIDATE_TIMEOUT_MS;\n iceGatheringTimeout = DEFAULT_ICE_GATHERING_TIMEOUT_MS;\n defaultSignalWireOptions = {\n skipConnection: false,\n skipRegister: false,\n reconnectAttachedCalls: false,\n skipDeviceMonitoring: false,\n savePreferences: false\n };\n relayHost?: string;\n receiveVideo = true;\n receiveAudio = true;\n preferredAudioInput: MediaDeviceInfo | null = null;\n preferredAudioOutput: MediaDeviceInfo | null = null;\n preferredVideoInput: MediaDeviceInfo | null = null;\n inviteSubscribeScreenshare: string[] = ['video.room.screenshare'];\n inviteSubscribeAdditionalDevice: string[] = [\n // FIXME verify what to subscribe to for additional devices\n ];\n inviteSubscribeMainDevice: string[] = [\n 'track',\n 'destroy',\n 'member.updated.videoMuted',\n 'layout.changed',\n 'room.subscribed',\n 'member.updated.audioMuted',\n 'media.connected',\n 'room.updated',\n 'call.joined'\n ];\n userVariables = {};\n\n private _inputAudioDeviceConstraints?: MediaTrackConstraints;\n private _inputVideoDeviceConstraints?: MediaTrackConstraints;\n private static _instance?: PreferencesContainer;\n\n private constructor() {\n // Private constructor to enforce singleton pattern\n }\n\n public get preferredMediaOptions(): MediaOptions {\n return {\n receiveVideo: this.receiveVideo,\n receiveAudio: this.receiveAudio,\n inputAudioDeviceConstraints: this.inputAudioDeviceConstraints,\n inputVideoDeviceConstraints: this.inputVideoDeviceConstraints\n };\n }\n\n get inputAudioDeviceConstraints(): MediaTrackConstraints | undefined {\n return this._inputAudioDeviceConstraints;\n }\n\n set inputAudioDeviceConstraints(value: MediaTrackConstraints | undefined) {\n this._inputAudioDeviceConstraints = value;\n }\n\n get inputVideoDeviceConstraints(): MediaTrackConstraints | undefined {\n return this._inputVideoDeviceConstraints;\n }\n\n set inputVideoDeviceConstraints(value: MediaTrackConstraints | undefined) {\n this._inputVideoDeviceConstraints = value;\n }\n}\n\n/** Serializable subset of preferences that can be persisted to storage. */\ninterface StoredPreferences {\n connectionTimeout?: number;\n reconnectCallsTimeout?: number;\n reconnectDelayMin?: number;\n reconnectDelayMax?: number;\n relayHost?: string;\n receiveVideo?: boolean;\n receiveAudio?: boolean;\n disableUdpIceServers?: boolean;\n relayOnly?: boolean;\n iceCandidateTimeout?: number;\n iceGatheringTimeout?: number;\n deviceDebounceTime?: number;\n devicePollingInterval?: number;\n iceServers?: RTCIceServer[];\n userVariables?: Record<string, unknown>;\n}\n\n/** Keys of StoredPreferences that map to number fields on PreferencesContainer. */\nconst STORED_NUMBER_KEYS: (keyof StoredPreferences & keyof Preferences)[] = [\n 'connectionTimeout',\n 'reconnectCallsTimeout',\n 'reconnectDelayMin',\n 'reconnectDelayMax',\n 'iceCandidateTimeout',\n 'iceGatheringTimeout',\n 'deviceDebounceTime',\n 'devicePollingInterval'\n];\n\n/** Keys of StoredPreferences that map to boolean fields on PreferencesContainer. */\nconst STORED_BOOLEAN_KEYS: (keyof StoredPreferences & keyof Preferences)[] = [\n 'receiveVideo',\n 'receiveAudio',\n 'disableUdpIceServers',\n 'relayOnly'\n];\n\n/** Collects the serializable preferences from the container. */\nfunction collectStoredPreferences(): StoredPreferences {\n const container = PreferencesContainer.instance;\n return {\n connectionTimeout: container.connectionTimeout,\n reconnectCallsTimeout: container.reconnectCallsTimeout,\n reconnectDelayMin: container.reconnectDelayMin,\n reconnectDelayMax: container.reconnectDelayMax,\n relayHost: container.relayHost,\n receiveVideo: container.receiveVideo,\n receiveAudio: container.receiveAudio,\n disableUdpIceServers: container.disableUdpIceServers,\n relayOnly: container.relayOnly,\n iceCandidateTimeout: container.iceCandidateTimeout,\n iceGatheringTimeout: container.iceGatheringTimeout,\n deviceDebounceTime: container.deviceDebounceTime,\n devicePollingInterval: container.devicePollingInterval,\n iceServers: container.iceServers,\n userVariables: container.userVariables\n };\n}\n\n/** Applies stored preferences to the container. */\nfunction applyStoredPreferences(stored: StoredPreferences): void {\n const container = PreferencesContainer.instance as unknown as Record<string, unknown>;\n for (const key of STORED_NUMBER_KEYS) {\n if (stored[key] !== undefined) container[key] = stored[key];\n }\n for (const key of STORED_BOOLEAN_KEYS) {\n if (stored[key] !== undefined) container[key] = stored[key];\n }\n if (stored.relayHost !== undefined) container.relayHost = stored.relayHost;\n if (stored.iceServers !== undefined) container.iceServers = stored.iceServers;\n if (stored.userVariables !== undefined) container.userVariables = stored.userVariables;\n}\n\n/**\n * Public preferences API for configuring SDK behavior.\n *\n * Exposed as {@link SignalWire.preferences}. All timeout values\n * are in seconds when accessed through this class.\n *\n * When {@link enableSavePreferences} is called, preferences are\n * automatically loaded from storage and synced back on every change.\n */\nexport class ClientPreferences {\n private _storage: StorageManager | null = null;\n\n /**\n * Enables persistence of preferences to storage.\n * Loads any previously saved preferences and syncs future changes.\n */\n public enableSavePreferences(storage: StorageManager): void {\n this._storage = storage;\n this._loadFromStorage();\n }\n\n /** WebSocket connection timeout in seconds. */\n public get connectionTimeout(): number {\n return fromMsToSec(PreferencesContainer.instance.connectionTimeout);\n }\n public set connectionTimeout(seconds: number) {\n PreferencesContainer.instance.connectionTimeout = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Timeout for reconnecting to previously attached calls, in seconds. */\n public get reconnectCallsTimeout(): number {\n return fromMsToSec(PreferencesContainer.instance.reconnectCallsTimeout);\n }\n public set reconnectCallsTimeout(seconds: number) {\n PreferencesContainer.instance.reconnectCallsTimeout = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Minimum reconnection backoff delay in seconds. */\n public get reconnectDelayMin(): number {\n return fromMsToSec(PreferencesContainer.instance.reconnectDelayMin);\n }\n public set reconnectDelayMin(seconds: number) {\n PreferencesContainer.instance.reconnectDelayMin = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Maximum reconnection backoff delay in seconds. */\n public get reconnectDelayMax(): number {\n return fromMsToSec(PreferencesContainer.instance.reconnectDelayMax);\n }\n public set reconnectDelayMax(seconds: number) {\n PreferencesContainer.instance.reconnectDelayMax = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Custom relay host URL. Empty string uses the default. */\n public get relayHost(): string {\n return PreferencesContainer.instance.relayHost ?? '';\n }\n public set relayHost(value: string) {\n PreferencesContainer.instance.relayHost = value;\n this._saveToStorage();\n }\n\n /** Whether to receive remote video by default. */\n public get receiveVideo(): boolean {\n return PreferencesContainer.instance.receiveVideo;\n }\n public set receiveVideo(value: boolean) {\n PreferencesContainer.instance.receiveVideo = value;\n this._saveToStorage();\n }\n\n /** Whether to receive remote audio by default. */\n public get receiveAudio(): boolean {\n return PreferencesContainer.instance.receiveAudio;\n }\n public set receiveAudio(value: boolean) {\n PreferencesContainer.instance.receiveAudio = value;\n this._saveToStorage();\n }\n\n /** Preferred audio input device for new calls. */\n public get preferredAudioInput(): MediaDeviceInfo | null {\n return PreferencesContainer.instance.preferredAudioInput;\n }\n public set preferredAudioInput(value: MediaDeviceInfo | null) {\n PreferencesContainer.instance.preferredAudioInput = value;\n }\n\n /** Preferred audio output device for new calls. */\n public get preferredAudioOutput(): MediaDeviceInfo | null {\n return PreferencesContainer.instance.preferredAudioOutput;\n }\n public set preferredAudioOutput(value: MediaDeviceInfo | null) {\n PreferencesContainer.instance.preferredAudioOutput = value;\n }\n\n /** Preferred video input device for new calls. */\n public get preferredVideoInput(): MediaDeviceInfo | null {\n return PreferencesContainer.instance.preferredVideoInput;\n }\n public set preferredVideoInput(value: MediaDeviceInfo | null) {\n PreferencesContainer.instance.preferredVideoInput = value;\n }\n\n /** Default audio input track constraints. */\n public get inputAudioConstraints(): MediaTrackConstraints | undefined {\n return PreferencesContainer.instance.inputAudioDeviceConstraints;\n }\n public set inputAudioConstraints(value: MediaTrackConstraints | undefined) {\n PreferencesContainer.instance.inputAudioDeviceConstraints = value;\n }\n\n /** Default video input track constraints. */\n public get inputVideoConstraints(): MediaTrackConstraints | undefined {\n return PreferencesContainer.instance.inputVideoDeviceConstraints;\n }\n public set inputVideoConstraints(value: MediaTrackConstraints | undefined) {\n PreferencesContainer.instance.inputVideoDeviceConstraints = value;\n }\n\n /** Debounce time for device change events, in seconds. */\n public get deviceDebounceTime(): number {\n return fromMsToSec(PreferencesContainer.instance.deviceDebounceTime);\n }\n public set deviceDebounceTime(seconds: number) {\n PreferencesContainer.instance.deviceDebounceTime = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Polling interval for device enumeration, in seconds. */\n public get devicePollingInterval(): number {\n return fromMsToSec(PreferencesContainer.instance.devicePollingInterval);\n }\n public set devicePollingInterval(seconds: number) {\n PreferencesContainer.instance.devicePollingInterval = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Whether to filter out UDP-based ICE servers. */\n public get disableUdpIceServers(): boolean {\n return PreferencesContainer.instance.disableUdpIceServers;\n }\n public set disableUdpIceServers(value: boolean) {\n PreferencesContainer.instance.disableUdpIceServers = value;\n this._saveToStorage();\n }\n\n /** Whether to force TURN relay-only ICE candidates. */\n public get relayOnly(): boolean {\n return PreferencesContainer.instance.relayOnly;\n }\n public set relayOnly(value: boolean) {\n PreferencesContainer.instance.relayOnly = value;\n this._saveToStorage();\n }\n\n /** Timeout for individual ICE candidate gathering, in seconds. */\n public get iceCandidateTimeout(): number {\n return fromMsToSec(PreferencesContainer.instance.iceCandidateTimeout);\n }\n public set iceCandidateTimeout(seconds: number) {\n PreferencesContainer.instance.iceCandidateTimeout = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Timeout for the entire ICE gathering phase, in seconds. */\n public get iceGatheringTimeout(): number {\n return fromMsToSec(PreferencesContainer.instance.iceGatheringTimeout);\n }\n public set iceGatheringTimeout(seconds: number) {\n PreferencesContainer.instance.iceGatheringTimeout = fromSecToMs(seconds);\n this._saveToStorage();\n }\n\n /** Custom ICE servers for TURN/STUN configuration. */\n public get iceServers(): RTCIceServer[] | undefined {\n return PreferencesContainer.instance.iceServers;\n }\n public set iceServers(value: RTCIceServer[] | undefined) {\n PreferencesContainer.instance.iceServers = value;\n this._saveToStorage();\n }\n\n /** Custom user variables attached to calls. */\n public get userVariables(): Record<string, unknown> {\n return PreferencesContainer.instance.userVariables;\n }\n public set userVariables(value: Record<string, unknown>) {\n PreferencesContainer.instance.userVariables = value;\n this._saveToStorage();\n }\n\n /** Saves current preferences to storage (fire-and-forget). */\n private _saveToStorage(): void {\n if (!this._storage) return;\n const data = collectStoredPreferences();\n this._storage.setItem(PREFERENCES_STORAGE_KEY, data, 'local').catch((error: unknown) => {\n logger.error(`[ClientPreferences] Failed to save preferences: ${String(error)}`);\n });\n }\n\n /** Loads preferences from storage and applies them to the container. */\n private _loadFromStorage(): void {\n if (!this._storage) return;\n this._storage\n .getItem<StoredPreferences>(PREFERENCES_STORAGE_KEY, 'local')\n .then((stored) => {\n if (stored) {\n applyStoredPreferences(stored);\n }\n })\n .catch((error: unknown) => {\n logger.error(`[ClientPreferences] Failed to load preferences: ${String(error)}`);\n });\n }\n}\n","import { debounceTime, distinctUntilChanged, interval, map, takeUntil, tap } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { PreferencesContainer } from '../containers/PreferencesContainer';\nimport { getLogger } from '../utils/logger';\n\nimport type { DeviceController } from '../interfaces/DeviceController';\nimport type { Observable, Subscription } from 'rxjs';\n\nconst logger = getLogger();\n\ninterface DevicesState {\n audioinput: MediaDeviceInfo[];\n audiooutput: MediaDeviceInfo[];\n videoinput: MediaDeviceInfo[];\n}\n\ninterface SelectedDevicesState {\n audioinput: MediaDeviceInfo | null;\n audiooutput: MediaDeviceInfo | null;\n videoinput: MediaDeviceInfo | null;\n}\n\nconst initialDevicesState: DevicesState = {\n audioinput: [],\n audiooutput: [],\n videoinput: []\n};\n\nconst initialSelectedDevicesState: SelectedDevicesState = {\n audioinput: null,\n audiooutput: null,\n videoinput: null\n};\n\nconst selectDevice = (\n devices: MediaDeviceInfo[] = [],\n selected: MediaDeviceInfo | null,\n preferred: MediaDeviceInfo | null\n): MediaDeviceInfo | null => {\n const available = selected\n ? Boolean(\n devices.find(\n // if the selected device was a default device(changed), a new default device will be selected automatically\n (device) => device.deviceId === selected.deviceId || device.label === selected.label\n )\n )\n : true;\n\n if ((!selected || !available) && devices.length > 0) {\n const preferredDevice = preferred\n ? devices.find(\n (device) => device.deviceId === preferred.deviceId || device.label === preferred.label\n )\n : undefined;\n return preferredDevice ?? devices[0];\n }\n\n return selected;\n};\n\nexport class NavigatorDeviceController extends Destroyable implements DeviceController {\n private deviceChangeHandler = () => {\n logger.debug('[DeviceController] Device change detected');\n void this.enumerateDevices();\n };\n\n private _devicesPoolingSubscription?: Subscription;\n private _devicesState$ = this.createBehaviorSubject<DevicesState>(initialDevicesState);\n private _selectedDevicesState$ = this.createBehaviorSubject<SelectedDevicesState>(\n initialSelectedDevicesState\n );\n\n // Error stream\n private _errors$ = this.createSubject<Error>();\n constructor() {\n super();\n this.init();\n }\n public get selectedAudioInputDeviceConstraints(): MediaTrackConstraints {\n return this.deviceInfoToConstraints(this.selectedAudioInputDevice);\n }\n\n public get selectedVideoInputDeviceConstraints(): MediaTrackConstraints {\n return this.deviceInfoToConstraints(this.selectedVideoInputDevice);\n }\n\n public deviceInfoToConstraints(deviceInfo: MediaDeviceInfo | null): MediaTrackConstraints {\n if (!deviceInfo?.deviceId || deviceInfo.deviceId.trim() === '') {\n return {};\n }\n const devices =\n deviceInfo.kind === 'audioinput' ? this.audioInputDevices : this.videoInputDevices;\n const device =\n devices.find((device) => device.deviceId === deviceInfo.deviceId) ??\n devices.find((device) => device.label === deviceInfo.label);\n if (device) {\n return { deviceId: { exact: device.deviceId } };\n }\n return {};\n }\n\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n // Observable getters for device lists by kind\n public get audioInputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._devicesState$.pipe(\n map((state) => state.audioinput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n );\n }\n\n public get audioOutputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._devicesState$.pipe(\n map((state) => state.audiooutput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n );\n }\n\n public get videoInputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._devicesState$.pipe(\n map((state) => state.videoinput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n );\n }\n\n public get selectedAudioInputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._selectedDevicesState$.asObservable().pipe(\n map((state) => state.audioinput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$),\n tap((info) => logger.debug('[DeviceController] Selected audio input device changed:', info))\n );\n }\n\n public get selectedAudioOutputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._selectedDevicesState$.asObservable().pipe(\n map((state) => state.audiooutput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$),\n tap((info) => logger.debug('[DeviceController] Selected audio output device changed:', info))\n );\n }\n\n public get selectedVideoInputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._selectedDevicesState$.asObservable().pipe(\n map((state) => state.videoinput),\n distinctUntilChanged(),\n takeUntil(this.destroyed$),\n tap((info) => logger.debug('[DeviceController] Selected video input device changed:', info))\n );\n }\n\n // Current value getters for selected devices\n public get selectedAudioInputDevice(): MediaDeviceInfo | null {\n return this._selectedDevicesState$.value.audioinput;\n }\n\n public get selectedAudioOutputDevice(): MediaDeviceInfo | null {\n return this._selectedDevicesState$.value.audiooutput;\n }\n\n public get selectedVideoInputDevice(): MediaDeviceInfo | null {\n return this._selectedDevicesState$.value.videoinput;\n }\n\n public get audioInputDevices(): MediaDeviceInfo[] {\n return this._devicesState$.value.audioinput;\n }\n\n public get audioOutputDevices(): MediaDeviceInfo[] {\n return this._devicesState$.value.audiooutput;\n }\n\n public get videoInputDevices(): MediaDeviceInfo[] {\n return this._devicesState$.value.videoinput;\n }\n\n // Setters for selected devices\n public selectAudioInputDevice(device: MediaDeviceInfo | null): void {\n this._selectedDevicesState$.next({\n ...this._selectedDevicesState$.value,\n audioinput: device\n });\n }\n\n public selectVideoInputDevice(device: MediaDeviceInfo | null): void {\n logger.debug('[DeviceController] Setting selected video input device:', device);\n this._selectedDevicesState$.next({\n ...this._selectedDevicesState$.value,\n videoinput: device\n });\n }\n\n public selectAudioOutputDevice(device: MediaDeviceInfo | null): void {\n this._selectedDevicesState$.next({\n ...this._selectedDevicesState$.value,\n audiooutput: device\n });\n }\n\n private init(): void {\n // Listen for device changes\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (navigator.mediaDevices) {\n // Subscribe to device state changes and auto-select devices\n this.subscribeTo(\n this._devicesState$.pipe(debounceTime(PreferencesContainer.instance.deviceDebounceTime)),\n (devicesState) => {\n const currentSelected = this._selectedDevicesState$.value;\n\n const newAudioInput = selectDevice(\n devicesState.audioinput,\n currentSelected.audioinput,\n PreferencesContainer.instance.preferredAudioInput\n );\n\n const newAudioOutput = selectDevice(\n devicesState.audiooutput,\n currentSelected.audiooutput,\n PreferencesContainer.instance.preferredAudioOutput\n );\n\n const newVideoInput = selectDevice(\n devicesState.videoinput,\n currentSelected.videoinput,\n PreferencesContainer.instance.preferredVideoInput\n );\n\n // Only update if something changed\n if (\n newAudioInput !== currentSelected.audioinput ||\n newAudioOutput !== currentSelected.audiooutput ||\n newVideoInput !== currentSelected.videoinput\n ) {\n this._selectedDevicesState$.next({\n audioinput: newAudioInput,\n audiooutput: newAudioOutput,\n videoinput: newVideoInput\n });\n }\n }\n );\n void this.enumerateDevices();\n }\n }\n\n public enableDeviceMonitoring(): void {\n this.disableDeviceMonitoring();\n navigator.mediaDevices.addEventListener('devicechange', this.deviceChangeHandler);\n\n if (PreferencesContainer.instance.devicePollingInterval > 0) {\n this._devicesPoolingSubscription = interval(\n PreferencesContainer.instance.devicePollingInterval\n ).subscribe(() => {\n logger.debug('[DeviceController] Polling devices due to interval');\n void this.enumerateDevices();\n });\n }\n\n void this.enumerateDevices();\n }\n\n public disableDeviceMonitoring(): void {\n navigator.mediaDevices.removeEventListener('devicechange', this.deviceChangeHandler);\n if (this._devicesPoolingSubscription) {\n this._devicesPoolingSubscription.unsubscribe();\n this._devicesPoolingSubscription = undefined;\n }\n }\n\n private async enumerateDevices(): Promise<void> {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n\n const devicesByKind: DevicesState = devices.reduce(\n (acc, device) => {\n const kind = device.kind as keyof DevicesState;\n acc[kind].push(device);\n return acc;\n },\n {\n audioinput: [],\n audiooutput: [],\n videoinput: []\n } as DevicesState\n );\n\n // Update state in a single emission\n this._devicesState$.next(devicesByKind);\n\n logger.debug('[DeviceController] Devices enumerated:', {\n audioInputs: devicesByKind.audioinput.length,\n audioOutputs: devicesByKind.audiooutput.length,\n videoInputs: devicesByKind.videoinput.length\n });\n } catch (error) {\n logger.error('[DeviceController] Failed to enumerate devices:', error);\n this._errors$.next(error as Error);\n }\n }\n\n public async getDeviceCapabilities(\n deviceInfo: MediaDeviceInfo\n ): Promise<MediaTrackCapabilities | null> {\n if (deviceInfo.kind === 'audiooutput') {\n return null;\n }\n\n try {\n const constraints = this.deviceInfoToConstraints(deviceInfo);\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: deviceInfo.kind === 'audioinput' ? constraints : false,\n video: deviceInfo.kind === 'videoinput' ? constraints : false\n });\n\n const track =\n deviceInfo.kind === 'audioinput' ? stream.getAudioTracks()[0] : stream.getVideoTracks()[0];\n\n const capabilities = track.getCapabilities();\n\n // Stop all tracks to release devices\n stream.getTracks().forEach((t) => t.stop());\n\n return capabilities;\n } catch (error) {\n logger.error('[DeviceController] Failed to get device capabilities:', error);\n this._errors$.next(error as Error);\n throw error;\n }\n }\n\n public async isValidDevice(deviceInfo: MediaDeviceInfo | null): Promise<boolean> {\n if (!deviceInfo || deviceInfo.kind === 'audiooutput') {\n return false;\n }\n try {\n const capabilities = await this.getDeviceCapabilities(deviceInfo);\n return capabilities !== null;\n } catch {\n return false;\n }\n }\n\n public destroy(): void {\n this.disableDeviceMonitoring();\n super.destroy();\n }\n}\n","import { StorageNotAvailableError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type { Storage, StorageScope } from './interfaces';\n\nexport class DefaultLocalStorage implements Storage {\n constructor() {\n // Check if localStorage is available\n if (typeof localStorage === 'undefined') {\n throw new StorageNotAvailableError('localStorage');\n }\n if (typeof sessionStorage === 'undefined') {\n throw new StorageNotAvailableError('sessionStorage');\n }\n\n // Test if localStorage is actually accessible (some browsers block it)\n try {\n const testKey = '__storage_test__';\n localStorage.setItem(testKey, 'test');\n localStorage.removeItem(testKey);\n } catch (error) {\n getLogger().error('LocalStorage is not accessible:', error);\n throw new StorageNotAvailableError('localStorage');\n }\n }\n\n private storage(scope: StorageScope) {\n return scope === 'local' ? localStorage : sessionStorage;\n }\n\n async setItem(key: string, value: string, scope: StorageScope = 'session'): Promise<void> {\n this.storage(scope).setItem(key, value);\n return Promise.resolve();\n }\n\n async getItem(key: string, scope: StorageScope = 'session'): Promise<string | null> {\n return Promise.resolve(this.storage(scope).getItem(key));\n }\n\n async removeItem(key: string, scope: StorageScope = 'session'): Promise<void> {\n this.storage(scope).removeItem(key);\n return Promise.resolve();\n }\n}\n","import {\n SerializationError,\n StorageWriteError,\n DeserializationError,\n StorageReadError\n} from '../core/errors';\nimport { DefaultLocalStorage } from '../dependencies/DefaultLocalStorage';\n\nimport type { Storage, StorageScope } from '../dependencies/interfaces';\n\nexport class StorageManager {\n constructor(private storageImpl: Storage = new DefaultLocalStorage()) {}\n\n /**\n * Validates that a value can be safely serialized to JSON\n * @throws SerializationError if value contains non-serializable types\n */\n private serialize(value: unknown, key?: string): string | null {\n if (value === undefined || value === null) {\n // undefined is acceptable, will be stored as null\n return null;\n }\n\n try {\n return JSON.stringify(value);\n } catch (e) {\n throw new SerializationError(key ?? 'unknown', e as Error);\n }\n }\n\n /**\n * Stores a value in storage\n * @throws InvalidStorageValueError if value contains non-serializable types\n * @throws SerializationError if JSON serialization fails\n * @throws StorageWriteError if writing to storage fails\n */\n public async setItem(\n key: string,\n value: unknown,\n scope: StorageScope = 'session'\n ): Promise<void> {\n const serialized = this.serialize(value, key);\n\n try {\n await this.storageImpl.setItem(key, serialized, scope);\n } catch (error) {\n throw new StorageWriteError(key, error as Error);\n }\n }\n\n /**\n * Retrieves a value from storage\n *\n * This method distinguishes between:\n * - Storage errors (network, permission, etc.) - these are thrown\n * - JSON parse errors - these trigger onParseError and return raw string\n * - Missing keys - returns null\n *\n * @returns The parsed value, raw string (on parse error), or null\n * @throws StorageReadError\n */\n public async getItem<T = unknown>(\n key: string,\n scope: StorageScope = 'session'\n ): Promise<T | null> {\n let item: string | null;\n\n try {\n item = await this.storageImpl.getItem(key, scope);\n } catch (error) {\n throw new StorageReadError(key, error as Error);\n }\n\n if (!item) {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch (error) {\n throw new DeserializationError(key, error as Error);\n }\n }\n\n /**\n * Removes a value from storage\n * @throws Error from underlying storage implementation\n */\n public async removeItem(key: string, scope: StorageScope = 'session'): Promise<void> {\n try {\n await this.storageImpl.removeItem(key, scope);\n } catch (error) {\n throw new StorageWriteError(key, error as Error);\n }\n }\n}\n","import { HTTPRequestController } from '../controllers/HTTPRequestController';\nimport { NavigatorDeviceController } from '../controllers/NavigatorDeviceController';\nimport { DependencyError } from '../core/errors';\nimport { DefaultLocalStorage } from '../dependencies/DefaultLocalStorage';\nimport { StorageManager } from '../managers/StorageManager';\n\nimport type { Subscriber } from '../core/entities/Subscriber';\nimport type {\n NodeSocketAdapter,\n SDKCredential,\n WebSocketAdapter\n} from '../core/types/common.types';\nimport type { Storage } from '../dependencies/interfaces';\nimport type { ConversationsProvider } from '../interfaces/Conversations';\nimport type { Dependency } from '../interfaces/Dependency';\nimport type { DeviceController } from '../interfaces/DeviceController';\n\nexport class DependencyContainer implements Dependency {\n private _conversationManager?: ConversationsProvider;\n\n private _subscriber?: Subscriber;\n\n private _host?: string;\n\n private _domain?: string;\n\n private _storageManager?: StorageManager;\n private _storageImpl?: Storage;\n private _webSocketConstructor?: WebSocketAdapter | NodeSocketAdapter =\n typeof WebSocket !== 'undefined' ? WebSocket : undefined;\n private _baseURL: string = this.apiHost;\n private _credential: SDKCredential = {};\n private _httpRequestController?: HTTPRequestController;\n private _deviceController?: NavigatorDeviceController;\n public get subscriberId(): string {\n return this.subscriber.id;\n }\n\n public get subscriber(): Subscriber {\n if (!this._subscriber) {\n throw new DependencyError('Subscriber');\n }\n return this._subscriber;\n }\n public set subscriber(subscriber: Subscriber) {\n this._subscriber = subscriber;\n }\n\n public get storage(): StorageManager {\n if (!this._storageManager) {\n // Lazily initialize storage implementation if not already set\n this._storageImpl ??= new DefaultLocalStorage();\n this._storageManager = new StorageManager(this._storageImpl);\n }\n return this._storageManager;\n }\n\n public get http(): HTTPRequestController {\n this._httpRequestController ??= new HTTPRequestController(this._baseURL, this._credential);\n return this._httpRequestController;\n }\n\n public get conversationManager(): ConversationsProvider {\n if (!this._conversationManager) {\n throw new DependencyError('ConversationsManager');\n }\n return this._conversationManager;\n }\n\n public set conversationManager(conversationManager: ConversationsProvider) {\n this._conversationManager = conversationManager;\n }\n\n public get WebSocket(): WebSocketAdapter | NodeSocketAdapter {\n if (!this._webSocketConstructor) {\n throw new DependencyError('WebSocket constructor');\n }\n return this._webSocketConstructor;\n }\n\n public set WebSocket(WebSocketConstructor: WebSocketAdapter | NodeSocketAdapter) {\n this._webSocketConstructor = WebSocketConstructor;\n }\n\n public get deviceController(): DeviceController {\n this._deviceController ??= new NavigatorDeviceController();\n return this._deviceController;\n }\n\n public get authorizationStateKey(): string {\n return `sw:${this.subscriberId}:as`;\n }\n\n public get protocolKey(): string {\n return `sw:${this.subscriberId}:pt`;\n }\n\n public get attachedCallsKey(): string {\n return `sw:${this.subscriberId}:att`;\n }\n\n public getSubscriberFromAddressId(): string {\n return this.subscriber.addresses[0]?.id ?? '';\n }\n\n public set baseURL(baseURL: string) {\n this._baseURL = baseURL;\n this._httpRequestController = undefined;\n }\n\n public get credential(): SDKCredential {\n return this._credential;\n }\n\n public set credential(credential: SDKCredential) {\n this._credential = credential;\n this._httpRequestController = undefined;\n }\n\n public set storageImpl(storageImpl: Storage) {\n this._storageImpl = storageImpl;\n this._storageManager = undefined;\n }\n\n public set ch(ch: string | undefined) {\n if (!ch) {\n return;\n }\n\n const firstDot = ch.indexOf('.');\n if (firstDot !== -1) {\n this._host = ch.substring(0, firstDot);\n this._domain = ch.substring(firstDot + 1);\n }\n }\n\n public get relayHost(): string {\n return `wss://${this._host ?? 'puc'}.${this._domain ?? 'signalwire.com'}`;\n }\n\n public get apiHost(): string {\n return `https://${this._host ?? 'fabric'}.${this._domain ?? 'signalwire.com'}`;\n }\n}\n","import { defer, from, shareReplay, takeUntil } from 'rxjs';\n\nimport { Destroyable } from './Destroyable';\n\nimport type { HTTPRequestController } from '../controllers/HTTPRequestController';\nimport type { Observable } from 'rxjs';\n\nexport abstract class Fetchable<T = unknown> extends Destroyable {\n public fetched$: Observable<boolean>;\n\n constructor(\n public fromPath: string,\n protected http: HTTPRequestController\n ) {\n super();\n this.fetched$ = defer(() => from(this.fetch())).pipe(\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n }\n\n protected abstract populateInstance(data: T): void;\n\n private async fetch(): Promise<boolean> {\n const response = await this.http.request({\n url: this.fromPath,\n method: 'GET',\n headers: {\n Accept: 'application/json'\n }\n });\n if (response.ok && response.body) {\n const data = JSON.parse(response.body) as T;\n this.populateInstance(data);\n return true;\n }\n return false;\n }\n}\n","import { Fetchable } from '../../behaviors/Fetchable';\n\nimport type { HTTPRequestController } from '../../controllers/HTTPRequestController';\nimport type { GetAddressResponse } from '../types/address.types';\nimport type { GetSubscriberInfoResponse } from '../types/subscriber.types';\n\n/** Subscriber online presence state. */\nexport type SubscriberPresence = 'online' | 'offline' | 'busy';\n\n/**\n * Authenticated subscriber profile.\n *\n * Fetched automatically when a {@link SignalWire} connects.\n * Contains identity, contact, and organization details.\n */\nexport class Subscriber extends Fetchable<GetSubscriberInfoResponse> {\n /** Unique subscriber identifier. */\n public id!: string;\n /** Subscriber email address. */\n public email!: string;\n /** First name. */\n public firstName?: string;\n /** Last name. */\n public lastName?: string;\n /** Display name shown to other participants. */\n public displayName?: string;\n /** Job title. */\n public jobTitle?: string;\n /** Time zone offset. */\n public timeZone?: number;\n /** Country code. */\n public country?: string;\n /** Region/state. */\n public region?: string;\n /** Company name. */\n public companyName?: string;\n /** Push notification key for mobile/web push. */\n public pushNotificationKey!: string;\n /** Application-level settings (display name, permission scopes). */\n public appSettings?: {\n displayName: string;\n scopes: string[];\n };\n /** Fabric addresses associated with this subscriber. */\n public addresses!: GetAddressResponse[];\n\n constructor(http: HTTPRequestController) {\n super('/api/fabric/subscriber/info', http);\n }\n\n protected populateInstance(data: GetSubscriberInfoResponse): void {\n this.id = data.id;\n this.email = data.email;\n this.firstName = data.first_name;\n this.lastName = data.last_name;\n this.displayName = data.display_name;\n this.jobTitle = data.job_title;\n this.timeZone = data.time_zone;\n this.country = data.country;\n this.region = data.region;\n this.companyName = data.company_name;\n this.pushNotificationKey = data.push_notification_key;\n this.appSettings = data.app_settings\n ? {\n displayName: data.app_settings.display_name,\n scopes: data.app_settings.scopes\n }\n : undefined;\n this.addresses = data.fabric_addresses;\n }\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import { randomFillSync } from 'node:crypto';\nconst rnds8Pool = new Uint8Array(256);\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n return rnds8Pool.slice(poolPtr, (poolPtr += 16));\n}\n","import { randomUUID } from 'node:crypto';\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import { v4 as uuid } from 'uuid';\n\nimport type { JSONRPCRequest, JSONRPCResponse } from './types/base';\n\ninterface MakeRPCRequestParams<\n T extends string = 'execute',\n P extends Record<string, unknown> = Record<string, unknown>\n> {\n id?: string;\n method: T;\n params: P;\n}\nexport const buildRPCRequest = <\n T extends string = 'execute',\n P extends Record<string, unknown> = Record<string, unknown>\n>(\n params: MakeRPCRequestParams<T, P>\n): JSONRPCRequest<P> & { method: T; params: P } => {\n return {\n jsonrpc: '2.0' as const,\n id: params.id ?? uuid(),\n ...params\n };\n};\n\ninterface MakeRPCResponseParams {\n id: string;\n result: Record<string, unknown>;\n}\nexport const makeRPCResponse = <T extends JSONRPCResponse = JSONRPCResponse>(\n params: MakeRPCResponseParams\n): T => {\n return {\n jsonrpc: '2.0' as const,\n ...params\n } as T;\n};\n","import { buildRPCRequest } from './helpers';\n\nimport type { JSONRPCRequest } from './types/base';\n\ninterface WithToken {\n token: string;\n\n jwt_token?: never;\n}\ninterface WithJWT {\n token?: never;\n\n jwt_token: string;\n}\nexport type RPCConnectAuthentication = { project?: string } & (WithToken | WithJWT);\nexport interface RPCConnectParams {\n authentication: RPCConnectAuthentication;\n version?: typeof DEFAULT_CONNECT_VERSION;\n agent?: string;\n protocol?: string;\n\n authorization_state?: string;\n contexts?: string[];\n topics?: string[];\n eventing?: string[];\n\n event_acks?: boolean;\n}\n\nexport interface Authorization {\n jti: string;\n\n project_id: string;\n\n fabric_subscriber: {\n version: number;\n\n expires_at: number;\n\n subscriber_id: string;\n\n application_id: string;\n\n project_id: string;\n\n space_id: string;\n };\n}\n\nexport interface RPCConnectResult {\n identity: string;\n authorization: Authorization;\n protocol: string;\n\n ice_servers?: RTCIceServer[];\n}\n\nexport const DEFAULT_CONNECT_VERSION = {\n major: 4,\n minor: 0,\n revision: 0\n};\n\nexport const RPCConnect = (params: RPCConnectParams): JSONRPCRequest => {\n return buildRPCRequest({\n method: 'signalwire.connect',\n params: {\n version: DEFAULT_CONNECT_VERSION,\n\n event_acks: true,\n ...params\n }\n });\n};\n","import { buildRPCRequest, makeRPCResponse } from './helpers';\n\nimport type { SignalwirePingRequest } from './types/events';\nimport type { SignalwirePingResponse } from './types/methods';\n\nexport const RPCPing = (): SignalwirePingRequest => {\n return buildRPCRequest({\n method: 'signalwire.ping',\n params: {\n timestamp: Date.now() / 1000\n }\n });\n};\n\nexport const RPCPingResponse = (id: string, timestamp?: number): SignalwirePingResponse => {\n return makeRPCResponse<SignalwirePingResponse>({\n id,\n result: {\n timestamp: timestamp ?? Date.now() / 1000\n }\n });\n};\n","import { buildRPCRequest } from './helpers';\n\nimport type { JSONRPCRequest, JSONRPCMethod } from './types/base';\n\ninterface RPCExecuteParams {\n id?: string;\n method: JSONRPCMethod;\n params: Record<string, unknown>;\n}\n\nexport const RPCExecute = ({ method, params }: RPCExecuteParams): JSONRPCRequest => {\n return buildRPCRequest({\n method,\n params\n });\n};\n","import { buildRPCRequest, makeRPCResponse } from './helpers';\n\nimport type { VertoMethod } from '../types/rpc.types';\nimport type { JSONRPCResponse } from './types/base';\nimport type { WebrtcVertoParams, WebrtcVertoRequest } from './types/methods';\nimport type { VertoByeCause } from './types/verto';\n\ntype VertoParams = Record<string, unknown>;\n\nconst tmpMap: VertoParams = {\n id: 'callID',\n destinationNumber: 'destination_number',\n remoteCallerName: 'remote_caller_id_name',\n remoteCallerNumber: 'remote_caller_id_number',\n callerName: 'caller_id_name',\n callerNumber: 'caller_id_number',\n fromCallAddressId: 'from_fabric_address_id'\n};\n\n/**\n * Translate SDK fields into verto variables\n */\n/* eslint-disable */\nconst filterVertoParams = (params: VertoParams) => {\n if (Object.prototype.hasOwnProperty.call(params, 'dialogParams')) {\n // prettier-ignore\n const { \n remoteSdp,\n localStream,\n remoteStream,\n ...dialogParams\n } = params.dialogParams as Record<string, unknown>;\n for (const key in tmpMap) {\n if (key && Object.prototype.hasOwnProperty.call(dialogParams, key)) {\n // @ts-ignore\n dialogParams[tmpMap[key]] = dialogParams[key];\n delete dialogParams[key];\n }\n }\n params.dialogParams = dialogParams;\n }\n\n return params;\n};\n\n/* eslint-enable */\n\nconst buildVertoRPCMessage = (method: VertoMethod) => {\n return (params: VertoParams = {}) => {\n return buildRPCRequest({\n method,\n params: filterVertoParams(params)\n });\n };\n};\n\nexport type VertoRPCMessage = ReturnType<ReturnType<typeof buildVertoRPCMessage>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type JSONRPCParams = Record<string, any>;\n\n// export interface WebrtcVertoParams extends JSONRPCParams {\n// message: JSONRPCRequest<VertoMethod>;\n// callID?: string;\n// node_id?: string;\n// subscribe?: string[];\n// }\n\nexport const WebrtcVerto = (params: WebrtcVertoParams): WebrtcVertoRequest => {\n return buildRPCRequest({\n method: 'webrtc.verto',\n params\n });\n};\n\nexport type WebrtcVertoRPCMessage = ReturnType<ReturnType<typeof buildVertoRPCMessage>>;\n\nexport const VertoInvite = buildVertoRPCMessage('verto.invite');\nexport const VertoBye = buildVertoRPCMessage('verto.bye');\nexport const VertoAttach = buildVertoRPCMessage('verto.attach');\nexport const VertoModify = buildVertoRPCMessage('verto.modify');\nexport const VertoInfo = buildVertoRPCMessage('verto.info');\nexport const VertoAnswer = buildVertoRPCMessage('verto.answer');\nexport const VertoSubscribe = buildVertoRPCMessage('verto.subscribe');\nexport const VertoPong = buildVertoRPCMessage('verto.pong');\nexport const VertoResult = (id: string, method: VertoMethod): JSONRPCResponse => {\n return makeRPCResponse({\n id,\n result: {\n method\n }\n });\n};\n\nexport interface VertoModifyResponse {\n action: string;\n callID: string;\n holdState: 'held' | 'active';\n\n node_id?: string;\n sdp?: string;\n}\n\nexport const VertoByeCauseCodes: Record<VertoByeCause, string> = {\n NORMAL_CLEARING: '16',\n\n USER_BUSY: '17',\n\n MEDIA_TIMEOUT: '804'\n} as const;\n","import { makeRPCResponse } from './helpers';\n\nimport type { JSONRPCResponse } from './types/base';\n\nexport const RPCEventAckResponse = (id: string): JSONRPCResponse =>\n makeRPCResponse({ id, result: {} });\n","import { getLogger } from '../utils/logger';\n\nimport type { StorageManager } from './StorageManager';\nimport type { Address } from '../core/entities/Address';\nimport type { Call, CallOptions } from '../core/entities/types/call.types';\nimport type { MediaDirections } from '../core/types/media.types';\nimport type { DeviceController } from '../interfaces/DeviceController';\n\nconst logger = getLogger();\ninterface AttachableCall {\n id: string;\n to?: string;\n mediaDirections: MediaDirections;\n}\n\nexport interface OutboundCallProvider {\n createOutboundCall(destination: string | Address, options?: CallOptions): Promise<Call>;\n}\n\ninterface Attachment {\n destination: string;\n mediaDirections: MediaDirections;\n audioInputDevice: MediaDeviceInfo | null;\n videoInputDevice: MediaDeviceInfo | null;\n attachedAt: number;\n}\n\nexport class AttachManager {\n private session!: OutboundCallProvider;\n constructor(\n private readonly storage: StorageManager,\n\n private readonly deviceController: DeviceController,\n private readonly reconnectCallsTimeout: number,\n private attachKey: string\n ) {}\n\n async detachAll(): Promise<void> {\n const attached = await this.readAttached();\n for (const callId of Object.keys(attached)) {\n await this.detach({ id: callId, mediaDirections: attached[callId].mediaDirections });\n }\n }\n\n public setSession(session: OutboundCallProvider): void {\n this.session = session;\n }\n\n private async readAttached(): Promise<Record<string, Attachment>> {\n try {\n return (await this.storage.getItem(this.attachKey)) ?? {};\n } catch (error) {\n logger.warn('[AttachManager] Failed to retrieve attached calls from storage', error);\n return {};\n }\n }\n\n private async writeAttached(attached: Record<string, Attachment>): Promise<void> {\n try {\n await this.storage.setItem(this.attachKey, attached);\n } catch (error) {\n logger.warn('[AttachManager] Failed to write attached calls to storage', error);\n }\n }\n\n public async attach(call: AttachableCall): Promise<void> {\n if (!call.to) {\n logger.warn('[AttachManager] Skip attach for calls with no destination');\n return;\n }\n const attachment = {\n destination: call.to,\n mediaDirections: call.mediaDirections,\n audioInputDevice:\n call.mediaDirections.audio !== 'inactive'\n ? this.deviceController.selectedAudioInputDevice\n : null,\n videoInputDevice:\n call.mediaDirections.video !== 'inactive'\n ? this.deviceController.selectedVideoInputDevice\n : null,\n attachedAt: Date.now()\n };\n const attached = await this.readAttached();\n attached[call.id] = attachment;\n await this.writeAttached(attached);\n }\n\n public async detach(call: AttachableCall): Promise<void> {\n const attached = await this.readAttached();\n delete attached[call.id];\n await this.writeAttached(attached);\n }\n\n public async flush(): Promise<void> {\n await this.writeAttached({});\n }\n\n public async reattachCalls(): Promise<void> {\n const attached = await this.readAttached();\n\n await this.detachExpired();\n\n for (const [callId, attachment] of Object.entries(attached)) {\n const { destination } = attachment;\n\n const options = this.buildCallOptions(attachment);\n\n await this.session.createOutboundCall(destination, { callId, ...options });\n }\n }\n\n private buildCallOptions(attachment: Attachment): CallOptions {\n const { audio: audioDirection, video: videoDirection } = attachment.mediaDirections;\n const { audioInputDevice, videoInputDevice } = attachment;\n const receiveAudio = audioDirection.includes('recv');\n const receiveVideo = videoDirection.includes('recv');\n const inputAudioDeviceConstraints = {\n ...{ audio: audioDirection.includes('send') },\n ...this.deviceController.deviceInfoToConstraints(audioInputDevice)\n };\n const inputVideoDeviceConstraints = {\n ...{ video: videoDirection.includes('send') },\n ...this.deviceController.deviceInfoToConstraints(videoInputDevice)\n };\n return {\n receiveAudio,\n receiveVideo,\n inputAudioDeviceConstraints,\n inputVideoDeviceConstraints,\n reattach: true\n };\n }\n\n private async detachExpired() {\n const attached = await this.readAttached();\n\n const expired = Object.entries(attached).filter(([, attachment]) => {\n const now = Date.now();\n const timeout = this.reconnectCallsTimeout;\n return now - attachment.attachedAt > timeout;\n });\n expired.forEach(([callId]) => {\n delete attached[callId];\n });\n\n if (expired.length > 0) {\n await this.writeAttached(attached);\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partition = void 0;\nvar not_1 = require(\"../util/not\");\nvar filter_1 = require(\"./filter\");\nfunction partition(predicate, thisArg) {\n return function (source) {\n return [filter_1.filter(predicate, thisArg)(source), filter_1.filter(not_1.not(predicate, thisArg))(source)];\n };\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.race = void 0;\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar raceWith_1 = require(\"./raceWith\");\nfunction race() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return raceWith_1.raceWith.apply(void 0, __spreadArray([], __read(argsOrArgArray_1.argsOrArgArray(args))));\n}\nexports.race = race;\n//# sourceMappingURL=race.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeAll = exports.merge = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = exports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.concat = exports.combineLatestWith = exports.combineLatest = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = void 0;\nexports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = exports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.race = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.partition = exports.pairwise = exports.onErrorResumeNext = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = void 0;\nexports.zipWith = exports.zipAll = exports.zip = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = void 0;\nvar audit_1 = require(\"../internal/operators/audit\");\nObject.defineProperty(exports, \"audit\", { enumerable: true, get: function () { return audit_1.audit; } });\nvar auditTime_1 = require(\"../internal/operators/auditTime\");\nObject.defineProperty(exports, \"auditTime\", { enumerable: true, get: function () { return auditTime_1.auditTime; } });\nvar buffer_1 = require(\"../internal/operators/buffer\");\nObject.defineProperty(exports, \"buffer\", { enumerable: true, get: function () { return buffer_1.buffer; } });\nvar bufferCount_1 = require(\"../internal/operators/bufferCount\");\nObject.defineProperty(exports, \"bufferCount\", { enumerable: true, get: function () { return bufferCount_1.bufferCount; } });\nvar bufferTime_1 = require(\"../internal/operators/bufferTime\");\nObject.defineProperty(exports, \"bufferTime\", { enumerable: true, get: function () { return bufferTime_1.bufferTime; } });\nvar bufferToggle_1 = require(\"../internal/operators/bufferToggle\");\nObject.defineProperty(exports, \"bufferToggle\", { enumerable: true, get: function () { return bufferToggle_1.bufferToggle; } });\nvar bufferWhen_1 = require(\"../internal/operators/bufferWhen\");\nObject.defineProperty(exports, \"bufferWhen\", { enumerable: true, get: function () { return bufferWhen_1.bufferWhen; } });\nvar catchError_1 = require(\"../internal/operators/catchError\");\nObject.defineProperty(exports, \"catchError\", { enumerable: true, get: function () { return catchError_1.catchError; } });\nvar combineAll_1 = require(\"../internal/operators/combineAll\");\nObject.defineProperty(exports, \"combineAll\", { enumerable: true, get: function () { return combineAll_1.combineAll; } });\nvar combineLatestAll_1 = require(\"../internal/operators/combineLatestAll\");\nObject.defineProperty(exports, \"combineLatestAll\", { enumerable: true, get: function () { return combineLatestAll_1.combineLatestAll; } });\nvar combineLatest_1 = require(\"../internal/operators/combineLatest\");\nObject.defineProperty(exports, \"combineLatest\", { enumerable: true, get: function () { return combineLatest_1.combineLatest; } });\nvar combineLatestWith_1 = require(\"../internal/operators/combineLatestWith\");\nObject.defineProperty(exports, \"combineLatestWith\", { enumerable: true, get: function () { return combineLatestWith_1.combineLatestWith; } });\nvar concat_1 = require(\"../internal/operators/concat\");\nObject.defineProperty(exports, \"concat\", { enumerable: true, get: function () { return concat_1.concat; } });\nvar concatAll_1 = require(\"../internal/operators/concatAll\");\nObject.defineProperty(exports, \"concatAll\", { enumerable: true, get: function () { return concatAll_1.concatAll; } });\nvar concatMap_1 = require(\"../internal/operators/concatMap\");\nObject.defineProperty(exports, \"concatMap\", { enumerable: true, get: function () { return concatMap_1.concatMap; } });\nvar concatMapTo_1 = require(\"../internal/operators/concatMapTo\");\nObject.defineProperty(exports, \"concatMapTo\", { enumerable: true, get: function () { return concatMapTo_1.concatMapTo; } });\nvar concatWith_1 = require(\"../internal/operators/concatWith\");\nObject.defineProperty(exports, \"concatWith\", { enumerable: true, get: function () { return concatWith_1.concatWith; } });\nvar connect_1 = require(\"../internal/operators/connect\");\nObject.defineProperty(exports, \"connect\", { enumerable: true, get: function () { return connect_1.connect; } });\nvar count_1 = require(\"../internal/operators/count\");\nObject.defineProperty(exports, \"count\", { enumerable: true, get: function () { return count_1.count; } });\nvar debounce_1 = require(\"../internal/operators/debounce\");\nObject.defineProperty(exports, \"debounce\", { enumerable: true, get: function () { return debounce_1.debounce; } });\nvar debounceTime_1 = require(\"../internal/operators/debounceTime\");\nObject.defineProperty(exports, \"debounceTime\", { enumerable: true, get: function () { return debounceTime_1.debounceTime; } });\nvar defaultIfEmpty_1 = require(\"../internal/operators/defaultIfEmpty\");\nObject.defineProperty(exports, \"defaultIfEmpty\", { enumerable: true, get: function () { return defaultIfEmpty_1.defaultIfEmpty; } });\nvar delay_1 = require(\"../internal/operators/delay\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_1.delay; } });\nvar delayWhen_1 = require(\"../internal/operators/delayWhen\");\nObject.defineProperty(exports, \"delayWhen\", { enumerable: true, get: function () { return delayWhen_1.delayWhen; } });\nvar dematerialize_1 = require(\"../internal/operators/dematerialize\");\nObject.defineProperty(exports, \"dematerialize\", { enumerable: true, get: function () { return dematerialize_1.dematerialize; } });\nvar distinct_1 = require(\"../internal/operators/distinct\");\nObject.defineProperty(exports, \"distinct\", { enumerable: true, get: function () { return distinct_1.distinct; } });\nvar distinctUntilChanged_1 = require(\"../internal/operators/distinctUntilChanged\");\nObject.defineProperty(exports, \"distinctUntilChanged\", { enumerable: true, get: function () { return distinctUntilChanged_1.distinctUntilChanged; } });\nvar distinctUntilKeyChanged_1 = require(\"../internal/operators/distinctUntilKeyChanged\");\nObject.defineProperty(exports, \"distinctUntilKeyChanged\", { enumerable: true, get: function () { return distinctUntilKeyChanged_1.distinctUntilKeyChanged; } });\nvar elementAt_1 = require(\"../internal/operators/elementAt\");\nObject.defineProperty(exports, \"elementAt\", { enumerable: true, get: function () { return elementAt_1.elementAt; } });\nvar endWith_1 = require(\"../internal/operators/endWith\");\nObject.defineProperty(exports, \"endWith\", { enumerable: true, get: function () { return endWith_1.endWith; } });\nvar every_1 = require(\"../internal/operators/every\");\nObject.defineProperty(exports, \"every\", { enumerable: true, get: function () { return every_1.every; } });\nvar exhaust_1 = require(\"../internal/operators/exhaust\");\nObject.defineProperty(exports, \"exhaust\", { enumerable: true, get: function () { return exhaust_1.exhaust; } });\nvar exhaustAll_1 = require(\"../internal/operators/exhaustAll\");\nObject.defineProperty(exports, \"exhaustAll\", { enumerable: true, get: function () { return exhaustAll_1.exhaustAll; } });\nvar exhaustMap_1 = require(\"../internal/operators/exhaustMap\");\nObject.defineProperty(exports, \"exhaustMap\", { enumerable: true, get: function () { return exhaustMap_1.exhaustMap; } });\nvar expand_1 = require(\"../internal/operators/expand\");\nObject.defineProperty(exports, \"expand\", { enumerable: true, get: function () { return expand_1.expand; } });\nvar filter_1 = require(\"../internal/operators/filter\");\nObject.defineProperty(exports, \"filter\", { enumerable: true, get: function () { return filter_1.filter; } });\nvar finalize_1 = require(\"../internal/operators/finalize\");\nObject.defineProperty(exports, \"finalize\", { enumerable: true, get: function () { return finalize_1.finalize; } });\nvar find_1 = require(\"../internal/operators/find\");\nObject.defineProperty(exports, \"find\", { enumerable: true, get: function () { return find_1.find; } });\nvar findIndex_1 = require(\"../internal/operators/findIndex\");\nObject.defineProperty(exports, \"findIndex\", { enumerable: true, get: function () { return findIndex_1.findIndex; } });\nvar first_1 = require(\"../internal/operators/first\");\nObject.defineProperty(exports, \"first\", { enumerable: true, get: function () { return first_1.first; } });\nvar groupBy_1 = require(\"../internal/operators/groupBy\");\nObject.defineProperty(exports, \"groupBy\", { enumerable: true, get: function () { return groupBy_1.groupBy; } });\nvar ignoreElements_1 = require(\"../internal/operators/ignoreElements\");\nObject.defineProperty(exports, \"ignoreElements\", { enumerable: true, get: function () { return ignoreElements_1.ignoreElements; } });\nvar isEmpty_1 = require(\"../internal/operators/isEmpty\");\nObject.defineProperty(exports, \"isEmpty\", { enumerable: true, get: function () { return isEmpty_1.isEmpty; } });\nvar last_1 = require(\"../internal/operators/last\");\nObject.defineProperty(exports, \"last\", { enumerable: true, get: function () { return last_1.last; } });\nvar map_1 = require(\"../internal/operators/map\");\nObject.defineProperty(exports, \"map\", { enumerable: true, get: function () { return map_1.map; } });\nvar mapTo_1 = require(\"../internal/operators/mapTo\");\nObject.defineProperty(exports, \"mapTo\", { enumerable: true, get: function () { return mapTo_1.mapTo; } });\nvar materialize_1 = require(\"../internal/operators/materialize\");\nObject.defineProperty(exports, \"materialize\", { enumerable: true, get: function () { return materialize_1.materialize; } });\nvar max_1 = require(\"../internal/operators/max\");\nObject.defineProperty(exports, \"max\", { enumerable: true, get: function () { return max_1.max; } });\nvar merge_1 = require(\"../internal/operators/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar mergeAll_1 = require(\"../internal/operators/mergeAll\");\nObject.defineProperty(exports, \"mergeAll\", { enumerable: true, get: function () { return mergeAll_1.mergeAll; } });\nvar flatMap_1 = require(\"../internal/operators/flatMap\");\nObject.defineProperty(exports, \"flatMap\", { enumerable: true, get: function () { return flatMap_1.flatMap; } });\nvar mergeMap_1 = require(\"../internal/operators/mergeMap\");\nObject.defineProperty(exports, \"mergeMap\", { enumerable: true, get: function () { return mergeMap_1.mergeMap; } });\nvar mergeMapTo_1 = require(\"../internal/operators/mergeMapTo\");\nObject.defineProperty(exports, \"mergeMapTo\", { enumerable: true, get: function () { return mergeMapTo_1.mergeMapTo; } });\nvar mergeScan_1 = require(\"../internal/operators/mergeScan\");\nObject.defineProperty(exports, \"mergeScan\", { enumerable: true, get: function () { return mergeScan_1.mergeScan; } });\nvar mergeWith_1 = require(\"../internal/operators/mergeWith\");\nObject.defineProperty(exports, \"mergeWith\", { enumerable: true, get: function () { return mergeWith_1.mergeWith; } });\nvar min_1 = require(\"../internal/operators/min\");\nObject.defineProperty(exports, \"min\", { enumerable: true, get: function () { return min_1.min; } });\nvar multicast_1 = require(\"../internal/operators/multicast\");\nObject.defineProperty(exports, \"multicast\", { enumerable: true, get: function () { return multicast_1.multicast; } });\nvar observeOn_1 = require(\"../internal/operators/observeOn\");\nObject.defineProperty(exports, \"observeOn\", { enumerable: true, get: function () { return observeOn_1.observeOn; } });\nvar onErrorResumeNextWith_1 = require(\"../internal/operators/onErrorResumeNextWith\");\nObject.defineProperty(exports, \"onErrorResumeNext\", { enumerable: true, get: function () { return onErrorResumeNextWith_1.onErrorResumeNext; } });\nvar pairwise_1 = require(\"../internal/operators/pairwise\");\nObject.defineProperty(exports, \"pairwise\", { enumerable: true, get: function () { return pairwise_1.pairwise; } });\nvar partition_1 = require(\"../internal/operators/partition\");\nObject.defineProperty(exports, \"partition\", { enumerable: true, get: function () { return partition_1.partition; } });\nvar pluck_1 = require(\"../internal/operators/pluck\");\nObject.defineProperty(exports, \"pluck\", { enumerable: true, get: function () { return pluck_1.pluck; } });\nvar publish_1 = require(\"../internal/operators/publish\");\nObject.defineProperty(exports, \"publish\", { enumerable: true, get: function () { return publish_1.publish; } });\nvar publishBehavior_1 = require(\"../internal/operators/publishBehavior\");\nObject.defineProperty(exports, \"publishBehavior\", { enumerable: true, get: function () { return publishBehavior_1.publishBehavior; } });\nvar publishLast_1 = require(\"../internal/operators/publishLast\");\nObject.defineProperty(exports, \"publishLast\", { enumerable: true, get: function () { return publishLast_1.publishLast; } });\nvar publishReplay_1 = require(\"../internal/operators/publishReplay\");\nObject.defineProperty(exports, \"publishReplay\", { enumerable: true, get: function () { return publishReplay_1.publishReplay; } });\nvar race_1 = require(\"../internal/operators/race\");\nObject.defineProperty(exports, \"race\", { enumerable: true, get: function () { return race_1.race; } });\nvar raceWith_1 = require(\"../internal/operators/raceWith\");\nObject.defineProperty(exports, \"raceWith\", { enumerable: true, get: function () { return raceWith_1.raceWith; } });\nvar reduce_1 = require(\"../internal/operators/reduce\");\nObject.defineProperty(exports, \"reduce\", { enumerable: true, get: function () { return reduce_1.reduce; } });\nvar repeat_1 = require(\"../internal/operators/repeat\");\nObject.defineProperty(exports, \"repeat\", { enumerable: true, get: function () { return repeat_1.repeat; } });\nvar repeatWhen_1 = require(\"../internal/operators/repeatWhen\");\nObject.defineProperty(exports, \"repeatWhen\", { enumerable: true, get: function () { return repeatWhen_1.repeatWhen; } });\nvar retry_1 = require(\"../internal/operators/retry\");\nObject.defineProperty(exports, \"retry\", { enumerable: true, get: function () { return retry_1.retry; } });\nvar retryWhen_1 = require(\"../internal/operators/retryWhen\");\nObject.defineProperty(exports, \"retryWhen\", { enumerable: true, get: function () { return retryWhen_1.retryWhen; } });\nvar refCount_1 = require(\"../internal/operators/refCount\");\nObject.defineProperty(exports, \"refCount\", { enumerable: true, get: function () { return refCount_1.refCount; } });\nvar sample_1 = require(\"../internal/operators/sample\");\nObject.defineProperty(exports, \"sample\", { enumerable: true, get: function () { return sample_1.sample; } });\nvar sampleTime_1 = require(\"../internal/operators/sampleTime\");\nObject.defineProperty(exports, \"sampleTime\", { enumerable: true, get: function () { return sampleTime_1.sampleTime; } });\nvar scan_1 = require(\"../internal/operators/scan\");\nObject.defineProperty(exports, \"scan\", { enumerable: true, get: function () { return scan_1.scan; } });\nvar sequenceEqual_1 = require(\"../internal/operators/sequenceEqual\");\nObject.defineProperty(exports, \"sequenceEqual\", { enumerable: true, get: function () { return sequenceEqual_1.sequenceEqual; } });\nvar share_1 = require(\"../internal/operators/share\");\nObject.defineProperty(exports, \"share\", { enumerable: true, get: function () { return share_1.share; } });\nvar shareReplay_1 = require(\"../internal/operators/shareReplay\");\nObject.defineProperty(exports, \"shareReplay\", { enumerable: true, get: function () { return shareReplay_1.shareReplay; } });\nvar single_1 = require(\"../internal/operators/single\");\nObject.defineProperty(exports, \"single\", { enumerable: true, get: function () { return single_1.single; } });\nvar skip_1 = require(\"../internal/operators/skip\");\nObject.defineProperty(exports, \"skip\", { enumerable: true, get: function () { return skip_1.skip; } });\nvar skipLast_1 = require(\"../internal/operators/skipLast\");\nObject.defineProperty(exports, \"skipLast\", { enumerable: true, get: function () { return skipLast_1.skipLast; } });\nvar skipUntil_1 = require(\"../internal/operators/skipUntil\");\nObject.defineProperty(exports, \"skipUntil\", { enumerable: true, get: function () { return skipUntil_1.skipUntil; } });\nvar skipWhile_1 = require(\"../internal/operators/skipWhile\");\nObject.defineProperty(exports, \"skipWhile\", { enumerable: true, get: function () { return skipWhile_1.skipWhile; } });\nvar startWith_1 = require(\"../internal/operators/startWith\");\nObject.defineProperty(exports, \"startWith\", { enumerable: true, get: function () { return startWith_1.startWith; } });\nvar subscribeOn_1 = require(\"../internal/operators/subscribeOn\");\nObject.defineProperty(exports, \"subscribeOn\", { enumerable: true, get: function () { return subscribeOn_1.subscribeOn; } });\nvar switchAll_1 = require(\"../internal/operators/switchAll\");\nObject.defineProperty(exports, \"switchAll\", { enumerable: true, get: function () { return switchAll_1.switchAll; } });\nvar switchMap_1 = require(\"../internal/operators/switchMap\");\nObject.defineProperty(exports, \"switchMap\", { enumerable: true, get: function () { return switchMap_1.switchMap; } });\nvar switchMapTo_1 = require(\"../internal/operators/switchMapTo\");\nObject.defineProperty(exports, \"switchMapTo\", { enumerable: true, get: function () { return switchMapTo_1.switchMapTo; } });\nvar switchScan_1 = require(\"../internal/operators/switchScan\");\nObject.defineProperty(exports, \"switchScan\", { enumerable: true, get: function () { return switchScan_1.switchScan; } });\nvar take_1 = require(\"../internal/operators/take\");\nObject.defineProperty(exports, \"take\", { enumerable: true, get: function () { return take_1.take; } });\nvar takeLast_1 = require(\"../internal/operators/takeLast\");\nObject.defineProperty(exports, \"takeLast\", { enumerable: true, get: function () { return takeLast_1.takeLast; } });\nvar takeUntil_1 = require(\"../internal/operators/takeUntil\");\nObject.defineProperty(exports, \"takeUntil\", { enumerable: true, get: function () { return takeUntil_1.takeUntil; } });\nvar takeWhile_1 = require(\"../internal/operators/takeWhile\");\nObject.defineProperty(exports, \"takeWhile\", { enumerable: true, get: function () { return takeWhile_1.takeWhile; } });\nvar tap_1 = require(\"../internal/operators/tap\");\nObject.defineProperty(exports, \"tap\", { enumerable: true, get: function () { return tap_1.tap; } });\nvar throttle_1 = require(\"../internal/operators/throttle\");\nObject.defineProperty(exports, \"throttle\", { enumerable: true, get: function () { return throttle_1.throttle; } });\nvar throttleTime_1 = require(\"../internal/operators/throttleTime\");\nObject.defineProperty(exports, \"throttleTime\", { enumerable: true, get: function () { return throttleTime_1.throttleTime; } });\nvar throwIfEmpty_1 = require(\"../internal/operators/throwIfEmpty\");\nObject.defineProperty(exports, \"throwIfEmpty\", { enumerable: true, get: function () { return throwIfEmpty_1.throwIfEmpty; } });\nvar timeInterval_1 = require(\"../internal/operators/timeInterval\");\nObject.defineProperty(exports, \"timeInterval\", { enumerable: true, get: function () { return timeInterval_1.timeInterval; } });\nvar timeout_1 = require(\"../internal/operators/timeout\");\nObject.defineProperty(exports, \"timeout\", { enumerable: true, get: function () { return timeout_1.timeout; } });\nvar timeoutWith_1 = require(\"../internal/operators/timeoutWith\");\nObject.defineProperty(exports, \"timeoutWith\", { enumerable: true, get: function () { return timeoutWith_1.timeoutWith; } });\nvar timestamp_1 = require(\"../internal/operators/timestamp\");\nObject.defineProperty(exports, \"timestamp\", { enumerable: true, get: function () { return timestamp_1.timestamp; } });\nvar toArray_1 = require(\"../internal/operators/toArray\");\nObject.defineProperty(exports, \"toArray\", { enumerable: true, get: function () { return toArray_1.toArray; } });\nvar window_1 = require(\"../internal/operators/window\");\nObject.defineProperty(exports, \"window\", { enumerable: true, get: function () { return window_1.window; } });\nvar windowCount_1 = require(\"../internal/operators/windowCount\");\nObject.defineProperty(exports, \"windowCount\", { enumerable: true, get: function () { return windowCount_1.windowCount; } });\nvar windowTime_1 = require(\"../internal/operators/windowTime\");\nObject.defineProperty(exports, \"windowTime\", { enumerable: true, get: function () { return windowTime_1.windowTime; } });\nvar windowToggle_1 = require(\"../internal/operators/windowToggle\");\nObject.defineProperty(exports, \"windowToggle\", { enumerable: true, get: function () { return windowToggle_1.windowToggle; } });\nvar windowWhen_1 = require(\"../internal/operators/windowWhen\");\nObject.defineProperty(exports, \"windowWhen\", { enumerable: true, get: function () { return windowWhen_1.windowWhen; } });\nvar withLatestFrom_1 = require(\"../internal/operators/withLatestFrom\");\nObject.defineProperty(exports, \"withLatestFrom\", { enumerable: true, get: function () { return withLatestFrom_1.withLatestFrom; } });\nvar zip_1 = require(\"../internal/operators/zip\");\nObject.defineProperty(exports, \"zip\", { enumerable: true, get: function () { return zip_1.zip; } });\nvar zipAll_1 = require(\"../internal/operators/zipAll\");\nObject.defineProperty(exports, \"zipAll\", { enumerable: true, get: function () { return zipAll_1.zipAll; } });\nvar zipWith_1 = require(\"../internal/operators/zipWith\");\nObject.defineProperty(exports, \"zipWith\", { enumerable: true, get: function () { return zipWith_1.zipWith; } });\n//# sourceMappingURL=index.js.map","import { filter } from 'rxjs';\n\nimport type { OperatorFunction } from 'rxjs';\n\n/**\n * RxJS operator that filters out `null` and `undefined` values with type narrowing.\n *\n * @example\n * ```ts\n * source$.pipe(filterNull()).subscribe(value => {\n * // value is guaranteed non-null\n * });\n * ```\n */\nexport function filterNull<T>(): OperatorFunction<T | null | undefined, T> {\n return filter((value): value is T => value != null);\n}\n","/**\n * Represents an on/off capability state\n * Both `on` and `off` can be true if the parent permission grants both\n */\nexport interface OnOffCapability {\n readonly on: boolean;\n readonly off: boolean;\n}\n\n/**\n * Member-level capabilities for self or other members\n */\nexport interface MemberCapabilities {\n readonly muteAudio: OnOffCapability;\n readonly muteVideo: OnOffCapability;\n readonly deaf: OnOffCapability;\n readonly raisehand: OnOffCapability;\n readonly microphoneVolume: boolean;\n readonly microphoneSensitivity: boolean;\n readonly speakerVolume: boolean;\n readonly position: boolean;\n readonly meta: boolean;\n readonly remove: boolean;\n readonly audioFlags: boolean;\n}\n\n/**\n * Call-level capabilities state\n */\nexport interface CallCapabilitiesState {\n readonly self: MemberCapabilities;\n readonly member: MemberCapabilities;\n readonly end: boolean;\n readonly setLayout: boolean;\n readonly sendDigit: boolean;\n readonly vmutedHide: OnOffCapability;\n readonly lock: OnOffCapability;\n readonly device: boolean;\n readonly screenshare: boolean;\n}\n\n/**\n * Default on/off state with no permissions\n */\nexport const DEFAULT_ON_OFF: OnOffCapability = {\n on: false,\n off: false\n};\n\n/**\n * Default member capabilities with no permissions\n */\nexport const DEFAULT_MEMBER_CAPABILITIES: MemberCapabilities = {\n muteAudio: DEFAULT_ON_OFF,\n muteVideo: DEFAULT_ON_OFF,\n deaf: DEFAULT_ON_OFF,\n raisehand: DEFAULT_ON_OFF,\n microphoneVolume: false,\n microphoneSensitivity: false,\n speakerVolume: false,\n position: false,\n meta: false,\n remove: false,\n audioFlags: false\n};\n\n/**\n * Default call capabilities with no permissions\n */\nexport const DEFAULT_CALL_CAPABILITIES: CallCapabilitiesState = {\n self: DEFAULT_MEMBER_CAPABILITIES,\n member: DEFAULT_MEMBER_CAPABILITIES,\n end: false,\n setLayout: false,\n sendDigit: false,\n vmutedHide: DEFAULT_ON_OFF,\n lock: DEFAULT_ON_OFF,\n device: false,\n screenshare: false\n};\n","import { DEFAULT_CALL_CAPABILITIES, DEFAULT_MEMBER_CAPABILITIES, DEFAULT_ON_OFF } from './types';\n\nimport type { CallCapabilitiesState, MemberCapabilities, OnOffCapability } from './types';\n\ntype MemberType = 'self' | 'member';\n\n/**\n * Computes an on/off capability state from filtered flags\n *\n * Logic:\n * - `on` is true if any flag does NOT end with `.off`\n * - `off` is true if any flag does NOT end with `.on`\n *\n * This means parent permissions (without .on/.off suffix) grant both on and off\n */\nfunction computeOnOffCapability(filteredFlags: string[]): OnOffCapability {\n if (filteredFlags.length === 0) {\n return DEFAULT_ON_OFF;\n }\n\n return {\n on: filteredFlags.some((flag) => !flag.endsWith('.off')),\n off: filteredFlags.some((flag) => !flag.endsWith('.on'))\n };\n}\n\n/**\n * Filters flags for a specific member capability with on/off support\n *\n * Matches:\n * - The member type itself (e.g., \"self\" grants all self capabilities)\n * - The parent capability (e.g., \"self.mute\" grants all mute capabilities)\n * - The specific capability and its on/off variants (e.g., \"self.mute.audio*\")\n */\nfunction filterMemberOnOffFlags(\n flags: string[],\n memberType: MemberType,\n parent: string,\n capability: string\n): string[] {\n return flags.filter(\n (flag) =>\n flag === memberType ||\n flag === `${memberType}.${parent}` ||\n flag.startsWith(`${memberType}.${parent}.${capability}`)\n );\n}\n\n/**\n * Checks if a boolean capability is granted\n *\n * Matches:\n * - The member type itself (e.g., \"self\" grants all self capabilities)\n * - The parent capability if provided (e.g., \"self.microphone\" grants volume and sensitivity)\n * - The specific capability (e.g., \"self.microphone.volume.set\")\n */\nfunction hasBooleanCapability(\n flags: string[],\n memberType: MemberType,\n parent: string | null,\n capability: string\n): boolean {\n return flags.some(\n (flag) =>\n flag === memberType ||\n (parent !== null && flag === `${memberType}.${parent}`) ||\n flag.startsWith(`${memberType}.${parent ? `${parent}.` : ''}${capability}`)\n );\n}\n\n/**\n * Computes member-level capabilities (self or member) from raw flags\n */\nfunction computeMemberCapabilities(flags: string[], memberType: MemberType): MemberCapabilities {\n // Filter only flags relevant to this member type\n const memberFlags = flags.filter((flag) => flag.startsWith(memberType) || flag === memberType);\n\n if (memberFlags.length === 0) {\n return DEFAULT_MEMBER_CAPABILITIES;\n }\n\n return {\n muteAudio: computeOnOffCapability(filterMemberOnOffFlags(flags, memberType, 'mute', 'audio')),\n muteVideo: computeOnOffCapability(filterMemberOnOffFlags(flags, memberType, 'mute', 'video')),\n deaf: computeOnOffCapability(\n flags.filter((flag) => flag === memberType || flag.startsWith(`${memberType}.deaf`))\n ),\n raisehand: computeOnOffCapability(\n flags.filter((flag) => flag === memberType || flag.startsWith(`${memberType}.raisehand`))\n ),\n microphoneVolume: hasBooleanCapability(flags, memberType, 'microphone', 'volume'),\n microphoneSensitivity: hasBooleanCapability(flags, memberType, 'microphone', 'sensitivity'),\n speakerVolume: hasBooleanCapability(flags, memberType, 'speaker', 'volume'),\n position: hasBooleanCapability(flags, memberType, null, 'position'),\n meta: hasBooleanCapability(flags, memberType, null, 'meta'),\n remove: hasBooleanCapability(flags, memberType, null, 'remove'),\n audioFlags: hasBooleanCapability(flags, memberType, null, 'audioflags')\n };\n}\n\n/**\n * Computes all call capabilities from raw capability strings\n *\n * This is a pure function that transforms the raw capability strings\n * from the `call.joined` event into a structured capabilities state.\n *\n * @param capabilities - Raw capability strings from the server\n * @returns Computed capabilities state\n */\nexport function computeCapabilities(capabilities: string[]): CallCapabilitiesState {\n if (capabilities.length === 0) {\n return DEFAULT_CALL_CAPABILITIES;\n }\n\n return {\n self: computeMemberCapabilities(capabilities, 'self'),\n member: computeMemberCapabilities(capabilities, 'member'),\n end: capabilities.some((cap) => cap === 'end'),\n setLayout: capabilities.some((cap) => cap.startsWith('layout')),\n sendDigit: capabilities.some((cap) => cap.startsWith('digit')),\n vmutedHide: computeOnOffCapability(capabilities.filter((flag) => flag.startsWith('vmuted'))),\n lock: computeOnOffCapability(capabilities.filter((flag) => flag.startsWith('lock'))),\n device: capabilities.some((cap) => cap === 'device'),\n screenshare: capabilities.some((cap) => cap === 'screenshare')\n };\n}\n","import { distinctUntilChanged, map } from 'rxjs';\n\nimport { computeCapabilities } from './computeCapabilities';\nimport { DEFAULT_CALL_CAPABILITIES } from './types';\nimport { Destroyable } from '../../behaviors/Destroyable';\n\nimport type { CallCapabilitiesState, MemberCapabilities, OnOffCapability } from './types';\nimport type { Observable } from 'rxjs';\n\n/**\n * SelfCapabilities manages the capability state for the self participant.\n *\n * Capabilities are received from the server via `call.joined` events and determine\n * what actions the current participant is allowed to perform.\n *\n * Each capability is exposed as both:\n * - An observable (e.g., `end$`) for reactive state management\n * - A synchronous getter (e.g., `end`) for immediate access\n *\n * Member-level capabilities are accessed via the grouped `self` / `member` accessors:\n * - `capabilities.self.muteAudio` (sync)\n * - `capabilities.self$` (observable)\n *\n * When a new `call.joined` event is received, the capabilities state is\n * completely replaced (not merged).\n */\nexport class SelfCapabilities extends Destroyable {\n private _state$ = this.createBehaviorSubject<CallCapabilitiesState>(DEFAULT_CALL_CAPABILITIES);\n\n /**\n * Updates the capabilities state from raw capability strings.\n * This completely replaces the current state.\n *\n * @param capabilities - Raw capability strings from the server\n * @internal\n */\n public updateFromRaw(capabilities: string[]): void {\n const newState = computeCapabilities(capabilities);\n this._state$.next(newState);\n }\n\n // ============================================\n // Self member capabilities\n // ============================================\n\n /** Observable for self member capabilities */\n public get self$(): Observable<MemberCapabilities> {\n return this._state$.pipe(\n map((state) => state.self),\n distinctUntilChanged()\n );\n }\n\n /** Current self member capabilities */\n public get self(): MemberCapabilities {\n return this._state$.value.self;\n }\n\n // ============================================\n // Member capabilities (other participants)\n // ============================================\n\n /** Observable for other member capabilities */\n public get member$(): Observable<MemberCapabilities> {\n return this._state$.pipe(\n map((state) => state.member),\n distinctUntilChanged()\n );\n }\n\n /** Current other member capabilities */\n public get member(): MemberCapabilities {\n return this._state$.value.member;\n }\n\n // ============================================\n // Call-level capabilities\n // ============================================\n\n /** Observable for end call capability */\n public get end$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.end),\n distinctUntilChanged()\n );\n }\n\n /** Current end call capability */\n public get end(): boolean {\n return this._state$.value.end;\n }\n\n /** Observable for set layout capability */\n public get setLayout$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.setLayout),\n distinctUntilChanged()\n );\n }\n\n /** Current set layout capability */\n public get setLayout(): boolean {\n return this._state$.value.setLayout;\n }\n\n /** Observable for send digit capability */\n public get sendDigit$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.sendDigit),\n distinctUntilChanged()\n );\n }\n\n /** Current send digit capability */\n public get sendDigit(): boolean {\n return this._state$.value.sendDigit;\n }\n\n /** Observable for vmuted hide capability */\n public get vmutedHide$(): Observable<OnOffCapability> {\n return this._state$.pipe(\n map((state) => state.vmutedHide),\n distinctUntilChanged()\n );\n }\n\n /** Current vmuted hide capability */\n public get vmutedHide(): OnOffCapability {\n return this._state$.value.vmutedHide;\n }\n\n /** Observable for lock capability */\n public get lock$(): Observable<OnOffCapability> {\n return this._state$.pipe(\n map((state) => state.lock),\n distinctUntilChanged()\n );\n }\n\n /** Current lock capability */\n public get lock(): OnOffCapability {\n return this._state$.value.lock;\n }\n\n /** Observable for device capability */\n public get device$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.device),\n distinctUntilChanged()\n );\n }\n\n /** Current device capability */\n public get device(): boolean {\n return this._state$.value.device;\n }\n\n /** Observable for screenshare capability */\n public get screenshare$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.screenshare),\n distinctUntilChanged()\n );\n }\n\n /** Current screenshare capability */\n public get screenshare(): boolean {\n return this._state$.value.screenshare;\n }\n\n // ============================================\n // Full state access\n // ============================================\n\n /** Observable for the full capabilities state */\n public get state$(): Observable<CallCapabilitiesState> {\n return this._state$.asObservable();\n }\n\n /** Current full capabilities state */\n public get state(): CallCapabilitiesState {\n return this._state$.value;\n }\n}\n","export function toggleDeafMethod(is: boolean): 'call.undeaf' | 'call.deaf' {\n return is ? 'call.undeaf' : 'call.deaf';\n}\n\nexport function toggleHandraiseMethod(is: boolean): 'call.lowerhand' | 'call.raisehand' {\n return is ? 'call.lowerhand' : 'call.raisehand';\n}\n","import { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { Destroyable } from '../../behaviors/Destroyable';\nimport { PreferencesContainer } from '../../containers/PreferencesContainer';\nimport { filterNull } from '../../operators/filterNull';\nimport { getLogger } from '../../utils/logger';\nimport { SelfCapabilities } from '../capabilities';\nimport { UnimplementedError } from '../errors';\nimport { toggleDeafMethod, toggleHandraiseMethod } from '../RPCMessages/utils';\n\nimport type { CallParticipant, CallSelfParticipant } from './types/call.types';\nimport type { SelectDeviceOptions } from './types/participant.types';\nimport type { DeviceController } from '../../interfaces/DeviceController';\nimport type { VertoManager } from '../../interfaces/VertoManager';\nimport type { ScreenShareStatus } from '../../managers/types/verto-manager.types';\nimport type { JSONRPCResponse } from '../RPCMessages/types/base';\nimport type { Member, LayoutLayer } from '../RPCMessages/types/common';\nimport type { VideoPosition } from '../types/call.types';\nimport type { MediaOptions } from '../types/media.types';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\n/**\n * Callback type for executing call methods\n * Injected to avoid circular dependency with Call class\n */\nexport type ExecuteMethod = <T extends JSONRPCResponse = JSONRPCResponse>(\n target: string,\n method: string,\n args: Record<string, unknown>\n) => Promise<T>;\n\ntype ParticipantState = Member & { position: LayoutLayer };\n\nconst initialState: Partial<ParticipantState> = {};\n\n/**\n * Represents a participant in a call.\n *\n * Provides observable state (audio/video mute, hand raise, volume, etc.)\n * and control methods for the participant. See {@link SelfParticipant} for\n * the local participant with additional device control.\n */\nexport class Participant extends Destroyable implements CallParticipant {\n /** Unique member ID of this participant. */\n public readonly id!: string;\n private _state$ = this.createBehaviorSubject<Partial<ParticipantState>>(initialState);\n constructor(\n id: string,\n protected executeMethod: ExecuteMethod,\n protected deviceController: DeviceController\n ) {\n super();\n this.id = id;\n }\n /** @internal */\n public upnext(data: Partial<ParticipantState>): void {\n this._state$.next({ ...this._state$.value, ...data });\n }\n\n /** Observable of the participant's display name. */\n public get name$(): Observable<string> {\n return this._state$.pipe(\n map((state) => state.name),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the participant type (e.g. `'member'`, `'screen'`). */\n public get type$(): Observable<string> {\n return this._state$.pipe(\n map((state) => state.type),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant has raised their hand. */\n public get handraised$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.handraised),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant is visible in the layout. */\n public get visible$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.visible),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant's audio is muted. */\n public get audioMuted$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.audio_muted),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant's video is muted. */\n public get videoMuted$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.video_muted),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant is deafened. */\n public get deaf$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.deaf),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the participant's microphone input volume. */\n public get inputVolume$(): Observable<number> {\n return this._state$.pipe(\n map((state) => state.input_volume),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the participant's speaker output volume. */\n public get outputVolume$(): Observable<number> {\n return this._state$.pipe(\n map((state) => state.output_volume),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the microphone input sensitivity level. */\n public get inputSensitivity$(): Observable<number> {\n return this._state$.pipe(\n map((state) => state.input_sensitivity),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether echo cancellation is enabled. */\n public get echoCancellation$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.echo_cancellation),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether auto-gain control is enabled. */\n public get autoGain$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.auto_gain),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether noise suppression is enabled. */\n public get noiseSuppression$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.noise_suppression),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether low-bitrate mode is active. */\n public get lowbitrate$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.lowbitrate),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether noise reduction is active. */\n public get denoise$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.denoise),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of custom metadata for this participant. */\n public get meta$(): Observable<Record<string, unknown>> {\n return this._state$.pipe(\n map((state) => state.meta),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the participant's subscriber ID. */\n public get subscriberId$(): Observable<string> {\n return this._state$.pipe(\n map((state) => state.subscriber_id),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the participant's address ID. */\n public get addressId$(): Observable<string> {\n return this._state$.pipe(\n map((state) => state.address_id),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable of the server node ID for this participant. */\n public get nodeId$(): Observable<string> {\n return this._state$.pipe(\n map((state) => state.node_id),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Observable indicating whether the participant is currently speaking. */\n public get isTalking$(): Observable<boolean> {\n return this._state$.pipe(\n map((state) => state.talking),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Whether the participant is currently speaking. */\n public get isTalking(): boolean {\n return this._state$.value.talking ?? false;\n }\n\n /** Observable of the participant's layout position. */\n public get position$(): Observable<LayoutLayer | undefined> {\n return this._state$.pipe(\n map((state) => state.position),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n /** Current layout position. */\n public get position(): LayoutLayer | undefined {\n return this._state$.value.position;\n }\n\n /** Whether the participant is an audience member (view-only). */\n public get isAudience(): boolean {\n return this._state$.value.isAudience ?? false;\n }\n\n /** Display name of this participant. */\n public get name(): string | undefined {\n return this._state$.value.name;\n }\n\n /** Participant type (e.g. `'member'`, `'screen'`). */\n public get type(): string | undefined {\n return this._state$.value.type;\n }\n\n public get handraised(): boolean {\n return this._state$.value.handraised ?? false;\n }\n\n public get visible(): boolean {\n return this._state$.value.visible ?? false;\n }\n\n public get audioMuted(): boolean {\n return this._state$.value.audio_muted ?? false;\n }\n\n public get videoMuted(): boolean {\n return this._state$.value.video_muted ?? false;\n }\n\n public get deaf(): boolean {\n return this._state$.value.deaf ?? false;\n }\n\n public get inputVolume(): number | undefined {\n return this._state$.value.input_volume;\n }\n\n public get outputVolume(): number | undefined {\n return this._state$.value.output_volume;\n }\n\n public get inputSensitivity(): number | undefined {\n return this._state$.value.input_sensitivity;\n }\n\n public get echoCancellation(): boolean {\n return this._state$.value.echo_cancellation ?? false;\n }\n\n public get autoGain(): boolean {\n return this._state$.value.auto_gain ?? false;\n }\n\n public get noiseSuppression(): boolean {\n return this._state$.value.noise_suppression ?? false;\n }\n\n public get lowbitrate(): boolean {\n return this._state$.value.lowbitrate ?? false;\n }\n\n public get denoise(): boolean {\n return this._state$.value.denoise ?? false;\n }\n\n public get meta(): Record<string, unknown> | undefined {\n return this._state$.value.meta;\n }\n\n public get subscriberId(): string | undefined {\n return this._state$.value.subscriber_id;\n }\n\n public get addressId(): string | undefined {\n return this._state$.value.address_id;\n }\n\n public get nodeId(): string | undefined {\n return this._state$.value.node_id;\n }\n\n /** @internal */\n public get value(): Partial<Member> {\n return this._state$.value;\n }\n\n /** Toggles the deafened state (mutes/unmutes incoming audio). */\n public async toggleDeaf(): Promise<void> {\n const method = toggleDeafMethod(this.deaf);\n const params = {};\n await this.executeMethod(this.id, method, params);\n }\n\n /** Toggles the hand-raised state. */\n public async toggleHandraise(): Promise<void> {\n await this.executeMethod(this.id, toggleHandraiseMethod(this.handraised), {});\n }\n\n /** Mutes the participant's audio. */\n public async mute(): Promise<void> {\n await this.executeMethod(this.id, 'call.mute', { channels: ['audio'] });\n }\n\n /** Unmutes the participant's audio. */\n public async unmute(): Promise<void> {\n await this.executeMethod(this.id, 'call.unmute', { channels: ['audio'] });\n }\n\n /** Toggles the participant's audio mute state. */\n public async toggleMute(): Promise<void> {\n return this.audioMuted ? this.unmute() : this.mute();\n }\n\n /** Mutes the participant's video. */\n public async muteVideo(): Promise<void> {\n await this.executeMethod(this.id, 'call.mute', { channels: ['video'] });\n }\n\n /** Unmutes the participant's video. */\n public async unmuteVideo(): Promise<void> {\n await this.executeMethod(this.id, 'call.unmute', { channels: ['video'] });\n }\n\n /** Toggles the participant's video mute state. */\n public async toggleMuteVideo(): Promise<void> {\n return this.videoMuted ? this.unmuteVideo() : this.muteVideo();\n }\n\n /** Toggles echo cancellation on the audio input. */\n public async toggleEchoCancellation(): Promise<void> {\n await this.executeMethod(this.id, 'call.audioflags.set', {\n echo_cancellation: !this.echoCancellation,\n auto_gain: this.autoGain,\n noise_suppression: this.noiseSuppression\n });\n }\n\n /** Toggles automatic gain control on the audio input. */\n public async toggleAudioInputAutoGain(): Promise<void> {\n await this.executeMethod(this.id, 'call.audioflags.set', {\n echo_cancellation: this.echoCancellation,\n auto_gain: !this.autoGain,\n noise_suppression: this.noiseSuppression\n });\n }\n\n /** Toggles noise suppression on the audio input. */\n public async toggleNoiseSuppression(): Promise<void> {\n await this.executeMethod(this.id, 'call.audioflags.set', {\n echo_cancellation: this.echoCancellation,\n auto_gain: this.autoGain,\n noise_suppression: !this.noiseSuppression\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async toggleLowbitrate(): Promise<void> {\n // NEEDS check backend implementation\n throw new UnimplementedError();\n }\n\n /** Sets the microphone input sensitivity level. */\n public async setAudioInputSensitivity(value: number): Promise<void> {\n await this.executeMethod(this.id, 'call.microphone.sensitivity.set', {\n sensitivity: value\n });\n }\n\n /** Sets the microphone input volume level. */\n public async setAudioInputVolume(value: number): Promise<void> {\n await this.executeMethod(this.id, 'call.microphone.volume.set', {\n volume: value\n });\n }\n\n /** Sets the speaker output volume level. */\n public async setAudioOutputVolume(value: number): Promise<void> {\n await this.executeMethod(this.id, 'call.speaker.volume.set', {\n volume: value\n });\n }\n\n /** Sets the participant's position in the video layout. */\n public async setPosition(value: VideoPosition): Promise<void> {\n await this.executeMethod(this.id, 'call.member.position.set', {\n position: value\n });\n }\n\n /** Removes this participant from the call. */\n public async remove(): Promise<void> {\n await this.executeMethod(this.id, 'call.member.remove', {});\n }\n\n /** Ends the call for this participant. */\n public async end(): Promise<void> {\n await this.executeMethod(this.id, 'call.end', {});\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async setMeta(_meta: Record<string, unknown>): Promise<void> {\n // NEEDS backend implementation\n throw new UnimplementedError();\n }\n // eslint-disable-next-line @typescript-eslint/require-await\n public async updateMeta(_meta: Record<string, unknown>): Promise<void> {\n // NEEDS backend implementation\n throw new UnimplementedError();\n }\n\n public destroy(): void {\n // Cleanup callback reference - intentionally breaking type safety for cleanup\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n this.executeMethod = undefined as any;\n super.destroy();\n }\n}\n\n/**\n * The local participant in a call, with additional device and media control.\n *\n * Extends {@link Participant} with screen sharing, device selection,\n * and local media stream management.\n */\nexport class SelfParticipant extends Participant implements CallSelfParticipant {\n /**\n * Capabilities for this participant.\n * Contains all capability flags as both observables and values.\n */\n public readonly capabilities: SelfCapabilities;\n\n constructor(\n id: string,\n executeMethod: ExecuteMethod,\n private vertoManager: VertoManager,\n deviceController: DeviceController\n ) {\n super(id, executeMethod, deviceController);\n this.capabilities = new SelfCapabilities();\n }\n\n public override destroy(): void {\n this.capabilities.destroy();\n super.destroy();\n }\n\n /** Starts sharing the local screen. */\n public async startScreenShare(): Promise<void> {\n try {\n await this.vertoManager.addScreenMedia();\n } catch (error) {\n logger.error('[Participant.startScreenShare] Screen share error:', error);\n }\n }\n\n /** Observable of the current screen share status. */\n public get screenShareStatus$(): Observable<ScreenShareStatus> {\n return this.vertoManager.screenShareStatus$;\n }\n\n /** Current screen share status. */\n public get screenShareStatus(): ScreenShareStatus {\n return this.vertoManager.screenShareStatus;\n }\n\n /** Stops the current screen share. */\n public async stopScreenShare(): Promise<void> {\n return this.vertoManager.removeScreenMedia();\n }\n\n /** Adds an additional media input device to the call. */\n public async addAdditionalDevice(options: MediaOptions): Promise<void> {\n try {\n await this.vertoManager.addInputDevice(options);\n } catch (error) {\n logger.error('[Participant.startScreenShare] Screen share error:', error);\n }\n }\n\n /** Removes an additional media input device by ID. */\n public async removeAdditionalDevice(id: string): Promise<void> {\n return this.vertoManager.removeInputDevices(id);\n }\n\n /** Adds or replaces the primary audio input device with optional constraints or stream. */\n public async addAudioInputDevice({\n constraints,\n stream\n }: {\n constraints?: MediaTrackConstraints;\n stream?: MediaStream;\n } = {}): Promise<void> {\n const audio = (constraints ?? stream) ? undefined : true;\n return this.vertoManager.addMainInputDevices({\n audio,\n inputAudioDeviceConstraints: constraints,\n inputAudioStream: stream\n });\n }\n\n /** Adds or replaces the primary video input device with optional constraints or stream. */\n public async addVideoInputDevice({\n constraints,\n stream\n }: {\n constraints?: MediaTrackConstraints;\n stream?: MediaStream;\n } = {}): Promise<void> {\n const video = (constraints ?? stream) ? undefined : true;\n return this.vertoManager.addMainInputDevices({\n video,\n inputVideoDeviceConstraints: constraints,\n inputVideoStream: stream\n });\n }\n\n /** Adds or replaces primary input devices (audio and/or video). */\n public async addInputDevices(options: MediaOptions = {}): Promise<void> {\n await this.vertoManager.addMainInputDevices(options);\n }\n\n /** Selects the audio input device for future calls. Optionally saves as a preference. */\n public selectAudioInputDevice(device: MediaDeviceInfo, options: SelectDeviceOptions = {}): void {\n this.deviceController.selectAudioInputDevice(device);\n if (options.savePreference) {\n PreferencesContainer.instance.preferredAudioInput = device;\n }\n }\n\n /** Updates the audio input track constraints for the active call. */\n public async setAudioInputDeviceConstraints(constraints: MediaTrackConstraints): Promise<void> {\n await this.vertoManager.updateMediaConstraints({ audio: constraints });\n }\n\n /** Updates both audio and video input track constraints for the active call. */\n public async setInputDevicesConstraints(constraints: {\n audio: MediaTrackConstraints;\n video: MediaTrackConstraints;\n }): Promise<void> {\n await this.vertoManager.updateMediaConstraints(constraints);\n }\n\n /** Selects the video input device for future calls. Optionally saves as a preference. */\n public selectVideoInputDevice(device: MediaDeviceInfo, options: SelectDeviceOptions = {}): void {\n this.deviceController.selectVideoInputDevice(device);\n if (options.savePreference) {\n PreferencesContainer.instance.preferredVideoInput = device;\n }\n }\n\n /** Updates the video input track constraints for the active call. */\n public async setVideoInputDeviceConstraints(constraints: MediaTrackConstraints): Promise<void> {\n await this.vertoManager.updateMediaConstraints({ video: constraints });\n }\n\n /** Selects the audio output device. Optionally saves as a preference. */\n public selectAudioOutputDevice(device: MediaDeviceInfo, options: SelectDeviceOptions = {}): void {\n this.deviceController.selectAudioOutputDevice(device);\n if (options.savePreference) {\n PreferencesContainer.instance.preferredAudioOutput = device;\n }\n }\n\n public async mute(): Promise<void> {\n try {\n await super.mute();\n } catch (error) {\n logger.warn(\n '[Participant.toggleAudioInput] Server Error while muting audio input, proceeding with local toggle anyway',\n error\n );\n } finally {\n this.vertoManager.muteMainAudioInputDevice();\n }\n }\n\n public async unmute(): Promise<void> {\n try {\n await super.unmute();\n } catch (error) {\n logger.warn(\n '[Participant.toggleAudioInput] Server Error while unmuting audio input, proceeding with local toggle anyway',\n error\n );\n } finally {\n await this.vertoManager.unmuteMainAudioInputDevice();\n }\n }\n\n public async muteVideo(): Promise<void> {\n try {\n await super.muteVideo();\n } catch (error) {\n logger.warn(\n '[Participant.toggleVideoInput] Server Error while muting video input, proceeding with local toggle anyway',\n error\n );\n } finally {\n this.vertoManager.muteMainVideoInputDevice();\n }\n }\n\n public async unmuteVideo(): Promise<void> {\n try {\n await super.unmuteVideo();\n } catch (error) {\n logger.warn(\n '[Participant.toggleVideoInput] Server Error while unmuting video input, proceeding with local toggle anyway',\n error\n );\n } finally {\n await this.vertoManager.unmuteMainVideoInputDevice();\n }\n }\n}\n\n/** Type guard that checks if a participant is the local {@link SelfParticipant}. */\nexport const isSelfParticipant = (participant: Participant): participant is SelfParticipant => {\n return participant instanceof SelfParticipant;\n};\n","// =============================================================================\n// BASE TYPE GUARDS\n// =============================================================================\n// This file contains type guards for base JSON-RPC types.\n\nimport type { JSONRPCRequest, JSONRPCResponse } from '../types/base';\n\n// =============================================================================\n// TYPE GUARD HELPERS\n// =============================================================================\n\nexport function isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function hasProperty<T extends object, K extends string>(\n obj: T,\n key: K\n): obj is T & Record<K, unknown> {\n return key in obj;\n}\n\nexport function hasStringProperty<T extends object, K extends string>(\n obj: T,\n key: K\n): obj is T & Record<K, string> {\n return key in obj && typeof (obj as Record<string, unknown>)[key] === 'string';\n}\n\n// =============================================================================\n// BASE TYPE GUARDS\n// =============================================================================\n\nexport function isJSONRPCRequest(value: unknown): value is JSONRPCRequest {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'id') &&\n typeof value.id === 'string' &&\n hasProperty(value, 'method') &&\n typeof value.method === 'string'\n );\n}\n\nexport function isJSONRPCResponse(value: unknown): value is JSONRPCResponse {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'id') &&\n typeof value.id === 'string' &&\n hasProperty(value, 'result')\n );\n}\n","// =============================================================================\n// SIGNALWIRE EVENT TYPE GUARDS\n// =============================================================================\n// This file contains type guards for SignalWire event types.\n\nimport { hasProperty, isJSONRPCRequest, isObject } from './base.guards';\n\nimport type { TypeGuard, ExtractParams } from '../types/base';\nimport type {\n CallConnectPayload,\n CallJoinedPayload,\n CallJoinedRequest,\n CallLeftPayload,\n CallLeftRequest,\n CallPlayPayload,\n CallPlayRequest,\n CallStatePayload,\n CallStateRequest,\n CallUpdatedPayload,\n CallUpdatedRequest,\n CallConnectRequest,\n ConversationMessagePayload,\n ConversationMessageRequest,\n ConversationMessageUpdatedPayload,\n ConversationMessageUpdatedRequest,\n LayoutChangedPayload,\n LayoutChangedRequest,\n MemberJoinedPayload,\n MemberJoinedRequest,\n MemberLeftPayload,\n MemberLeftRequest,\n MemberTalkingPayload,\n MemberTalkingRequest,\n MemberUpdatedPayload,\n MemberUpdatedRequest,\n SignalwireAuthorizationStatePayload,\n SignalwireAuthorizationStateRequest,\n SignalwireCallMetadata,\n SignalwireCallRequest,\n SignalwireEventRequestBase,\n SignalwireMetadata,\n SignalwireRequest,\n WebrtcMessagePayload,\n WebrtcMessageRequest\n} from '../types/events';\n\n// =============================================================================\n// TYPE GUARD FACTORY SYSTEM\n// =============================================================================\n\n/**\n * Registry of all SignalWire event types.\n * This is the single source of truth for event type strings.\n */\n// eslint-disable-next-line unused-imports/no-unused-vars\nconst EVENT_TYPE_REGISTRY = {\n 'signalwire.authorization.state': true,\n 'webrtc.message': true,\n 'call.joined': true,\n 'call.left': true,\n 'call.updated': true,\n 'call.state': true,\n 'call.play': true,\n 'call.connect': true,\n 'member.updated': true,\n 'member.joined': true,\n 'member.left': true,\n 'member.talking': true,\n 'layout.changed': true,\n 'conversation.message': true,\n 'conversation.message.updated': true\n} as const;\n\nexport type RegisteredEventType = keyof typeof EVENT_TYPE_REGISTRY;\n\n/**\n * Factory function to create Request-level type guards.\n */\nexport function createEventRequestGuard<T extends SignalwireEventRequestBase>(\n eventType: RegisteredEventType\n): TypeGuard<T> {\n return (value: unknown): value is T =>\n isSignalwireRequest(value) && value.params.event_type === eventType;\n}\n\n/**\n * Factory function to create Metadata-level type guards.\n */\nexport function createEventMetadataGuard<T extends SignalwireMetadata>(\n eventType: RegisteredEventType\n): TypeGuard<T> {\n return (value: unknown): value is T =>\n isSignalwireMetadata(value) && value.event_type === eventType;\n}\n\n// =============================================================================\n// SIGNALWIRE EVENT TYPE GUARDS\n// =============================================================================\n\nexport function isSignalwireRequest(value: unknown): value is SignalwireRequest {\n return (\n isJSONRPCRequest(value) &&\n value.method === 'signalwire.event' &&\n isObject(value.params) &&\n hasProperty(value.params, 'event_type')\n );\n}\n\nexport function isSignalwireCallRequest(value: unknown): value is SignalwireCallRequest {\n return (\n isSignalwireRequest(value) &&\n (isCallJoinedRequest(value) ||\n isCallLeftRequest(value) ||\n isCallUpdatedRequest(value) ||\n isCallStateRequest(value) ||\n isCallPlayRequest(value) ||\n isCallConnectRequest(value) ||\n isMemberUpdatedRequest(value) ||\n isMemberJoinedRequest(value) ||\n isMemberLeftRequest(value) ||\n isMemberTalkingRequest(value) ||\n isLayoutChangedRequest(value) ||\n isWebrtcMessageRequest(value) ||\n isConversationMessageRequest(value) ||\n isConversationMessageUpdatedRequest(value))\n );\n}\n\n// Generated Request guards using factory pattern\nexport const isSignalwireAuthorizationStateRequest =\n createEventRequestGuard<SignalwireAuthorizationStateRequest>('signalwire.authorization.state');\n\nexport const isWebrtcMessageRequest =\n createEventRequestGuard<WebrtcMessageRequest>('webrtc.message');\n\nexport const isCallJoinedRequest = createEventRequestGuard<CallJoinedRequest>('call.joined');\n\nexport const isCallLeftRequest = createEventRequestGuard<CallLeftRequest>('call.left');\n\nexport const isCallUpdatedRequest = createEventRequestGuard<CallUpdatedRequest>('call.updated');\n\nexport const isCallStateRequest = createEventRequestGuard<CallStateRequest>('call.state');\n\nexport const isCallPlayRequest = createEventRequestGuard<CallPlayRequest>('call.play');\n\nexport const isCallConnectRequest = createEventRequestGuard<CallConnectRequest>('call.connect');\n\nexport const isMemberUpdatedRequest =\n createEventRequestGuard<MemberUpdatedRequest>('member.updated');\n\nexport const isMemberJoinedRequest = createEventRequestGuard<MemberJoinedRequest>('member.joined');\n\nexport const isMemberLeftRequest = createEventRequestGuard<MemberLeftRequest>('member.left');\n\nexport const isMemberTalkingRequest =\n createEventRequestGuard<MemberTalkingRequest>('member.talking');\n\nexport const isLayoutChangedRequest =\n createEventRequestGuard<LayoutChangedRequest>('layout.changed');\n\nexport const isConversationMessageRequest =\n createEventRequestGuard<ConversationMessageRequest>('conversation.message');\n\nexport const isConversationMessageUpdatedRequest =\n createEventRequestGuard<ConversationMessageUpdatedRequest>('conversation.message.updated');\n\n// =============================================================================\n// SIGNALWIRE EVENT METADATA TYPE GUARDS (outer wrapper with event_type)\n// =============================================================================\n\nexport function isSignalwireMetadata(value: unknown): value is SignalwireMetadata {\n return (\n isObject(value) &&\n hasProperty(value, 'event_type') &&\n typeof value.event_type === 'string' &&\n hasProperty(value, 'params')\n );\n}\n\nexport function isSignalwireCallMetadata(value: unknown): value is SignalwireCallMetadata {\n return (\n isSignalwireMetadata(value) &&\n (isCallJoinedMetadata(value) ||\n isCallLeftMetadata(value) ||\n isCallUpdatedMetadata(value) ||\n isCallStateMetadata(value) ||\n isCallPlayMetadata(value) ||\n isCallConnectMetadata(value) ||\n isMemberUpdatedMetadata(value) ||\n isMemberJoinedMetadata(value) ||\n isMemberLeftMetadata(value) ||\n isMemberTalkingMetadata(value) ||\n isLayoutChangedMetadata(value) ||\n isWebrtcMessageMetadata(value) ||\n isConversationMessageMetadata(value) ||\n isConversationMessageUpdatedMetadata(value))\n );\n}\n\n// Generated Metadata guards using factory pattern\nexport const isSignalwireAuthorizationStateMetadata = createEventMetadataGuard<\n ExtractParams<SignalwireAuthorizationStateRequest>\n>('signalwire.authorization.state');\n\nexport const isWebrtcMessageMetadata =\n createEventMetadataGuard<ExtractParams<WebrtcMessageRequest>>('webrtc.message');\n\nexport const isCallJoinedMetadata =\n createEventMetadataGuard<ExtractParams<CallJoinedRequest>>('call.joined');\n\nexport const isCallLeftMetadata =\n createEventMetadataGuard<ExtractParams<CallLeftRequest>>('call.left');\n\nexport const isCallUpdatedMetadata =\n createEventMetadataGuard<ExtractParams<CallUpdatedRequest>>('call.updated');\n\nexport const isCallStateMetadata =\n createEventMetadataGuard<ExtractParams<CallStateRequest>>('call.state');\n\nexport const isCallPlayMetadata =\n createEventMetadataGuard<ExtractParams<CallPlayRequest>>('call.play');\n\nexport const isCallConnectMetadata =\n createEventMetadataGuard<ExtractParams<CallConnectRequest>>('call.connect');\n\nexport const isMemberUpdatedMetadata =\n createEventMetadataGuard<ExtractParams<MemberUpdatedRequest>>('member.updated');\n\nexport const isMemberJoinedMetadata =\n createEventMetadataGuard<ExtractParams<MemberJoinedRequest>>('member.joined');\n\nexport const isMemberLeftMetadata =\n createEventMetadataGuard<ExtractParams<MemberLeftRequest>>('member.left');\n\nexport const isMemberTalkingMetadata =\n createEventMetadataGuard<ExtractParams<MemberTalkingRequest>>('member.talking');\n\nexport const isLayoutChangedMetadata =\n createEventMetadataGuard<ExtractParams<LayoutChangedRequest>>('layout.changed');\n\nexport const isConversationMessageMetadata =\n createEventMetadataGuard<ExtractParams<ConversationMessageRequest>>('conversation.message');\n\nexport const isConversationMessageUpdatedMetadata = createEventMetadataGuard<\n ExtractParams<ConversationMessageUpdatedRequest>\n>('conversation.message.updated');\n\n// =============================================================================\n// EVENT PAYLOAD TYPE GUARDS\n// =============================================================================\n\nexport function isSignalwireAuthorizationStatePayload(\n value: unknown\n): value is SignalwireAuthorizationStatePayload {\n return isObject(value) && hasProperty(value, 'authorization_state');\n}\n\nexport function isCallJoinedPayload(value: unknown): value is CallJoinedPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'room_session') &&\n hasProperty(value, 'call_id') &&\n hasProperty(value, 'member_id') &&\n hasProperty(value, 'capabilities')\n );\n}\n\nexport function isCallLeftPayload(value: unknown): value is CallLeftPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'room_session') &&\n hasProperty(value, 'call_id') &&\n hasProperty(value, 'reason')\n );\n}\n\nexport function isMemberUpdatedPayload(value: unknown): value is MemberUpdatedPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'member') &&\n hasProperty(value, 'room_id') &&\n hasProperty(value, 'room_session_id') &&\n !hasProperty(value, 'reason') &&\n !hasProperty((value as MemberUpdatedPayload).member, 'talking')\n );\n}\n\nexport function isMemberJoinedPayload(value: unknown): value is MemberJoinedPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'member') &&\n hasProperty(value, 'room_id') &&\n !hasProperty(value, 'reason')\n );\n}\n\nexport function isMemberLeftPayload(value: unknown): value is MemberLeftPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'member') &&\n hasProperty(value, 'room_id') &&\n hasProperty(value, 'reason')\n );\n}\n\nexport function isMemberTalkingPayload(value: unknown): value is MemberTalkingPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'member') &&\n hasProperty(value, 'room_id') &&\n hasProperty(value, 'room_session_id') &&\n !hasProperty(value, 'reason') &&\n hasProperty((value as MemberTalkingPayload).member, 'talking')\n );\n}\n\nexport function isLayoutChangedPayload(value: unknown): value is LayoutChangedPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'room_id') &&\n hasProperty(value, 'room_session_id') &&\n hasProperty(value, 'layout')\n );\n}\n\nexport function isCallUpdatedPayload(value: unknown): value is CallUpdatedPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'room_session') &&\n hasProperty(value, 'room_id') &&\n hasProperty(value, 'room_session_id')\n );\n}\n\nexport function isCallStatePayload(value: unknown): value is CallStatePayload {\n return (\n isObject(value) &&\n hasProperty(value, 'call_id') &&\n hasProperty(value, 'call_state') &&\n hasProperty(value, 'direction')\n );\n}\n\nexport function isCallPlayPayload(value: unknown): value is CallPlayPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'control_id') &&\n hasProperty(value, 'call_id') &&\n hasProperty(value, 'state')\n );\n}\n\nexport function isCallConnectPayload(value: unknown): value is CallConnectPayload {\n return (\n isObject(value) &&\n hasProperty(value, 'connect_state') &&\n hasProperty(value, 'call_id') &&\n hasProperty(value, 'segment_id')\n );\n}\n\nexport function isConversationMessagePayload(value: unknown): value is ConversationMessagePayload {\n return (\n isObject(value) &&\n hasProperty(value, 'id') &&\n hasProperty(value, 'type') &&\n hasProperty(value, 'kind') &&\n hasProperty(value, 'conversation_name')\n );\n}\n\nexport function isConversationMessageUpdatedPayload(\n value: unknown\n): value is ConversationMessageUpdatedPayload {\n return isConversationMessagePayload(value);\n}\n\nexport function isWebrtcMessageEventInnerParams(value: unknown): value is WebrtcMessagePayload {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'id') &&\n hasProperty(value, 'method') &&\n typeof value.method === 'string'\n );\n}\n\n// =============================================================================\n// EVENT TYPE MAPPING\n// =============================================================================\n\nexport const EventTypeMap = {\n 'signalwire.authorization.state': isSignalwireAuthorizationStateRequest,\n 'webrtc.message': isWebrtcMessageRequest,\n 'call.joined': isCallJoinedRequest,\n 'call.left': isCallLeftRequest,\n 'call.updated': isCallUpdatedRequest,\n 'call.state': isCallStateRequest,\n 'call.play': isCallPlayRequest,\n 'call.connect': isCallConnectRequest,\n 'member.updated': isMemberUpdatedRequest,\n 'member.joined': isMemberJoinedRequest,\n 'member.left': isMemberLeftRequest,\n 'member.talking': isMemberTalkingRequest,\n 'layout.changed': isLayoutChangedRequest,\n 'conversation.message': isConversationMessageRequest,\n 'conversation.message.updated': isConversationMessageUpdatedRequest\n} as const;\n\nexport type EventType = keyof typeof EventTypeMap;\n\n/**\n * Gets the appropriate type guard for an event type.\n */\nexport function getEventGuard(eventType: string): TypeGuard<SignalwireRequest> | undefined {\n return EventTypeMap[eventType as EventType];\n}\n\n// =============================================================================\n// EVENT METADATA TYPE MAPPING\n// =============================================================================\n\nexport const EventMetadataTypeMap = {\n 'signalwire.authorization.state': isSignalwireAuthorizationStateMetadata,\n 'webrtc.message': isWebrtcMessageMetadata,\n 'call.joined': isCallJoinedMetadata,\n 'call.left': isCallLeftMetadata,\n 'call.updated': isCallUpdatedMetadata,\n 'call.state': isCallStateMetadata,\n 'call.play': isCallPlayMetadata,\n 'call.connect': isCallConnectMetadata,\n 'member.updated': isMemberUpdatedMetadata,\n 'member.joined': isMemberJoinedMetadata,\n 'member.left': isMemberLeftMetadata,\n 'member.talking': isMemberTalkingMetadata,\n 'layout.changed': isLayoutChangedMetadata,\n 'conversation.message': isConversationMessageMetadata,\n 'conversation.message.updated': isConversationMessageUpdatedMetadata\n} as const;\n\n/**\n * Gets the appropriate metadata type guard for an event type.\n */\nexport function getEventMetadataGuard(\n eventType: string\n): TypeGuard<SignalwireMetadata> | undefined {\n return EventMetadataTypeMap[eventType as EventType];\n}\n","export const getValueFrom = <T = unknown>(\n obj: unknown,\n path: string,\n defaultValue?: T\n): T | undefined => {\n const keys = path.split('.');\n let result = obj;\n for (const key of keys) {\n if (result && typeof result === 'object' && key in result) {\n result = (result as Record<string, unknown>)[key];\n } else {\n return defaultValue;\n }\n }\n return (result === undefined ? defaultValue : result) as T;\n};\n","import { pipe } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { getValueFrom } from '../utils/getValueFrom';\n\nimport type { OperatorFunction } from 'rxjs';\n\n/**\n * Type helper to extract nested property types using dot notation.\n * Supports up to 4 levels of nesting.\n *\n * @example\n * type Example = { a: { b: { c: string } } }\n * type Result = PathValue<Example, 'a.b.c'> // string\n */\ntype PathValue<T, P extends string> = P extends `${infer Key}.${infer Rest}`\n ? Key extends keyof T\n ? PathValue<T[Key], Rest>\n : never\n : P extends keyof T\n ? T[P]\n : never;\n\n// Usage:\n// source$.pipe(\n// isEvent(\n// (event) => event.type === 'call.started',\n// (event) => ({ id: event.id, timestamp: event.timestamp })\n// )\n// );\n\n/**\n * RxJS operator that filters events based on a predicate and maps matching events.\n *\n * This operator combines filter and map operations:\n * 1. Only events that match the predicate are emitted\n * 2. Matching events are transformed using the map function\n *\n * @template TInput - The type of input events\n * @template TOutput - The type of output after mapping\n * @param predicate - Function to test each event. Returns true to include the event.\n * @param mapFn - Function to transform matching events\n * @returns An operator function that filters and maps events\n *\n * @example\n * ```typescript\n * interface CallEvent {\n * type: 'call.started' | 'call.ended';\n * id: string;\n * timestamp: number;\n * }\n *\n * events$.pipe(\n * isEvent(\n * (event: CallEvent) => event.type === 'call.started',\n * (event: CallEvent) => ({ id: event.id, timestamp: event.timestamp })\n * )\n * ).subscribe(startEvent => {\n * console.log('Call started:', startEvent);\n * });\n * ```\n */\nexport function ifIsMap<TInput, TOutput>(\n predicate: (event: unknown) => event is TInput,\n mapFn: (event: TInput) => TOutput\n): OperatorFunction<unknown, TOutput> {\n return pipe(filter(predicate), map(mapFn));\n}\n\n/**\n * Generic RxJS operator that filters events using a type guard and extracts a property.\n *\n * This is the generic version that works with any type, not just JSONRPCRequest.\n * Use this when you need to filter and extract properties from already-narrowed types.\n *\n * **Type inference**: The output type is automatically inferred from the input type and path!\n *\n * @template TInput - The type to narrow to (via type guard)\n * @template TPath - The dot-notation path to extract (inferred from parameter)\n * @param predicate - Type guard function to filter events\n * @param resultPath - Dot-notation path to extract (e.g., 'params', 'params.data')\n * @returns An operator function that filters and extracts\n *\n * @example\n * ```typescript\n * interface EventParams {\n * event_type: string;\n * data: { value: number };\n * }\n *\n * const isAuthEvent = (e: unknown): e is EventParams =>\n * typeof e === 'object' && e !== null && 'event_type' in e;\n *\n * // Type of 'data' is automatically inferred as { value: number }\n * params$.pipe(\n * filterAs(isAuthEvent, 'data')\n * ).subscribe(data => {\n * console.log('Event data:', data.value); // TypeScript knows about .value!\n * });\n *\n * // Deeply nested properties are also inferred\n * params$.pipe(\n * filterAs(isAuthEvent, 'data.value')\n * ).subscribe(value => {\n * console.log(value); // Type is 'number'\n * });\n * ```\n */\nexport function filterAs<TInput, TPath extends string>(\n predicate: (event: unknown) => event is TInput,\n resultPath: TPath\n): OperatorFunction<unknown, PathValue<TInput, TPath>> {\n return pipe(\n ifIsMap(predicate, (event) => {\n const result = getValueFrom<PathValue<TInput, TPath>>(event, resultPath);\n return result;\n }),\n filter((value): value is PathValue<TInput, TPath> => value !== undefined)\n );\n}\n","import { map, type OperatorFunction } from 'rxjs';\n\nimport { JSONRPCError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type { JSONRPCResponse } from '../core/RPCMessages/types/base';\n\nconst logger = getLogger();\n\n/**\n * RxJS operator that throws a {@link JSONRPCError} when the RPC response contains an error.\n * Passes successful responses through unchanged.\n */\nexport function throwOnRPCError<T extends JSONRPCResponse>(): OperatorFunction<T, T> {\n return map((response: T) => {\n if (response.error) {\n logger.error('[throwOnRPCError] RPC error response:', {\n code: response.error.code,\n message: response.error.message,\n data: response.error.data\n });\n\n throw new JSONRPCError(response.error.code, response.error.message, response.error.data);\n }\n logger.debug('[throwOnRPCError] RPC successful response:', response);\n return response;\n });\n}\n","import { distinctUntilChanged, filter, map, merge, tap } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { isSelfParticipant } from '../core/entities/Participant';\nimport { DependencyError } from '../core/errors';\nimport {\n isCallJoinedPayload,\n isLayoutChangedPayload\n} from '../core/RPCMessages/guards/events.guards';\nimport { filterAs } from '../operators';\nimport { filterNull } from '../operators/filterNull';\nimport { getLogger } from '../utils/logger';\n\nimport type { Participant, SelfParticipant } from '../core/entities/Participant';\nimport type {\n CallManager,\n CallParticipant,\n CallSelfParticipant,\n CallStatus\n} from '../core/entities/types/call.types';\nimport type {\n LayoutLayer,\n Member,\n RoomSession,\n Layout,\n MemberTalkingInfo\n} from '../core/RPCMessages/types/common';\nimport type { CallLayoutListResponse } from '../core/RPCMessages/types/methods';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\ntype SessionState = RoomSession & { capabilities: string[] } & {\n layouts: string[];\n} & { layout_layers: LayoutLayer[] };\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface WebRTCCallEventManagerOptions {}\n\nconst initialSessionState: Partial<SessionState> = {};\n\nexport class CallEventsManager extends Destroyable {\n private selfId?: string;\n private originCallId?: string;\n private callIds = new Set<string>();\n private roomSessionIds = new Set<string>();\n private _status$ = this.createBehaviorSubject<CallStatus>('trying');\n\n private _participants$ = this.createBehaviorSubject<Record<string, Participant>>({});\n\n private _self$ = this.createBehaviorSubject<SelfParticipant | null>(null);\n private _sessionState$ = this.createBehaviorSubject<Partial<SessionState>>(initialSessionState);\n constructor(\n protected webRtcCallSession: CallManager,\n protected options: WebRTCCallEventManagerOptions = {}\n ) {\n super();\n this.initSubscriptions();\n }\n public get participants$(): Observable<CallParticipant[]> {\n return this._participants$\n .asObservable()\n .pipe(map((participantsRecord) => Object.values(participantsRecord)));\n }\n\n public get self$(): Observable<CallSelfParticipant> {\n return this._self$.asObservable().pipe(filterNull());\n }\n\n public get status$(): Observable<CallStatus> {\n return this._status$.asObservable();\n }\n\n public get status(): CallStatus {\n return this._status$.value;\n }\n\n // check if this call session has joined that same room session\n public isRoomSessionIdValid(roomSessionId: string): boolean {\n return this.roomSessionIds.has(roomSessionId);\n }\n\n public addCallId(callId: string): void {\n this.callIds.add(callId);\n }\n\n public isCallIdValid(callId: string): boolean {\n return this.callIds.has(callId);\n }\n\n public get recording$(): Observable<boolean> {\n return this._sessionState$.pipe(\n map((state) => state.recording),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get recordings$(): Observable<Record<string, unknown>[]> {\n return this._sessionState$.pipe(\n map((state) => state.recordings),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get streaming$(): Observable<boolean> {\n return this._sessionState$.pipe(\n map((state) => state.streaming),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get streams$(): Observable<Record<string, unknown>[]> {\n return this._sessionState$.pipe(\n map((state) => state.streams),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get playbacks$(): Observable<Record<string, unknown>[]> {\n return this._sessionState$.pipe(\n map((state) => state.playbacks),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get raiseHandPriority$(): Observable<boolean> {\n return this._sessionState$.pipe(\n map((state) => state.prioritize_handraise),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get locked$(): Observable<boolean> {\n return this._sessionState$.pipe(\n map((state) => state.locked),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get meta$(): Observable<Record<string, unknown>> {\n return this._sessionState$.pipe(\n map((state) => state.meta),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get capabilities$(): Observable<string[]> {\n return this._sessionState$.pipe(\n map((state) => state.capabilities),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get layout$(): Observable<string> {\n return this._sessionState$.pipe(\n map((state) => state.layout_name),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get layouts$(): Observable<string[]> {\n return this._sessionState$.pipe(\n map((state) => state.layouts),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get layoutLayers$(): Observable<LayoutLayer[]> {\n return this._sessionState$.pipe(\n map((state) => state.layout_layers),\n distinctUntilChanged(),\n filterNull()\n );\n }\n\n public get self(): CallSelfParticipant | null {\n return this._self$.value;\n }\n\n public get layoutLayers(): LayoutLayer[] {\n return this._sessionState$.value.layout_layers ?? [];\n }\n\n public get recording(): boolean {\n return this._sessionState$.value.recording ?? false;\n }\n\n public get streaming(): boolean {\n return this._sessionState$.value.streaming ?? false;\n }\n\n public get raiseHandPriority(): boolean {\n return this._sessionState$.value.prioritize_handraise ?? false;\n }\n\n public get locked(): boolean {\n return this._sessionState$.value.locked ?? false;\n }\n\n public get meta(): Record<string, unknown> {\n return this._sessionState$.value.meta ?? {};\n }\n\n public get layout(): string | undefined {\n return this._sessionState$.value.layout_name;\n }\n\n public get layouts(): string[] {\n return this._sessionState$.value.layouts ?? [];\n }\n\n public get capabilities(): string[] {\n return this._sessionState$.value.capabilities ?? [];\n }\n\n public isSessionEvent(id: string): boolean {\n return this.callIds.has(id) || this.roomSessionIds.has(id);\n }\n\n protected initSubscriptions(): void {\n this.subscribeTo(this.callJoinedEvent$, (callJoinedEvent) => {\n logger.debug('[CallEventsManager] Handling call.joined event for call/session IDs:', {\n callId: callJoinedEvent.call_id,\n roomSessionId: callJoinedEvent.room_session_id\n });\n this._status$.next('connected');\n\n const sessionState = callJoinedEvent.room_session;\n const { capabilities } = callJoinedEvent;\n // Don't update selfId and originCallId from nested call.joined events\n this.selfId = this.selfId ?? callJoinedEvent.member_id;\n this.originCallId = this.originCallId ?? callJoinedEvent.origin_call_id;\n this.callIds.add(callJoinedEvent.call_id);\n this.roomSessionIds.add(callJoinedEvent.room_session_id);\n\n this._sessionState$.next({\n ...this._sessionState$.value,\n recording: sessionState.recording,\n recordings: sessionState.recordings,\n streaming: sessionState.streaming,\n streams: sessionState.streams,\n playbacks: sessionState.playbacks,\n\n prioritize_handraise: sessionState.prioritize_handraise,\n locked: sessionState.locked,\n meta: sessionState.meta,\n\n capabilities\n });\n\n this.updateParticipants(sessionState.members);\n\n // Update capabilities on the self participant\n // This must happen after updateParticipants to ensure self exists\n this._self$.value?.capabilities.updateFromRaw(capabilities);\n\n this.updateLayouts();\n });\n this.subscribeTo(this.memberUpdates$, (member) => {\n logger.debug('[CallEventsManager] Handling member update event for member ID:', member);\n this.upsertParticipant(member);\n });\n this.subscribeTo(this.webRtcCallSession.memberLeft$, (memberLeftEvent) => {\n logger.debug(\n '[CallEventsManager] Handling member.left event for member ID:',\n memberLeftEvent.member.member_id\n );\n const participants = { ...this._participants$.value };\n if (memberLeftEvent.member.member_id in participants) {\n delete participants[memberLeftEvent.member.member_id];\n // in case in subscription is observing the participants collection\n this._participants$.next(participants);\n } else {\n logger.warn(\n `[CallEventsManager] Received member.left event for unknown member ID: ${memberLeftEvent.member.member_id}`\n );\n }\n });\n this.subscribeTo(this.layoutChangedEvent$, (layoutChangedEvent) => {\n logger.debug('[CallEventsManager] Handling layout.changed event:', layoutChangedEvent);\n this._sessionState$.next({\n ...this._sessionState$.value,\n\n layout_name: layoutChangedEvent.id,\n\n layout_layers: layoutChangedEvent.layers\n });\n\n this.updateParticipantPositions(layoutChangedEvent);\n });\n }\n private updateParticipantPositions(layoutChangedEvent: Layout) {\n if (\n Object.keys(this._participants$.value).length > 0 &&\n !layoutChangedEvent.layers.some((layer) => !!layer.member_id)\n ) {\n logger.warn(\n '[CallEventsManager] No layers with member_id found in layout.changed event. Nothing to update.'\n );\n }\n layoutChangedEvent.layers\n .filter((layer) => Boolean(layer.member_id))\n .map((layer) => {\n // update participant state with new position\n if (!layer.member_id) {\n throw new DependencyError('Layer member_id is required');\n }\n this._participants$.value[layer.member_id].upnext({\n position: layer\n });\n return this._participants$.value[layer.member_id];\n })\n .forEach((participant) => {\n if (isSelfParticipant(participant)) {\n this._self$.next(participant);\n }\n // update the collection observable to notify changes\n this._participants$.next({\n ...this._participants$.value,\n [participant.id]: participant\n });\n });\n }\n\n updateLayouts(): void {\n if (!this.selfId) return;\n\n this.webRtcCallSession\n .executeMethod<CallLayoutListResponse>(this.selfId, 'call.layout.list', {})\n .then((response) => {\n this._sessionState$.next({\n ...this._sessionState$.value,\n layouts: response.result.layouts\n });\n })\n .catch((error) => {\n logger.error('[CallEventsManager] Error fetching layouts:', error);\n });\n }\n\n private updateParticipants(members: Member[]) {\n members.forEach((member) => this.upsertParticipant(member));\n }\n\n private upsertParticipant(member: Member | MemberTalkingInfo) {\n if (!(member.member_id in this._participants$.value)) {\n // Pass selfId from call.joined event to ensure correct self participant identification\n const newParticipant = this.webRtcCallSession.createParticipant(\n member.member_id,\n this.selfId\n );\n\n this._participants$.next({\n ...this._participants$.value,\n [member.member_id]: newParticipant\n });\n }\n\n const participant = this._participants$.value[member.member_id];\n\n const oldValue = participant.value;\n logger.debug('[CallEventsManager] Updating participant:', member.member_id, {\n oldValue,\n newValue: member\n });\n participant.upnext({\n ...oldValue,\n ...member\n });\n\n if (isSelfParticipant(participant)) {\n this._self$.next(participant);\n }\n // in case in subscription is observing the participants collection\n this._participants$.next(this._participants$.value);\n }\n\n private get callJoinedEvent$() {\n return this.webRtcCallSession.callEvent$.pipe(\n filter(isCallJoinedPayload),\n tap((event) => {\n logger.debug('[CallEventsManager] Call joined event:', event);\n })\n );\n }\n\n private get layoutChangedEvent$() {\n return this.webRtcCallSession.callEvent$.pipe(\n filterAs(isLayoutChangedPayload, 'layout'),\n tap((event) => {\n logger.debug('[CallEventsManager] Layout changed event:', event);\n })\n );\n }\n\n private get memberUpdates$() {\n return merge(\n this.webRtcCallSession.memberJoined$,\n this.webRtcCallSession.memberUpdated$,\n this.webRtcCallSession.memberTalking$\n ).pipe(\n map((event) => event.member),\n tap((event) => {\n logger.debug('[CallEventsManager] Member update event:', event);\n })\n );\n }\n\n public override destroy(): void {\n const participants = Object.values(this._participants$.value);\n participants.forEach((participant) => {\n participant.destroy();\n });\n this._participants$.next({});\n this._self$.next(null);\n\n this.callIds.clear();\n this.roomSessionIds.clear();\n this.selfId = undefined;\n this.originCallId = undefined;\n //@ts-expect-error -- avoiding circular references\n this.webRtcCallSession = undefined;\n //@ts-expect-error -- avoiding circular references\n this.callSession = undefined;\n\n super.destroy();\n }\n}\n","/**\n * SDPHelper - Utility functions for SDP (Session Description Protocol) parsing and validation.\n *\n * This module provides helper functions to analyze and validate SDP content,\n * particularly for ICE candidate validation in WebRTC connections.\n */\n\n/**\n * Validates that an SDP string has at least one non-host ICE candidate\n * for each media section (m= line).\n *\n * Non-host candidates (srflx, prflx, relay) indicate that the SDP has\n * gathered candidates that can be used for connectivity through NAT\n * traversal mechanisms.\n *\n * @param sdp - The SDP string to validate\n * @returns true if the SDP is valid (has non-host candidates for all media sections,\n * or has no media sections), false otherwise\n *\n * @example\n * ```typescript\n * const sdp = `v=0\n * m=audio 9 UDP/TLS/RTP/SAVPF 111\n * a=candidate:1 1 UDP 1694498815 203.0.113.1 50001 typ srflx\n * m=video 9 UDP/TLS/RTP/SAVPF 96\n * a=candidate:2 1 UDP 1694498815 203.0.113.1 50002 typ relay`;\n *\n * isValidLocalDescription(sdp); // returns true\n * ```\n */\nexport function isValidLocalDescription(sdp: string): boolean {\n if (!sdp) {\n return false;\n }\n\n // Parse SDP to find media sections (m= lines)\n const lines = sdp.split('\\r\\n');\n const mediaSectionsValidCandidates: number[] = [];\n let currentSection = -1;\n\n for (const line of lines) {\n if (line.startsWith('m=')) {\n // New media section\n currentSection += 1;\n mediaSectionsValidCandidates[currentSection] = 0;\n } else if (line.startsWith('a=candidate:')) {\n const typeMatch = /\\styp\\s+(host|srflx|prflx|relay)/.exec(line);\n if (typeMatch && typeMatch[1] !== 'host') {\n // count only non-host candidates\n mediaSectionsValidCandidates[currentSection] += 1;\n }\n }\n }\n\n return (\n !mediaSectionsValidCandidates.length ||\n // Check if localDescription has at least one non-host candidate for each media section.\n mediaSectionsValidCandidates.every((count) => count > 0)\n );\n}\n","import { filter, map, withLatestFrom } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport {\n DEFAULT_ICE_CANDIDATE_TIMEOUT_MS,\n DEFAULT_ICE_GATHERING_TIMEOUT_MS\n} from '../core/constants';\nimport { isValidLocalDescription } from '../helpers/SDPHelper';\nimport { getLogger } from '../utils/logger';\n\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nexport interface ICEGatheringControllerOptions {\n iceCandidateTimeout?: number;\n iceGatheringTimeout?: number;\n relayOnly?: boolean;\n}\n\nexport type ICEGatheringStates = 'new' | 'gathering' | 'complete' | 'timeout';\nexport interface ICECandidateState {\n state: ICEGatheringStates;\n validSDP: boolean;\n}\n\nexport class ICEGatheringController extends Destroyable {\n private iceCandidateTimeout: number;\n private iceGatheringTimeout: number;\n private iceCandidateTimer?: ReturnType<typeof setTimeout>;\n private iceGatheringTimer?: ReturnType<typeof setTimeout>;\n private relayOnly: boolean;\n\n // Event handlers (bound to this instance)\n private onicegatheringstatechangeHandler = () => {\n const { iceGatheringState } = this.peerConnection;\n logger.debug(`[ICEGatheringController] ICE gathering state changed to: ${iceGatheringState}`);\n if (iceGatheringState === 'gathering') {\n this._iceCandidatesState.next({\n state: 'gathering',\n validSDP: false\n });\n }\n };\n\n private onicecandidateHandler = (event: RTCPeerConnectionIceEvent) => {\n logger.debug('[ICEGatheringController] ICE candidate event received:', event.candidate);\n this.removeTimer('iceCandidateTimer');\n\n if (event.candidate) {\n this.iceCandidateTimer = setTimeout(() => {\n if (this.peerConnection.iceGatheringState !== 'complete') {\n logger.warn('[ICEGatheringController] ICE candidate timeout, using current SDP');\n this.handleICECandidateTimeout();\n }\n }, this.iceCandidateTimeout);\n } else {\n logger.debug('[ICEGatheringController] ICE gathering completed: null candidate received');\n this.removeTimer('iceGatheringTimer');\n\n this.handleICEGatheringComplete();\n }\n };\n\n private _iceCandidatesState = this.createBehaviorSubject<ICECandidateState>({\n state: 'new',\n validSDP: false\n });\n constructor(\n private peerConnection: RTCPeerConnection,\n private peerConnectionControllerNegotiating$: Observable<boolean>,\n options: ICEGatheringControllerOptions = {}\n ) {\n super();\n this.iceCandidateTimeout = options.iceCandidateTimeout ?? DEFAULT_ICE_CANDIDATE_TIMEOUT_MS;\n this.iceGatheringTimeout = options.iceGatheringTimeout ?? DEFAULT_ICE_GATHERING_TIMEOUT_MS;\n this.relayOnly = options.relayOnly ?? false;\n // Setup ICE candidate handling\n this.setupEventListeners();\n this.subscribeTo(\n this.peerConnectionControllerNegotiating$.pipe(filter((isNegotiating) => isNegotiating)),\n (isNegotiating) => {\n if (isNegotiating) {\n this.setupEventListeners();\n this.iceGatheringTimer = setTimeout(() => {\n if (this.peerConnection.iceGatheringState !== 'complete') {\n logger.warn('[ICEGatheringController] ICE gathering timeout, using current SDP');\n this.handleICEGatheringTimeout();\n }\n }, this.iceGatheringTimeout);\n }\n }\n );\n }\n\n private setupEventListeners() {\n this.peerConnection.removeEventListener('icecandidate', this.onicecandidateHandler);\n this.peerConnection.addEventListener('icecandidate', this.onicecandidateHandler);\n\n // Setup ICE gathering state change handling\n this.peerConnection.removeEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.addEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n }\n\n public get iceCandidatesState$(): Observable<ICEGatheringStates> {\n return this._iceCandidatesState.pipe(\n withLatestFrom(this.peerConnectionControllerNegotiating$),\n filter(([_, isNegotiating]) => isNegotiating),\n map(([state, _]) => state.state)\n );\n }\n\n public get hasValidLocalDescriptionSDP(): boolean {\n const sdp = this.peerConnection.localDescription?.sdp;\n return isValidLocalDescription(sdp ?? '');\n }\n\n public get isRelayOnly(): boolean {\n return this.relayOnly;\n }\n\n public setRelayOnly(value: boolean): void {\n this.relayOnly = value;\n }\n\n private handleICEGatheringComplete(): void {\n logger.debug('[ICEGatheringController] Handling ICE gathering complete');\n\n logger.debug(\n `[ICEGatheringController] Checking ICE gathering state: ${this.peerConnection.iceGatheringState}`\n );\n\n logger.debug('[ICEGatheringController] ICE gathering complete');\n\n this._iceCandidatesState.next({\n state: 'complete',\n validSDP: this.hasValidLocalDescriptionSDP\n });\n this.stopGathering();\n }\n\n private stopGathering(): void {\n this.peerConnection.removeEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.removeEventListener('icecandidate', this.onicecandidateHandler);\n this.clearAllTimers();\n }\n\n private handleICEGatheringTimeout(): void {\n this.removeTimer('iceGatheringTimer');\n\n const validSDP = this.hasValidLocalDescriptionSDP;\n if (validSDP) {\n logger.debug('[ICEGatheringController] Local SDP is valid');\n this._iceCandidatesState.next({\n state: 'timeout',\n validSDP: validSDP\n });\n this.stopGathering();\n } else {\n logger.debug('### ICE gathering timeout\\n', this.peerConnection.localDescription?.sdp);\n }\n }\n\n public handleICECandidateTimeout(): void {\n if (this.iceCandidateTimer) {\n this.removeTimer('iceCandidateTimer');\n }\n\n logger.warn('[ICEGatheringController] ICE candidate timeout');\n\n const validSDP = this.hasValidLocalDescriptionSDP;\n if (!validSDP && !this.relayOnly) {\n this.restartICEGatheringWithRelayOnly();\n } else {\n logger.debug('[ICEGatheringController] Using current SDP due to ICE candidate timeout');\n this._iceCandidatesState.next({\n state: 'timeout',\n validSDP: validSDP\n });\n this.stopGathering();\n }\n }\n\n public restartICEGatheringWithRelayOnly(): void {\n logger.debug('[ICEGatheringController] Restarting ICE gathering with relay-only candidates');\n this.relayOnly = true;\n this.peerConnection.setConfiguration({\n ...this.peerConnection.getConfiguration(),\n iceTransportPolicy: 'relay'\n });\n if (!(this.peerConnection.connectionState === 'connected')) {\n this.peerConnection.restartIce();\n }\n }\n\n public removeTimer(timer: 'iceGatheringTimer' | 'iceCandidateTimer'): void {\n if (this[timer]) {\n clearTimeout(this[timer]);\n this[timer] = undefined;\n }\n }\n\n private clearAllTimers(): void {\n logger.debug('[ICEGatheringController] Clearing all timers');\n\n this.removeTimer('iceGatheringTimer');\n this.removeTimer('iceCandidateTimer');\n }\n\n public removeEventListeners(): void {\n this.peerConnection.removeEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.removeEventListener('icecandidate', this.onicecandidateHandler);\n }\n\n public destroy(): void {\n logger.debug('[ICEGatheringController] Destroying ICEGatheringController');\n this.clearAllTimers();\n this.removeEventListeners();\n super.destroy();\n }\n}\n","import { takeUntil } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { getLogger } from '../utils/logger';\n\nimport type { MediaOptions } from '../core/types/media.types';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nexport interface LocalStreamControllerOptions extends Omit<\n MediaOptions,\n 'inputAudioDeviceConstraints' | 'inputVideoDeviceConstraints'\n> {\n getUserMedia: (constraints: MediaStreamConstraints) => Promise<MediaStream>;\n getDisplayMedia: (options: DisplayMediaStreamOptions) => Promise<MediaStream>;\n propose: 'main' | 'screenshare' | 'additional-device';\n inputAudioDeviceConstraints?: MediaTrackConstraints | boolean;\n inputVideoDeviceConstraints?: MediaTrackConstraints | boolean;\n}\n\nexport class LocalStreamController extends Destroyable {\n private mediaTrackEndedHandler = (event: unknown) => {\n this._mediaTrackEnded$.next(event as MediaStreamTrack);\n };\n private _localStream$ = this.createBehaviorSubject<MediaStream | null>(null);\n private _localAudioTracks$ = this.createBehaviorSubject<MediaStreamTrack[]>([]);\n private _localVideoTracks$ = this.createBehaviorSubject<MediaStreamTrack[]>([]);\n private _mediaTrackEnded$ = this.createSubject<MediaStreamTrack>();\n\n constructor(private options: LocalStreamControllerOptions) {\n super();\n }\n\n public get localStream$(): Observable<MediaStream | null> {\n return this._localStream$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get localAudioTracks$(): Observable<MediaStreamTrack[]> {\n return this._localAudioTracks$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get localVideoTracks$(): Observable<MediaStreamTrack[]> {\n return this._localVideoTracks$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get mediaTrackEnded$(): Observable<MediaStreamTrack> {\n return this._mediaTrackEnded$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get localStream(): MediaStream | null {\n return this._localStream$.value;\n }\n\n public get localAudioTracks(): MediaStreamTrack[] {\n return this._localAudioTracks$.value;\n }\n\n public get localVideoTracks(): MediaStreamTrack[] {\n return this._localVideoTracks$.value;\n }\n\n /**\n * Build the local media stream based on the provided options.\n */\n public async buildLocalStream(): Promise<MediaStream> {\n logger.debug('[LocalStreamController] Building local media stream.');\n let stream: MediaStream;\n if (this.options.inputAudioStream ?? this.options.inputVideoStream) {\n const tracks = [\n ...(this.options.inputAudioStream?.getTracks() ?? []),\n ...(this.options.inputVideoStream?.getTracks() ?? [])\n ];\n stream = new MediaStream(tracks);\n } else if (this.options.propose === 'screenshare') {\n logger.debug(\n '[LocalStreamController] Requesting display media for screen sharing with audio:',\n Boolean(this.options.inputAudioDeviceConstraints)\n );\n stream = await this.options.getDisplayMedia({\n video: true,\n audio: Boolean(this.options.inputAudioDeviceConstraints)\n });\n logger.debug('[LocalStreamController] Screen share media obtained:', stream);\n } else {\n const constraints: MediaStreamConstraints = {\n audio: this.options.inputAudioDeviceConstraints,\n video: this.options.inputVideoDeviceConstraints\n };\n logger.debug('[LocalStreamController] Requesting user media with constraints:', constraints);\n stream = await this.options.getUserMedia(constraints);\n logger.debug('[LocalStreamController] User media obtained:', stream);\n }\n this._localStream$.next(stream);\n return stream;\n }\n\n /**\n * Add a local media track to the local stream.\n * @param track - The MediaStreamTrack to add\n * @returns The MediaStream (either existing or newly created)\n */\n public addTrack(track: MediaStreamTrack): MediaStream {\n const localStream = this._localStream$.value ?? new MediaStream();\n\n track.addEventListener('ended', this.mediaTrackEndedHandler);\n localStream.addTrack(track);\n this._localStream$.next(localStream);\n\n if (track.kind === 'video') {\n this._localVideoTracks$.next(localStream.getVideoTracks());\n } else {\n this._localAudioTracks$.next(localStream.getAudioTracks());\n }\n\n logger.debug(`[LocalStreamController] ${track.kind} track added:`, track.id);\n return localStream;\n }\n\n /**\n * Remove a local media track from the local stream.\n * @param trackId - The ID of the track to remove\n * @returns The removed track, or undefined if not found\n */\n public removeTrack(trackId: string): MediaStreamTrack | undefined {\n const stream = this._localStream$.value;\n const track = stream?.getTracks().find((t: MediaStreamTrack) => t.id === trackId);\n\n if (!track) {\n logger.debug(`[LocalStreamController] track not found: ${trackId}`);\n return undefined;\n }\n\n track.removeEventListener('ended', this.mediaTrackEndedHandler);\n stream?.removeTrack(track);\n track.stop();\n this._localStream$.next(stream);\n\n if (track.kind === 'video') {\n this._localVideoTracks$.next(stream?.getVideoTracks() ?? []);\n } else {\n this._localAudioTracks$.next(stream?.getAudioTracks() ?? []);\n }\n\n logger.debug(`[LocalStreamController] ${track.kind} track removed:`, trackId);\n return track;\n }\n\n /**\n * Get or create a local stream.\n */\n public getOrCreateLocalStream(): MediaStream {\n return this._localStream$.value ?? new MediaStream();\n }\n\n /**\n * Set the local stream directly.\n */\n public setLocalStream(stream: MediaStream | null): void {\n this._localStream$.next(stream);\n }\n\n /**\n * Add a track ended event listener to a track.\n */\n public addTrackEndedListener(track: MediaStreamTrack): void {\n track.addEventListener('ended', this.mediaTrackEndedHandler);\n }\n\n /**\n * Stop all local tracks and clean up.\n */\n public stopAllTracks(): void {\n const localStream = this._localStream$.value;\n localStream?.getTracks().forEach((track: MediaStreamTrack) => {\n logger.debug(`[LocalStreamController] Stopping local track: ${track.kind}`);\n track.removeEventListener('ended', this.mediaTrackEndedHandler);\n track.stop();\n });\n }\n\n /**\n * Clean up resources.\n */\n public override destroy(): void {\n this.stopAllTracks();\n super.destroy();\n }\n}\n","import { Destroyable } from '../behaviors/Destroyable';\nimport { MediaTrackError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type { LocalStreamController } from './LocalStreamController';\nimport type { RTCPeerConnectionPropose } from '../core/types/call.types';\n\nconst logger = getLogger();\n\nconst getDirection = (send: boolean, recv: boolean): RTCRtpTransceiverDirection => {\n if (send && recv) {\n return 'sendrecv';\n } else if (send && !recv) {\n return 'sendonly';\n } else if (!send && recv) {\n return 'recvonly';\n }\n\n return 'inactive';\n};\n\nexport interface TransceiverControllerOptions {\n peerConnection: RTCPeerConnection;\n propose: RTCPeerConnectionPropose;\n simulcast?: boolean;\n sfu?: boolean;\n msStreamsNumber?: number;\n receiveAudio?: boolean;\n receiveVideo?: boolean;\n localStreamController: LocalStreamController;\n getInputAudioDeviceConstraints: () => MediaTrackConstraints | boolean;\n getInputVideoDeviceConstraints: () => MediaTrackConstraints | boolean;\n getUserMedia: (constraints: MediaStreamConstraints) => Promise<MediaStream>;\n onError?: (error: Error) => void;\n}\n\nexport class TransceiverController extends Destroyable {\n private peerConnection: RTCPeerConnection;\n private options: TransceiverControllerOptions;\n\n constructor(options: TransceiverControllerOptions) {\n super();\n this.peerConnection = options.peerConnection;\n this.options = options;\n }\n\n public get useAddTransceivers(): boolean {\n return typeof this.peerConnection.addTransceiver === 'function';\n }\n\n public get useAddTrack(): boolean {\n return typeof this.peerConnection.addTrack === 'function';\n }\n\n public get useAddStream(): boolean {\n return (\n // @ts-expect-error -- Ignore ---\n typeof this.peerConnection.addStream === 'function' &&\n !this.useAddTransceivers &&\n !this.useAddTrack\n );\n }\n\n private get propose(): RTCPeerConnectionPropose {\n return this.options.propose;\n }\n\n private get isAdditionalDevice(): boolean {\n return this.propose === 'additional-device';\n }\n\n private get isScreenShare(): boolean {\n return this.propose === 'screenshare';\n }\n\n private get isSimulcast(): boolean {\n return Boolean(this.options.simulcast);\n }\n\n private get isSFU(): boolean {\n return Boolean(this.options.sfu);\n }\n\n private get receiveVideo(): boolean {\n return Boolean(this.options.receiveVideo);\n }\n\n private get receiveAudio(): boolean {\n return Boolean(this.options.receiveAudio);\n }\n\n private get localStream(): MediaStream | null {\n return this.options.localStreamController.localStream;\n }\n\n private get inputAudioDeviceConstraints(): MediaTrackConstraints | boolean {\n return this.options.getInputAudioDeviceConstraints();\n }\n\n private get inputVideoDeviceConstraints(): MediaTrackConstraints | boolean {\n return this.options.getInputVideoDeviceConstraints();\n }\n\n public get audioDirection(): RTCRtpTransceiverDirection {\n if (this.isAdditionalDevice) {\n return 'sendonly';\n }\n const { localStream } = this;\n const hasAudioTrack = localStream?.getAudioTracks().some((track) => track.enabled);\n const wantsToSendAudio = Boolean(this.inputAudioDeviceConstraints);\n const wantsToReceiveAudio = Boolean(this.receiveAudio);\n const send = hasAudioTrack ?? wantsToSendAudio;\n const recv = wantsToReceiveAudio;\n return getDirection(send, recv);\n }\n\n public get videoDirection(): RTCRtpTransceiverDirection {\n if (this.isAdditionalDevice || this.isScreenShare) {\n return 'sendonly';\n }\n\n if (this.isSFU) {\n return 'recvonly';\n }\n\n const { localStream } = this;\n const hasVideoTrack = localStream?.getVideoTracks().some((track) => track.enabled);\n const wantsToSendVideo = Boolean(this.inputVideoDeviceConstraints);\n const wantsToReceiveVideo = Boolean(this.receiveVideo);\n const send = hasVideoTrack ?? wantsToSendVideo;\n const recv = wantsToReceiveVideo;\n return getDirection(send, recv);\n }\n\n private get sendEncodings(): RTCRtpEncodingParameters[] | undefined {\n if (!this.isSimulcast) {\n return undefined;\n }\n\n return ['0', '1', '2'].map((rid) => ({\n active: true,\n rid,\n scaleResolutionDownBy: Number(rid) * 6 || 1.0\n }));\n }\n\n private getConstraintsFor(kind: 'audio' | 'video'): MediaTrackConstraints {\n const constraints =\n kind === 'audio' ? this.inputAudioDeviceConstraints : this.inputVideoDeviceConstraints;\n\n // If constraints is a boolean (true/false), return empty object for track constraints\n // false case means no media of this kind is requested, but that's handled elsewhere\n return typeof constraints === 'boolean' ? {} : constraints;\n }\n\n public transceiverByKind(kind: 'audio' | 'video' | 'both'): RTCRtpTransceiver[] {\n return this.peerConnection\n .getTransceivers()\n .filter((t) => kind === 'both' || t.receiver.track.kind === kind);\n }\n\n public get audioTransceivers(): RTCRtpTransceiver[] {\n return this.transceiverByKind('audio');\n }\n\n public get videoTransceivers(): RTCRtpTransceiver[] {\n return this.transceiverByKind('video');\n }\n\n public async setupTransceiverSender(\n track: MediaStreamTrack,\n localStream: MediaStream,\n transceiver?: RTCRtpTransceiver\n ): Promise<void> {\n const isAudio = track.kind === 'audio';\n const direction = isAudio ? this.audioDirection : this.videoDirection;\n const transceiverParams: RTCRtpTransceiverInit = {\n direction,\n sendEncodings: isAudio ? undefined : this.sendEncodings,\n streams: direction === 'recvonly' ? undefined : [localStream]\n };\n logger.debug(\n `[TransceiverController] Setting up transceiver sender for local ${track.kind} track:`,\n { transceiver, transceiverParams }\n );\n if (\n transceiverParams.direction &&\n ['sendonly', 'sendrecv'].includes(transceiverParams.direction)\n ) {\n if (transceiver) {\n await transceiver.sender.replaceTrack(track);\n // eslint-disable-next-line no-param-reassign\n transceiver.direction = transceiverParams.direction;\n if (transceiverParams.streams?.some((stream) => Boolean(stream))) {\n logger.debug(\n `[TransceiverController] Setting streams for transceiver sender for local ${track.kind} track:`,\n transceiverParams.streams\n );\n transceiver.sender.setStreams(...transceiverParams.streams);\n }\n } else {\n logger.debug(\n `[TransceiverController] Adding new transceiver for local ${track.kind} track:`,\n track.id\n );\n this.peerConnection.addTransceiver(track, transceiverParams);\n }\n }\n }\n\n public stopTrackSender(\n kind: 'audio' | 'video' | 'both',\n options = { updateTransceiverDirection: false }\n ): void {\n try {\n const transceivers = this.transceiverByKind(kind);\n for (const transceiver of transceivers) {\n if (transceiver.sender.track?.readyState === 'live') {\n const trackId = transceiver.sender.track.id;\n transceiver.sender.track.stop();\n this.options.localStreamController.removeTrack(trackId);\n if (options.updateTransceiverDirection) {\n transceiver.direction = 'inactive';\n }\n }\n }\n } catch (error) {\n logger.error('[TransceiverController] stopTrackSender error', kind, error);\n this.options.onError?.(new MediaTrackError('stopTrackSender', kind, error));\n }\n }\n\n public async restoreTrackSender(kind: 'audio' | 'video' | 'both'): Promise<void> {\n try {\n logger.debug('[TransceiverController] restoreTrackSender called', kind);\n const constraints: MediaStreamConstraints = {};\n const transceivers = this.transceiverByKind(kind);\n for (const transceiver of transceivers) {\n const { track } = transceiver.sender;\n // Check if track is null, ended - all need restoration\n const needsRestore = !track || track.readyState === 'ended';\n if (needsRestore) {\n const trackKind = track?.kind ?? transceiver.receiver.track.kind;\n if (trackKind === 'audio' || trackKind === 'video') {\n constraints[trackKind] = this.getConstraintsFor(trackKind);\n }\n }\n }\n\n logger.debug('[TransceiverController] restoreTrackSender constraints:', constraints);\n\n // Don't call getUserMedia if no tracks need restoration\n if (Object.keys(constraints).length === 0) {\n logger.warn('[TransceiverController] restoreTrackSender: no tracks need restoration', kind);\n return;\n }\n\n const stream = await this.options.getUserMedia(constraints);\n const newTracks = stream.getTracks();\n\n logger.debug('[TransceiverController] restoreTrackSender new tracks:', newTracks);\n for (const newTrack of newTracks) {\n this.options.localStreamController.addTrack(newTrack);\n const trackKind = newTrack.kind as 'audio' | 'video';\n const transceiverOfKind = this.transceiverByKind(trackKind)[0];\n transceiverOfKind.direction =\n trackKind === 'audio' ? this.audioDirection : this.videoDirection;\n logger.debug(\n '[TransceiverController] restoreTrackSender setting direction for',\n trackKind,\n transceiverOfKind.direction\n );\n await transceiverOfKind.sender.replaceTrack(newTrack);\n }\n } catch (error) {\n logger.error('[TransceiverController] restoreTrackSender error', kind, error);\n this.options.onError?.(new MediaTrackError('restoreTrackSender', kind, error));\n }\n }\n\n public async replaceSenderTrack(kind: 'audio' | 'video', track: MediaStreamTrack): Promise<void> {\n const transceivers = kind === 'audio' ? this.audioTransceivers : this.videoTransceivers;\n for (const transceiver of transceivers) {\n await transceiver.sender.replaceTrack(track);\n }\n }\n\n public async setupRemoteTransceivers(type: 'offer' | 'answer'): Promise<void> {\n if (type === 'answer') {\n // remote setup was made by the offerer\n return;\n }\n\n for (const kind of ['audio', 'video']) {\n const transceivers = kind === 'audio' ? this.audioTransceivers : this.videoTransceivers;\n for (const transceiver of transceivers) {\n const direction = kind === 'audio' ? this.audioDirection : this.videoDirection;\n\n if (['inactive', 'recvonly'].includes(direction)) {\n transceiver.direction = direction;\n await transceiver.sender.replaceTrack(null);\n transceiver.sender.setStreams();\n }\n }\n }\n\n if (this.videoDirection === 'recvonly' && this.isSFU && this.useAddTransceivers) {\n const { msStreamsNumber = 5 } = this.options;\n for (let i = 0; i < Number(msStreamsNumber); i++) {\n this.peerConnection.addTransceiver('video', { direction: 'recvonly' });\n }\n }\n }\n\n public async updateSendersConstraints(\n kind: 'audio' | 'video',\n constraints?: MediaTrackConstraints\n ): Promise<void> {\n if (!constraints) {\n this.stopTrackSender(kind);\n return Promise.resolve();\n }\n\n const senders = this.peerConnection\n .getSenders()\n .filter((sender) => sender.track?.kind === kind && sender.track.readyState === 'live');\n\n for (const sender of senders) {\n const { track } = sender;\n if (track) {\n const constraintsToApply: MediaTrackConstraints = {\n ...track.getConstraints(),\n ...constraints\n };\n try {\n await track.applyConstraints(constraintsToApply);\n logger.debug(\n `[TransceiverController] Updated ${kind} sender constraints:`,\n constraintsToApply\n );\n logger.debug(\n `[TransceiverController] Updated ${kind} sender constraints:`,\n track.getConstraints()\n );\n } catch (error) {\n logger.warn(\n `[TransceiverController] Failed to apply constraints to ${kind} track ${track.id}:`,\n error\n );\n this.options.onError?.(new MediaTrackError('updateSendersConstraints', kind, error));\n }\n }\n }\n }\n\n public getMediaDirections(): {\n audio: RTCRtpTransceiverDirection;\n video: RTCRtpTransceiverDirection;\n } {\n if (this.peerConnection.connectionState === 'connected') {\n // If we are connected let's get the actual directions from the transceivers\n return this.peerConnection.getTransceivers().reduce(\n (acc, transceiver) => {\n return {\n ...acc,\n [transceiver.receiver.track.kind]: transceiver.direction\n };\n },\n { audio: 'inactive', video: 'inactive' }\n );\n }\n\n return {\n audio: this.audioDirection,\n video: this.videoDirection\n };\n }\n\n public updatePeerConnection(peerConnection: RTCPeerConnection): void {\n this.peerConnection = peerConnection;\n }\n\n public updateOptions(options: Partial<TransceiverControllerOptions>): void {\n this.options = {\n ...this.options,\n ...options\n };\n }\n}\n","/* eslint-disable max-lines */\nimport {\n auditTime,\n defer,\n exhaustMap,\n filter,\n from,\n map,\n shareReplay,\n switchMap,\n takeUntil,\n tap,\n skipWhile,\n merge\n} from 'rxjs';\nimport { v4 as uuid } from 'uuid';\n\nimport { ICEGatheringController } from './ICEGatheringController';\nimport { LocalStreamController } from './LocalStreamController';\nimport { TransceiverController } from './TransceiverController';\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { PreferencesContainer } from '../containers/PreferencesContainer';\nimport { DependencyError } from '../core/errors';\nimport { isValidLocalDescription } from '../helpers/SDPHelper';\nimport { filterNull } from '../operators';\nimport { getLogger } from '../utils/logger';\n\nimport type { RTCPeerConnectionPropose, RTCPeerConnectionType } from '../core/types/call.types';\nimport type { MediaOptions } from '../core/types/media.types';\nimport type { DeviceController } from '../interfaces/DeviceController';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nexport interface RTCPeerConnectionControllerOptions extends MediaOptions {\n callId?: string;\n\n WebRTCPeerConnectionConstructor?: typeof RTCPeerConnection;\n getUserMedia?: (constraints: MediaStreamConstraints) => Promise<MediaStream>;\n getDisplayMedia?: (options: DisplayMediaStreamOptions) => Promise<MediaStream>;\n rtcConfiguration?: RTCConfiguration;\n simulcast?: boolean;\n sfu?: boolean;\n msStreamsNumber?: number;\n propose: RTCPeerConnectionPropose;\n iceServers?: RTCIceServer[];\n disableUdpIceServers?: boolean;\n relayOnly?: boolean;\n iceCandidateTimeout?: number;\n iceGatheringTimeout?: number;\n}\n\nexport type RTCPeerConnectionControllerOptionsPartial = Partial<RTCPeerConnectionControllerOptions>;\n\nexport interface UpdateSDPStatusParams {\n status: 'received' | 'sent' | 'failed';\n sdp?: string;\n}\n\nexport class RTCPeerConnectionController extends Destroyable {\n public readonly id: string;\n public firstSDPExchangeCompleted = false;\n public sdpInit?: RTCSessionDescriptionInit;\n private negotiationNeeded$ = this.createSubject<void>();\n private deviceController: DeviceController;\n private localStreamController: LocalStreamController;\n // Transceiver controller - initialized lazily when peerConnection is created\n private transceiverController?: TransceiverController;\n public readonly localDescription$: Observable<RTCSessionDescription | null> = defer(() =>\n from(this.init())\n ).pipe(\n switchMap(() =>\n // Wait for ICE negotiation before emitting localDescription\n this.iceGatheringController.iceCandidatesState$.pipe(\n filter((iceCandidateState) => !['new', 'gathering'].includes(iceCandidateState)),\n tap(() => {\n this.negotiationEnded();\n }),\n // Only emit when signaling state is 'have-local-offer'\n filter(() => this.shouldEmitLocalDescription),\n map(() => this.peerConnection?.localDescription),\n filterNull(),\n tap((desc) => {\n if (desc.type === 'answer') {\n // Once the answer is emitted, switch type to offer for future negotiations\n this._type = 'offer';\n }\n })\n )\n ),\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n public peerConnection?: RTCPeerConnection;\n private initPromise?: Promise<void>;\n private connectionTimeout = 3_000;\n private connectionTimer?: ReturnType<typeof setTimeout>;\n private oniceconnectionstatechangeHandler = () => {\n if (this.peerConnection) {\n const { iceConnectionState } = this.peerConnection;\n logger.debug(\n `[RTCPeerConnectionController] ICE connection state changed to: ${iceConnectionState}`\n );\n this._iceConnectionState$.next(this.peerConnection.iceConnectionState);\n }\n };\n private onconnectionstatechangeHandler = () => {\n if (this.peerConnection) {\n const { connectionState } = this.peerConnection;\n logger.debug(`[RTCPeerConnectionController] Connection state changed to: ${connectionState}`);\n if (connectionState === 'connected') {\n this.removeConnectionTimer();\n }\n this._connectionState$.next(this.peerConnection.connectionState);\n }\n };\n private onsignalingstatechangeHandler = () => {\n logger.debug(\n `[RTCPeerConnectionController] Signaling state changed to: ${this.peerConnection?.signalingState}`\n );\n };\n private onicegatheringstatechangeHandler = () => {\n if (this.peerConnection) {\n this._iceGatheringState$.next(this.peerConnection.iceGatheringState);\n }\n };\n private onnegotiationneededHandler = (event: unknown) => {\n logger.debug('[RTCPeerConnectionController] Negotiation needed event received.', event);\n this.negotiationNeeded$.next();\n };\n private updateSelectedInputDevice = async (\n kind: 'audio' | 'video',\n deviceInfo: MediaDeviceInfo | null\n ): Promise<void> => {\n try {\n const { localStream } = this;\n if (!localStream) {\n logger.warn(\n '[RTCPeerConnectionController] No local stream available to update input device.'\n );\n return;\n }\n\n logger.debug(\n `[RTCPeerConnectionController] Updating selected ${kind} input device:`,\n localStream.getTracks()\n );\n // Stop existing audio tracks\n const track = localStream.getTracks().find((track: MediaStreamTrack) => track.kind === kind);\n\n if (track) {\n this.transceiverController?.stopTrackSender(kind);\n this.localStream?.removeTrack(track);\n logger.debug(\n `[RTCPeerConnectionController] Stopped existing ${kind} track: ${track.id}`,\n localStream.getTracks()\n );\n\n if (!deviceInfo) {\n logger.debug(`[RTCPeerConnectionController] ${kind} input device selected: none`);\n return;\n }\n\n const stream = await navigator.mediaDevices.getUserMedia({\n [kind]: {\n ...track.getConstraints(),\n ...this.deviceController.deviceInfoToConstraints(deviceInfo)\n }\n });\n\n const streamTrack = stream.getTracks().find((t) => t.kind === kind);\n\n if (streamTrack) {\n logger.debug(`[RTCPeerConnectionController] Adding new ${kind} track: ${streamTrack.id}`);\n this.localStream?.addTrack(streamTrack);\n await this.transceiverController?.replaceSenderTrack(kind, streamTrack);\n logger.debug(\n `[RTCPeerConnectionController] Added new ${kind} track: ${streamTrack.id}`,\n this.localStream?.getTracks()\n );\n }\n }\n\n logger.debug(\n `[RTCPeerConnectionController] ${kind} input device selected:`,\n deviceInfo?.label\n );\n } catch (error) {\n logger.error(`[RTCPeerConnectionController] Failed to select ${kind} input device:`, error);\n this._errors$.next(error as Error);\n throw error;\n }\n };\n private _isNegotiating$ = this.createBehaviorSubject<boolean>(false);\n private _iceGatheringController?: ICEGatheringController;\n private _memberId: string | null = null;\n private _type: RTCPeerConnectionType;\n // Observable state streams - exposed as public observables\n private _iceConnectionState$ = this.createReplaySubject<RTCIceConnectionState>(1);\n private _connectionState$ = this.createReplaySubject<RTCPeerConnectionState>(1);\n private _signalingState$ = this.createReplaySubject<RTCSignalingState>(1);\n private _iceGatheringState$ = this.createReplaySubject<RTCIceGatheringState>(1);\n // Error stream\n private _errors$ = this.createSubject<Error>();\n // ICE candidates stream\n private _iceCandidates$ = this.createReplaySubject<RTCIceCandidate[]>(1);\n // Initialization state\n private _initialized$ = this.createReplaySubject<boolean>(1);\n // Remote description\n private _remoteDescription$ = this.createReplaySubject<RTCSessionDescription | null>(1);\n private _remoteStream$ = this.createBehaviorSubject<MediaStream | null>(null);\n constructor(\n protected options: RTCPeerConnectionControllerOptionsPartial = {},\n remoteSessionDescription?: string,\n deviceController?: DeviceController\n ) {\n super();\n this.deviceController = deviceController ?? ({} as DeviceController);\n this.id = options.callId ?? uuid();\n this._type = remoteSessionDescription ? 'answer' : 'offer';\n\n this.sdpInit = remoteSessionDescription\n ? {\n type: 'offer',\n sdp: remoteSessionDescription\n }\n : undefined;\n this.options = {\n receiveAudio: options.receiveAudio ?? PreferencesContainer.instance.receiveAudio,\n receiveVideo: options.receiveVideo ?? PreferencesContainer.instance.receiveVideo,\n ...options\n };\n\n // Initialize the local stream controller\n this.localStreamController = new LocalStreamController({\n propose: this.propose,\n inputAudioStream: this.options.inputAudioStream,\n inputVideoStream: this.options.inputVideoStream,\n inputAudioDeviceConstraints: this.inputAudioDeviceConstraints,\n inputVideoDeviceConstraints: this.inputVideoDeviceConstraints,\n getUserMedia: async (constraints: MediaStreamConstraints) => this.getUserMedia(constraints),\n getDisplayMedia: async (options: DisplayMediaStreamOptions) => this.getDisplayMedia(options)\n });\n }\n\n private get iceGatheringController(): ICEGatheringController {\n if (!this._iceGatheringController) {\n throw new DependencyError('ICEGatheringController is not initialized');\n }\n return this._iceGatheringController;\n }\n\n private get shouldEmitLocalDescription(): boolean {\n if (!this.peerConnection) {\n return false;\n }\n\n const { localDescription, signalingState } = this.peerConnection;\n\n if (!localDescription || !isValidLocalDescription(localDescription.sdp)) {\n return false;\n }\n\n return (\n (localDescription.type === 'offer' && signalingState === 'have-local-offer') ||\n (localDescription.type === 'answer' && signalingState === 'stable')\n );\n }\n\n private removeConnectionTimer(): void {\n if (this.connectionTimer) {\n clearTimeout(this.connectionTimer);\n this.connectionTimer = undefined;\n }\n }\n\n public setMemberId(memberId: string | null): void {\n this._memberId = memberId;\n }\n\n public get memberId(): string | null {\n return this._memberId;\n }\n\n public stopTrackSender(\n kind: 'audio' | 'video' | 'both',\n options = { updateTransceiverDirection: false }\n ): void {\n this.transceiverController?.stopTrackSender(kind, options);\n }\n\n public get isNegotiating$(): Observable<boolean> {\n return this._isNegotiating$.asObservable();\n }\n\n public get isNegotiating(): boolean {\n return this._isNegotiating$.value;\n }\n\n public updateMediaDevicesOptions(options: MediaOptions): void {\n this.options = {\n ...this.options,\n ...options\n };\n }\n\n public get iceGatheringState$(): Observable<RTCIceGatheringState> {\n return this._iceGatheringState$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get mediaTrackEnded$(): Observable<MediaStreamTrack> {\n return this.localStreamController.mediaTrackEnded$.pipe(takeUntil(this.destroyed$));\n }\n\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get iceCandidates$(): Observable<RTCIceCandidate[]> {\n return this._iceCandidates$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized$.asObservable().pipe(\n filter((initialized) => initialized),\n takeUntil(this.destroyed$)\n );\n }\n\n public get remoteDescription$(): Observable<RTCSessionDescription | null> {\n return this._remoteDescription$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get localStream$(): Observable<MediaStream | null> {\n return this.localStreamController.localStream$.pipe(takeUntil(this.destroyed$));\n }\n\n public get remoteStream$(): Observable<MediaStream | null> {\n return this._remoteStream$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get localAudioTracks$(): Observable<MediaStreamTrack[]> {\n return this.localStreamController.localAudioTracks$.pipe(takeUntil(this.destroyed$));\n }\n\n public get localVideoTracks$(): Observable<MediaStreamTrack[]> {\n return this.localStreamController.localVideoTracks$.pipe(takeUntil(this.destroyed$));\n }\n\n public get iceConnectionState$(): Observable<RTCIceConnectionState> {\n return this._iceConnectionState$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get connectionState$(): Observable<RTCPeerConnectionState> {\n return this._connectionState$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get signalingState$(): Observable<RTCSignalingState> {\n return this._signalingState$.asObservable().pipe(takeUntil(this.destroyed$));\n }\n\n public get type(): RTCPeerConnectionType {\n return this._type;\n }\n\n public get propose(): RTCPeerConnectionPropose {\n return this.options.propose ?? 'main';\n }\n\n public get isAdditionalDevice(): boolean {\n return this.propose === 'additional-device';\n }\n\n public get isMainDevice(): boolean {\n return this.propose === 'main';\n }\n\n public get isScreenShare(): boolean {\n return this.propose === 'screenshare';\n }\n\n protected get iceServers(): RTCIceServer[] {\n if (!this.options.disableUdpIceServers) {\n return this.options.iceServers ?? [];\n }\n const tcpTransportParam = 'transport=tcp';\n\n // When disabling UDP, keep only URLs that explicitly specify transport=tcp\n // URLs without a transport parameter default to UDP and should be filtered out\n return (this.options.iceServers ?? []).map((server) => {\n const urls = Array.isArray(server.urls) ? server.urls : [server.urls];\n return {\n ...server,\n urls: urls.filter((url) => url.includes(tcpTransportParam))\n } as RTCIceServer;\n });\n }\n\n private get rtcConfiguration(): RTCConfiguration {\n // Destructure to exclude iceServers from options spread, since we use the filtered this.iceServers\n const { iceServers: _iceServers, ...restOptions } = this.options;\n return {\n bundlePolicy: 'max-compat',\n iceCandidatePoolSize: 10,\n iceServers: this.iceServers,\n iceTransportPolicy: this.options.relayOnly ? 'relay' : 'all',\n //@ts-expect-error -- Ignore ---\n sdpSemantics: 'unified-plan',\n ...restOptions\n };\n }\n\n public get receiveVideo(): boolean {\n return Boolean(this.options.receiveVideo);\n }\n\n public get receiveAudio(): boolean {\n return Boolean(this.options.receiveAudio);\n }\n\n public get localStream(): MediaStream | null {\n return this.localStreamController.localStream;\n }\n\n public get remoteStream(): MediaStream | null {\n return this._remoteStream$.value;\n }\n\n private get inputAudioDeviceConstraints(): MediaTrackConstraints | boolean {\n if (this.options.audio === false && !this.options.inputAudioDeviceConstraints) {\n return false;\n }\n return {\n ...this.options.inputAudioDeviceConstraints,\n ...this.deviceController.selectedAudioInputDeviceConstraints\n };\n }\n\n private get inputVideoDeviceConstraints(): MediaTrackConstraints | boolean {\n if (this.options.video === false && !this.options.inputVideoDeviceConstraints) {\n return false;\n }\n return {\n ...this.options.inputVideoDeviceConstraints,\n ...this.deviceController.selectedVideoInputDeviceConstraints\n };\n }\n\n private get WebRTCPeerConnectionConstructor(): typeof RTCPeerConnection {\n return this.options.WebRTCPeerConnectionConstructor ?? RTCPeerConnection;\n }\n\n private get offerOptions(): RTCOfferOptions {\n const options: RTCOfferOptions = {\n iceRestart: this.firstSDPExchangeCompleted ? true : undefined\n };\n switch (this.propose) {\n case 'screenshare':\n case 'additional-device':\n return {\n ...options,\n offerToReceiveAudio: false,\n offerToReceiveVideo: false\n };\n case 'main':\n default:\n return {\n ...options,\n offerToReceiveAudio: true,\n offerToReceiveVideo: Boolean(this.inputVideoDeviceConstraints)\n };\n }\n }\n\n private get answerOptions(): RTCAnswerOptions {\n // Currently no specific answer options\n return {};\n }\n\n /**\n * Initialize the RTCPeerConnection and setup event listeners.\n * Called automatically when localDescription$ is subscribed to (deferred pattern).\n * Uses Promise memoization to ensure initialization only happens once,\n * even if called concurrently.\n */\n private async init(): Promise<void> {\n this.initPromise ??= this.doInit();\n return this.initPromise;\n }\n\n /**\n * Internal initialization implementation.\n * Should only be called via init() to ensure single execution.\n */\n private async doInit(): Promise<void> {\n try {\n this.setupPeerConnection();\n\n this.subscribeTo(\n this.negotiationNeeded$.pipe(\n auditTime(0), //When updating multiple tracks, batches all the events together\n exhaustMap(async () => this.startNegotiation()) // Ignore new events while negotiation is ongoing\n ),\n {\n next: () => {\n logger.debug('[RTCPeerConnectionController] Start Negotiation completed successfully');\n },\n error: (error) => {\n logger.error('[RTCPeerConnectionController] Start Negotiation error:', error);\n this._errors$.next(error as Error);\n }\n }\n );\n\n this.subscribeTo(\n merge(\n this.deviceController.selectedAudioInputDevice$.pipe(\n map((deviceInfo) => ['audio', deviceInfo] as const)\n ),\n this.deviceController.selectedVideoInputDevice$.pipe(\n map((deviceInfo) => ['video', deviceInfo] as const)\n )\n ).pipe(\n // we only want to react to changes after the localstream is created\n // before that the device selection is handle int the localstream creation\n skipWhile(() => !this.localStreamController.localStream)\n ),\n async ([kind, deviceInfo]) => {\n logger.debug(`[RTCPeerConnectionController] Selected input device changed for:`, {\n kind,\n deviceInfo\n });\n await this.updateSelectedInputDevice(kind, deviceInfo);\n }\n );\n\n await this.setupTrackHandling();\n\n this._initialized$.next(true);\n\n // Start answer negotiation\n if (this.type === 'answer' && this.sdpInit) {\n this.setupEventListeners();\n await this.handleOfferReceived();\n }\n } catch (error) {\n logger.error('[RTCPeerConnectionController] Initialization error:', error);\n this._errors$.next(error as Error);\n this.destroy();\n }\n }\n\n private setupPeerConnection() {\n this.peerConnection = new this.WebRTCPeerConnectionConstructor(this.rtcConfiguration);\n this.peerConnection.addEventListener('negotiationneeded', this.onnegotiationneededHandler);\n this._iceGatheringController = new ICEGatheringController(\n this.peerConnection,\n this.isNegotiating$,\n {\n iceCandidateTimeout: this.options.iceCandidateTimeout,\n iceGatheringTimeout: this.options.iceGatheringTimeout,\n relayOnly: this.options.relayOnly\n }\n );\n\n // Initialize the transceiver controller\n this.transceiverController = new TransceiverController({\n peerConnection: this.peerConnection,\n propose: this.propose,\n simulcast: this.options.simulcast,\n sfu: this.options.sfu,\n msStreamsNumber: this.options.msStreamsNumber,\n receiveAudio: this.receiveAudio,\n receiveVideo: this.receiveVideo,\n localStreamController: this.localStreamController,\n getInputAudioDeviceConstraints: () => this.inputAudioDeviceConstraints,\n getInputVideoDeviceConstraints: () => this.inputVideoDeviceConstraints,\n getUserMedia: async (constraints: MediaStreamConstraints) => this.getUserMedia(constraints),\n onError: (error: Error) => {\n this._errors$.next(error);\n }\n });\n }\n\n private async startNegotiation() {\n if (this.isNegotiating) {\n logger.debug('[RTCPeerConnectionController] Negotiation already in progress, skipping.');\n return;\n }\n\n this.setupEventListeners();\n\n if (this.type === 'answer') {\n logger.debug(\n '[RTCPeerConnectionController] This is an answer type still, skipping offer creation.'\n );\n return;\n }\n\n this._isNegotiating$.next(true);\n logger.debug('[RTCPeerConnectionController] Starting negotiation.');\n\n try {\n const { offerOptions } = this;\n logger.debug('[RTCPeerConnectionController] Creating offer with options:', offerOptions);\n await this.createOffer(offerOptions);\n } catch (error) {\n logger.error('[RTCPeerConnectionController] Error during negotiation:', error);\n this._errors$.next(error as Error);\n }\n }\n\n /**\n * Create an SDP offer and set it as local description.\n */\n private async createOffer(options?: RTCOfferOptions): Promise<void> {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n\n const offer = await this.peerConnection.createOffer(options);\n await this.setLocalDescription(offer);\n\n // Note: localDescription will be emitted by setupEventListeners initial emission\n // and updated when ICE gathering state changes\n }\n\n public async updateAnswerStatus({ status, sdp }: UpdateSDPStatusParams): Promise<void> {\n let readyToConnect = status !== 'failed';\n\n try {\n if (status === 'received' && sdp) {\n logger.debug('[RTCPeerConnectionController] Received answer SDP:', sdp);\n await this._setRemoteDescription({\n type: 'answer',\n sdp\n });\n }\n } catch (error) {\n logger.error('[RTCPeerConnectionController] Error updating answer status:', error);\n this._errors$.next(error as Error);\n readyToConnect = false;\n } finally {\n if (readyToConnect) {\n this.readyToConnect();\n } else {\n this.iceGatheringController.restartICEGatheringWithRelayOnly();\n }\n }\n }\n\n public async updateOfferStatus({ status, sdp }: UpdateSDPStatusParams): Promise<void> {\n switch (status) {\n case 'received':\n this._type = 'answer';\n this.sdpInit = {\n type: 'offer',\n sdp: sdp\n };\n await this.handleOfferReceived();\n break;\n case 'failed':\n logger.error('[RTCPeerConnectionController] Offer failed to be processed by remote.');\n break;\n case 'sent':\n default:\n // No action needed for sent offers\n }\n }\n\n private async handleOfferReceived() {\n if (!this.sdpInit) {\n throw new DependencyError('SDP initialization parameters are not set');\n }\n\n this._isNegotiating$.next(true);\n await this._setRemoteDescription(this.sdpInit);\n\n const { answerOptions } = this;\n logger.debug('[RTCPeerConnectionController] Creating answer with options:', answerOptions);\n await this.createAnswer(answerOptions);\n }\n\n private readyToConnect() {\n this.firstSDPExchangeCompleted = true;\n this.connectionTimer = setTimeout(() => {\n this.removeConnectionTimer();\n if (this.peerConnection?.connectionState !== 'connected') {\n logger.debug(\n '[RTCPeerConnectionController] Connection timeout, restarting ICE gathering with relay only.'\n );\n this.iceGatheringController.restartICEGatheringWithRelayOnly();\n }\n }, this.connectionTimeout);\n }\n\n private async setRemoteDescriptionBefore(sdp: string = ''): Promise<string> {\n // TODO use the options hooks\n return Promise.resolve(sdp);\n }\n protected async setLocalDescription(params: RTCSessionDescriptionInit): Promise<void> {\n const finalLocal = await this.setLocalDescriptionBefore(params.sdp);\n return this.peerConnection?.setLocalDescription({\n ...params,\n sdp: finalLocal\n });\n }\n async setLocalDescriptionBefore(sdp: string = ''): Promise<string> {\n // TODO use the options hooks\n return Promise.resolve(sdp);\n }\n /**\n * Create an SDP answer and set it as local description.\n */\n private async createAnswer(options?: RTCAnswerOptions): Promise<void> {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n\n const answer = await this.peerConnection.createAnswer(options);\n await this.setLocalDescription(answer);\n // Note: localDescription will be emitted by setupEventListeners initial emission\n // and updated when ICE gathering state changes\n }\n /**\n * Setup event listeners on RTCPeerConnection for state changes.\n */\n private setupEventListeners(): void {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n\n // Emit initial states from the actual RTCPeerConnection\n this._iceConnectionState$.next(this.peerConnection.iceConnectionState);\n this._connectionState$.next(this.peerConnection.connectionState);\n this._signalingState$.next(this.peerConnection.signalingState);\n this._iceGatheringState$.next(this.peerConnection.iceGatheringState);\n // Note: localDescription is NOT emitted here - it will be emitted when ICE gathering completes\n this._remoteDescription$.next(this.peerConnection.remoteDescription);\n\n this.peerConnection.removeEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.addEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.removeEventListener(\n 'iceconnectionstatechange',\n this.oniceconnectionstatechangeHandler\n );\n this.peerConnection.addEventListener(\n 'iceconnectionstatechange',\n this.oniceconnectionstatechangeHandler\n );\n\n // Signaling state changes\n this.peerConnection.removeEventListener(\n 'connectionstatechange',\n this.onconnectionstatechangeHandler\n );\n this.peerConnection.addEventListener(\n 'connectionstatechange',\n this.onconnectionstatechangeHandler\n );\n\n this.peerConnection.removeEventListener(\n 'signalingstatechange',\n this.onsignalingstatechangeHandler\n );\n\n this.peerConnection.addEventListener(\n 'signalingstatechange',\n this.onsignalingstatechangeHandler\n );\n }\n\n private negotiationEnded() {\n this._isNegotiating$.next(false);\n }\n\n public restarIce(): void {\n this.peerConnection?.restartIce();\n }\n /**\n * Setup track handling for remote tracks.\n */\n private async setupTrackHandling(): Promise<void> {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n\n await this.setupLocalTracks();\n\n await this.setupRemoteTracks();\n }\n\n // eslint-disable-next-line complexity\n private async setupLocalTracks(): Promise<void> {\n logger.debug('[RTCPeerConnectionController] Setting up local tracks/transceivers.');\n let { localStream } = this;\n if (!localStream) {\n try {\n localStream = await this.localStreamController.buildLocalStream();\n } catch (error) {\n logger.error('[RTCPeerConnectionController] Error building local stream:', error);\n this._errors$.next(error as Error);\n }\n }\n\n if (localStream) {\n if (this.transceiverController?.useAddStream ?? false) {\n logger.warn(\n '[RTCPeerConnectionController] Using deprecated addStream API to add local stream.'\n );\n //@ts-expect-error -- Ignore -- useAddStream checked if the deprecated API should be used\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.peerConnection?.addStream(localStream);\n // In case the browser doesn't fire negotiationneeded automatically\n if (!this.isNegotiating) {\n logger.debug(\n '[RTCPeerConnectionController] Forcing negotiationneeded after local tracks setup.'\n );\n this.negotiationNeeded$.next();\n }\n return;\n }\n\n for (const kind of ['audio', 'video']) {\n const tracks = (\n kind === 'audio' ? localStream.getAudioTracks() : localStream.getVideoTracks()\n ).map((track, index) => ({ index, track }));\n for (const { index, track } of tracks) {\n this.localStreamController.addTrackEndedListener(track);\n if (this.transceiverController?.useAddTransceivers ?? false) {\n const transceivers =\n (kind === 'audio'\n ? this.transceiverController?.audioTransceivers\n : this.transceiverController?.videoTransceivers) ?? [];\n await this.transceiverController?.setupTransceiverSender(\n track,\n localStream,\n transceivers[index]\n );\n } else {\n logger.debug(\n `[RTCPeerConnectionController] Using addTrack for local ${kind} track:`,\n track.id\n );\n this.peerConnection?.addTrack(track, localStream);\n }\n }\n }\n }\n }\n private async getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream> {\n return (\n this.options.getUserMedia?.(constraints) ?? navigator.mediaDevices.getUserMedia(constraints)\n );\n }\n\n private async getDisplayMedia(options: DisplayMediaStreamOptions): Promise<MediaStream> {\n return (\n this.options.getDisplayMedia?.(options) ?? navigator.mediaDevices.getDisplayMedia(options)\n );\n }\n private async setupRemoteTracks(): Promise<void> {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n this.peerConnection.ontrack = (event) => {\n logger.debug('[RTCPeerConnectionController] Remote track received:', event.track.kind);\n this._remoteStream$.next(event.streams[0]);\n };\n\n await this.transceiverController?.setupRemoteTransceivers(this.type);\n }\n\n public async restoreTrackSender(kind: 'audio' | 'video' | 'both'): Promise<void> {\n await this.transceiverController?.restoreTrackSender(kind);\n }\n /**\n * Add a local media track to the peer connection.\n * @param track - The MediaStreamTrack to add\n */\n public addLocalTrack(track: MediaStreamTrack): void {\n if (!this.peerConnection) {\n const error = new DependencyError('RTCPeerConnection is not initialized');\n this._errors$.next(error);\n throw error;\n }\n\n try {\n // Add track to local stream controller\n const localStream = this.localStreamController.addTrack(track);\n\n // Add track to peer connection\n this.peerConnection.addTrack(track, localStream);\n\n logger.debug(`[RTCPeerConnectionController] ${track.kind} track added:`, track.id);\n } catch (error) {\n logger.error(`[RTCPeerConnectionController] Failed to add ${track.kind} track:`, error);\n this._errors$.next(error as Error);\n throw error;\n }\n }\n /**\n * Remove a local media track from the peer connection.\n * @param trackId - The ID of the track to remove\n */\n public removeLocalTrack(trackId: string): void {\n if (!this.peerConnection) {\n const error = new DependencyError('RTCPeerConnection is not initialized');\n this._errors$.next(error);\n throw error;\n }\n\n const sender = this.peerConnection.getSenders().find((sender) => sender.track?.id === trackId);\n if (!sender) {\n logger.debug(`[RTCPeerConnectionController] track not found: ${trackId}`);\n return;\n }\n\n try {\n // Remove sender from peer connection\n this.peerConnection.removeTrack(sender);\n\n // Remove track from local stream controller\n this.localStreamController.removeTrack(trackId);\n\n logger.debug(`[RTCPeerConnectionController] ${sender.track?.kind} track removed:`, trackId);\n } catch (error) {\n logger.error(\n `[RTCPeerConnectionController] Failed to remove ${sender.track?.kind} track:`,\n error\n );\n this._errors$.next(error as Error);\n throw error;\n }\n }\n /**\n * Replace all existing media tracks with a new media track.\n * Convenience method for single-track scenarios.\n * @param track - The MediaStreamTrack to set\n */\n public setLocalTrack(track: MediaStreamTrack): void {\n // Remove all existing media tracks\n const existingTracks = [\n ...(track.kind === 'audio'\n ? this.localStreamController.localAudioTracks\n : this.localStreamController.localVideoTracks)\n ];\n for (const existingTrack of existingTracks) {\n this.removeLocalTrack(existingTrack.id);\n }\n\n // Add the new track\n this.addLocalTrack(track);\n }\n public async updateSendersConstraints(\n kind: 'audio' | 'video',\n constraints?: MediaTrackConstraints\n ): Promise<void> {\n await this.transceiverController?.updateSendersConstraints(kind, constraints);\n }\n\n /**\n * Clean up resources and close the peer connection.\n * Completes all observables to prevent memory leaks.\n */\n public destroy(): void {\n logger.debug(\n `[RTCPeerConnectionController] Destroying RTCPeerConnectionController. ${this.propose}`\n );\n this.removeConnectionTimer();\n this._iceGatheringController?.destroy();\n this.localStreamController.destroy();\n this.transceiverController?.destroy();\n\n // Close peer connection\n if (this.peerConnection) {\n this.stopRemoteTracks();\n this.removeAllListeners();\n this.peerConnection.close();\n this.peerConnection = undefined;\n }\n\n // Call parent destroy to clean up subscriptions and complete destroyed$\n super.destroy();\n }\n private removeAllListeners() {\n if (this.peerConnection) {\n this.peerConnection.removeEventListener(\n 'icegatheringstatechange',\n this.onicegatheringstatechangeHandler\n );\n this.peerConnection.removeEventListener(\n 'iceconnectionstatechange',\n this.oniceconnectionstatechangeHandler\n );\n this.peerConnection.removeEventListener(\n 'connectionstatechange',\n this.onconnectionstatechangeHandler\n );\n this.peerConnection.removeEventListener(\n 'signalingstatechange',\n this.onsignalingstatechangeHandler\n );\n this.peerConnection.removeEventListener('negotiationneeded', this.onnegotiationneededHandler);\n }\n }\n\n private stopRemoteTracks() {\n const remoteStream = this._remoteStream$.value;\n remoteStream?.getTracks().forEach((track: MediaStreamTrack) => {\n logger.debug(`[RTCPeerConnectionController] Stopping remote track: ${track.kind}`);\n track.stop();\n });\n }\n\n public get mediaDirections(): {\n audio: RTCRtpTransceiverDirection;\n video: RTCRtpTransceiverDirection;\n } {\n return (\n this.transceiverController?.getMediaDirections() ?? {\n audio: 'inactive',\n video: 'inactive'\n }\n );\n }\n protected async _setRemoteDescription(params: RTCSessionDescriptionInit): Promise<void> {\n if (!this.peerConnection) {\n throw new DependencyError('RTCPeerConnection is not initialized');\n }\n\n const finalRemote = await this.setRemoteDescriptionBefore(params.sdp);\n\n const answer: RTCSessionDescriptionInit = {\n ...params,\n sdp: finalRemote\n };\n logger.debug('[RTCPeerConnectionController] Setting remote description:', answer);\n return this.peerConnection.setRemoteDescription(answer);\n }\n}\n","// =============================================================================\n// VERTO TYPE GUARDS\n// =============================================================================\n// This file contains type guards for Verto protocol types.\n\nimport { hasProperty, isObject } from './base.guards';\n\nimport type { TypeGuard } from '../types/base';\nimport type { WebrtcMessagePayload } from '../types/events';\nimport type {\n VertoAnswerMessage,\n VertoAnswerParams,\n VertoAnswerResultMessage,\n VertoAttachMessage,\n VertoAttachParams,\n VertoByeMessage,\n VertoByeParams,\n VertoInviteMessage,\n VertoInviteParams,\n VertoMediaParamsMessage,\n VertoMediaParamsParams,\n VertoMethodMessage,\n VertoPingMessage,\n VertoPingParams,\n VertoPongMessage,\n VertoPongParams\n} from '../types/verto';\n\n// =============================================================================\n// VERTO MESSAGE TYPE GUARDS\n// =============================================================================\n\nexport function isVertoMethodMessage(value: unknown): value is VertoMethodMessage {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'id')\n );\n}\n\nexport function isVertoAnswerMessage(value: unknown): value is VertoAnswerMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return (\n msg.method === 'verto.answer' &&\n isObject(msg.params) &&\n hasProperty(msg.params, 'callID') &&\n hasProperty(msg.params, 'sdp')\n );\n}\n\nexport function isVertoMediaParamsMessage(value: unknown): value is VertoMediaParamsMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return (\n msg.method === 'verto.mediaParams' &&\n isObject(msg.params) &&\n hasProperty(msg.params, 'mediaParams')\n );\n}\n\nexport function isVertoPingMessage(value: unknown): value is VertoPingMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return msg.method === 'verto.ping';\n}\n\nexport function isVertoPongMessage(value: unknown): value is VertoPongMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return msg.method === 'verto.pong';\n}\n\nexport function isVertoInviteMessage(value: unknown): value is VertoInviteMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return (\n msg.method === 'verto.invite' &&\n isObject(msg.params) &&\n hasProperty(msg.params, 'sdp') &&\n hasProperty(msg.params, 'callID')\n );\n}\n\nexport function isVertoByeMessage(value: unknown): value is VertoByeMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return msg.method === 'verto.bye';\n}\n\nexport function isVertoAnswerResultMessage(value: unknown): value is VertoAnswerResultMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return (\n isObject(msg.result) &&\n hasProperty(msg.result, 'method') &&\n msg.result.method === 'verto.answer'\n );\n}\n\nexport function isVertoAttachMessage(value: unknown): value is VertoAttachMessage {\n if (!isVertoMethodMessage(value)) return false;\n const msg = value as unknown as Record<string, unknown>;\n return msg.method === 'verto.attach';\n}\n\n// =============================================================================\n// WEBRTC MESSAGE EVENT DATA (inner params.params) TYPE GUARDS\n// =============================================================================\n\nexport function isVertoAnswerInnerParams(value: unknown): value is WebrtcMessagePayload & {\n method: 'verto.answer';\n params: VertoAnswerParams;\n} {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'method') &&\n value.method === 'verto.answer' &&\n isObject(value.params) &&\n hasProperty(value.params, 'callID') &&\n hasProperty(value.params, 'sdp')\n );\n}\n\nexport function isVertoMediaParamsInnerParams(value: unknown): value is WebrtcMessagePayload & {\n method: 'verto.mediaParams';\n params: VertoMediaParamsParams;\n} {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'method') &&\n value.method === 'verto.mediaParams' &&\n isObject(value.params) &&\n hasProperty(value.params, 'mediaParams')\n );\n}\n\nexport function isVertoPingInnerParams(value: unknown): value is WebrtcMessagePayload & {\n method: 'verto.ping';\n params: VertoPingParams;\n} {\n return (\n isObject(value) &&\n hasProperty(value, 'jsonrpc') &&\n value.jsonrpc === '2.0' &&\n hasProperty(value, 'method') &&\n value.method === 'verto.ping'\n );\n}\n\n// =============================================================================\n// VERTO PARAMS TYPE GUARDS (for use with filterAs on Verto method params)\n// =============================================================================\n\nexport function isVertoAnswerParamsGuard(value: unknown): value is VertoAnswerParams {\n return (\n isObject(value) &&\n hasProperty(value, 'callID') &&\n typeof value.callID === 'string' &&\n hasProperty(value, 'sdp') &&\n typeof value.sdp === 'string'\n );\n}\n\nexport function isVertoMediaParamsParamsGuard(value: unknown): value is VertoMediaParamsParams {\n return (\n isObject(value) &&\n hasProperty(value, 'callID') &&\n typeof value.callID === 'string' &&\n hasProperty(value, 'mediaParams') &&\n isObject(value.mediaParams)\n );\n}\n\nexport function isVertoPingParamsGuard(value: unknown): value is VertoPingParams {\n return (\n isObject(value) &&\n hasProperty(value, 'callID') &&\n typeof value.callID === 'string' &&\n hasProperty(value, 'dialogParams') &&\n isObject(value.dialogParams)\n );\n}\n\nexport function isVertoPongParamsGuard(value: unknown): value is VertoPongParams {\n return isVertoPingParamsGuard(value);\n}\n\nexport function isVertoInviteParamsGuard(value: unknown): value is VertoInviteParams {\n return (\n isObject(value) &&\n hasProperty(value, 'dialogParams') &&\n isObject(value.dialogParams) &&\n hasProperty(value, 'sdp') &&\n typeof value.sdp === 'string'\n );\n}\n\nexport function isVertoByeParamsGuard(value: unknown): value is VertoByeParams {\n return isObject(value) && hasProperty(value, 'callID') && typeof value.callID === 'string';\n}\n\nexport function isVertoAttachParamsGuard(value: unknown): value is VertoAttachParams {\n return (\n isObject(value) &&\n hasProperty(value, 'callID') &&\n typeof value.callID === 'string' &&\n hasProperty(value, 'callee_id_number') &&\n typeof value.callee_id_number === 'string' &&\n hasProperty(value, 'callee_id_name') &&\n typeof value.callee_id_name === 'string' &&\n hasProperty(value, 'caller_id_number') &&\n typeof value.caller_id_number === 'string' &&\n hasProperty(value, 'caller_id_name') &&\n typeof value.caller_id_name === 'string'\n );\n}\n\n// Duplicate guards for backwards compatibility (without \"Guard\" suffix)\nexport function isVertoAnswerParams(value: unknown): value is VertoAnswerParams {\n return isVertoAnswerParamsGuard(value);\n}\n\nexport function isVertoMediaParamsParams(value: unknown): value is VertoMediaParamsParams {\n return isVertoMediaParamsParamsGuard(value);\n}\n\nexport function isVertoPingParams(value: unknown): value is VertoPingParams {\n return isVertoPingParamsGuard(value);\n}\n\nexport function isVertoPongParams(value: unknown): value is VertoPongParams {\n return isVertoPongParamsGuard(value);\n}\n\nexport function isVertoInviteParams(value: unknown): value is VertoInviteParams {\n return isVertoInviteParamsGuard(value);\n}\n\nexport function isVertoByeParams(value: unknown): value is VertoByeParams {\n return isVertoByeParamsGuard(value);\n}\n\nexport function isVertoAttachParams(value: unknown): value is VertoAttachParams {\n return isVertoAttachParamsGuard(value);\n}\n\n// =============================================================================\n// VERTO METHOD TYPE MAPPING\n// =============================================================================\n\nexport const VertoMethodTypeMap = {\n 'verto.answer': isVertoAnswerMessage,\n 'verto.mediaParams': isVertoMediaParamsMessage,\n 'verto.ping': isVertoPingMessage,\n 'verto.pong': isVertoPongMessage,\n 'verto.invite': isVertoInviteMessage,\n 'verto.bye': isVertoByeMessage\n} as const;\n\nexport type VertoMethodType = keyof typeof VertoMethodTypeMap;\n\n/**\n * Gets the appropriate type guard for a Verto method.\n */\nexport function getVertoMethodGuard(method: string): TypeGuard<VertoMethodMessage> | undefined {\n return VertoMethodTypeMap[method as VertoMethodType];\n}\n\n// =============================================================================\n// VERTO PARAMS TYPE MAPPING\n// =============================================================================\n\nexport const VertoParamsTypeMap = {\n 'verto.answer': isVertoAnswerParamsGuard,\n 'verto.mediaParams': isVertoMediaParamsParamsGuard,\n 'verto.ping': isVertoPingParamsGuard,\n 'verto.pong': isVertoPongParamsGuard,\n 'verto.invite': isVertoInviteParamsGuard,\n 'verto.attach': isVertoAttachParamsGuard,\n 'verto.bye': isVertoByeParamsGuard\n} as const;\n\n/**\n * Gets the appropriate params type guard for a Verto method.\n */\nexport function getVertoParamsGuard(\n method: string\n):\n | TypeGuard<\n | VertoAnswerParams\n | VertoMediaParamsParams\n | VertoPingParams\n | VertoPongParams\n | VertoInviteParams\n | VertoByeParams\n | VertoAttachParams\n >\n | undefined {\n return VertoParamsTypeMap[method as VertoMethodType];\n}\n","/* eslint-disable max-lines */\nimport { filter, firstValueFrom, map, merge, race, take, takeUntil, timeout } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { PreferencesContainer } from '../containers/PreferencesContainer';\nimport { RTCPeerConnectionController } from '../controllers/RTCPeerConnectionController';\nimport { INVITE_VERSION } from '../core/constants';\nimport { DependencyError, InvalidParams, JSONRPCError, VertoPongError } from '../core/errors';\nimport {\n VertoAnswer,\n VertoBye,\n VertoByeCauseCodes,\n VertoInfo,\n VertoInvite,\n VertoModify,\n VertoPong,\n WebrtcVerto\n} from '../core/RPCMessages';\nimport {\n isVertoAnswerInnerParams,\n isVertoAttachMessage,\n isVertoByeMessage,\n isVertoMediaParamsInnerParams,\n isVertoPingInnerParams\n} from '../core/RPCMessages/guards/verto.guards';\nimport { filterAs } from '../operators';\nimport { filterNull } from '../operators/filterNull';\nimport { getValueFrom } from '../utils/getValueFrom';\nimport { getLogger } from '../utils/logger';\n\nimport type { AttachManager } from './AttachManager';\nimport type { WebRTCCall } from '../core/entities/Call';\nimport type { VertoRPCMessage } from '../core/RPCMessages';\nimport type {\n ExecuteVertoOptions,\n ScreenShareStatus,\n SignalingStatus,\n TransferOptions,\n WebRTCVertoManagerOptions\n} from './types/verto-manager.types';\nimport type { JSONRPCResponse } from '../core/RPCMessages/types/base';\nimport type {\n VertoAnswerParams,\n VertoAttachParams,\n VertoByeCause,\n VertoByeParams,\n VertoMediaParamsParams,\n VertoPingParams\n} from '../core/RPCMessages/types/verto';\nimport type { RTCPeerConnectionPropose } from '../core/types/call.types';\nimport type { MediaOptions, MediaDirections } from '../core/types/media.types';\nimport type { VertoMethod } from '../core/types/rpc.types';\nimport type { DeviceController } from '../interfaces/DeviceController';\nimport type { WebRTCVerto } from '../interfaces/WebRTCVerto';\nimport type { BehaviorSubject, Observable } from 'rxjs';\n\nconst logger = getLogger();\nexport abstract class VertoManager extends Destroyable {\n protected callSession?: WebRTCCall;\n\n constructor(callSession?: WebRTCCall) {\n super();\n this.callSession = callSession;\n }\n\n public destroy(): void {\n this.callSession = undefined;\n super.destroy();\n }\n}\nexport class WebRTCVertoManager extends VertoManager implements WebRTCVerto {\n public mediaDirections$!: Observable<MediaDirections>;\n public localStream$!: Observable<MediaStream>;\n public remoteStream$!: Observable<MediaStream>;\n private readonly onError?: (error: Error) => void;\n private _rtcPeerConnections$ = this.createBehaviorSubject<RTCPeerConnectionController[]>([]);\n\n private _nodeId$: BehaviorSubject<string | null>;\n private _selfId$ = this.createBehaviorSubject<string | null>(null);\n private _signalingStatus$ = this.createBehaviorSubject<SignalingStatus | null>(null);\n private _screenShareStatus$ = this.createBehaviorSubject<ScreenShareStatus>('none');\n private _rtcPeerConnectionsMap = new Map<string, RTCPeerConnectionController>();\n private _screenShareId?: string;\n private _screenShareTimeoutMs = 50000;\n\n constructor(\n protected webRtcCallSession: WebRTCCall,\n private readonly attachManager: AttachManager,\n private readonly deviceController: DeviceController,\n options: WebRTCVertoManagerOptions = {}\n ) {\n super(webRtcCallSession);\n this._nodeId$ = this.createBehaviorSubject<string | null>(options.nodeId ?? null);\n this.onError = options.onError;\n this.initSubscriptions();\n this.initMainPeerConnection();\n }\n async hold(): Promise<void> {\n const vertoModifyMessage = VertoModify({\n sessid: this.webRtcCallSession.id,\n dialogParams: {\n callID: this.webRtcCallSession.id\n },\n action: 'hold'\n });\n\n try {\n await this.executeVerto(vertoModifyMessage);\n } catch (error) {\n logger.warn(\n '[WebRTCManager] Call might already be disconnected, error sending Verto hold:',\n error\n );\n throw error;\n }\n }\n async unhold(): Promise<void> {\n const vertoModifyMessage = VertoModify({\n sessid: this.webRtcCallSession.id,\n dialogParams: {\n callID: this.webRtcCallSession.id\n },\n action: 'unhold'\n });\n try {\n await this.executeVerto(vertoModifyMessage);\n } catch (error) {\n logger.warn(\n '[WebRTCManager] Call might already be disconnected, error sending Verto unhold:',\n error\n );\n throw error;\n }\n }\n\n public get mediaDirections(): MediaDirections {\n return this.mainPeerConnection.mediaDirections;\n }\n\n public get rtcPeerConnections$(): Observable<RTCPeerConnectionController[]> {\n return this._rtcPeerConnections$.asObservable();\n }\n\n public get rtcPeerConnections(): RTCPeerConnectionController[] {\n return this._rtcPeerConnections$.value;\n }\n\n public get nodeId$(): Observable<string | null> {\n return this._nodeId$.asObservable();\n }\n\n public get selfId$(): Observable<string | null> {\n return this._selfId$.asObservable();\n }\n\n public get localStream(): MediaStream | null {\n return this._rtcPeerConnectionsMap.get(this.webRtcCallSession.id)?.localStream ?? null;\n }\n\n public get remoteStream(): MediaStream | null {\n return this._rtcPeerConnectionsMap.get(this.webRtcCallSession.id)?.remoteStream ?? null;\n }\n\n public get nodeId(): string | null {\n return this._nodeId$.value;\n }\n\n public get screenShareStatus(): ScreenShareStatus {\n return this._screenShareStatus$.value;\n }\n\n public get screenShareStatus$(): Observable<ScreenShareStatus> {\n return this._screenShareStatus$.asObservable();\n }\n\n public get mainPeerConnection(): RTCPeerConnectionController {\n const rtcPeerConnection = this._rtcPeerConnectionsMap.get(this.webRtcCallSession.id);\n if (!rtcPeerConnection) {\n throw new DependencyError('Main peer connection not found');\n }\n return rtcPeerConnection;\n }\n\n public get signalingStatus$(): Observable<SignalingStatus> {\n return merge(\n this._signalingStatus$.pipe(filterNull()),\n this.mainPeerConnection.connectionState$.pipe(\n filter((connectionState) =>\n ['connected', 'disconnected', 'failed'].includes(connectionState)\n )\n ) as Observable<SignalingStatus>\n );\n }\n\n private initSubscriptions() {\n this.subscribeTo(this.vertoAnswer$, (event: VertoAnswerParams) => {\n logger.debug('[WebRTCManager] Received Verto answer event:', event);\n const { sdp } = event;\n const rtcPeerConnController = this._rtcPeerConnectionsMap.get(event.callID);\n void rtcPeerConnController?.updateAnswerStatus({\n status: 'received',\n sdp: sdp\n });\n });\n\n this.subscribeTo(this.vertoMediaParams$, (event: VertoMediaParamsParams) => {\n logger.debug('[WebRTCManager] Received Verto mediaParams event:', event);\n\n const { mediaParams, callID } = event;\n const rtcPeerConnController = this._rtcPeerConnectionsMap.get(callID);\n const { audio, video } = mediaParams;\n if (audio) {\n void rtcPeerConnController?.updateSendersConstraints('audio', audio);\n }\n if (video) {\n void rtcPeerConnController?.updateSendersConstraints('video', video);\n }\n });\n\n this.subscribeTo(this.vertoPing$, (vertoPing: VertoPingParams) => {\n void this.attachManager.attach(this.webRtcCallSession);\n void this.sendVertoPong(vertoPing);\n });\n }\n\n private async sendVertoPong(vertoPing: VertoPingParams) {\n try {\n const vertoPongMessage = VertoPong({\n ...vertoPing\n });\n await this.executeVerto(vertoPongMessage);\n } catch (error) {\n logger.warn('[WebRTCManager] Call might disconnect, error sending Verto pong:', error);\n this.onError?.(new VertoPongError(error));\n }\n }\n\n public async updateMediaConstraints(\n options: {\n audio?: MediaTrackConstraints;\n video?: MediaTrackConstraints;\n } = {}\n ): Promise<void> {\n const { audio, video } = options;\n try {\n if (audio) {\n await this.mainPeerConnection.updateSendersConstraints('audio', audio);\n }\n if (video) {\n await this.mainPeerConnection.updateSendersConstraints('video', video);\n }\n } catch (error) {\n logger.warn('[WebRTCManager] Error updating media constraints:', error);\n this.onError?.(error instanceof Error ? error : new Error(String(error), { cause: error }));\n throw error;\n }\n }\n\n public get selfId(): string | null {\n return this._selfId$.value;\n }\n\n private get vertoAnswer$() {\n return this.webRtcCallSession.webrtcMessages$.pipe(\n filterAs(isVertoAnswerInnerParams, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n private get vertoMediaParams$() {\n return this.webRtcCallSession.webrtcMessages$.pipe(\n filterAs(isVertoMediaParamsInnerParams, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n private get vertoBye$() {\n return this.webRtcCallSession.webrtcMessages$.pipe(\n filterAs(isVertoByeMessage, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n private get vertoAttach$() {\n return this.webRtcCallSession.webrtcMessages$.pipe(\n filterAs(isVertoAttachMessage, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n private get vertoPing$() {\n return this.webRtcCallSession.webrtcMessages$.pipe(\n filterAs(isVertoPingInnerParams, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n private async executeVerto(\n message: VertoRPCMessage,\n optionals: ExecuteVertoOptions = {}\n ): Promise<JSONRPCResponse<unknown>> {\n const params = {\n callID: optionals.callID ?? this.webRtcCallSession.id,\n\n node_id: optionals.node_id ?? this._nodeId$.value ?? '',\n message,\n subscribe: optionals.subscribe\n };\n const webrtcVertoMessage = WebrtcVerto(params);\n\n const response = await this.webRtcCallSession.execute(webrtcVertoMessage);\n\n // Check for error at top level\n if (response.error) {\n const error = new JSONRPCError(\n response.error.code,\n response.error.message,\n response.error.data\n );\n this.onError?.(error);\n throw error;\n }\n\n // Check for nested error in result.result (webrtc.verto wraps the inner response)\n const innerResult = getValueFrom<{ error?: { code: number; message: string; data?: unknown } }>(\n response,\n 'result.result'\n );\n if (innerResult?.error) {\n const error = new JSONRPCError(\n innerResult.error.code,\n innerResult.error.message,\n innerResult.error.data\n );\n this.onError?.(error);\n throw error;\n }\n\n return response;\n }\n\n private async sendLocalDescription(\n message: VertoRPCMessage,\n rtcPeerConnController: RTCPeerConnectionController\n ): Promise<void> {\n const vertoMethod: VertoMethod = message.method;\n\n const optionalsParams = this.getSendLocalSDPOptionalParams(rtcPeerConnController);\n\n try {\n const response = await this.executeVerto(message, optionalsParams);\n\n switch (vertoMethod) {\n case 'verto.invite':\n this.processInviteResponse(response, rtcPeerConnController);\n break;\n case 'verto.modify':\n await this.processModifyResponse(response, rtcPeerConnController);\n break;\n default:\n }\n } catch (error) {\n logger.error(`[WebRTCManager] Error sending Verto ${vertoMethod}:`, error);\n throw error;\n }\n }\n private async processModifyResponse(\n response: JSONRPCResponse<unknown>,\n rtcPeerConnController: RTCPeerConnectionController\n ) {\n if (!response.error) {\n const action = getValueFrom<string>(response, 'result.result.result.action');\n const sdp = getValueFrom<string>(response, 'result.result.result.sdp');\n if (action === 'updateMedia' && !!sdp) {\n try {\n await rtcPeerConnController.updateAnswerStatus({\n status: 'received',\n sdp\n });\n } catch (error) {\n logger.warn('[WebRTCManager] Error processing modify response:', error);\n this.onError?.(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n }\n }\n }\n }\n\n private processInviteResponse(\n response: JSONRPCResponse<unknown>,\n rtcPeerConnController: RTCPeerConnectionController\n ) {\n if (\n !response.error &&\n getValueFrom(response, 'result.result.result.message') === 'CALL CREATED'\n ) {\n this._nodeId$.next(getValueFrom<string>(response, 'result.node_id') ?? null);\n const memberId = getValueFrom<string>(response, 'result.result.result.memberID') ?? null;\n const callId = getValueFrom<string>(response, 'result.result.result.callID') ?? null;\n logger.debug('[WebRTCManager] Verto invite response:', { callId, memberId, response });\n\n this._selfId$.next(memberId);\n rtcPeerConnController.setMemberId(memberId);\n if (callId) {\n this.webRtcCallSession.addCallId(callId);\n }\n this._signalingStatus$.next('ringing');\n void this.attachManager.attach(this.webRtcCallSession);\n logger.info('[WebRTCManager] Verto invite successful');\n logger.debug(\n `[WebRTCManager] nodeid: ${this._nodeId$.value}, selfId: ${this._selfId$.value}`\n );\n } else {\n logger.error('[WebRTCManager] Verto invite failed:', response);\n const inviteError = response.error\n ? new JSONRPCError(response.error.code, response.error.message, response.error.data)\n : new Error('Verto invite failed: unexpected response');\n this.onError?.(inviteError);\n }\n }\n\n private get RTCPeerConnectionConfig() {\n return {\n iceServers:\n this.webRtcCallSession.clientSession.iceServers ?? PreferencesContainer.instance.iceServers,\n relayOnly:\n PreferencesContainer.instance.relayOnly ||\n PreferencesContainer.instance.disableUdpIceServers,\n disableUdpIceServers: PreferencesContainer.instance.disableUdpIceServers,\n iceCandidateTimeout: PreferencesContainer.instance.iceCandidateTimeout,\n iceGatheringTimeout: PreferencesContainer.instance.iceGatheringTimeout\n };\n }\n\n private initMainPeerConnection() {\n //if (this.webRtcCallSession.direction === 'outbound') {\n const { options } = this.webRtcCallSession;\n const rtcPeerConnController = new RTCPeerConnectionController(\n {\n propose: 'main',\n callId: this.webRtcCallSession.id,\n audio: options.audio,\n video: options.video,\n inputAudioDeviceConstraints: options.inputAudioDeviceConstraints,\n inputVideoDeviceConstraints: options.inputVideoDeviceConstraints,\n inputAudioStream: options.inputAudioStream,\n inputVideoStream: options.inputVideoStream,\n receiveAudio: options.receiveAudio,\n receiveVideo: options.receiveVideo,\n ...this.RTCPeerConnectionConfig\n },\n options.initOffer,\n this.deviceController\n );\n this.setupLocalDescriptionHandler(rtcPeerConnController);\n this.setupVertoByeHandler();\n this.setupVertoAttachHandler();\n this.initObservables(rtcPeerConnController);\n this._rtcPeerConnectionsMap.set(rtcPeerConnController.id, rtcPeerConnController);\n this._rtcPeerConnections$.next(Array.from(this._rtcPeerConnectionsMap.values()));\n this.subscribeTo(rtcPeerConnController.errors$, (error) => {\n this.onError?.(error);\n });\n //}\n }\n\n private setupVertoAttachHandler(): void {\n this.subscribeTo(this.vertoAttach$, async (vertoAttach: VertoAttachParams) => {\n logger.debug('[WebRTCManager] Received Verto attach event:', vertoAttach);\n const { callID } = vertoAttach;\n await this.attachManager.attach({\n id: callID,\n to: vertoAttach.callee_id_number,\n mediaDirections: {\n audio: 'sendrecv',\n // this might be changed in future to support video attach, but this feature was originally supposed in the non-video SDK.\n video: 'inactive'\n }\n });\n await this.attachManager.reattachCalls();\n });\n }\n\n private initObservables(rtcPeerConnController: RTCPeerConnectionController): void {\n this.mediaDirections$ = rtcPeerConnController.connectionState$.pipe(\n filter((state) => state === 'connected'),\n takeUntil(this.destroyed$),\n map(() => rtcPeerConnController.mediaDirections)\n );\n this.localStream$ = rtcPeerConnController.localStream$.pipe(\n filterNull(),\n takeUntil(this.destroyed$)\n );\n this.remoteStream$ = rtcPeerConnController.remoteStream$.pipe(\n filterNull(),\n takeUntil(this.destroyed$)\n );\n }\n private setupLocalDescriptionHandler(rtcPeerConnController: RTCPeerConnectionController): void {\n this.subscribeTo(\n // watch for local description from the RTCPeerConnection and send it to remote peer\n rtcPeerConnController.localDescription$.pipe(\n // Filter out null descriptions\n filter((description): description is RTCSessionDescription => description !== null),\n takeUntil(this.destroyed$)\n ),\n (description) => {\n const { type, sdp } = description;\n const dialogParams = this.dialogParams(rtcPeerConnController);\n const initial = !rtcPeerConnController.firstSDPExchangeCompleted;\n if (type === 'answer') {\n {\n const vertoMessageRequest = VertoAnswer({\n dialogParams,\n sdp: sdp\n });\n void this.sendLocalDescriptionOnceAccepted(vertoMessageRequest, rtcPeerConnController);\n }\n } else if (initial) {\n this._signalingStatus$.next('trying');\n const vertoMessageRequest = VertoInvite({\n dialogParams,\n sdp\n });\n void this.sendLocalDescription(vertoMessageRequest, rtcPeerConnController);\n } else {\n const vertoMessageRequest = VertoModify({\n dialogParams,\n sdp,\n action: 'updateMedia'\n });\n void this.sendLocalDescription(vertoMessageRequest, rtcPeerConnController);\n }\n }\n );\n }\n\n private setupVertoByeHandler() {\n this.subscribeTo(this.vertoBye$, () => {\n void this.attachManager.detach(this.webRtcCallSession);\n this.callSession?.destroy();\n });\n }\n\n private getSendLocalSDPOptionalParams(\n rtcPeerConnController: RTCPeerConnectionController\n ): ExecuteVertoOptions {\n let subscribe = undefined;\n const initial = !rtcPeerConnController.firstSDPExchangeCompleted;\n if (initial) {\n subscribe = [];\n if (rtcPeerConnController.isMainDevice) {\n subscribe.push(...PreferencesContainer.instance.inviteSubscribeMainDevice);\n } else if (rtcPeerConnController.isAdditionalDevice) {\n subscribe.push(...PreferencesContainer.instance.inviteSubscribeAdditionalDevice);\n } else if (rtcPeerConnController.isScreenShare) {\n subscribe.push(...PreferencesContainer.instance.inviteSubscribeScreenshare);\n }\n }\n const optionalsParams = {\n callID: rtcPeerConnController.id,\n // don't send a node_id `verto.invite`\n node_id: initial ? '' : (this._nodeId$.value ?? ''),\n subscribe\n };\n return optionalsParams;\n }\n\n async sendLocalDescriptionOnceAccepted(\n vertoMessageRequest: VertoRPCMessage,\n rtcPeerConnectionController: RTCPeerConnectionController\n ): Promise<void> {\n logger.debug('[WebRTCManager] Waiting for call to be accepted or ended before sending answer');\n const vertoByeOrAccepted: boolean | VertoByeParams = await firstValueFrom(\n race(this.vertoBye$, this.webRtcCallSession.answered$)\n );\n\n if (isVertoByeMessage(vertoByeOrAccepted)) {\n logger.info('[WebRTCManager] Call ended before answer was sent.');\n this.callSession?.destroy();\n } else if (!vertoByeOrAccepted) {\n logger.info('[WebRTCManager] Call was not accepted, sending verto.bye.');\n await this.bye('USER_BUSY');\n } else {\n logger.debug('[WebRTCManager] Call accepted, sending answer');\n try {\n this._signalingStatus$.next('connecting');\n await this.sendLocalDescription(vertoMessageRequest, rtcPeerConnectionController);\n await rtcPeerConnectionController.updateAnswerStatus({\n status: 'sent'\n });\n await this.attachManager.attach(this.webRtcCallSession);\n } catch (error) {\n logger.error('[WebRTCManager] Error sending Verto answer:', error);\n this.onError?.(error instanceof Error ? error : new Error(String(error), { cause: error }));\n await rtcPeerConnectionController.updateAnswerStatus({\n status: 'failed'\n });\n }\n }\n }\n\n dialogParams(rtcPeerConnectionController: RTCPeerConnectionController): Record<string, unknown> {\n const memberId = rtcPeerConnectionController.memberId ?? this._selfId$.value ?? undefined;\n const attach =\n rtcPeerConnectionController.propose === 'main' &&\n !rtcPeerConnectionController.firstSDPExchangeCompleted &&\n this.webRtcCallSession.options.reattach;\n\n return {\n id: rtcPeerConnectionController.isMainDevice\n ? this.webRtcCallSession.id\n : rtcPeerConnectionController.id,\n destinationNumber: this.webRtcCallSession.to ?? this.webRtcCallSession.from,\n attach,\n reattaching: attach,\n callerName: this.webRtcCallSession.fromName,\n callerNumber: this.webRtcCallSession.from,\n remoteCallerName: this.webRtcCallSession.toName,\n remoteCallerNumber: this.webRtcCallSession.to,\n userVariables: {\n memberCallId: this.webRtcCallSession.id,\n memberId,\n ...this.webRtcCallSession.options.userVariables,\n ...PreferencesContainer.instance.userVariables\n },\n screenShare: rtcPeerConnectionController.isScreenShare,\n additionalDevice: rtcPeerConnectionController.isAdditionalDevice,\n pingSupported: true,\n version: INVITE_VERSION\n };\n }\n\n public muteMainAudioInputDevice(): void {\n return this.mainPeerConnection.stopTrackSender('audio');\n }\n\n public muteMainVideoInputDevice(): void {\n return this.mainPeerConnection.stopTrackSender('video');\n }\n\n public async unmuteMainAudioInputDevice(): Promise<void> {\n return this.mainPeerConnection.restoreTrackSender('audio');\n }\n\n public async unmuteMainVideoInputDevice(): Promise<void> {\n return this.mainPeerConnection.restoreTrackSender('video');\n }\n\n public async addInputDevice(\n options: MediaOptions = { audio: false, video: true }\n ): Promise<string | undefined> {\n return this.initAdditionalPeerConnection('additional-device', options);\n }\n\n /**\n * Add a new input device to the main peer connection,\n * only if a device of the same kind is not present already.\n *\n * @see selectAudioInputDevice\n * @see selectVideoInputDevice\n * @param options\n */\n public async addMainInputDevices(options: MediaOptions = { audio: true }): Promise<void> {\n let deviceKind: 'audio' | 'video' | 'both' | undefined = undefined;\n\n const { mediaDirections } = this.mainPeerConnection;\n\n if (\n options.audio ??\n options.inputAudioDeviceConstraints ??\n (options.inputAudioStream && mediaDirections.audio.startsWith('send'))\n ) {\n deviceKind = 'audio';\n }\n if (\n options.video ??\n options.inputVideoDeviceConstraints ??\n (options.inputVideoStream && !mediaDirections.video.startsWith('send'))\n ) {\n deviceKind = deviceKind === 'audio' ? 'both' : 'video';\n }\n if (deviceKind) {\n this.mainPeerConnection.updateMediaDevicesOptions(options);\n await this.mainPeerConnection.restoreTrackSender(deviceKind);\n } else {\n const error = new InvalidParams('No valid device to be added');\n this.onError?.(error);\n throw error;\n }\n }\n\n public async addScreenMedia(options: MediaOptions = { audio: false }): Promise<void> {\n await this.initAdditionalPeerConnection('screenshare', options);\n }\n\n private async initAdditionalPeerConnection(\n propose: RTCPeerConnectionPropose,\n options: MediaOptions\n ): Promise<string | undefined> {\n let rtcPeerConnController: RTCPeerConnectionController | null = null;\n try {\n this._screenShareStatus$.next('starting');\n rtcPeerConnController = new RTCPeerConnectionController(\n {\n ...options,\n ...this.RTCPeerConnectionConfig,\n propose\n },\n undefined,\n this.deviceController\n );\n this.setupLocalDescriptionHandler(rtcPeerConnController);\n if (propose === 'screenshare') {\n this._screenShareId = rtcPeerConnController.id;\n }\n this._rtcPeerConnectionsMap.set(rtcPeerConnController.id, rtcPeerConnController);\n this._rtcPeerConnections$.next(Array.from(this._rtcPeerConnectionsMap.values()));\n this.subscribeTo(rtcPeerConnController.errors$, (error) => {\n this.onError?.(error);\n });\n await firstValueFrom(\n rtcPeerConnController.connectionState$.pipe(\n filter((state) => state === 'connected'),\n take(1),\n timeout(this._screenShareTimeoutMs)\n )\n );\n this._screenShareStatus$.next('started');\n logger.info('[WebRTCManager] Screen share started successfully.');\n return rtcPeerConnController.id;\n } catch (error) {\n logger.warn('[WebRTCManager] Error initializing additional peer connection:', error);\n this.onError?.(error instanceof Error ? error : new Error(String(error), { cause: error }));\n if (rtcPeerConnController) {\n rtcPeerConnController.destroy();\n }\n this._screenShareStatus$.next('none');\n }\n }\n\n public async removeInputDevices(id: string): Promise<void> {\n return this.removeAdditionalPeerConnection(id);\n }\n\n public removeMainInputDevice(options = { removeAudio: false, removeVideo: true }): void {\n let removeTrack: 'audio' | 'video' | 'both' | undefined = undefined;\n if (options.removeAudio) {\n removeTrack = 'audio';\n }\n if (options.removeVideo) {\n removeTrack = removeTrack === 'audio' ? 'both' : 'video';\n }\n\n if (removeTrack) {\n return this.mainPeerConnection.stopTrackSender(removeTrack, {\n updateTransceiverDirection: true\n });\n }\n }\n\n public async removeScreenMedia(): Promise<void> {\n if (!['starting', 'started'].includes(this._screenShareStatus$.value)) {\n logger.warn('[WebRTCManager] No active screen share to stop.');\n }\n if (!this._screenShareId) {\n logger.debug('[WebRTCManager] No screen share peer connection found.');\n return;\n }\n this._screenShareStatus$.next('stopping');\n await this.removeAdditionalPeerConnection(this._screenShareId);\n this._screenShareId = undefined;\n this._screenShareStatus$.next('none');\n }\n\n public async removeAdditionalPeerConnection(id: string): Promise<void> {\n const rtcPeerConnController = this._rtcPeerConnectionsMap.get(id);\n try {\n if (rtcPeerConnController) {\n await this.executeVertoBye(rtcPeerConnController);\n }\n } finally {\n rtcPeerConnController?.destroy();\n this._rtcPeerConnectionsMap.delete(id);\n this._rtcPeerConnections$.next(Array.from(this._rtcPeerConnectionsMap.values()));\n }\n }\n\n private async executeVertoBye(\n rtcPeerConnController: RTCPeerConnectionController,\n cause?: VertoByeCause\n ): Promise<void> {\n try {\n const causeParams = cause\n ? {\n cause: cause,\n cause_code: VertoByeCauseCodes[cause]\n }\n : {};\n\n await this.executeVerto(\n VertoBye({\n ...causeParams,\n dialogParams: this.dialogParams(rtcPeerConnController)\n })\n );\n } catch (error) {\n logger.warn(\n '[WebRTCManager] Call might already be disconnected, error sending Verto bye:',\n error\n );\n throw error;\n }\n }\n public async bye(cause?: VertoByeCause): Promise<void> {\n void this.attachManager.detach(this.webRtcCallSession);\n const rtcPeerConnController = this._rtcPeerConnectionsMap.get(this.webRtcCallSession.id);\n if (rtcPeerConnController) {\n await this.executeVertoBye(rtcPeerConnController, cause);\n }\n }\n\n public async sendDigits(dtmf: string): Promise<void> {\n const vertoInfoMessage = VertoInfo({\n sessid: this.webRtcCallSession.id,\n dialogParams: {\n callID: this.webRtcCallSession.id\n },\n dtmf\n });\n\n try {\n await this.executeVerto(vertoInfoMessage);\n } catch (error) {\n logger.warn('[WebRTCManager] Error sending DTMF digits:', error);\n throw error;\n }\n }\n\n public async transfer(options: TransferOptions): Promise<void> {\n const message = VertoModify({\n ...options,\n dialogParams: this.dialogParams(this.mainPeerConnection),\n action: 'transfer'\n });\n try {\n logger.debug('[WebRTCManager] Transferring call with options:', options);\n await this.executeVerto(message);\n } catch (error) {\n logger.error('[WebRTCManager] Error transferring call:', error);\n throw error;\n }\n }\n\n public destroy(): void {\n this._rtcPeerConnectionsMap.forEach((rtcPeerConnController) => {\n rtcPeerConnController.destroy();\n });\n this._rtcPeerConnectionsMap.clear();\n this._rtcPeerConnections$.complete();\n super.destroy();\n }\n}\n","import { Participant, SelfParticipant, type ExecuteMethod } from '../core/entities/Participant';\n\nimport type { DeviceController } from '../interfaces/DeviceController';\nimport type { VertoManager } from '../interfaces/VertoManager';\n\n/**\n * Factory for creating Participant instances with proper dependency injection\n * Eliminates circular dependency between Call and Participant\n */\nexport class ParticipantFactory {\n constructor(\n private executeMethod: ExecuteMethod,\n private vertoManager: VertoManager,\n private deviceController: DeviceController\n ) {}\n\n /**\n * Create a self participant (the local user in the call)\n */\n public createSelfParticipant(id: string): SelfParticipant {\n return new SelfParticipant(id, this.executeMethod, this.vertoManager, this.deviceController);\n }\n\n /**\n * Create a remote participant\n */\n public createParticipant(id: string): Participant {\n return new Participant(id, this.executeMethod, this.deviceController);\n }\n}\n","import { filter, firstValueFrom, from, map, merge, takeUntil, tap } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\n\nimport { Destroyable } from '../../behaviors/Destroyable';\nimport { ParticipantFactory } from '../../managers/ParticipantFactory';\nimport { filterAs } from '../../operators';\nimport { getValueFrom } from '../../utils/getValueFrom';\nimport { getLogger } from '../../utils/logger';\nimport { InvalidParams, UnimplementedError } from '../errors';\nimport { buildRPCRequest } from '../RPCMessages';\nimport {\n isCallStateMetadata,\n isCallUpdatedMetadata,\n isLayoutChangedMetadata,\n isMemberJoinedMetadata,\n isMemberLeftMetadata,\n isMemberTalkingMetadata,\n isMemberUpdatedMetadata,\n isSignalwireCallMetadata,\n isWebrtcMessageMetadata\n} from '../RPCMessages/guards/events.guards';\n\nimport type { Address } from './Address';\nimport type { Participant, SelfParticipant } from './Participant';\nimport type { ClientSession } from '../../interfaces/ClientSession';\nimport type { DeviceController } from '../../interfaces/DeviceController';\nimport type { JSONRPCParams } from '../RPCMessages';\nimport type {\n CallStatus,\n CallOptions,\n CallManager,\n CallParticipant,\n CallSelfParticipant\n} from './types/call.types';\nimport type { WebRTCVerto } from '../../interfaces/WebRTCVerto';\nimport type { CallEventsManager } from '../../managers/CallEventsManager';\nimport type { TransferOptions } from '../../managers/types/verto-manager.types';\nimport type { JSONRPCRequest, JSONRPCResponse } from '../RPCMessages/types/base';\nimport type { LayoutLayer } from '../RPCMessages/types/common';\nimport type {\n CallStatePayload,\n CallUpdatedPayload,\n LayoutChangedPayload,\n MemberJoinedPayload,\n MemberLeftPayload,\n MemberTalkingPayload,\n MemberUpdatedPayload\n} from '../RPCMessages/types/events';\nimport type { CallDirection, VideoPosition } from '../types/call.types';\nimport type { MediaDirections } from '../types/media.types';\nimport type { PendingRPCOptions } from '../utils';\nimport type { Observable, BehaviorSubject } from 'rxjs';\n\nconst logger = getLogger();\n\n/**\n * Manager instances returned by initialization callback\n */\nexport interface CallManagers {\n vertoManager: WebRTCVerto;\n callEventsManager: CallEventsManager;\n}\n\n/**\n * Initialization callback that creates managers for a Call instance\n * @param call - The WebRTCCall instance being initialized\n * @returns Manager instances for the call\n */\nexport type ManagerInitializer = (call: WebRTCCall) => CallManagers;\n\n/**\n * Required initialization configuration for Call constructor.\n * Calls must be created via {@link CallFactory} which provides these dependencies.\n */\nexport interface CallInitialization {\n /**\n * Callback function that creates and wires manager instances\n */\n initializeManagers: ManagerInitializer;\n /**\n * Device controller for media device access\n */\n deviceController: DeviceController;\n}\n\n/**\n * Concrete WebRTC call implementation.\n *\n * Manages the full lifecycle of a call including signaling, media streams,\n * participants, layout, and event routing. Created via {@link SignalWire.dial}\n * or received as an inbound call.\n */\nexport class WebRTCCall extends Destroyable implements CallManager {\n /** Unique identifier for this call. */\n public readonly id: string;\n /** Destination URI this call was placed to. */\n public to?: string;\n protected readonly participantsMap = new Map<string, Participant>();\n private vertoManager!: WebRTCVerto;\n private callEventsManager!: CallEventsManager;\n private participantFactory: ParticipantFactory;\n private _errors$ = this.createSubject<Error>();\n private _status$: BehaviorSubject<CallStatus>;\n private _answered$ = this.createReplaySubject<boolean>();\n private _holdState = false;\n\n constructor(\n public clientSession: ClientSession,\n public options: CallOptions,\n initialization: CallInitialization,\n public address?: Address\n ) {\n super();\n this.id = options.callId ?? uuid();\n this.to = options.to;\n\n const managers = initialization.initializeManagers(this);\n this.vertoManager = managers.vertoManager;\n this.callEventsManager = managers.callEventsManager;\n\n if (options.initOffer) {\n this._status$ = this.createBehaviorSubject<CallStatus>('ringing');\n } else {\n this._status$ = this.createBehaviorSubject<CallStatus>('new');\n }\n\n const { deviceController } = initialization;\n\n // Create participant factory with bound executeMethod\n this.participantFactory = new ParticipantFactory(\n this.executeMethod.bind(this),\n this.vertoManager,\n deviceController\n );\n }\n\n /** Observable stream of errors from media, signaling, and peer connection layers. */\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable();\n }\n\n /** @internal Push an error to the call's error stream. */\n public emitError(error: Error): void {\n this._errors$.next(error);\n }\n\n /** Whether this call is `'inbound'` or `'outbound'`. */\n public get direction(): CallDirection {\n return this.options.initOffer ? 'inbound' : 'outbound';\n }\n\n /** Observable of the address associated with this call. */\n public get address$(): Observable<Address | undefined> {\n return from([this.address]);\n }\n\n /** Display name of the caller. */\n public get fromName(): string | undefined {\n return this.options.fromName;\n }\n\n /** Address URI of the caller. */\n public get from(): string | undefined {\n return this.options.from;\n }\n\n /** Display name of the callee. */\n public get toName(): string | undefined {\n return this.options.toName;\n }\n\n /** Toggles whether incoming video is received. @throws {UnimplementedError} Not yet implemented. */\n // eslint-disable-next-line @typescript-eslint/require-await\n public async toggleIncomingVideo(): Promise<void> {\n throw new UnimplementedError();\n }\n\n /** Toggles whether incoming audio is received. @throws {UnimplementedError} Not yet implemented. */\n // eslint-disable-next-line @typescript-eslint/require-await\n public async toggleIncomingAudio(): Promise<void> {\n throw new UnimplementedError();\n }\n\n /** @internal Registers an additional call ID for event routing. */\n public addCallId(callId: string): void {\n this.callEventsManager.addCallId(callId);\n }\n\n /** List of capabilities available in the current call. */\n public get capabilities(): string[] {\n return this.callEventsManager.capabilities;\n }\n\n /** Current snapshot of all participants in the call. */\n public get participants(): CallParticipant[] {\n return Array.from(this.participantsMap.values());\n }\n\n /** The local participant, or `null` if not yet joined. */\n public get self(): CallSelfParticipant | null {\n return this.callEventsManager.self;\n }\n\n async toggleLock(): Promise<void> {\n const method = this.locked ? 'call.unlock' : 'call.lock';\n await this.executeMethod(this.selfId ?? '', method, {});\n throw new UnimplementedError();\n }\n\n async toggleHold(): Promise<void> {\n if (this._holdState) {\n await this.vertoManager.unhold();\n } else {\n await this.vertoManager.hold();\n }\n this._holdState = !this._holdState;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async startRecording(): Promise<void> {\n // NEEDS check backend API status\n throw new UnimplementedError();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async startStreaming(): Promise<void> {\n // V3 VIDEO\n // NEEDS check backend API status\n throw new UnimplementedError();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async setMeta(_meta: Record<string, unknown>): Promise<void> {\n // NEEDS backend implementation\n throw new UnimplementedError();\n }\n // eslint-disable-next-line @typescript-eslint/require-await\n async updateMeta(_meta: Record<string, unknown>): Promise<void> {\n // NEEDS backend implementation\n throw new UnimplementedError();\n }\n\n /** Observable of layout layer positions for all participants. */\n public get layoutLayers$(): Observable<LayoutLayer[]> {\n return this.callEventsManager.layoutLayers$;\n }\n\n /** Current snapshot of layout layers. */\n public get layoutLayers(): LayoutLayer[] {\n return this.callEventsManager.layoutLayers;\n }\n\n /** Executes a Verto RPC method targeting a specific participant. */\n public async executeMethod<T extends JSONRPCResponse = JSONRPCResponse>(\n target: string,\n method: string,\n args: Record<string, unknown>\n ): Promise<T> {\n const params = this.buildMethodParams(target, args);\n\n const request = buildRPCRequest({\n method,\n params\n });\n\n try {\n return await this.clientSession.execute(request);\n } catch (error) {\n logger.error(`[Call] Error executing method ${method} with params`, params, error);\n throw error;\n }\n }\n\n private buildMethodParams(target: string, args: Record<string, unknown>): JSONRPCParams {\n const reference = {\n node_id: this.nodeId,\n call_id: this.id\n };\n return {\n ...args,\n self: {\n ...reference,\n member_id: this.vertoManager.selfId\n },\n target: {\n ...reference,\n member_id: target\n }\n };\n }\n\n /** Observable of the current call status (e.g. `'ringing'`, `'connected'`). */\n public get status$(): Observable<CallStatus> {\n return merge(this._status$.asObservable(), this.vertoManager.signalingStatus$);\n }\n /** Observable of the participants list, emits on join/leave/update. */\n public get participants$(): Observable<CallParticipant[]> {\n return this.callEventsManager.participants$;\n }\n /** Observable of the local (self) participant. */\n public get self$(): Observable<CallSelfParticipant> {\n return this.callEventsManager.self$;\n }\n /** Observable indicating whether the call is being recorded. */\n public get recording$(): Observable<boolean> {\n return this.callEventsManager.recording$;\n }\n\n /** Observable indicating whether the call is being streamed. */\n public get streaming$(): Observable<boolean> {\n return this.callEventsManager.streaming$;\n }\n\n /** Observable indicating whether raise-hand priority is active. */\n public get raiseHandPriority$(): Observable<boolean> {\n return this.callEventsManager.raiseHandPriority$;\n }\n\n /** Observable indicating whether the call room is locked. */\n public get locked$(): Observable<boolean> {\n return this.callEventsManager.locked$;\n }\n\n /** Observable of custom metadata associated with the call. */\n public get meta$(): Observable<Record<string, unknown>> {\n return this.callEventsManager.meta$;\n }\n\n /** Observable of the call's capability flags. */\n public get capabilities$(): Observable<string[]> {\n return this.callEventsManager.capabilities$;\n }\n\n /** Observable of the current layout name. */\n public get layout$(): Observable<string> {\n return this.callEventsManager.layout$;\n }\n\n /** Current call status. */\n public get status(): CallStatus {\n return this._status$.value;\n }\n\n /** Whether the call is currently being recorded. */\n public get recording(): boolean {\n return this.callEventsManager.recording;\n }\n\n /** Whether the call is currently being streamed. */\n public get streaming(): boolean {\n return this.callEventsManager.streaming;\n }\n\n /** Whether raise-hand priority is active. */\n public get raiseHandPriority(): boolean {\n return this.callEventsManager.raiseHandPriority;\n }\n\n /** Whether the call room is locked. */\n public get locked(): boolean {\n return this.callEventsManager.locked;\n }\n\n /** Current custom metadata of the call. */\n public get meta(): Record<string, unknown> {\n return this.callEventsManager.meta;\n }\n\n /** Current layout name, or `undefined` if not set. */\n public get layout(): string | undefined {\n return this.callEventsManager.layout;\n }\n\n /** Observable of available layout names. */\n public get layouts$(): Observable<string[]> {\n return this.callEventsManager.layouts$;\n }\n\n /** Current snapshot of available layout names. */\n public get layouts(): string[] {\n return this.callEventsManager.layouts;\n }\n\n /** Observable of the local media stream (camera/microphone). */\n public get localStream$(): Observable<MediaStream> {\n return this.vertoManager.localStream$;\n }\n /** Current local media stream, or `null` if not available. */\n public get localStream(): MediaStream | null {\n return this.vertoManager.localStream;\n }\n /** Observable of the remote media stream from the far end. */\n public get remoteStream$(): Observable<MediaStream> {\n return this.vertoManager.remoteStream$;\n }\n /** Current remote media stream, or `null` if not available. */\n public get remoteStream(): MediaStream | null {\n return this.vertoManager.remoteStream;\n }\n\n /** @internal */\n public createParticipant(\n memberId: string,\n selfId?: string | null\n ): Participant | SelfParticipant {\n // Use provided selfId (from call.joined event) or fall back to vertoManager.selfId\n const effectiveSelfId = selfId ?? this.vertoManager.selfId;\n if (memberId === effectiveSelfId) {\n return this.participantFactory.createSelfParticipant(memberId);\n }\n return this.participantFactory.createParticipant(memberId);\n }\n\n /** Observable of the current audio/video send/receive directions. */\n public get mediaDirections$(): Observable<MediaDirections> {\n return this.vertoManager.mediaDirections$;\n }\n\n /** Current audio/video send/receive directions. */\n public get mediaDirections(): MediaDirections {\n return this.vertoManager.mediaDirections;\n }\n\n protected get participantsId$(): Observable<string[]> {\n return this.participants$.pipe(\n map((participants) => participants.map((participant) => participant.id))\n );\n }\n\n /** Executes a raw JSON-RPC request on the client session. */\n public async execute<T extends JSONRPCResponse = JSONRPCResponse>(\n request: JSONRPCRequest,\n options?: PendingRPCOptions\n ): Promise<T> {\n return this.clientSession.execute(request, options);\n }\n\n /** Observable of the local participant's member ID. */\n public get selfId$(): Observable<string | null> {\n return this.vertoManager.selfId$;\n }\n\n /** Local participant's member ID, or `null` if not joined. */\n public get selfId(): string | null {\n return this.vertoManager.selfId;\n }\n\n /** Observable of the server node ID handling this call. */\n public get nodeId$(): Observable<string | null> {\n return this.vertoManager.nodeId$;\n }\n\n /** Server node ID handling this call, or `null`. */\n public get nodeId(): string | null {\n return this.vertoManager.nodeId;\n }\n\n private isCallSessionEvent(event: unknown): event is Event {\n try {\n logger.debug('[Call] Checking if event is for this call session:', event);\n const callId =\n getValueFrom<string>(event, 'params.params.callID') ??\n getValueFrom<string>(event, 'params.call_id');\n const roomSessionId = getValueFrom<string>(event, 'params.room_session_id');\n logger.debug(\n `[Call] Extracted session identifiers callID: ${callId} and roomSessionID: ${roomSessionId} from event:`\n );\n return (\n callId === this.id ||\n (!!callId && this.callEventsManager.isCallIdValid(callId)) ||\n (!!roomSessionId && this.callEventsManager.isRoomSessionIdValid(roomSessionId))\n );\n } catch (error) {\n logger.error('[Call] Error checking if event is for this call session:', error);\n return false;\n }\n }\n\n private get callSessionEvents$() {\n return this.clientSession.signalingEvent$.pipe(\n filter((event) => this.isCallSessionEvent(event)),\n tap((event) => logger.debug('[Call] Received call session event:', event)),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of call-updated events. */\n public get callUpdated$(): Observable<CallUpdatedPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isCallUpdatedMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n /** Observable of member-joined events. */\n public get memberJoined$(): Observable<MemberJoinedPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isMemberJoinedMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of member-left events. */\n public get memberLeft$(): Observable<MemberLeftPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isMemberLeftMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n /** Observable of member-updated events (mute, volume, etc.). */\n public get memberUpdated$(): Observable<MemberUpdatedPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isMemberUpdatedMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of member-talking events (speech start/stop). */\n public get memberTalking$(): Observable<MemberTalkingPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isMemberTalkingMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of call state-change events. */\n public get callStates$(): Observable<CallStatePayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isCallStateMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of layout-changed events. */\n public get layoutUpdates$(): Observable<LayoutChangedPayload> {\n return this.callSessionEvents$.pipe(\n filterAs(isLayoutChangedMetadata, 'params'),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Underlying `RTCPeerConnection`, for advanced use cases. */\n public get rtcPeerConnection(): RTCPeerConnection | undefined {\n return this.vertoManager.mainPeerConnection.peerConnection;\n }\n /** Observable of raw signaling events as plain objects. */\n public get signalingEvent$(): Observable<Record<string, unknown>> {\n return this.callEvent$.pipe(\n map((event) => JSON.parse(JSON.stringify(event)) as Record<string, unknown>)\n );\n }\n\n /** Observable of WebRTC-specific signaling messages. */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public get webrtcMessages$() {\n return this.callSessionEvents$.pipe(\n filterAs(isWebrtcMessageMetadata, 'params'),\n tap((event) => logger.debug('[Call] Event is a WebRTC message event:', event)),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of call-level signaling events. */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public get callEvent$() {\n return this.callSessionEvents$.pipe(\n filterAs(isSignalwireCallMetadata, 'params'),\n tap((event) => logger.debug('[Call] Event is a call event:', event)),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Observable of layout-changed signaling events. */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public get layoutEvent$() {\n return this.callEvent$.pipe(filterAs(isLayoutChangedMetadata, 'params'));\n }\n\n /** Hangs up the call and releases all resources. */\n async hangup(): Promise<void> {\n this._status$.next('disconnecting');\n try {\n await this.vertoManager.bye();\n } finally {\n this._status$.next('destroyed');\n this.destroy();\n }\n }\n\n /** Sends DTMF digits (e.g. `'1234#'`) on the call. */\n async sendDigits(dtmf: string): Promise<void> {\n return this.vertoManager.sendDigits(dtmf);\n }\n\n /** Accepts an inbound call. */\n public answer(): void {\n this._answered$.next(true);\n }\n\n /** Rejects an inbound call. */\n public reject(): void {\n this._answered$.next(false);\n }\n\n /** Observable that emits `true` when answered, `false` when rejected. */\n public get answered$(): Observable<boolean> {\n return this._answered$.asObservable();\n }\n\n /**\n * Sets the call layout and participant positions.\n * @param layout - Layout name (must be one of {@link layouts}).\n * @param positions - Map of member IDs to video positions.\n */\n async setLayout(layout: string, positions: Record<string, VideoPosition>): Promise<void> {\n if (!this.layouts.includes(layout)) {\n throw new InvalidParams(\n `Layout ${layout} is not available in the current call layouts: ${this.layouts.join(', ')}`\n );\n }\n\n const selfId = await firstValueFrom(\n this.selfId$.pipe(filter((id): id is string => id !== null))\n );\n\n await this.executeMethod(selfId, 'call.layout.set', {\n layout,\n positions\n });\n }\n\n /** Transfers the call to other participants. */\n public async transfer(options: TransferOptions): Promise<void> {\n return this.vertoManager.transfer(options);\n }\n\n /** Destroys the call, releasing all resources and subscriptions. */\n public destroy(): void {\n this.vertoManager.destroy();\n this.callEventsManager.destroy();\n this.participantsMap.clear();\n super.destroy();\n }\n}\n","import { CallEventsManager } from './CallEventsManager';\nimport { WebRTCVertoManager } from './VertoManager';\nimport { WebRTCCall } from '../core/entities/Call';\n\nimport type { AttachManager } from './AttachManager';\nimport type { Address } from '../core/entities/Address';\nimport type { CallOptions } from '../core/entities/types/call.types';\nimport type { ClientSession } from '../interfaces/ClientSession';\nimport type { DeviceController } from '../interfaces/DeviceController';\n\n/**\n * Factory for creating WebRTCCall instances with proper manager wiring.\n * Eliminates circular dependencies by centralizing Call and Manager creation.\n */\nexport class CallFactory {\n constructor(\n private sessionManager: ClientSession,\n private deviceController: DeviceController,\n private attachManager: AttachManager\n ) {}\n\n /**\n * Create a new WebRTCCall with properly initialized managers\n */\n createCall(address: Address, options: CallOptions): WebRTCCall {\n const call = new WebRTCCall(\n this.sessionManager,\n options,\n {\n initializeManagers: (callInstance: WebRTCCall) => {\n const vertoManager = new WebRTCVertoManager(\n callInstance,\n this.attachManager,\n this.deviceController,\n {\n nodeId: options.nodeId,\n onError: (error: Error) => {\n callInstance.emitError(error);\n }\n }\n );\n\n const callEventsManager = new CallEventsManager(callInstance);\n\n return {\n vertoManager,\n callEventsManager\n };\n },\n deviceController: this.deviceController\n },\n address\n );\n\n return call;\n }\n}\n","import {\n defer,\n distinctUntilChanged,\n filter,\n from,\n map,\n ReplaySubject,\n shareReplay,\n Subject,\n takeUntil,\n skip,\n pipe\n} from 'rxjs';\n\nimport { Destroyable } from './Destroyable';\nimport { GET_PARAMS } from '../controllers/HTTPRequestController';\nimport { CollectionFetchError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type {\n PaginatedResponse,\n Entity,\n FetchController,\n Collection\n} from './types/collection.types';\nimport type { HTTPRequestController } from '../controllers/HTTPRequestController';\nimport type { Observable, Subscription } from 'rxjs';\n\nconst logger = getLogger();\n\nexport class Fetcher<T extends Entity = Entity> implements FetchController<Entity> {\n private nextUrl?: string;\n public hasMore: boolean | undefined;\n public filter = (_item: Entity): _item is T => true;\n public mapper = (item: unknown): T => item as T;\n\n constructor(\n protected endpoint: string,\n params: string,\n protected http: HTTPRequestController\n ) {\n this.nextUrl = `${this.endpoint}?${params}`;\n }\n\n public async next(): Promise<T[]> {\n if (!this.nextUrl) return [];\n\n const response = await this.http.request({\n ...GET_PARAMS,\n url: this.nextUrl\n });\n if (response.ok && !!response.body) {\n const result = JSON.parse(response.body) as PaginatedResponse<T>;\n this.nextUrl = result.links.next;\n const filtered = result.data.filter(this.filter);\n return filtered.map(this.mapper);\n }\n logger.error('Failed to fetch entity');\n return [];\n }\n\n public async id(v: unknown): Promise<T | undefined> {\n const response = await this.http.request({\n ...GET_PARAMS,\n url: `${this.endpoint}/${String(v)}`\n });\n if (response.ok && !!response.body) {\n return JSON.parse(response.body) as T;\n }\n }\n}\n\nexport class EntityCollection<T extends Entity = Entity>\n extends Destroyable\n implements Collection<T>\n{\n public loading$ = this.createBehaviorSubject<boolean>(false);\n public values$ = this.createReplaySubject<T[]>(1);\n public hasMore$: Observable<boolean>;\n private collectionData = new Map<string, T>();\n private observablesRegistry = new Map<string, ReplaySubject<T>>();\n private updateSubscription: Subscription;\n private upsertData = (data: Partial<T>) => {\n if (!data.id) return;\n const existing = this.collectionData.get(data.id) ?? {};\n const updated = { ...existing, ...data } as T;\n this.collectionData.set(data.id, updated);\n this.observablesRegistry.get(data.id)?.next(updated);\n this.values$.next(Array.from(this.collectionData.values()));\n };\n\n private _destroy$ = new Subject<void>();\n constructor(\n private fetchController: FetchController<T>,\n private update$: Observable<Partial<T>>,\n private readonly onError?: (error: Error) => void\n ) {\n super();\n this.updateSubscription = this.update$.subscribe(this.upsertData);\n this.loading$.next(false);\n this.hasMore$ = defer(() => from(this.init())).pipe(shareReplay(1), takeUntil(this._destroy$));\n }\n public get loading(): boolean {\n return this.loading$.value;\n }\n\n public get hasMore(): boolean {\n return this.fetchController.hasMore ?? true;\n }\n\n public get updated$(): Observable<void> {\n return this.loading$.pipe(\n distinctUntilChanged(),\n skip(1), // skiping the loading === true event\n filter((loading) => !loading),\n map(() => void 0),\n takeUntil(this._destroy$)\n );\n }\n\n public get values(): T[] {\n return Array.from(this.collectionData.values());\n }\n\n private async init(): Promise<boolean> {\n if (this.fetchController.hasMore === false) {\n return Promise.resolve(false);\n }\n await this.fetchMore();\n return this.fetchController.hasMore ?? true;\n }\n\n private async fetchMore(): Promise<void> {\n try {\n this.loading$.next(true);\n const datas = await this.fetchController.next();\n datas.forEach(this.upsertData);\n this.loading$.next(false);\n } catch (error) {\n logger.error(`Failed to fetch initial collection data`, error);\n this.loading$.next(false);\n this.onError?.(new CollectionFetchError('fetchMore', error));\n }\n }\n\n private async tryFetch(key: keyof FetchController<T>, value: unknown): Promise<T | undefined> {\n try {\n this.loading$.next(true);\n const data = await this.fetchController[key]?.(value);\n this.loading$.next(false);\n if (data) {\n this.upsertData(data);\n }\n return data;\n } catch (error) {\n logger.error(`Failed to fetch data for (${String(key)}:${String(value)}) :`, error);\n this.loading$.next(false);\n this.onError?.(new CollectionFetchError(`tryFetch(${String(key)})`, error));\n }\n }\n\n public get$(id: string): Observable<T> | undefined {\n if (!this.observablesRegistry.has(id)) {\n this.observablesRegistry.set(id, new ReplaySubject<T>(1));\n const data = this.collectionData.get(id);\n if (data) {\n this.observablesRegistry.get(id)?.next(data);\n } else {\n void this.tryFetch('id', id);\n }\n }\n return this.observablesRegistry.get(id)?.asObservable();\n }\n\n public async find$(key: keyof T, value: unknown): Promise<Observable<T> | undefined> {\n const data =\n Array.from(this.collectionData.values()).find((item) => item[key] === value) ??\n (await this.tryFetch(key, value));\n\n return data ? this.get$(data.id) : undefined;\n }\n\n public loadMore(): void {\n if (this.fetchController.hasMore !== false) {\n void this.fetchMore();\n }\n }\n\n public destroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this.updateSubscription.unsubscribe();\n this.loading$.complete();\n this.observablesRegistry.forEach((subject) => subject.complete());\n }\n}\n\nexport class EntityCollectionTransformed<\n O extends Entity = Entity,\n T extends Entity = Entity\n> implements Collection<T> {\n constructor(\n private originalCollection: EntityCollection<O>,\n private filter: (i: unknown) => i is O = (i): i is O => !!i,\n private mapper: (item: O) => T = (item) => item as unknown as T\n ) {}\n\n public get loading$(): Observable<boolean> {\n return this.originalCollection.loading$;\n }\n\n public get loading(): boolean {\n return this.originalCollection.loading;\n }\n public get hasMore$(): Observable<boolean> {\n return this.originalCollection.hasMore$;\n }\n public get hasMore(): boolean {\n return this.originalCollection.hasMore;\n }\n public get values(): T[] {\n return this.originalCollection.values.filter(this.filter).map(this.mapper);\n }\n public get values$(): Observable<T[]> {\n return this.originalCollection.values$.pipe(\n map((values) => values.filter(this.filter).map(this.mapper))\n );\n }\n\n public get$(id: string): Observable<T> | undefined {\n const original$ = this.originalCollection.get$(id);\n return !original$ ? original$ : original$.pipe(pipe(filter(this.filter), map(this.mapper)));\n }\n\n public async find$(key: keyof T, value: unknown): Promise<Observable<T> | undefined> {\n const original$ = await this.originalCollection.find$(key as keyof O, value);\n return !original$ ? original$ : original$.pipe(pipe(filter(this.filter), map(this.mapper)));\n }\n public loadMore(): void {\n this.originalCollection.loadMore();\n }\n public destroy(): void {\n this.originalCollection.destroy();\n }\n}\n","import { defer, map, shareReplay, takeUntil, type Observable } from 'rxjs';\n\nimport { EntityCollectionTransformed } from '../../behaviors/Collection';\nimport { Destroyable } from '../../behaviors/Destroyable';\nimport { filterNull } from '../../operators';\nimport { DependencyError, UnimplementedError } from '../errors';\n\nimport type { CallState } from './types/call.types';\nimport type { AddressProvider } from '../../interfaces/AddressProvider';\nimport type {\n ConversationMessageCollection,\n ConversationsProvider\n} from '../../interfaces/Conversations';\nimport type { GetAddressResponse } from '../types/address.types';\nimport type { ResourceType } from '../types/common.types';\nimport type {\n AddressHistory,\n AddressHistoryCollection,\n GetConversationMessageResponse,\n TextMessage,\n TextMessageCollection\n} from '../types/conversation.types';\n\ntype AddressState = GetAddressResponse;\n/**\n * Represents a contact or room in the directory.\n *\n * Provides identity metadata, conversation history, text messaging,\n * and activity state for an address entry.\n */\nexport class Address extends Destroyable {\n private initConversationMessages = async (): Promise<ConversationMessageCollection> => {\n this._conversationMessages =\n this._conversationMessages ??\n (await this.conversationManager.getConversationMessageCollection(this.id));\n if (this._conversationMessages.hasMore) {\n this._conversationMessages.loadMore();\n }\n return this._conversationMessages;\n };\n\n /** Observable of text messages for this address. Lazily loads conversation data. */\n public textMessages$ = defer(this.initConversationMessages).pipe(\n map(() => this.textMessage),\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n /** Observable of call history for this address. Lazily loads conversation data. */\n public history$ = defer(this.initConversationMessages).pipe(\n map(() => this.history),\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n private _conversationMessages?: ConversationMessageCollection;\n\n private _state$ = this.createBehaviorSubject<AddressState | null>(null);\n\n private _history$?: AddressHistoryCollection<Address>;\n\n private _textMessages$?: TextMessageCollection<Address>;\n\n // FIXME after presence API is available\n // this should be a dynamic view of the address existing calls,\n // independent if the user is on the call or not.\n // private _callsStates$ = this.createBehaviorSubject<CallState[]>([]);\n\n constructor(\n private readonly addressId: string,\n private conversationManager: ConversationsProvider,\n private addressProvider: AddressProvider<Address>\n ) {\n super();\n }\n\n /** @internal */\n public upnext(state: Partial<AddressState>): void {\n const update = {\n ...this._state$.value,\n ...state\n } as AddressState;\n this._state$.next(update);\n }\n\n /** @internal */\n public get state(): AddressState | null {\n return this._state$.value;\n }\n\n /** Unique address identifier. */\n public get id(): string {\n return this.addressId;\n }\n /** Address name (resource identifier). */\n public get name(): string {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.name;\n }\n\n /** ISO timestamp of when the address was created. */\n public get createdAt(): string {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.created_at;\n }\n\n /** Default communication channel URI (video for rooms, audio otherwise). */\n public get defaultChannel(): string | undefined {\n return this.type === 'room' ? this.channels.video : this.channels.audio;\n }\n\n /** Observable of the human-readable display name. */\n public get displayName$(): Observable<string> {\n return this._state$.pipe(\n filterNull(),\n map((state) => state.display_name),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Human-readable display name. */\n public get displayName(): string {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.display_name;\n }\n\n /** Observable of the preview image URL. */\n public get previewUrl$(): Observable<string | undefined> {\n return this._state$.pipe(\n filterNull(),\n map((state) => state.preview_url),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Preview image URL. */\n public get previewUrl(): string | undefined {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.preview_url;\n }\n\n /** Observable of the cover image URL. */\n public get coverUrl$(): Observable<string | undefined> {\n return this._state$.pipe(\n filterNull(),\n shareReplay(1),\n map((state) => state.cover_url),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Cover image URL. */\n public get coverUrl(): string | undefined {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.cover_url;\n }\n\n /** Observable of the underlying resource ID. */\n public get resourceId$(): Observable<string> {\n return this._state$.pipe(\n filterNull(),\n shareReplay(1),\n map((state) => state.resource_id),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Underlying resource ID. */\n public get resourceId(): string {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.resource_id;\n }\n\n /** Observable of the resource type (e.g. `'room'`, `'subscriber'`). */\n public get type$(): Observable<ResourceType> {\n return this._state$.pipe(\n filterNull(),\n shareReplay(1),\n map((state) => state.type),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Resource type (e.g. `'room'`, `'subscriber'`). */\n public get type(): ResourceType {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.type;\n }\n\n /** Observable of available communication channels (audio, video, messaging). */\n public get channels$(): Observable<{\n audio?: string;\n messaging?: string;\n video?: string;\n }> {\n return this._state$.pipe(\n filterNull(),\n shareReplay(1),\n map((state) => state.channels),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Available communication channels. */\n public get channels(): {\n audio?: string;\n messaging?: string;\n video?: string;\n } {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.channels;\n }\n\n /** Whether the address (room) is locked. */\n public get locked(): boolean {\n if (!this._state$.value) {\n throw new DependencyError('state not initialized');\n }\n return this._state$.value.locked;\n }\n\n /** Observable indicating whether the address (room) is locked. */\n public get locked$(): Observable<boolean> {\n return this._state$.pipe(\n filterNull(),\n shareReplay(1),\n map((state) => state.locked),\n takeUntil(this.destroyed$)\n );\n }\n\n /** Sends a text message to this address. */\n public async sendText(text: string): Promise<void> {\n return this.conversationManager.sendText(text, this.id);\n }\n\n /** Collection of text messages for this address, with pagination support. */\n public get textMessage():\n | EntityCollectionTransformed<GetConversationMessageResponse, TextMessage<Address>>\n | undefined {\n if (!this._conversationMessages) {\n return;\n }\n this._textMessages$ =\n this._textMessages$ ??\n new EntityCollectionTransformed<GetConversationMessageResponse, TextMessage<Address>>(\n this._conversationMessages,\n (item): item is GetConversationMessageResponse =>\n (item as GetConversationMessageResponse).subtype === 'chat',\n (item) =>\n ({\n id: item.id,\n text: item.text,\n created: item.ts,\n fromAddress$: this.addressProvider.get$(item.from_fabric_address_id)\n }) as TextMessage<Address>\n );\n return this._textMessages$;\n }\n\n /** Collection of call history entries for this address, with pagination support. */\n public get history():\n | EntityCollectionTransformed<GetConversationMessageResponse, AddressHistory<Address>>\n | undefined {\n if (!this._conversationMessages) {\n return;\n }\n this._history$ =\n this._history$ ??\n new EntityCollectionTransformed<GetConversationMessageResponse, AddressHistory<Address>>(\n this._conversationMessages,\n (item): item is GetConversationMessageResponse =>\n (item as GetConversationMessageResponse).subtype === 'log',\n (item) =>\n ({\n id: item.id,\n kind: item.kind,\n status: item.details.status,\n started: item.details.start_time,\n ended: item.details.end_time,\n fromAddress$: this.addressProvider.get$(item.from_fabric_address_id)\n }) as AddressHistory<Address>\n );\n return this._history$;\n }\n\n /** Observable of active call states for this address. @throws {UnimplementedError} Requires presence support. */\n public get activity$(): Observable<CallState[]> {\n // NEEDS Presence\n throw new UnimplementedError();\n }\n\n /** Active call states for this address. @throws {UnimplementedError} Requires presence support. */\n public get activity(): CallState[] {\n // NEEDS Presence\n throw new UnimplementedError();\n }\n}\n","import { filter, NEVER, Observable, race, take } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\n\nimport { InvalidListenerError, RPCTimeoutError } from './errors';\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { getLogger } from '../utils/logger';\n\nimport type { RPCConnectResult } from './RPCMessages';\nimport type { JSONRPCRequest, JSONRPCResponse } from './RPCMessages/types/base';\n\nconst logger = getLogger();\n\nexport async function callListener<T>(\n listener: ((value: T) => void) | ((value: T) => Promise<void>),\n value: T,\n onError?: (error: unknown) => void\n): Promise<void> {\n try {\n if (typeof listener !== 'function') {\n throw new InvalidListenerError();\n }\n await listener(value);\n } catch (error) {\n if (error instanceof InvalidListenerError) {\n logger.error(error.message);\n } else {\n logger.warn('Error calling listener:', error);\n }\n onError?.(error);\n }\n}\n\nexport const isRPCConnectResult = (e: unknown): e is RPCConnectResult => {\n logger.debug('isRPCConnectResult check:', e);\n if (!e || typeof e !== 'object') return false;\n\n // Check if this is a JSON-RPC response with a result property\n\n const result = e as RPCConnectResult;\n\n const is =\n typeof result.identity === 'string' &&\n typeof result.protocol === 'string' &&\n typeof result.authorization === 'object' &&\n typeof result.authorization.jti === 'string' &&\n typeof result.authorization.project_id === 'string' &&\n typeof result.authorization.fabric_subscriber === 'object';\n\n logger.debug('isRPCConnectResult check result:', is);\n return is;\n};\n\nexport interface PendingRPCOptions {\n /**\n * Timeout in milliseconds. Defaults to 5000ms (5 seconds).\n * If the response is not received within this time, the promise will reject with RPCTimeoutError.\n */\n timeoutMs?: number;\n\n /**\n * Optional AbortSignal for cancellation support.\n * If the signal is aborted, the promise will reject with an AbortError.\n */\n signal?: AbortSignal;\n}\n\nexport class PendingRPC<T extends JSONRPCResponse = JSONRPCResponse> {\n private static readonly defaultTimeoutMs = 5000;\n private id = uuid();\n\n public readonly request: JSONRPCRequest;\n public promise: Promise<T>;\n\n constructor(request: JSONRPCRequest, responses$: Observable<T>, options?: PendingRPCOptions) {\n logger.debug(\n `[PendingRPC(${this.id}) request:${request.id}: method:${request.method}] Creating PendingRPC`\n );\n this.request = request;\n\n const timeoutMs = options?.timeoutMs ?? PendingRPC.defaultTimeoutMs;\n const signal = options?.signal;\n\n this.promise = new Promise<T>((resolve, reject) => {\n // Check if already aborted\n if (signal?.aborted) {\n reject(new DOMException('The operation was aborted', 'AbortError'));\n return;\n }\n\n // Track if promise has been settled to prevent unhandled rejections\n let isSettled = false;\n\n // Create the main response observable\n const response$ = responses$.pipe(\n filter((result) => result.id === request.id),\n take(1)\n );\n\n // Create timeout observable\n const timeout$ = new Observable<never>((subscriber) => {\n const timer = setTimeout(() => {\n subscriber.error(new RPCTimeoutError(request.id, timeoutMs));\n }, timeoutMs);\n\n return () => clearTimeout(timer);\n });\n\n // Create abort observable if signal provided\n const abort$ = signal\n ? new Observable<never>((subscriber) => {\n const abortHandler = () => {\n subscriber.error(new DOMException('The operation was aborted', 'AbortError'));\n };\n signal.addEventListener('abort', abortHandler);\n\n return () => signal.removeEventListener('abort', abortHandler);\n })\n : NEVER; // Observable that never emits\n\n // Race between response, timeout, and abort\n const subscription = race(response$, timeout$, abort$).subscribe({\n next: (response) => {\n logger.debug(\n `[PendingRPC(${this.id}) request:${request.id}] Resolving promise with response:`,\n response\n );\n isSettled = true;\n resolve(response);\n subscription.unsubscribe();\n },\n error: (error) => {\n logger.debug(\n `[PendingRPC(${this.id}) request:${request.id}] Rejecting promise with error:`,\n error\n );\n isSettled = true;\n reject(error as Error);\n subscription.unsubscribe();\n },\n complete: () => {\n logger.debug(`[PendingRPC(${this.id}) request:${request.id}] Observable completed`);\n if (!isSettled) {\n reject(new RPCTimeoutError(request.id, timeoutMs));\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n\n // Make it thenable (Promise-like)\n async then<TResult1 = JSONRPCResponse, TResult2 = never>(\n onfulfilled?: ((value: JSONRPCResponse) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.promise.then(onfulfilled, onrejected);\n }\n\n async catch<TResult = never>(\n onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n ): Promise<JSONRPCResponse | TResult> {\n return this.promise.catch(onrejected);\n }\n\n async finally(onfinally?: (() => void) | null): Promise<JSONRPCResponse> {\n return this.promise.finally(onfinally);\n }\n}\n\n// Re-export Destroyable for backward compatibility\nexport { Destroyable };\n","import {\n catchError,\n combineLatest,\n defer,\n filter,\n firstValueFrom,\n from,\n lastValueFrom,\n map,\n shareReplay,\n take,\n takeUntil,\n tap,\n timeout\n} from 'rxjs';\n\nimport { CallFactory } from './CallFactory';\nimport { Address } from '../core/entities/Address';\nimport {\n AuthStateHandlerError,\n CallCreateError,\n DependencyError,\n UnexpectedError,\n VertoInviteHandlerError\n} from '../core/errors';\nimport { RPCConnect } from '../core/RPCMessages';\nimport {\n isSignalwireAuthorizationStateMetadata,\n isSignalwireRequest,\n isWebrtcMessageMetadata\n} from '../core/RPCMessages/guards/events.guards';\nimport { isVertoInviteMessage } from '../core/RPCMessages/guards/verto.guards';\nimport { Destroyable, isRPCConnectResult } from '../core/utils';\nimport { filterAs } from '../operators/filterEventAs';\nimport { throwOnRPCError } from '../operators/throwOnRPCError';\nimport { getLogger } from '../utils/logger';\n\nimport type { AttachManager } from './AttachManager';\nimport type { StorageManager } from './StorageManager';\nimport type { TransportManager } from './TransportManager';\nimport type { WebRTCCall } from '../core/entities/Call';\nimport type { Directory } from '../core/entities/Directory';\nimport type { Call, CallOptions } from '../core/entities/types/call.types';\nimport type {\n RPCConnectParams,\n RPCConnectAuthentication,\n Authorization\n} from '../core/RPCMessages';\nimport type { JSONRPCRequest, JSONRPCResponse } from '../core/RPCMessages/types/base';\nimport type { VertoInviteParams } from '../core/RPCMessages/types/verto';\nimport type { SDKCredential, JSONSerializable } from '../core/types/common.types';\nimport type { PendingRPCOptions } from '../core/utils';\nimport type { ClientSession } from '../interfaces/ClientSession';\nimport type { DeviceController } from '../interfaces/DeviceController';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nconst getAddressSearchURI = (options: CallOptions): string => {\n const to = options.to?.split('?')[0];\n const from = options.from?.startsWith('subscriber://')\n ? options.from.replace('subscriber://', '')\n : options.from;\n const name = to ?? from;\n if (!name) {\n throw new UnexpectedError('Error building Address name');\n }\n return name;\n};\n\nexport class ClientSessionManager extends Destroyable implements ClientSession {\n private callFactory: CallFactory;\n private callCreateTimeout = 6000;\n private readonly agent = `signalwire-typescript-sdk/1.0.0`;\n private readonly eventAcks = true;\n public initialized$: Observable<boolean>;\n public authorization$ = this.createSubject<Authorization>();\n private authorizationState$ = this.createReplaySubject<string | undefined>(1);\n private connectVersion = {\n major: 4,\n minor: 0,\n revision: 0\n };\n private _errors$ = this.createSubject<Error>();\n private _directory?: Directory;\n\n private _authenticated$ = this.createBehaviorSubject<boolean>(false);\n\n private _subscriberInfo$ = this.createBehaviorSubject<Address | null>(null);\n private _calls$ = this.createBehaviorSubject<Record<string, Call>>({});\n private _iceServers$ = this.createBehaviorSubject<RTCIceServer[]>([]);\n\n constructor(\n private credential: SDKCredential,\n private readonly transport: TransportManager,\n private readonly storage: StorageManager,\n private readonly authorizationStateKey: string,\n deviceController: DeviceController,\n private readonly attachManager: AttachManager\n ) {\n super();\n attachManager.setSession(this);\n this.callFactory = new CallFactory(this, deviceController, attachManager);\n this.initialized$ = defer(() => from(this.init())).pipe(\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n }\n public get incomingCalls$(): Observable<Call[]> {\n return this.calls$.pipe(map((calls) => calls.filter((call) => call.direction === 'inbound')));\n }\n\n public get incomingCalls(): Call[] {\n const calls = Object.values(this._calls$.value);\n return calls.filter((call) => call.direction === 'inbound');\n }\n\n public get subscriberInfo$(): Observable<Address | null> {\n return this._subscriberInfo$.asObservable();\n }\n\n public get subscriberInfo(): Address | null {\n return this._subscriberInfo$.value;\n }\n\n public get calls$(): Observable<Call[]> {\n return this._calls$.pipe(map((calls) => Object.values(calls)));\n }\n\n public get calls(): Call[] {\n return Object.values(this._calls$.value);\n }\n\n public get iceServers(): RTCIceServer[] | undefined {\n return this._iceServers$.value;\n }\n\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable();\n }\n\n public get authenticated$(): Observable<boolean> {\n return this._authenticated$.asObservable();\n }\n\n public get authenticated(): boolean {\n return this._authenticated$.value;\n }\n\n /**\n * Set the directory instance\n * Called by SignalWire after directory is created\n * @internal\n */\n public setDirectory(directory: Directory): void {\n this._directory = directory;\n }\n\n public async execute<T extends JSONRPCResponse = JSONRPCResponse>(\n request: JSONRPCRequest,\n options?: PendingRPCOptions\n ): Promise<T> {\n try {\n return await this.transport.execute(request, options);\n } catch (error) {\n logger.debug('[Session] Execute Error', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n throw error;\n }\n }\n\n public send(message: JSONSerializable): void {\n this.transport.send(message);\n }\n\n private async init(): Promise<boolean> {\n await this.loadAuthorizationStateFromStorage();\n this.setupMessageHandlers();\n return true;\n }\n\n private setupMessageHandlers(): void {\n logger.debug('[Session] Setting up message handlers');\n\n this.subscribeTo(this.authStateEvent$, async (authStateEvent) => {\n logger.debug('[Session] Authorization state event received:', authStateEvent);\n try {\n await this.updateAuthorizationStateInStorage(authStateEvent.authorization_state);\n } catch (error) {\n logger.error('[Session] Failed to handle authorization state update:', error);\n this._errors$.next(new AuthStateHandlerError(error));\n }\n });\n\n this.subscribeTo(\n this.transport.connectionStatus$.pipe(filter((status) => status === 'connected')),\n async () => {\n try {\n logger.debug('[Session] Connection established, initiating authentication');\n await this.authenticate();\n } catch (error) {\n this.handleAuthenticationError(error as Error).catch((err) => {\n logger.error('[Session] Error handling authentication failure:', err);\n });\n }\n }\n );\n\n this.subscribeTo(this.vertoInvite$, async (invite) => {\n logger.debug('[Session] Verto invite received:', invite);\n try {\n await this.createInboundCall(invite);\n } catch (error) {\n logger.error('[Session] Error handling Verto invite:', error);\n this._errors$.next(new VertoInviteHandlerError(error));\n }\n });\n }\n\n private async loadAuthorizationStateFromStorage(): Promise<void> {\n try {\n const storedState = await this.storage.getItem<string>(this.authorizationStateKey);\n // Always emit a value, even if undefined, so combineLatest can proceed\n this.authorizationState$.next(storedState ?? undefined);\n } catch (error) {\n logger.error('Failed to retrieve authorization state from storage:', error);\n // Emit undefined on error so authentication can proceed without stored state\n this.authorizationState$.next(undefined);\n }\n }\n\n private async updateAuthorizationStateInStorage(authorizationState?: string): Promise<void> {\n if (!authorizationState) {\n logger.debug('[Session] Removing authorization state from storage');\n try {\n await this.storage.removeItem(this.authorizationStateKey);\n } catch (error) {\n logger.error('Failed to remove authorization state from storage:', error);\n throw error;\n }\n return;\n }\n\n try {\n logger.debug('[Session] Updating authorization state in storage');\n await this.storage.setItem(this.authorizationStateKey, authorizationState);\n this.authorizationState$.next(authorizationState);\n } catch (error) {\n logger.error('Failed to retrieve authorization state from storage:', error);\n throw error;\n }\n }\n\n private get authStateEvent$() {\n return this.signalingEvent$.pipe(\n tap((msg) => {\n logger.debug('[Session] Received incoming message:', msg);\n }),\n filterAs(isSignalwireAuthorizationStateMetadata, 'params'),\n tap((event) => {\n logger.debug('[Session] Authorization state event received:', event.authorization_state);\n })\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public get signalingEvent$() {\n return this.transport.incomingEvent$.pipe(filterAs(isSignalwireRequest, 'params'));\n }\n\n private get vertoInvite$() {\n return this.signalingEvent$.pipe(\n filter(isWebrtcMessageMetadata),\n filter((event) => isVertoInviteMessage(event.params)),\n map((event) => ({\n node_id: event.node_id,\n ...(event.params.params as VertoInviteParams)\n }))\n );\n }\n\n private get contexts(): string[] {\n return [];\n }\n\n private get eventing(): string[] {\n return [];\n }\n\n private get topics(): string[] {\n return [];\n }\n\n private get authentication(): RPCConnectAuthentication {\n if (!this.credential.token) {\n throw new DependencyError('Credential token is undefined');\n }\n return {\n jwt_token: this.credential.token\n };\n }\n\n async connect(): Promise<void> {\n // Ensure session is initialized before proceeding\n await firstValueFrom(this.initialized$);\n\n // Now initiate the connection - the subscription above will handle authentication\n await this.transport.connect();\n }\n\n private async handleAuthenticationError(error: Error): Promise<void> {\n logger.error('Authentication error:', error);\n this._errors$.next(error);\n if (error.message === 'Requester validation failed') {\n // the server is not accepting our credentials, potentially corrupted authorizationState or protocol\n try {\n await this.cleanupStoredConnectionParams();\n } catch (error) {\n logger.error('Failed to cleanup stored connection params:', error);\n } finally {\n this.transport.reconnect();\n }\n }\n }\n\n async cleanupStoredConnectionParams(): Promise<void> {\n await this.transport.setProtocol(undefined);\n await this.updateAuthorizationStateInStorage(undefined);\n await this.attachManager.detachAll();\n }\n\n protected async updateAuthState(authorization_state: string): Promise<void> {\n try {\n await this.storage.setItem(this.authorizationStateKey, authorization_state);\n } catch (error) {\n logger.error('Failed to update authorization state in storage:', error);\n this._errors$.next(new AuthStateHandlerError(error));\n }\n }\n\n private async authenticate(): Promise<void> {\n logger.debug('[Session] Starting authentication process');\n\n const params: RPCConnectParams = {\n authentication: this.authentication,\n version: this.connectVersion,\n agent: this.agent,\n contexts: this.contexts,\n eventing: this.eventing,\n topics: this.topics,\n\n event_acks: this.eventAcks\n };\n\n const persistedParams = await firstValueFrom(\n combineLatest({\n protocol: this.transport.protocol$,\n\n authorization_state: this.authorizationState$\n }).pipe(take(1))\n );\n\n logger.debug('[Session] Persisted params:\\n', {\n protocol: persistedParams.protocol,\n authStateLength: persistedParams.authorization_state?.length\n });\n\n const rpcConnectRequest = RPCConnect({ ...params, ...persistedParams });\n\n const response = await lastValueFrom(\n from(this.transport.execute(rpcConnectRequest)).pipe(\n throwOnRPCError(),\n map((res) => res.result),\n filter(isRPCConnectResult),\n tap(() => {\n logger.debug('[Session] Response passed filter, processing authentication result');\n }),\n take(1),\n catchError((err) => {\n logger.error('[Session] Authentication RPC failed:', err);\n throw err;\n })\n )\n );\n\n logger.debug('[Session] Processing authentication result:', {\n hasProtocol: !!response.protocol,\n hasAuthorization: !!response.authorization,\n hasIceServers: !!response.ice_servers\n });\n\n if (response.protocol) {\n await this.transport.setProtocol(response.protocol);\n }\n this.authorization$.next(response.authorization);\n this._iceServers$.next(response.ice_servers ?? []);\n this._authenticated$.next(true);\n\n logger.debug('[Session] Authentication completed successfully');\n }\n\n async disconnect(): Promise<void> {\n this.transport.disconnect();\n this._authenticated$.next(false);\n await this.cleanupStoredConnectionParams();\n }\n\n private async createInboundCall(invite: VertoInviteParams & { node_id: string }): Promise<void> {\n const callSession = await this.createCall({\n nodeId: invite.node_id,\n callId: invite.callID,\n initOffer: invite.sdp,\n toName: invite.callee_id_name,\n to: invite.callee_id_number,\n fromName: invite.caller_id_name,\n from: invite.caller_id_number,\n displayDirection: invite.display_direction\n });\n\n await firstValueFrom(callSession.status$);\n\n this._calls$.next({\n [`${callSession.id}`]: callSession,\n ...this._calls$.value\n });\n }\n\n public async createOutboundCall(\n destination: string | Address,\n options: CallOptions = {}\n ): Promise<Call> {\n const destinationURI =\n destination instanceof Address ? destination.defaultChannel : destination;\n try {\n const callSession = await this.createCall({\n to: destinationURI,\n ...options\n });\n\n await firstValueFrom(\n callSession.selfId$.pipe(\n filter((id) => Boolean(id)),\n take(1),\n timeout(this.callCreateTimeout)\n )\n );\n\n this._calls$.next({\n [`${callSession.id}`]: callSession,\n ...this._calls$.value\n });\n\n return callSession;\n } catch (error) {\n logger.error('[Session] Error creating outbound call:', error);\n const callError = new CallCreateError('Call create timeout', error);\n this._errors$.next(callError);\n throw callError;\n }\n }\n\n private async createCall(options: CallOptions = {}): Promise<WebRTCCall> {\n try {\n if (!this._directory) {\n throw new DependencyError('Directory not initialized');\n }\n\n const addressURI = getAddressSearchURI(options);\n const addressId = await this._directory.findAddressIdByURI(addressURI);\n if (!addressId) {\n throw new DependencyError(`Address name: ${addressURI} not found`);\n }\n\n const address = this._directory.get(addressId);\n if (!address) {\n throw new DependencyError(`Address ID: ${addressId} not found`);\n }\n\n const callSession = this.callFactory.createCall(address, {\n ...options\n });\n\n callSession.status$\n .pipe(\n filter((status) => status === 'destroyed'),\n take(1)\n )\n .subscribe(() => {\n const { [`${callSession.id}`]: _, ...remainingCalls } = this._calls$.value;\n this._calls$.next(remainingCalls);\n });\n\n return callSession;\n } catch (error) {\n logger.error('[Session] Error creating call session:', error);\n throw new CallCreateError('Call create error', error);\n }\n }\n\n public destroy(): void {\n for (const call of Object.values(this._calls$.value)) {\n void call.hangup();\n }\n super.destroy();\n }\n}\n\nexport class ClientSessionWrapper {\n constructor(private clientSessionManager: ClientSessionManager) {}\n\n public get authenticated$(): Observable<boolean> {\n return this.clientSessionManager.authenticated$;\n }\n\n public get authenticated(): boolean {\n return this.clientSessionManager.authenticated;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public get signalingEvent$() {\n return this.clientSessionManager.signalingEvent$;\n }\n\n public async execute<T extends JSONRPCResponse = JSONRPCResponse>(\n request: JSONRPCRequest,\n options?: PendingRPCOptions\n ): Promise<T> {\n return this.clientSessionManager.execute(request, options);\n }\n\n public get incomingCalls$(): Observable<Call[]> {\n return this.clientSessionManager.incomingCalls$;\n }\n\n public get incomingCalls(): Call[] {\n return this.clientSessionManager.incomingCalls;\n }\n\n public get calls$(): Observable<Call[]> {\n return this.clientSessionManager.calls$;\n }\n\n public get calls(): Call[] {\n return this.clientSessionManager.calls;\n }\n}\n","export const isString = (obj: unknown): obj is string => typeof obj === 'string';\n","import { map, tap, type Observable } from 'rxjs';\n\nimport { EntityCollection, Fetcher } from '../behaviors/Collection';\nimport { POST_PARAMS } from '../controllers/HTTPRequestController';\nimport { ConversationError } from '../core/errors';\nimport { isConversationMessageMetadata } from '../core/RPCMessages/guards/events.guards';\nimport { filterAs } from '../operators/filterEventAs';\nimport { isString } from '../utils/isString';\nimport { getLogger } from '../utils/logger';\n\nimport type { ClientSessionManager } from './ClientSessionManager';\nimport type { HTTPRequestController } from '../controllers/HTTPRequestController';\nimport type {\n GetConversationMessageResponse,\n GetConversationResponse\n} from '../core/types/conversation.types';\nimport type { ConversationsProvider } from '../interfaces/Conversations';\n\nconst logger = getLogger();\n\nconst toAddressId = (groupId: string): string => {\n const [, toAddressId] = groupId.split('_');\n return toAddressId;\n};\n\nclass ConversationMessagesFetcher extends Fetcher<GetConversationMessageResponse> {\n constructor(\n public readonly groupId: string,\n http: HTTPRequestController\n ) {\n super(`/api/fabric/conversations/${groupId}/messages`, 'page_size=100', http);\n }\n}\n\nclass ConversationsFetcher extends Fetcher<GetConversationResponse> {\n filter = (item: unknown): item is GetConversationResponse =>\n !!(item as GetConversationResponse).from_fabric_address_id;\n mapper = (item: unknown) => ({\n ...(item as GetConversationResponse),\n id: (item as GetConversationResponse).group_id,\n\n address_id: toAddressId((item as GetConversationResponse).group_id)\n });\n constructor(http: HTTPRequestController) {\n super(`/api/fabric/conversations`, 'page_size=100', http);\n }\n}\n\nexport class ConversationMessageCollection extends EntityCollection<GetConversationMessageResponse> {\n constructor(\n groupId: string,\n update$: Observable<Partial<GetConversationMessageResponse>>,\n http: HTTPRequestController,\n onError?: (error: Error) => void\n ) {\n super(new ConversationMessagesFetcher(groupId, http), update$, onError);\n }\n}\n\nexport class ConversationCollection extends EntityCollection<GetConversationResponse> {\n constructor(\n update$: Observable<Partial<GetConversationResponse>>,\n http: HTTPRequestController,\n onError?: (error: Error) => void\n ) {\n super(new ConversationsFetcher(http), update$, onError);\n }\n}\n\nexport class ConversationsManager implements ConversationsProvider {\n private groupIds = new Map<string, string>();\n\n constructor(\n private clientSession: ClientSessionManager,\n private http: HTTPRequestController,\n private getSubscriberAddressId: () => string,\n private readonly onError?: (error: Error) => void\n ) {}\n private async join(addressId: string): Promise<string> {\n const subscriberFromAddressId = this.getSubscriberAddressId();\n\n try {\n const response = await this.http.request({\n ...POST_PARAMS,\n url: `/api/fabric/conversations/join`,\n body: JSON.stringify({\n from_fabric_address_id: subscriberFromAddressId,\n fabric_address_ids: [addressId, subscriberFromAddressId]\n })\n });\n\n if (response.ok && !!response.body) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = JSON.parse(response.body);\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n if (isString(data.group_id)) {\n this.groupIds.set(addressId, data.group_id as string);\n return data.group_id as string;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n }\n throw new ConversationError('Join Failed - Unexpected response');\n } catch (error) {\n logger.error('[ConversationsManager] Failed to join conversation:', error);\n throw error;\n }\n }\n\n public async getConversationMessageCollection(\n addressId: string\n ): Promise<ConversationMessageCollection> {\n const groupId = this.groupIds.get(addressId) ?? (await this.join(addressId));\n\n return Promise.resolve(\n new ConversationMessageCollection(\n groupId,\n this.clientSession.signalingEvent$.pipe(\n filterAs(isConversationMessageMetadata, 'params'),\n tap((event) => logger.debug('[ConversationsManager ] Conversation Event:', event)),\n // FIXME after Conversation API Fixes\n map(\n (params) =>\n ({\n ...params\n }) as Partial<GetConversationMessageResponse>\n )\n ),\n this.http,\n this.onError\n )\n );\n }\n\n public async sendText(text: string, destinationAddressId: string): Promise<void> {\n const groupId =\n this.groupIds.get(destinationAddressId) ?? (await this.join(destinationAddressId));\n const subscriberFromAddressId = this.getSubscriberAddressId();\n\n try {\n const response = await this.http.request({\n ...POST_PARAMS,\n url: '/api/fabric/messages',\n body: JSON.stringify({\n group_id: groupId,\n from_fabric_address_id: subscriberFromAddressId,\n text\n })\n });\n if (response.ok) {\n return;\n }\n throw new ConversationError('Send Text Failed - Unexpected response');\n } catch (error) {\n logger.error('[ConversationsManager] Failed to send text message:', error);\n }\n }\n}\n","export const isEmptyArray = (a?: unknown[]): boolean => {\n return (a?.length ?? 0) === 0;\n};\n","import { take } from 'rxjs';\n\nimport type { Observable } from 'rxjs';\n\nexport const warnup = (observable: Observable<unknown>): void => {\n observable.pipe(take(1)).subscribe();\n};\n","import { firstValueFrom, map, type Observable } from 'rxjs';\n\nimport { EntityCollection, Fetcher } from '../behaviors/Collection';\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { GET_PARAMS } from '../controllers/HTTPRequestController';\nimport { Address } from '../core/entities/Address';\nimport { isConversationMessageUpdatedMetadata } from '../core/RPCMessages/guards/events.guards';\nimport { filterAs, filterNull } from '../operators';\nimport { isEmptyArray } from '../utils/arrays';\nimport { getLogger } from '../utils/logger';\nimport { warnup } from '../utils/warnup';\n\nimport type { ClientSessionManager } from './ClientSessionManager';\nimport type { PaginatedResponse } from '../behaviors/types/collection.types';\nimport type { HTTPRequestController } from '../controllers/HTTPRequestController';\nimport type { Directory } from '../core/entities/Directory';\nimport type { GetAddressResponse } from '../core/types/address.types';\nimport type { ConversationsProvider } from '../interfaces/Conversations';\n\nconst logger = getLogger();\n\nclass AddressFetcher extends Fetcher<GetAddressResponse> {\n constructor(http: HTTPRequestController) {\n super('/api/fabric/addresses', 'sort_by=name&sort_order=asc', http);\n }\n\n async name(name: unknown): Promise<GetAddressResponse | undefined> {\n const response = await this.http.request({\n ...GET_PARAMS,\n url: `${this.endpoint}?name=${encodeURIComponent(name as string)}`\n });\n if (response.ok && !!response.body) {\n const result = JSON.parse(response.body) as PaginatedResponse<GetAddressResponse>;\n if (!isEmptyArray(result.data)) {\n return result.data[0];\n }\n }\n logger.error('Failed to fetch addresses');\n }\n}\n\nexport class AddressStateCollection extends EntityCollection<GetAddressResponse> {\n constructor(\n update$: Observable<Partial<GetAddressResponse>>,\n http: HTTPRequestController,\n onError?: (error: Error) => void\n ) {\n super(new AddressFetcher(http), update$, onError);\n }\n}\n\nexport class DirectoryManager extends Destroyable implements Directory {\n private addNewAddress = (id: string): void => {\n const address = new Address(id, this.conversationManager, this);\n const observable = this._statesCollection.get$(id)?.pipe(\n filterNull(),\n map((data) => {\n address.upnext(data);\n return address;\n })\n );\n if (observable) {\n warnup(observable);\n this._observableRegistry.set(id, observable);\n }\n this._addressesInstances.set(id, address);\n };\n private _addresses$ = this.createBehaviorSubject<Address[]>([]);\n private _statesCollection: AddressStateCollection;\n private _addressesInstances = new Map<string, Address>();\n private _observableRegistry = new Map<string, Observable<Address>>();\n\n constructor(\n private http: HTTPRequestController,\n clientSession: ClientSessionManager,\n private conversationManager: ConversationsProvider,\n private readonly onError?: (error: Error) => void\n ) {\n super();\n this._statesCollection = new AddressStateCollection(\n clientSession.signalingEvent$.pipe(\n filterAs(isConversationMessageUpdatedMetadata, 'params'),\n // FIXME after Conversation API Fixes\n map((_) => ({}) as Partial<GetAddressResponse>)\n ),\n this.http,\n this.onError\n );\n this.initSubscriptions();\n }\n\n public get loading(): boolean {\n return this._statesCollection.loading;\n }\n\n private initSubscriptions(): void {\n this.subscribeTo(this._statesCollection.updated$, () => {\n const existing = Array.from(this._addressesInstances.values().map((address) => address.id));\n const newStates = this._statesCollection.values.filter(\n (state) => !existing.includes(state.id)\n );\n if (!isEmptyArray(newStates)) {\n newStates.forEach((state) => this.addNewAddress(state.id));\n this._addresses$.next(Array.from(this._addressesInstances.values()));\n }\n });\n }\n\n public get addresses$(): Observable<Address[]> {\n return this._addresses$.asObservable();\n }\n\n public get addresses(): Address[] {\n return this._addresses$.value;\n }\n\n public get hasMore$(): Observable<boolean> {\n return this._statesCollection.hasMore$;\n }\n\n public get loading$(): Observable<boolean> {\n return this._statesCollection.loading$;\n }\n\n public loadMore(): void {\n if (this._statesCollection.hasMore) {\n this._statesCollection.loadMore();\n }\n }\n\n public get$(id: string): Observable<Address> | undefined {\n if (!this._observableRegistry.has(id)) {\n this.addNewAddress(id);\n }\n return this._observableRegistry.get(id);\n }\n\n public get(addressId: string): Address | undefined {\n return this._addressesInstances.get(addressId);\n }\n\n public async findAddressIdByURI(name: string): Promise<string | undefined> {\n let addressId = this._addressesInstances.values().find((addr) => addr.name === name)?.id;\n if (!addressId) {\n const found$ = await this._statesCollection.find$('name', name);\n if (found$) {\n const state = await firstValueFrom(found$);\n this.addNewAddress(state.id);\n addressId = state.id;\n }\n }\n return addressId;\n }\n}\n","import { Destroyable } from '../behaviors/Destroyable';\nimport { UnexpectedError, WebSocketConnectionError, WebSocketTimeoutError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type {\n NodeSocketAdapter,\n NodeSocketClient,\n WebSocketAdapter,\n WebSocketClient\n} from '../core/types/common.types';\nimport type { Observable } from 'rxjs';\n\nconst logger = getLogger();\n\nexport type WebSocketConnectionStatus =\n | 'disconnected'\n | 'disconnecting'\n | 'reconnecting'\n | 'connected'\n | 'connecting';\n\nexport interface WebSocketControllerOptions {\n reconnectDelayMin?: number;\n reconnectDelayMax?: number;\n connectionTimeout?: number;\n}\n\nexport class WebSocketController extends Destroyable {\n // Default configuration values\n\n private static readonly DEFAULT_RECONNECT_DELAY_MIN_MS = 1_000;\n\n private static readonly DEFAULT_RECONNECT_DELAY_MAX_MS = 30_000;\n\n private static readonly DEFAULT_CONNECTION_TIMEOUT_MS = 10_000;\n\n // Private state\n private socket?: WebSocketClient | NodeSocketClient;\n private messageQueue: (string | ArrayBuffer | Blob)[] = [];\n private reconnectTimer?: ReturnType<typeof setTimeout>;\n private connectionTimeoutTimer?: ReturnType<typeof setTimeout>;\n private currentReconnectDelay: number;\n private shouldReconnect = false;\n // Configuration\n private readonly reconnectDelayMin: number;\n private readonly reconnectDelayMax: number;\n private readonly connectionTimeout: number;\n // Observable streams\n private _status$ = this.createBehaviorSubject<WebSocketConnectionStatus>('disconnected');\n\n private _incomingMessages$ = this.createSubject<MessageEvent>();\n\n private _errors$ = this.createSubject<Error>();\n\n constructor(\n private WebSocketConstructor: WebSocketAdapter | NodeSocketAdapter,\n private endpoint: string,\n private outgoingMessages$: Observable<string | ArrayBuffer | Blob>,\n options: WebSocketControllerOptions = {}\n ) {\n super();\n this.reconnectDelayMin =\n options.reconnectDelayMin ?? WebSocketController.DEFAULT_RECONNECT_DELAY_MIN_MS;\n this.reconnectDelayMax =\n options.reconnectDelayMax ?? WebSocketController.DEFAULT_RECONNECT_DELAY_MAX_MS;\n this.connectionTimeout =\n options.connectionTimeout ?? WebSocketController.DEFAULT_CONNECTION_TIMEOUT_MS;\n this.currentReconnectDelay = this.reconnectDelayMin;\n\n // Subscribe to send$ to handle message sending\n this.subscriptions.push(\n this.outgoingMessages$.subscribe((data) => {\n this.send(data);\n })\n );\n }\n\n public get status$(): Observable<WebSocketConnectionStatus> {\n return this._status$.asObservable();\n }\n public get incomingMessages$(): Observable<MessageEvent> {\n return this._incomingMessages$.asObservable();\n }\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable();\n }\n public connect(): void {\n if (this._status$.value === 'connecting' || this._status$.value === 'connected') {\n return;\n }\n\n this.shouldReconnect = true;\n this._status$.next('connecting');\n this.createWebSocket();\n }\n\n public disconnect(): void {\n this.shouldReconnect = false;\n this.clearReconnectTimer();\n this.clearConnectionTimeout();\n\n const currentStatus = this._status$.value;\n\n if (\n currentStatus === 'connected' ||\n currentStatus === 'connecting' ||\n currentStatus === 'reconnecting'\n ) {\n if (this.socket) {\n this._status$.next('disconnecting');\n this.socket.close();\n } else {\n this._status$.next('disconnected');\n }\n } else {\n this._status$.next('disconnected');\n }\n }\n\n reconnect(): void {\n if (this.shouldReconnect) {\n this._status$.next('reconnecting');\n this.scheduleReconnection();\n } else {\n this._status$.next('disconnected');\n }\n }\n\n public send(data: string | ArrayBuffer | Blob): void {\n if (\n this._status$.value === 'connected' &&\n this.socket?.readyState === 1 // WebSocket.OPEN\n ) {\n try {\n logger.debug(\n `[WebSocketConnectionManager] Sending message:\\n${JSON.stringify(\n JSON.parse(data as string),\n null,\n 2\n )}`\n );\n } catch {\n logger.warn(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-base-to-string\n `[WebSocketConnectionManager] Sending non-JSON message:\\n${data}`\n );\n }\n this.socket.send(data);\n } else {\n this.messageQueue.push(data);\n }\n }\n\n private createWebSocket(): void {\n try {\n this.socket = new this.WebSocketConstructor(this.endpoint);\n this.setupWebSocketListeners();\n this.startConnectionTimeout();\n } catch (error) {\n const err =\n error instanceof Error ? error : new UnexpectedError('Failed to create WebSocket');\n this._errors$.next(err);\n this.handleConnectionError();\n }\n }\n\n private setupWebSocketListeners(): void {\n if (!this.socket) return;\n\n this.socket.addEventListener('open', () => this.handleOpen());\n // @ts-expect-error -- Ignore ---\n this.socket.addEventListener('close', (event: CloseEvent) => this.handleClose(event));\n this.socket.addEventListener('error', () => this.handleError());\n // @ts-expect-error -- Ignore ---\n this.socket.addEventListener('message', (event: MessageEvent) => this.handleMessage(event));\n }\n\n private handleOpen(): void {\n this.clearConnectionTimeout();\n this._status$.next('connected');\n this.currentReconnectDelay = this.reconnectDelayMin;\n this.flushMessageQueue();\n }\n\n private handleClose(_event: CloseEvent): void {\n this.clearConnectionTimeout();\n\n if (this.shouldReconnect) {\n this._status$.next('reconnecting');\n this.scheduleReconnection();\n } else {\n this._status$.next('disconnected');\n }\n }\n\n private handleError(): void {\n const error = new WebSocketConnectionError('WebSocket connection error');\n this._errors$.next(error);\n this.handleConnectionError();\n }\n\n private handleMessage(event: MessageEvent): void {\n try {\n logger.debug(\n `[WebSocketConnectionManager] Received message:\\n${JSON.stringify(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n JSON.parse(event.data),\n null,\n 2\n )}`\n );\n } catch {\n logger.warn(`[WebSocketConnectionManager] Received non-JSON message:\\n${event.data}`);\n }\n this._incomingMessages$.next(event);\n }\n\n private handleConnectionError(): void {\n this.reconnect();\n }\n\n private scheduleReconnection(): void {\n this.clearReconnectTimer();\n\n this.reconnectTimer = setTimeout(() => {\n if (this.shouldReconnect) {\n this._status$.next('connecting');\n this.createWebSocket();\n this.increaseReconnectDelay();\n }\n }, this.currentReconnectDelay);\n }\n\n private increaseReconnectDelay(): void {\n this.currentReconnectDelay = Math.min(this.currentReconnectDelay * 2, this.reconnectDelayMax);\n }\n\n private startConnectionTimeout(): void {\n this.clearConnectionTimeout();\n\n this.connectionTimeoutTimer = setTimeout(() => {\n if (this._status$.value === 'connecting') {\n const error = new WebSocketTimeoutError('WebSocket connection timeout');\n this._errors$.next(error);\n\n if (this.socket) {\n this.socket.close();\n }\n }\n }, this.connectionTimeout);\n }\n\n private clearConnectionTimeout(): void {\n if (this.connectionTimeoutTimer) {\n clearTimeout(this.connectionTimeoutTimer);\n this.connectionTimeoutTimer = undefined;\n }\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n }\n\n private flushMessageQueue(): void {\n while (this.messageQueue.length > 0 && this.socket?.readyState === 1) {\n const message = this.messageQueue.shift();\n if (message !== undefined) {\n this.socket.send(message);\n }\n }\n }\n}\n","// =============================================================================\n// CLIENT/SERVER METHOD TYPE GUARDS\n// =============================================================================\n// This file contains type guards for client requests, server responses,\n// and method params/results.\n\nimport { hasProperty, isJSONRPCRequest, isJSONRPCResponse, isObject } from './base.guards';\n\nimport type { JSONRPCRequest, TypeGuard } from '../types/base';\nimport type { SignalwirePingParams, SignalwirePingRequest } from '../types/events';\nimport type {\n CallLayoutListRequest,\n CallLayoutListResponse,\n CallMuteParams,\n CallMuteRequest,\n CallMuteResponse,\n CallTargetParams,\n EmptyResponse,\n SignalwireConnectParams,\n SignalwireConnectRequest,\n SignalwireConnectResponse,\n SignalwirePingResponse,\n WebrtcVertoParams,\n WebrtcVertoRequest,\n WebrtcVertoResponse\n} from '../types/methods';\n\n// =============================================================================\n// CLIENT REQUEST TYPE GUARDS\n// =============================================================================\n\nexport function isSignalwireConnectRequest(value: unknown): value is SignalwireConnectRequest {\n return isJSONRPCRequest(value) && value.method === 'signalwire.connect';\n}\n\nexport function isSignalwirePingRequest(value: unknown): value is SignalwirePingRequest {\n return isJSONRPCRequest(value) && value.method === 'signalwire.ping';\n}\n\nexport function isWebrtcVertoRequest(value: unknown): value is WebrtcVertoRequest {\n return isJSONRPCRequest(value) && value.method === 'webrtc.verto';\n}\n\nexport function isCallLayoutListRequest(value: unknown): value is CallLayoutListRequest {\n return isJSONRPCRequest(value) && value.method === 'call.layout.list';\n}\n\nexport function isCallMuteRequest(value: unknown): value is CallMuteRequest {\n return isJSONRPCRequest(value) && value.method === 'call.mute';\n}\n\n// =============================================================================\n// RESPONSE TYPE GUARDS\n// =============================================================================\n\nexport function isSignalwireConnectResponse(value: unknown): value is SignalwireConnectResponse {\n return (\n isJSONRPCResponse(value) &&\n isObject(value.result) &&\n hasProperty(value.result, 'identity') &&\n hasProperty(value.result, 'authorization') &&\n hasProperty(value.result, 'protocol')\n );\n}\n\nexport function isSignalwirePingResponse(value: unknown): value is SignalwirePingResponse {\n return (\n isJSONRPCResponse(value) && isObject(value.result) && hasProperty(value.result, 'timestamp')\n );\n}\n\nexport function isWebrtcVertoResponse(value: unknown): value is WebrtcVertoResponse {\n return (\n isJSONRPCResponse(value) &&\n isObject(value.result) &&\n hasProperty(value.result, 'node_id') &&\n hasProperty(value.result, 'code')\n );\n}\n\nexport function isCallLayoutListResponse(value: unknown): value is CallLayoutListResponse {\n return (\n isJSONRPCResponse(value) &&\n isObject(value.result) &&\n hasProperty(value.result, 'layouts') &&\n Array.isArray(value.result.layouts)\n );\n}\n\nexport function isCallMuteResponse(value: unknown): value is CallMuteResponse {\n return (\n isJSONRPCResponse(value) &&\n isObject(value.result) &&\n hasProperty(value.result, 'code') &&\n hasProperty(value.result, 'message') &&\n !hasProperty(value.result, 'layouts') &&\n !hasProperty(value.result, 'node_id')\n );\n}\n\nexport function isEmptyResponse(value: unknown): value is EmptyResponse {\n return (\n isJSONRPCResponse(value) && isObject(value.result) && Object.keys(value.result).length === 0\n );\n}\n\n// =============================================================================\n// PARAMS TYPE GUARDS\n// =============================================================================\n\nexport function isSignalwireConnectParams(value: unknown): value is SignalwireConnectParams {\n return (\n isObject(value) &&\n hasProperty(value, 'version') &&\n hasProperty(value, 'event_acks') &&\n hasProperty(value, 'agent') &&\n hasProperty(value, 'authentication')\n );\n}\n\nexport function isSignalwirePingParams(value: unknown): value is SignalwirePingParams {\n return isObject(value) && hasProperty(value, 'timestamp') && typeof value.timestamp === 'number';\n}\n\nexport function isWebrtcVertoParams(value: unknown): value is WebrtcVertoParams {\n return (\n isObject(value) &&\n hasProperty(value, 'message') &&\n hasProperty(value, 'callID') &&\n hasProperty(value, 'node_id')\n );\n}\n\nexport function isCallTargetParams(value: unknown): value is CallTargetParams {\n return isObject(value) && hasProperty(value, 'self') && hasProperty(value, 'target');\n}\n\nexport function isCallMuteParams(value: unknown): value is CallMuteParams {\n if (!isCallTargetParams(value)) return false;\n return 'channels' in value;\n}\n\n// =============================================================================\n// METHOD TYPE MAPPING\n// =============================================================================\n\nexport const MethodTypeMap = {\n 'signalwire.connect': isSignalwireConnectRequest,\n 'signalwire.ping': isSignalwirePingRequest,\n 'webrtc.verto': isWebrtcVertoRequest,\n 'call.layout.list': isCallLayoutListRequest,\n 'call.mute': isCallMuteRequest\n} as const;\n\nexport type MethodType = keyof typeof MethodTypeMap;\n\n/**\n * Gets the appropriate type guard for a method.\n */\nexport function getMethodGuard(method: string): TypeGuard<JSONRPCRequest> | undefined {\n return MethodTypeMap[method as MethodType];\n}\n","import {\n EMPTY,\n catchError,\n defer,\n filter,\n from,\n map,\n share,\n shareReplay,\n take,\n takeUntil,\n tap,\n timeout\n} from 'rxjs';\n\nimport { PreferencesContainer } from '../containers/PreferencesContainer';\nimport { WebSocketController } from '../controllers/WebSocketController';\nimport { MessageParseError, TransportConnectionError } from '../core/errors';\nimport { RPCEventAckResponse, RPCPingResponse } from '../core/RPCMessages';\nimport { isJSONRPCRequest, isJSONRPCResponse } from '../core/RPCMessages/guards/base.guards';\nimport { isSignalwireRequest } from '../core/RPCMessages/guards/events.guards';\nimport { isSignalwirePingRequest } from '../core/RPCMessages/guards/methods.guards';\nimport { Destroyable, PendingRPC } from '../core/utils';\nimport { getLogger } from '../utils/logger';\n\nimport type { StorageManager } from './StorageManager';\nimport type { JSONRPCRequest, JSONRPCResponse } from '../core/RPCMessages/types/base';\nimport type {\n JSONSerializable,\n WebSocketAdapter,\n NodeSocketAdapter\n} from '../core/types/common.types';\nimport type { PendingRPCOptions } from '../core/utils';\nimport type { Observable, OperatorFunction } from 'rxjs';\n\nconst logger = getLogger();\n\nexport class TransportManager extends Destroyable {\n private initialized$: Observable<boolean>;\n public protocol$ = this.createReplaySubject<string | undefined>(1);\n // Connection state tracking\n private isConnecting = false;\n private isConnected = false;\n private ackEvent = <T extends JSONRPCRequest | JSONRPCResponse>(): OperatorFunction<T, T> => {\n return tap((message) => {\n if (isSignalwireRequest(message)) {\n try {\n logger.debug('[Transport] Sending event ack', {\n eventId: message.id\n });\n this.send(RPCEventAckResponse(message.id));\n } catch (error) {\n logger.error('[Transport] Failed to send event acknowledgment:', error);\n }\n }\n });\n };\n private replySignalwirePing = <T extends JSONRPCRequest | JSONRPCResponse>(): OperatorFunction<\n T,\n T\n > => {\n return filter((message) => {\n if (isSignalwirePingRequest(message)) {\n try {\n logger.debug('[Transport] Received ping, sending pong', {\n pingId: message.id\n });\n this.send(RPCPingResponse(message.id));\n } catch (error) {\n logger.error('[Transport] Failed to send ping response:', error);\n }\n return false;\n }\n return true;\n });\n };\n private _outgoingMessages$ = this.createSubject<string | ArrayBuffer | Blob>();\n\n private _webSocketConnections!: WebSocketController;\n private _jsonRPCMessage$!: Observable<JSONRPCResponse | JSONRPCRequest>;\n private _jsonRPCResponse$!: Observable<JSONRPCResponse>;\n private _incomingEvent$!: Observable<JSONRPCRequest | JSONRPCResponse>;\n\n constructor(\n private readonly storage: StorageManager,\n private readonly protocolKey: string,\n webSocketConstructor: WebSocketAdapter | NodeSocketAdapter,\n relayHost: string,\n private readonly onError?: (error: Error) => void\n ) {\n super();\n this._webSocketConnections = new WebSocketController(\n webSocketConstructor,\n relayHost,\n this._outgoingMessages$.asObservable(),\n {\n connectionTimeout: PreferencesContainer.instance.connectionTimeout,\n reconnectDelayMin: PreferencesContainer.instance.reconnectDelayMin,\n reconnectDelayMax: PreferencesContainer.instance.reconnectDelayMax\n }\n );\n this.subscribeTo(this._webSocketConnections.errors$, (error) => {\n this.onError?.(error);\n });\n this.initialized$ = defer(() => from(this._init())).pipe(\n shareReplay(1),\n takeUntil(this.destroyed$)\n );\n\n this._jsonRPCMessage$ = this._webSocketConnections.incomingMessages$.pipe(\n map((event: MessageEvent) => {\n try {\n return JSON.parse(event.data as string) as object;\n } catch (error) {\n logger.error('[Transport] Failed to parse incoming message:', error);\n this.onError?.(new MessageParseError(error));\n return null;\n }\n }),\n filter(\n (message): message is JSONRPCResponse | JSONRPCRequest =>\n message !== null && (isJSONRPCResponse(message) || isJSONRPCRequest(message))\n ),\n catchError((error) => {\n logger.error('[Transport] Message processing error:', error);\n this.onError?.(error instanceof Error ? error : new Error(String(error), { cause: error }));\n return EMPTY;\n }),\n share(),\n takeUntil(this.destroyed$)\n );\n\n this._jsonRPCResponse$ = this._jsonRPCMessage$.pipe(filter(isJSONRPCResponse));\n\n this._incomingEvent$ = this._jsonRPCMessage$.pipe(\n this.ackEvent(),\n this.replySignalwirePing(),\n filter((message) => !isJSONRPCResponse(message)),\n share(),\n takeUntil(this.destroyed$)\n );\n }\n\n public async setProtocol(protocol: string | undefined): Promise<void> {\n this.protocol$.next(protocol);\n await this._updateProtocolInStorage(protocol);\n }\n public get incomingEvent$(): Observable<JSONRPCRequest | JSONRPCResponse> {\n return this._incomingEvent$;\n }\n\n public get connectionStatus$(): Observable<string> {\n return this._webSocketConnections.status$;\n }\n\n public async connect(): Promise<void> {\n // Prevent duplicate connections\n if (this.isConnecting || this.isConnected) {\n logger.warn('[Transport] Already connecting or connected');\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n this.isConnecting = true;\n\n this.subscribeTo(this.initialized$, () => {\n this._webSocketConnections.connect();\n\n // Wait for actual connection\n const connectionSub = this._webSocketConnections.status$\n .pipe(\n filter((status) => status === 'connected' || status === 'disconnected'),\n take(1),\n timeout(10000) // 10 second timeout\n )\n .subscribe({\n next: (status) => {\n if (status === 'connected') {\n this.isConnecting = false;\n this.isConnected = true;\n logger.debug('[Transport] Connection established');\n resolve();\n } else {\n this.isConnecting = false;\n const error = new TransportConnectionError('Failed to connect');\n logger.error('[Transport] Connection failed');\n this.onError?.(error);\n reject(error);\n }\n },\n error: (err) => {\n this.isConnecting = false;\n logger.error('[Transport] Connection error:', err);\n this.onError?.(err instanceof Error ? err : new Error(String(err), { cause: err }));\n reject(err as Error);\n }\n });\n\n this.subscriptions.push(connectionSub);\n\n // Track disconnection\n this.subscribeTo(\n this._webSocketConnections.status$.pipe(filter((status) => status === 'disconnected')),\n () => {\n logger.debug('[Transport] Disconnected');\n this.isConnected = false;\n }\n );\n });\n });\n }\n\n public reconnect(): void {\n this._webSocketConnections.reconnect();\n }\n\n public async execute<T extends JSONRPCResponse = JSONRPCResponse>(\n request: JSONRPCRequest,\n options?: PendingRPCOptions\n ): Promise<T> {\n // Send the request through the WebSocket\n this.send(request as unknown as JSONSerializable);\n\n // Create and return a PendingRPC promise that will resolve when the matching response arrives\n return new PendingRPC<T>(request, this._jsonRPCResponse$ as Observable<T>, options).promise;\n }\n public send(message: unknown): void {\n const payload = JSON.stringify(message);\n this._outgoingMessages$.next(payload);\n }\n // request(request: HTTPRequest): Promise<HTTPResponse> {}\n public disconnect(): void {\n logger.debug('[Transport] Disconnecting');\n this.isConnected = false;\n this.isConnecting = false;\n\n // Disconnect WebSocket\n this._webSocketConnections.disconnect();\n }\n public destroy(): void {\n logger.debug('[Transport] Destroying');\n this.disconnect();\n super.destroy();\n this._webSocketConnections.destroy();\n }\n private async _loadProtocolFromStorage(): Promise<void> {\n try {\n const storedProtocol = await this.storage.getItem<string>(this.protocolKey);\n this.protocol$.next(storedProtocol ?? undefined);\n } catch (error) {\n logger.error('Failed to retrieve protocol from storage:', error);\n throw error;\n }\n }\n\n private async _updateProtocolInStorage(protocol: string | undefined): Promise<void> {\n if (!protocol) {\n try {\n await this.storage.removeItem(this.protocolKey);\n } catch (error) {\n logger.error('Failed to remove protocol from storage:', error);\n throw error;\n }\n return;\n }\n\n try {\n const storedProtocol = await this.storage.getItem<string>(this.protocolKey);\n if (!storedProtocol || storedProtocol !== protocol) {\n await this.storage.setItem(this.protocolKey, protocol);\n }\n } catch (error) {\n logger.error('Failed to update protocol in storage:', error);\n throw error;\n }\n }\n\n private async _init(): Promise<boolean> {\n await this._loadProtocolFromStorage();\n return true;\n }\n}\n","import { jwtDecode } from 'jwt-decode';\nimport { filter, firstValueFrom, of, switchMap, type Observable } from 'rxjs';\n\nimport { Destroyable } from '../behaviors/Destroyable';\nimport { DependencyContainer } from '../containers/DependencyContainer';\nimport { ClientPreferences, PreferencesContainer } from '../containers/PreferencesContainer';\nimport { Subscriber } from '../core/entities/Subscriber';\nimport { InvalidCredentialsError, UnexpectedError } from '../core/errors';\nimport { RPCExecute } from '../core/RPCMessages';\nimport { AttachManager } from '../managers/AttachManager';\nimport { ClientSessionManager, ClientSessionWrapper } from '../managers/ClientSessionManager';\nimport { ConversationsManager } from '../managers/ConversationsManager';\nimport { DirectoryManager } from '../managers/DirectoryManager';\nimport { TransportManager } from '../managers/TransportManager';\nimport { getLogger } from '../utils/logger';\n\nimport type { Address } from '../core/entities/Address';\nimport type { Directory } from '../core/entities/Directory';\nimport type { Call } from '../core/entities/types/call.types';\nimport type {\n NodeSocketAdapter,\n SDKCredential,\n WebSocketAdapter\n} from '../core/types/common.types';\nimport type { MediaOptions } from '../core/types/media.types';\nimport type { CredentialProvider, Storage } from '../dependencies/interfaces';\nimport type { DeviceController } from '../interfaces/DeviceController';\n\nconst logger = getLogger();\n\ninterface JWTHeader {\n ch?: string;\n typ?: string;\n}\n/** Options for constructing a {@link SignalWire}. */\nexport interface SignalWireOptions {\n /** Skip automatic WebSocket connection on construction. */\n skipConnection?: boolean;\n /** Skip automatic subscriber registration on construction. */\n skipRegister?: boolean;\n /** Skip reconnecting to previously attached calls. */\n skipReconnect?: boolean;\n /** Skip monitoring media device changes. */\n skipDeviceMonitoring?: boolean;\n /** Whether to reconnect to previously attached calls. */\n reconnectAttachedCalls?: boolean;\n /** Whether to save preferences. */\n savePreferences?: boolean;\n /** Custom storage implementation for persistence. */\n storageImplementation?: Storage;\n /** Custom WebSocket constructor */\n webSocketConstructor?: WebSocketAdapter | NodeSocketAdapter;\n}\n\n/** Options for {@link SignalWire.dial}. Extends {@link MediaOptions} with dial-specific settings. */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface DialOptions extends MediaOptions {\n // Define any options for dialing here\n}\n\nconst buildOptionsFromDestination = (destination: string | Address): DialOptions => {\n if (typeof destination === 'string') {\n const queryStartIndex = destination.indexOf('?');\n if (queryStartIndex !== -1) {\n const queryString = destination.substring(queryStartIndex + 1);\n const params = new URLSearchParams(queryString);\n const channel = params.get('channel');\n\n if (channel === 'video') {\n return { audio: true, video: true };\n } else if (channel === 'audio') {\n return { audio: true, video: false };\n }\n }\n }\n\n return {};\n};\n/**\n * Main entry point for the SignalWire Browser SDK.\n *\n * Manages authentication, WebSocket transport, call creation, and media devices.\n *\n * @example\n * ```ts\n * const client = new SignalWire(credentialProvider);\n * client.isConnected$.subscribe(connected => console.log('Connected:', connected));\n * const call = await client.dial('/public/my-room');\n * ```\n */\nclass SignalWire extends Destroyable implements DeviceController {\n /** Global SDK preferences (timeouts, ICE config, media defaults). */\n public preferences = new ClientPreferences();\n private _subscriber$ = this.createBehaviorSubject<Subscriber | undefined>(undefined);\n private _directory$ = this.createBehaviorSubject<Directory | undefined>(undefined);\n private _transport!: TransportManager;\n private _clientSession!: ClientSessionManager;\n private _publicSession!: ClientSessionWrapper;\n private _deviceController!: DeviceController;\n private _attachManager?: AttachManager;\n private _isConnected$ = this.createBehaviorSubject<boolean>(false);\n private _isRegistered$ = this.createBehaviorSubject<boolean>(false);\n private _errors$ = this.createSubject<Error>();\n private _options: SignalWireOptions = {};\n private _refreshTimerId?: ReturnType<typeof setTimeout>;\n private _deps = new DependencyContainer();\n\n constructor(credentialProvider: CredentialProvider, options: SignalWireOptions = {}) {\n super();\n this._options = {\n ...PreferencesContainer.instance.defaultSignalWireOptions,\n ...options\n };\n\n // Set custom storage implementation if provided\n if (this._options.storageImplementation) {\n this._deps.storageImpl = this._options.storageImplementation;\n }\n\n if (this._options.webSocketConstructor) {\n this._deps.WebSocket = this._options.webSocketConstructor;\n }\n\n if (this._options.savePreferences) {\n this.preferences.enableSavePreferences(this._deps.storage);\n }\n\n this._deviceController = this._deps.deviceController;\n if (!this._options.skipDeviceMonitoring) {\n this._deviceController.enableDeviceMonitoring();\n }\n this.subscribeTo(this._deviceController.errors$, (error) => {\n this._errors$.next(error);\n });\n\n this.validateCredentials(credentialProvider)\n .then(() => {\n this.init().catch((error: unknown) => {\n logger.error('[SignalWire] Initialization error:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n });\n })\n .catch((error: unknown) => {\n logger.error('[SignalWire] Initialization error:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n });\n }\n\n private async validateCredentials(\n credentialProvider: CredentialProvider,\n credentials?: SDKCredential\n ): Promise<void> {\n const _credentials = credentials ?? (await credentialProvider.authenticate());\n if (_credentials.token) {\n try {\n const decodeHeader: JWTHeader = jwtDecode(_credentials.token, { header: true });\n this._deps.ch = decodeHeader.ch;\n } catch (error) {\n logger.error('[SignalWire] Invalid JWT token provided in credentials:', error);\n throw new InvalidCredentialsError('Invalid JWT token provided in credentials.', {\n cause: error\n });\n }\n }\n if (!_credentials.token && !_credentials.authorizationState) {\n logger.error('[SignalWire] No valid authentication credentials provided.');\n throw new InvalidCredentialsError('No valid authentication credentials provided.');\n }\n\n if (_credentials.expiry_at && _credentials.expiry_at < Date.now()) {\n logger.error('[SignalWire] Provided credentials have expired.');\n throw new InvalidCredentialsError('Provided credentials have expired.');\n }\n\n if (_credentials.expiry_at && credentialProvider.refresh) {\n const refreshFn = credentialProvider.refresh;\n const refreshInterval = Math.max(_credentials.expiry_at - Date.now() - 5000, 1000);\n this._refreshTimerId = setTimeout(async () => {\n try {\n const newCredentials = await refreshFn();\n this._deps.credential = newCredentials;\n logger.info('[SignalWire] Credentials refreshed successfully.');\n // Schedule next refresh\n this.validateCredentials(credentialProvider, newCredentials).catch((error: unknown) => {\n logger.error('[SignalWire] Credential refresh error:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n });\n } catch (error: unknown) {\n logger.error('[SignalWire] Credential refresh failed:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n }\n }, refreshInterval);\n }\n\n this._deps.credential = _credentials;\n }\n\n private async init() {\n // Initialize subscriber first (before transport) to fetch subscriber info\n this._subscriber$.next(new Subscriber(this._deps.http));\n\n if (!this._options.skipConnection) {\n await this.connect();\n }\n\n // Flush attached calls after connect creates the AttachManager\n if (this._options.skipReconnect && this._attachManager) {\n await this._attachManager.flush();\n }\n\n if (!this._options.skipRegister) {\n // eventually register after the authentication\n void this.register();\n }\n\n // eventually reconnect to attached calls after the authentication\n void this.handleAttachments();\n }\n\n private async handleAttachments() {\n if (!this._attachManager) {\n logger.error('[SignalWire] AttachManager not initialized');\n return;\n }\n if (!this._options.reconnectAttachedCalls) {\n return;\n }\n try {\n await this._attachManager.reattachCalls();\n } catch (error) {\n logger.error('[SignalWire] Failed to reattach calls:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n }\n }\n\n /**\n * Establishes the WebSocket connection and authenticates the session.\n *\n * ## Reconnection behavior\n *\n * After a successful connection the underlying {@link WebSocketController}\n * automatically attempts to reconnect whenever the socket closes\n * unexpectedly (e.g. network change, server restart). Reconnection uses an\n * **exponential back-off** strategy:\n *\n * - First retry after `reconnectDelayMin` (default **1 s**).\n * - Each subsequent retry doubles the delay up to `reconnectDelayMax`\n * (default **30 s**).\n * - The delay resets to `reconnectDelayMin` once a connection succeeds.\n * - A per-attempt `connectionTimeout` (default **10 s**) aborts the\n * attempt and schedules the next retry if the server does not respond.\n *\n * Calling {@link disconnect} stops the reconnection loop entirely.\n *\n * ## Message handling during temporary disconnections\n *\n * While the socket is not in the `connected` state, **outgoing messages\n * are queued** in an internal buffer. Once the connection is\n * re-established the queue is flushed in order so no outgoing RPC call is\n * lost.\n *\n * **Incoming** server-to-client messages that arrive while the socket is\n * down are *not* buffered by the SDK — they are expected to be\n * re-delivered by the server after the session is re-authenticated.\n * Active RPC calls that were awaiting a response will time out\n * (default **5 s**) and reject with an `RPCTimeoutError`; callers should\n * handle this and retry if appropriate.\n *\n * The connection status can be observed via the `status$` observable on\n * the transport layer, which emits `'connecting'`, `'connected'`,\n * `'reconnecting'`, `'disconnecting'`, or `'disconnected'`.\n */\n public async connect(): Promise<void> {\n // Wait for subscriber to be fetched first to get the subscriber ID\n try {\n const subscriber = this._subscriber$.value;\n if (!subscriber) {\n throw new UnexpectedError('Subscriber not initialized before connect');\n }\n\n const fetched = await firstValueFrom(subscriber.fetched$);\n\n if (!fetched) {\n throw new UnexpectedError(\n 'Failed to fetch subscriber information - fetched$ emitted false'\n );\n }\n\n // Set the subscriber ID in the dependency container\n this._deps.subscriber = subscriber;\n } catch (error) {\n logger.error(\n `[SignalWire] Failed to fetch subscriber information: ${error instanceof Error ? error.message : 'Unknown error'}. ` +\n `This usually means the subscriber token is invalid or expired.`\n );\n throw new UnexpectedError('Error fetching subscriber information', { cause: error });\n }\n\n const errorHandler = (error: Error) => {\n this._errors$.next(error);\n };\n\n // Now initialize transport and session with subscriber ID available\n this._transport = new TransportManager(\n this._deps.storage,\n this._deps.protocolKey,\n this._deps.WebSocket,\n PreferencesContainer.instance.relayHost ?? this._deps.relayHost,\n errorHandler\n );\n\n // Create AttachManager (needed by CallFactory -> VertoManager)\n this._attachManager = new AttachManager(\n this._deps.storage,\n this._deps.deviceController,\n PreferencesContainer.instance.reconnectCallsTimeout,\n this._deps.attachedCallsKey\n );\n\n this._clientSession = new ClientSessionManager(\n this._deps.credential,\n this._transport,\n this._deps.storage,\n this._deps.authorizationStateKey,\n this._deps.deviceController,\n this._attachManager\n );\n this._publicSession = new ClientSessionWrapper(this._clientSession);\n\n this.subscribeTo(this._clientSession.errors$, (error) => {\n this._errors$.next(error);\n });\n\n await this._clientSession.connect();\n\n // Create conversationManager first to inject into DirectoryManager\n const conversationManager = new ConversationsManager(\n this._clientSession,\n this._deps.http,\n () => this._deps.getSubscriberFromAddressId(),\n errorHandler\n );\n\n // Create directory with all dependencies injected\n const directory = new DirectoryManager(\n this._deps.http,\n this._clientSession,\n conversationManager,\n errorHandler\n );\n this._directory$.next(directory);\n this._clientSession.setDirectory(directory);\n\n this._isConnected$.next(true);\n }\n\n /**\n * Observable that emits the {@link Subscriber} profile once fetched,\n * or `undefined` before authentication completes.\n *\n * @example\n * ```ts\n * client.subscriber$.subscribe(sub => {\n * if (sub) console.log('Logged in as', sub.email);\n * });\n * ```\n */\n public get subscriber$(): Observable<Subscriber | undefined> {\n return this._subscriber$.asObservable();\n }\n\n /** Current subscriber snapshot, or `undefined` if not yet authenticated. */\n public get subscriber(): Subscriber | undefined {\n return this._subscriber$.value;\n }\n\n /**\n * Observable that emits the {@link Directory} instance once the client is connected,\n * or `undefined` while disconnected. Subscribe to this to safely wait for the directory\n * to become available without risking an error.\n *\n * @example\n * ```ts\n * client.directory$.subscribe(dir => {\n * if (dir) dir.addresses$.subscribe(console.log);\n * });\n * ```\n */\n public get directory$(): Observable<Directory | undefined> {\n return this._directory$.asObservable();\n }\n\n /**\n * Current directory snapshot, or `undefined` if the client is not yet connected.\n * Prefer {@link directory$} when you need to react to the directory becoming available.\n */\n public get directory(): Directory | undefined {\n return this._directory$.value;\n }\n\n /** Observable that emits when the subscriber registration state changes. */\n public get isRegistered$(): Observable<boolean> {\n return this._isRegistered$.asObservable();\n }\n\n /** Whether the subscriber is currently registered. */\n public get isRegistered(): boolean {\n return this._isRegistered$.value;\n }\n\n /** Whether the client is currently connected. */\n public get isConnected(): boolean {\n return this._isConnected$.value;\n }\n\n /** Observable that emits when the connection state changes. */\n public get isConnected$(): Observable<boolean> {\n return this._isConnected$.asObservable();\n }\n\n /** Observable that emits `true` when the client is both connected and authenticated. */\n public get ready$(): Observable<boolean> {\n return this._isConnected$.pipe(\n switchMap((connected) => (connected ? this._clientSession.authenticated$ : of(false)))\n );\n }\n\n /** Observable stream of errors from transport, authentication, and devices. */\n public get errors$(): Observable<Error> {\n return this._errors$.asObservable();\n }\n\n /** Disconnects the WebSocket and tears down the session. */\n public async disconnect(): Promise<void> {\n await this._clientSession.disconnect();\n this._clientSession.destroy();\n this._isConnected$.next(false);\n }\n\n private async waitAuthentication(): Promise<void> {\n // Wait for client to be ready (authenticated)\n await firstValueFrom(this.ready$.pipe(filter((ready) => ready === true)));\n }\n\n /** Registers the subscriber as online to receive inbound calls and events. */\n public async register(): Promise<void> {\n try {\n // Wait for client session to be authenticated before registering subscriber\n await this.waitAuthentication();\n await this._transport.execute(RPCExecute({ method: 'subscriber.online', params: {} }));\n this._isRegistered$.next(true);\n } catch (error) {\n logger.error('[SignalWire] Failed to register subscriber:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n }\n }\n\n /** Unregisters the subscriber, going offline for inbound calls. */\n public async unregister(): Promise<void> {\n try {\n await this._transport.execute(RPCExecute({ method: 'subscriber.offline', params: {} }));\n this._isRegistered$.next(false);\n } catch (error) {\n logger.error('[SignalWire] Failed to unregister subscriber:', error);\n this._errors$.next(\n error instanceof Error ? error : new Error(String(error), { cause: error })\n );\n throw error;\n }\n }\n\n /**\n * Places an outbound call to the given destination.\n * @param destination - Address URI string or {@link Address} instance to call.\n * @param options - Media and dial options (audio/video, constraints).\n * @returns The created {@link Call} instance.\n */\n public async dial(destination: string | Address, options: DialOptions = {}): Promise<Call> {\n const computed_options = {\n ...PreferencesContainer.instance.preferredMediaOptions,\n ...buildOptionsFromDestination(destination),\n ...options\n };\n\n // Wait for client to be ready\n await this.waitAuthentication();\n\n logger.debug('[SignalWire] Dialing with options:', computed_options);\n return this._clientSession.createOutboundCall(destination, computed_options);\n }\n\n /** The underlying client session for advanced RPC operations. */\n public get session(): ClientSessionWrapper {\n return this._publicSession;\n }\n\n // DeviceController interface implementation\n\n /** Observable list of available audio input (microphone) devices. */\n public get audioInputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._deviceController.audioInputDevices$;\n }\n\n /** Current snapshot of available audio input devices. */\n public get audioInputDevices(): MediaDeviceInfo[] {\n return this._deviceController.audioInputDevices;\n }\n\n /** Observable list of available audio output (speaker) devices. */\n public get audioOutputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._deviceController.audioOutputDevices$;\n }\n\n /** Current snapshot of available audio output devices. */\n public get audioOutputDevices(): MediaDeviceInfo[] {\n return this._deviceController.audioOutputDevices;\n }\n\n /** Observable list of available video input (camera) devices. */\n public get videoInputDevices$(): Observable<MediaDeviceInfo[]> {\n return this._deviceController.videoInputDevices$;\n }\n\n /** Current snapshot of available video input devices. */\n public get videoInputDevices(): MediaDeviceInfo[] {\n return this._deviceController.videoInputDevices;\n }\n\n /** Observable of the currently selected audio input device. */\n public get selectedAudioInputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._deviceController.selectedAudioInputDevice$;\n }\n /** Observable of the currently selected audio output device. */\n public get selectedAudioOutputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._deviceController.selectedAudioOutputDevice$;\n }\n /** Observable of the currently selected video input device. */\n public get selectedVideoInputDevice$(): Observable<MediaDeviceInfo | null> {\n return this._deviceController.selectedVideoInputDevice$;\n }\n /** Currently selected audio input device, or `null` if none. */\n public get selectedAudioInputDevice(): MediaDeviceInfo | null {\n return this._deviceController.selectedAudioInputDevice;\n }\n /** Currently selected audio output device, or `null` if none. */\n public get selectedAudioOutputDevice(): MediaDeviceInfo | null {\n return this._deviceController.selectedAudioOutputDevice;\n }\n /** Currently selected video input device, or `null` if none. */\n public get selectedVideoInputDevice(): MediaDeviceInfo | null {\n return this._deviceController.selectedVideoInputDevice;\n }\n /** Media track constraints for the selected audio input device. */\n public get selectedAudioInputDeviceConstraints(): MediaTrackConstraints {\n return this._deviceController.selectedAudioInputDeviceConstraints;\n }\n /** Media track constraints for the selected video input device. */\n public get selectedVideoInputDeviceConstraints(): MediaTrackConstraints {\n return this._deviceController.selectedVideoInputDeviceConstraints;\n }\n\n /** Converts a `MediaDeviceInfo` to track constraints suitable for `getUserMedia`. */\n public deviceInfoToConstraints(deviceInfo: MediaDeviceInfo | null): MediaTrackConstraints {\n return this._deviceController.deviceInfoToConstraints(deviceInfo);\n }\n\n /** Sets the preferred audio input device. */\n public selectAudioInputDevice(device: MediaDeviceInfo | null): void {\n this._deviceController.selectAudioInputDevice(device);\n }\n\n /** Sets the preferred video input device. */\n public selectVideoInputDevice(device: MediaDeviceInfo | null): void {\n this._deviceController.selectVideoInputDevice(device);\n }\n\n /** Sets the preferred audio output device. */\n public selectAudioOutputDevice(device: MediaDeviceInfo | null): void {\n this._deviceController.selectAudioOutputDevice(device);\n }\n\n /** Starts monitoring for media device changes (connect/disconnect). */\n public enableDeviceMonitoring(): void {\n this._deviceController.enableDeviceMonitoring();\n }\n\n /** Stops monitoring for media device changes. */\n public disableDeviceMonitoring(): void {\n this._deviceController.disableDeviceMonitoring();\n }\n\n public async getDeviceCapabilities(\n deviceInfo: MediaDeviceInfo\n ): Promise<MediaTrackCapabilities | null> {\n return this._deviceController.getDeviceCapabilities(deviceInfo);\n }\n\n public async isValidDevice(deviceInfo: MediaDeviceInfo | null): Promise<boolean> {\n return this._deviceController.isValidDevice(deviceInfo);\n }\n\n public override destroy(): void {\n if (this._refreshTimerId) {\n clearTimeout(this._refreshTimerId);\n this._refreshTimerId = undefined;\n }\n super.destroy();\n }\n}\nexport { SignalWire };\n","import { RequestError, RequestTimeoutError } from '../core/errors';\nimport { getLogger } from '../utils/logger';\n\nimport type { CredentialProvider } from './interfaces';\n\nconst logger = getLogger();\n\nexport class EmbedTokenCredentialProvider implements CredentialProvider {\n constructor(\n private host: string,\n private embedToken: string\n ) {}\n\n private async fetchSAT(): Promise<string> {\n const url = `https://${this.host}/api/fabric/embeds/tokens`;\n\n const timeout = 10000; // 10 seconds\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n body: JSON.stringify({ token: this.embedToken }),\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n if (response.ok) {\n const data = (await response.json()) as { token: string };\n return data.token;\n }\n\n throw new RequestError(\n `Failed to fetch SAT using embed token: ${response.status} ${response.statusText}`\n );\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new RequestTimeoutError(`Request timeout after ${timeout}ms`, { cause: error });\n }\n\n logger.error('[EmbedCredentialProvider] Request failed:', error);\n throw error;\n }\n }\n\n public async authenticate(): Promise<{ token: string; expiry_at: number }> {\n const sat = await this.fetchSAT();\n const expiryAt = Date.now() + 3600 * 1000;\n return { token: sat, expiry_at: expiryAt };\n }\n\n public async refresh(): Promise<{ token: string; expiry_at: number }> {\n return this.authenticate();\n }\n}\n","import { SignalWire } from '../clients/SignalWire';\nimport { DependencyError } from '../core/errors';\nimport { EmbedTokenCredentialProvider } from '../dependencies/EmbedTokenCredentialProvider';\n\nimport type { Call } from '../core/entities/types/call.types';\n\n/** Options for {@link embeddableCall}. */\nexport interface EmbeddableCallOptions {\n /** Destination URI to call. */\n to: string;\n /** Embed token for authentication. */\n embedToken: string;\n /** SignalWire host URL. */\n host: string;\n}\n\n/**\n * Creates a call using an embed token for simple, embeddable integrations.\n *\n * Handles client creation, authentication, and dialing in a single call.\n *\n * @param options - Embed token, host, and destination.\n * @returns The created {@link Call} instance.\n */\nexport async function embeddableCall(options: EmbeddableCallOptions): Promise<Call> {\n const { to, embedToken, host } = options;\n const requiredFailed = [];\n\n if (!to) {\n requiredFailed.push('to');\n }\n\n if (!embedToken) {\n requiredFailed.push('embedToken');\n }\n\n if (!host) {\n requiredFailed.push('host');\n }\n\n if (requiredFailed.length > 0) {\n return Promise.reject(\n new DependencyError(`Missing required options: ${requiredFailed.join(', ')}`)\n );\n }\n\n const credentialProvider = new EmbedTokenCredentialProvider(host, embedToken);\n const client = new SignalWire(credentialProvider);\n\n const call = await client.dial(to);\n\n return call;\n}\n","import type { CredentialProvider } from './interfaces';\nimport type { SDKCredential } from '../core/types/common.types';\n\n/**\n * Credential provider that returns a fixed set of credentials.\n *\n * Use when the token is already available (e.g. from a backend endpoint).\n *\n * @example\n * ```ts\n * const provider = new StaticCredentialProvider({ token: 'my-sat-token' });\n * const client = new SignalWire(provider);\n * ```\n */\nexport class StaticCredentialProvider implements CredentialProvider {\n constructor(private credentials: SDKCredential) {}\n\n /** Returns the static credentials. */\n public async authenticate(): Promise<SDKCredential> {\n return Promise.resolve(this.credentials);\n }\n}\n","/**\n * Public API entry point for @signalwire/js\n *\n * IMPORTANT: This file should NEVER be imported by internal modules.\n * Internal modules must import directly from source files.\n *\n * This file defines the minimal public API surface for external consumers.\n */\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\nexport { SignalWire } from './clients/SignalWire';\n\nexport { embeddableCall } from './utils/embeddableCall';\n\nexport { StaticCredentialProvider } from './dependencies/StaticCredentialProvider';\n\n// ============================================================================\n// Error Types (exported as values for instanceof checks)\n// ============================================================================\n\nexport {\n CallCreateError,\n CollectionFetchError,\n MediaTrackError,\n MessageParseError,\n VertoPongError\n} from './core/errors';\n\n// ============================================================================\n// Domain Model Classes (exported as values for instanceof and type guards)\n// ============================================================================\n\nexport { Address } from './core/entities/Address';\nexport { WebRTCCall } from './core/entities/Call';\nexport { Participant, SelfParticipant } from './core/entities/Participant';\nexport { Subscriber } from './core/entities/Subscriber';\n\n// ============================================================================\n// Domain Model Interfaces\n// ============================================================================\n\nexport type { Directory } from './core/entities/Directory';\n\n// ============================================================================\n// Type Guards (exported as values for runtime checks)\n// ============================================================================\n\nexport { isSelfParticipant } from './core/entities/Participant';\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nexport { ClientPreferences } from './containers/PreferencesContainer';\n\n// ============================================================================\n// Essential Types (type-only exports)\n// ============================================================================\n\n// Client types\nexport type { SignalWireOptions, DialOptions } from './clients/SignalWire';\n\n// Call types\nexport type {\n Call,\n CallOptions,\n CallStatus,\n CallState,\n CallParticipant,\n CallSelfParticipant,\n CallAddress\n} from './core/entities/types/call.types';\n\n// Types needed by web-components\nexport type { LayoutLayer } from './core/RPCMessages/types/common';\n\n// Media types\nexport type { MediaOptions, MediaDirections, MediaDirection } from './core/types/media.types';\n\n// Conversation types\nexport type { AddressHistory, TextMessage } from './core/types/conversation.types';\n\n// Participant types\nexport type { ExecuteMethod } from './core/entities/Participant';\n\n// Common types (credentials, adapters)\nexport type { SDKCredential, WebSocketAdapter, NodeSocketAdapter } from './core/types/common.types';\n\n// ============================================================================\n// DO NOT EXPORT (Internal Implementation):\n// - Behaviors (Destroyable, Fetchable)\n// - Controllers (DeviceController, RTCPeerConnectionController, etc.)\n// - Managers (DirectoryManager, TransportManager, ConversationsManager, etc.)\n// - Containers (DependencyContainer, PreferencesContainer singleton)\n// - Internal utilities and helpers\n// - RPC Messages and protocol internals\n// ============================================================================\n\n// ============================================================================\n// Library Ready Event (for async/dynamic script loading)\n// ============================================================================\n\ndeclare const __VERSION__: string;\n\n/**\n * Library version from package.json, injected at build time.\n */\nexport const version: string = __VERSION__;\n\n/**\n * Flag indicating the library has been loaded and is ready to use.\n * For UMD builds: `window.SignalWire.ready`\n * For ES modules: `import { ready } from '@signalwire/js'`\n */\nexport const ready: boolean = true;\n\n/**\n * Emits 'signalwire:js:ready' event when the library is loaded.\n *\n * Scripts that might load BEFORE the library (check flag first):\n * ```js\n * if (window.SignalWire?.ready) {\n * // Library already loaded, use it directly\n * initApp();\n * } else {\n * window.addEventListener('signalwire:js:ready', () => initApp());\n * }\n * ```\n */\nconst emitReadyEvent = (): void => {\n if (typeof window !== 'undefined') {\n const event = new CustomEvent('signalwire:js:ready', {\n detail: { version: __VERSION__ }\n });\n window.dispatchEvent(event);\n }\n};\n\nemitReadyEvent();\n","/**\n * Browser bundle entry point\n *\n * WARNING: This file should NEVER be imported by internal modules\n * Internal modules must import directly from source files\n *\n * This entry point:\n * 1. Polyfills Node.js globals for browser compatibility\n * 2. Re-exports all public APIs from the main package\n *\n * The polyfill is embedded directly in the code (not via banner)\n * to ensure it's always present regardless of how the bundle is loaded.\n */\n\n// Polyfill Node.js process global for browser\n// This is needed by src/utils/logger.ts which checks process.env.NODE_ENV\nif (typeof process === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n (globalThis as any).process = {\n env: {\n NODE_ENV: 'production'\n }\n };\n}\n\n// Note: crypto polyfill is handled via import map in the HTML\n// See playwright_tests/test-page.html for the import map configuration\n\n// Re-export everything from the main package\n// This ensures the bundled version has the same API as the npm package\nexport * from './index';\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,239,240,241,242,250,251,252],"mappings":"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"}