botframework-webchat 4.13.0 → 4.14.2

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 (253) hide show
  1. package/.eslintignore +1 -9
  2. package/.eslintrc.yml +5 -0
  3. package/README.md +33 -36
  4. package/babel.config.json +2 -2
  5. package/babel.sanitize-html.config.json +10 -0
  6. package/lib/AddFullBundle.d.ts +30 -0
  7. package/lib/AddFullBundle.d.ts.map +1 -0
  8. package/lib/AddFullBundle.js +77 -0
  9. package/lib/FullComposer.d.ts +8 -0
  10. package/lib/FullComposer.d.ts.map +1 -0
  11. package/lib/FullComposer.js +6 -16
  12. package/lib/FullReactWebChat.d.ts +8 -0
  13. package/lib/FullReactWebChat.d.ts.map +1 -0
  14. package/lib/FullReactWebChat.js +8 -23
  15. package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts +10 -0
  16. package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts.map +1 -0
  17. package/lib/adaptiveCards/AdaptiveCardsComposer.js +6 -2
  18. package/lib/adaptiveCards/AdaptiveCardsContext.d.ts +8 -0
  19. package/lib/adaptiveCards/AdaptiveCardsContext.d.ts.map +1 -0
  20. package/lib/adaptiveCards/AdaptiveCardsContext.js +3 -3
  21. package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts +5 -3
  22. package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts.map +1 -1
  23. package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts +7 -0
  24. package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts.map +1 -0
  25. package/lib/{FullBundleStyleOptions.js → adaptiveCards/AdaptiveCardsStyleSet.js} +0 -0
  26. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts +9 -0
  27. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts.map +1 -0
  28. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.js +1 -1
  29. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts +28 -0
  30. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts.map +1 -0
  31. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.js +4 -4
  32. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts +9 -0
  33. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts.map +1 -0
  34. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.js +8 -4
  35. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts +11 -0
  36. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts.map +1 -0
  37. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.js +210 -49
  38. package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts +10 -0
  39. package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts.map +1 -0
  40. package/lib/adaptiveCards/Attachment/AnimationCardContent.js +1 -1
  41. package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts +10 -0
  42. package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts.map +1 -0
  43. package/lib/adaptiveCards/Attachment/AudioCardContent.js +1 -1
  44. package/lib/adaptiveCards/Attachment/CommonCard.js +11 -6
  45. package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts +10 -0
  46. package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts.map +1 -0
  47. package/lib/adaptiveCards/Attachment/HeroCardContent.js +11 -6
  48. package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts +10 -0
  49. package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts.map +1 -0
  50. package/lib/adaptiveCards/Attachment/OAuthCardContent.js +11 -6
  51. package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts +10 -0
  52. package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts.map +1 -0
  53. package/lib/adaptiveCards/Attachment/ReceiptCardContent.js +11 -6
  54. package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts +10 -0
  55. package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts.map +1 -0
  56. package/lib/adaptiveCards/Attachment/SignInCardContent.js +1 -1
  57. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts +10 -0
  58. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts.map +1 -0
  59. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.js +11 -6
  60. package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts +20 -0
  61. package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts.map +1 -0
  62. package/lib/adaptiveCards/Attachment/VideoCardContent.js +7 -5
  63. package/lib/adaptiveCards/AttachmentForScreenReader/AdaptiveCardAttachment.js +7 -3
  64. package/lib/adaptiveCards/AttachmentForScreenReader/RichCardAttachment.js +1 -1
  65. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts +56 -0
  66. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts.map +1 -0
  67. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.js +1 -1
  68. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts +126 -0
  69. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts.map +1 -0
  70. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.js +29 -9
  71. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts +5 -0
  72. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts.map +1 -0
  73. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.js +2 -2
  74. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts +3 -0
  75. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts.map +1 -0
  76. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.js +5 -11
  77. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts +3 -0
  78. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts.map +1 -0
  79. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +29 -39
  80. package/lib/adaptiveCards/defaultStyleOptions.d.ts +4 -0
  81. package/lib/adaptiveCards/defaultStyleOptions.d.ts.map +1 -0
  82. package/lib/adaptiveCards/defaultStyleOptions.js +3 -2
  83. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts +3 -0
  84. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts.map +1 -0
  85. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.js +1 -1
  86. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts +2 -0
  87. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts.map +1 -0
  88. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.js +7 -5
  89. package/lib/adaptiveCards/hooks/internal/useUniqueId.js +1 -1
  90. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts +2 -0
  91. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts.map +1 -0
  92. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.js +3 -5
  93. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts +3 -0
  94. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts.map +1 -0
  95. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.js +1 -1
  96. package/lib/adaptiveCards/normalizeStyleOptions.d.ts +3 -0
  97. package/lib/adaptiveCards/normalizeStyleOptions.d.ts.map +1 -0
  98. package/lib/adaptiveCards/normalizeStyleOptions.js +1 -1
  99. package/lib/addVersion.js +2 -2
  100. package/lib/createBrowserWebSpeechPonyfillFactory.d.ts +3 -0
  101. package/lib/createBrowserWebSpeechPonyfillFactory.d.ts.map +1 -0
  102. package/lib/createBrowserWebSpeechPonyfillFactory.js +7 -4
  103. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts +17 -0
  104. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts.map +1 -0
  105. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.js +17 -11
  106. package/lib/createDirectLine.d.ts +17 -0
  107. package/lib/createDirectLine.d.ts.map +1 -0
  108. package/lib/createDirectLine.js +3 -2
  109. package/lib/createDirectLineAppServiceExtension.d.ts +7 -0
  110. package/lib/createDirectLineAppServiceExtension.d.ts.map +1 -0
  111. package/lib/createDirectLineAppServiceExtension.js +1 -1
  112. package/lib/createDirectLineSpeechAdapters.d.ts +25 -0
  113. package/lib/createDirectLineSpeechAdapters.d.ts.map +1 -0
  114. package/lib/createDirectLineSpeechAdapters.js +57 -3
  115. package/lib/createFullStyleSet.d.ts +1106 -0
  116. package/lib/createFullStyleSet.d.ts.map +1 -0
  117. package/lib/createFullStyleSet.js +2 -2
  118. package/lib/fullBundleDefaultStyleOptions.js +4 -4
  119. package/lib/hooks/useStyleOptions.d.ts +3 -0
  120. package/lib/hooks/useStyleOptions.d.ts.map +1 -0
  121. package/lib/hooks/useStyleOptions.js +21 -0
  122. package/lib/index-es5.d.ts +24 -20
  123. package/lib/index-es5.d.ts.map +1 -1
  124. package/lib/index-es5.js +2 -2
  125. package/lib/index-minimal.d.ts +9 -6
  126. package/lib/index-minimal.d.ts.map +1 -1
  127. package/lib/index-minimal.js +8 -4
  128. package/lib/index.d.ts +154 -18
  129. package/lib/index.d.ts.map +1 -1
  130. package/lib/index.js +11 -7
  131. package/lib/renderMarkdown.d.ts +6 -0
  132. package/lib/renderMarkdown.d.ts.map +1 -0
  133. package/lib/renderMarkdown.js +5 -2
  134. package/lib/renderWebChat.d.ts +3 -0
  135. package/lib/renderWebChat.d.ts.map +1 -0
  136. package/lib/renderWebChat.js +1 -1
  137. package/lib/speech/CustomAudioInputStream.d.ts +94 -0
  138. package/lib/speech/CustomAudioInputStream.d.ts.map +1 -0
  139. package/lib/speech/CustomAudioInputStream.js +416 -0
  140. package/lib/speech/bytesPerSample.d.ts +2 -0
  141. package/lib/speech/bytesPerSample.d.ts.map +1 -0
  142. package/lib/speech/bytesPerSample.js +12 -0
  143. package/lib/speech/createAudioConfig.d.ts +23 -0
  144. package/lib/speech/createAudioConfig.d.ts.map +1 -0
  145. package/lib/speech/createAudioConfig.js +84 -0
  146. package/lib/speech/createAudioContext.d.ts +3 -0
  147. package/lib/speech/createAudioContext.d.ts.map +1 -0
  148. package/lib/speech/createAudioContext.js +22 -0
  149. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts +9 -0
  150. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts.map +1 -0
  151. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.js +161 -0
  152. package/lib/speech/getUserMedia.d.ts +2 -0
  153. package/lib/speech/getUserMedia.d.ts.map +1 -0
  154. package/lib/speech/getUserMedia.js +25 -0
  155. package/lib/types/AdaptiveCardsPackage.d.ts +13 -0
  156. package/lib/types/AdaptiveCardsPackage.d.ts.map +1 -0
  157. package/lib/types/AdaptiveCardsPackage.js +2 -0
  158. package/lib/types/CognitiveServicesAudioOutputFormat.d.ts +3 -0
  159. package/lib/types/CognitiveServicesAudioOutputFormat.d.ts.map +1 -0
  160. package/lib/types/CognitiveServicesAudioOutputFormat.js +2 -0
  161. package/lib/types/CognitiveServicesCredentials.d.ts +18 -0
  162. package/lib/types/CognitiveServicesCredentials.d.ts.map +1 -0
  163. package/lib/types/CognitiveServicesCredentials.js +2 -0
  164. package/lib/types/CognitiveServicesTextNormalization.d.ts +3 -0
  165. package/lib/types/CognitiveServicesTextNormalization.d.ts.map +1 -0
  166. package/lib/types/CognitiveServicesTextNormalization.js +2 -0
  167. package/lib/{FullBundleStyleOptions.d.ts → types/FullBundleStyleOptions.d.ts} +1 -1
  168. package/lib/types/FullBundleStyleOptions.d.ts.map +1 -0
  169. package/lib/types/FullBundleStyleOptions.js +2 -0
  170. package/lib/useComposerProps.d.ts +22 -0
  171. package/lib/useComposerProps.d.ts.map +1 -0
  172. package/lib/useComposerProps.js +6 -8
  173. package/package.json +51 -46
  174. package/src/AddFullBundle.tsx +94 -0
  175. package/src/FullComposer.tsx +38 -0
  176. package/src/FullReactWebChat.tsx +32 -0
  177. package/src/__tests__/createDirectLine.spec.js +2 -0
  178. package/src/__tests__/renderMarkdown.spec.js +1 -1
  179. package/src/__tests__/versionTag.es5.spec.js +3 -0
  180. package/src/__tests__/versionTag.full.spec.js +3 -0
  181. package/src/__tests__/versionTag.minimal.spec.js +3 -0
  182. package/src/adaptiveCards/{AdaptiveCardsComposer.js → AdaptiveCardsComposer.tsx} +17 -5
  183. package/src/adaptiveCards/AdaptiveCardsContext.ts +12 -0
  184. package/src/adaptiveCards/AdaptiveCardsStyleOptions.ts +5 -3
  185. package/src/adaptiveCards/AdaptiveCardsStyleSet.ts +7 -0
  186. package/src/adaptiveCards/Attachment/{AdaptiveCardAttachment.js → AdaptiveCardAttachment.tsx} +8 -2
  187. package/src/adaptiveCards/Attachment/AdaptiveCardBuilder.ts +21 -15
  188. package/src/adaptiveCards/Attachment/{AdaptiveCardContent.js → AdaptiveCardContent.tsx} +8 -2
  189. package/src/adaptiveCards/Attachment/{AdaptiveCardRenderer.js → AdaptiveCardRenderer.tsx} +228 -46
  190. package/src/adaptiveCards/Attachment/{AnimationCardContent.js → AnimationCardContent.tsx} +9 -2
  191. package/src/adaptiveCards/Attachment/{AudioCardContent.js → AudioCardContent.tsx} +9 -2
  192. package/src/adaptiveCards/Attachment/CommonCard.js +2 -1
  193. package/src/adaptiveCards/Attachment/{HeroCardContent.js → HeroCardContent.tsx} +12 -3
  194. package/src/adaptiveCards/Attachment/{OAuthCardContent.js → OAuthCardContent.tsx} +11 -3
  195. package/src/adaptiveCards/Attachment/{ReceiptCardContent.js → ReceiptCardContent.tsx} +58 -28
  196. package/src/adaptiveCards/Attachment/{SignInCardContent.js → SignInCardContent.tsx} +9 -2
  197. package/src/adaptiveCards/Attachment/{ThumbnailCardContent.js → ThumbnailCardContent.tsx} +12 -3
  198. package/src/adaptiveCards/Attachment/{VideoCardContent.js → VideoCardContent.tsx} +15 -3
  199. package/src/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.ts +1 -1
  200. package/src/adaptiveCards/Styles/adaptiveCardHostConfig.ts +28 -8
  201. package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.spec.js +2 -0
  202. package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.ts +7 -4
  203. package/src/adaptiveCards/{createAdaptiveCardsAttachmentForScreenReaderMiddleware.js → createAdaptiveCardsAttachmentForScreenReaderMiddleware.tsx} +16 -15
  204. package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.tsx +45 -0
  205. package/src/adaptiveCards/defaultStyleOptions.ts +2 -1
  206. package/src/adaptiveCards/hooks/internal/{useAdaptiveCardsContext.js → useAdaptiveCardsContext.ts} +1 -1
  207. package/src/adaptiveCards/hooks/internal/{useParseAdaptiveCardJSON.js → useParseAdaptiveCardJSON.ts} +5 -2
  208. package/src/adaptiveCards/hooks/internal/{useUniqueId.js → useUniqueId.ts} +1 -1
  209. package/src/adaptiveCards/hooks/{useAdaptiveCardsHostConfig.js → useAdaptiveCardsHostConfig.ts} +6 -8
  210. package/src/adaptiveCards/hooks/{useAdaptiveCardsPackage.js → useAdaptiveCardsPackage.ts} +2 -1
  211. package/src/createBrowserWebSpeechPonyfillFactory.ts +21 -0
  212. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.spec.js +37 -6
  213. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.ts +78 -0
  214. package/src/createDirectLine.ts +65 -0
  215. package/src/createDirectLineAppServiceExtension.ts +22 -0
  216. package/src/createDirectLineSpeechAdapters.ts +84 -0
  217. package/src/createFullStyleSet.ts +2 -2
  218. package/src/fullBundleDefaultStyleOptions.ts +3 -3
  219. package/src/hooks/useStyleOptions.ts +9 -0
  220. package/src/index-es5.ts +0 -2
  221. package/src/index-minimal.ts +3 -2
  222. package/src/index.ts +22 -10
  223. package/src/{renderMarkdown.js → renderMarkdown.ts} +8 -1
  224. package/src/renderWebChat.tsx +6 -0
  225. package/src/speech/CustomAudioInputStream.ts +325 -0
  226. package/src/speech/bytesPerSample.ts +4 -0
  227. package/src/speech/createAudioConfig.spec.js +23 -0
  228. package/src/speech/createAudioConfig.ts +70 -0
  229. package/src/speech/createAudioContext.ts +16 -0
  230. package/src/speech/createMicrophoneAudioConfigAndAudioContext.ts +146 -0
  231. package/src/speech/getUserMedia.ts +14 -0
  232. package/src/tsconfig.json +1 -1
  233. package/src/types/AdaptiveCardsPackage.ts +23 -0
  234. package/src/types/CognitiveServicesAudioOutputFormat.ts +28 -0
  235. package/src/types/CognitiveServicesCredentials.ts +28 -0
  236. package/src/types/CognitiveServicesTextNormalization.ts +3 -0
  237. package/src/{FullBundleStyleOptions.ts → types/FullBundleStyleOptions.ts} +1 -1
  238. package/src/{useComposerProps.js → useComposerProps.ts} +21 -11
  239. package/webpack.config.js +46 -6
  240. package/lib/FullBundleStyleOptions.d.ts.map +0 -1
  241. package/src/FullComposer.js +0 -40
  242. package/src/FullReactWebChat.js +0 -47
  243. package/src/adaptiveCards/AdaptiveCardsContext.js +0 -5
  244. package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +0 -41
  245. package/src/createBrowserWebSpeechPonyfillFactory.js +0 -16
  246. package/src/createCognitiveServicesSpeechServicesPonyfillFactory.js +0 -58
  247. package/src/createDirectLine.js +0 -38
  248. package/src/createDirectLineAppServiceExtension.js +0 -12
  249. package/src/createDirectLineSpeechAdapters.js +0 -5
  250. package/src/index-es5.tsx +0 -49
  251. package/src/index-minimal.tsx +0 -9
  252. package/src/index.tsx +0 -45
  253. package/src/renderWebChat.js +0 -6
@@ -78,7 +78,10 @@ function render(markdown, _ref) {
78
78
  iconTokens[0].attrJoin('class', 'webchat__markdown__external-link-icon');
79
79
  tokens.splice.apply(tokens, [index + 2, 0].concat((0, _toConsumableArray2.default)(iconTokens)));
80
80
  }
81
- }).render(markdown);
81
+ }).render(markdown); // The signature from "sanitize-html" module is not correct.
82
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
83
+ // @ts-ignore
84
+
82
85
  return (0, _sanitizeHtml.default)(html, SANITIZE_HTML_OPTIONS);
83
86
  }
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXJNYXJrZG93bi5qcyJdLCJuYW1lcyI6WyJTQU5JVElaRV9IVE1MX09QVElPTlMiLCJhbGxvd2VkQXR0cmlidXRlcyIsImEiLCJpbWciLCJhbGxvd2VkU2NoZW1lcyIsImFsbG93ZWRUYWdzIiwiVFJBTlNQQVJFTlRfR0lGIiwiaW50ZXJuYWxNYXJrZG93bkl0IiwiTWFya2Rvd25JdCIsInJlbmRlciIsIm1hcmtkb3duIiwibWFya2Rvd25SZXNwZWN0Q1JMRiIsImV4dGVybmFsTGlua0FsdCIsInJlcGxhY2UiLCJjYXJyaWFnZVJldHVybiIsImh0bWwiLCJicmVha3MiLCJsaW5raWZ5IiwidHlwb2dyYXBoZXIiLCJ4aHRtbE91dCIsInVzZSIsIm1hcmtkb3duSXRBdHRycyIsIml0ZXJhdG9yIiwidG9rZW5zIiwiaW5kZXgiLCJ0b2tlbiIsImF0dHJTZXQiLCJsaW5rT3BlblRva2VuIiwiZmluZCIsInR5cGUiLCJhdHRycyIsIm5hbWUiLCJocmVmIiwidGVzdCIsImljb25Ub2tlbnMiLCJwYXJzZUlubGluZSIsImNoaWxkcmVuIiwiYXR0ckpvaW4iLCJzcGxpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFMQTtBQU9BLElBQU1BLHFCQUFxQixHQUFHO0FBQzVCQyxFQUFBQSxpQkFBaUIsRUFBRTtBQUNqQkMsSUFBQUEsQ0FBQyxFQUFFLENBQUMsWUFBRCxFQUFlLE1BQWYsRUFBdUIsTUFBdkIsRUFBK0IsS0FBL0IsRUFBc0MsUUFBdEMsRUFBZ0QsT0FBaEQsQ0FEYztBQUVqQkMsSUFBQUEsR0FBRyxFQUFFLENBQUMsS0FBRCxFQUFRLE9BQVIsRUFBaUIsS0FBakI7QUFGWSxHQURTO0FBSzVCQyxFQUFBQSxjQUFjLEVBQUUsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixLQUExQixFQUFpQyxRQUFqQyxFQUEyQyxLQUEzQyxFQUFrRCxLQUFsRCxDQUxZO0FBTTVC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QUFFQWQsTUFBQUEsTUFBTSxDQUFDZSxNQUFQLE9BQUFmLE1BQU0sR0FBUUMsS0FBSyxHQUFHLENBQWhCLEVBQW1CLENBQW5CLDBDQUF5QlUsVUFBekIsR0FBTjtBQUNEO0FBQ0YsR0E1QlUsRUE2QlZ6QixNQTdCVSxDQTZCSEMsUUE3QkcsQ0FBYjtBQStCQSxTQUFPLDJCQUFhSyxJQUFiLEVBQW1CZixxQkFBbkIsQ0FBUDtBQUNEIiwic291cmNlUm9vdCI6ImJ1bmRsZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbMCwgMSwgMl0gfV0gKi9cblxuaW1wb3J0IGl0ZXJhdG9yIGZyb20gJ21hcmtkb3duLWl0LWZvci1pbmxpbmUnO1xuaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IG1hcmtkb3duSXRBdHRycyBmcm9tICdtYXJrZG93bi1pdC1hdHRycy1lczUnO1xuaW1wb3J0IHNhbml0aXplSFRNTCBmcm9tICdzYW5pdGl6ZS1odG1sJztcblxuY29uc3QgU0FOSVRJWkVfSFRNTF9PUFRJT05TID0ge1xuICBhbGxvd2VkQXR0cmlidXRlczoge1xuICAgIGE6IFsnYXJpYS1sYWJlbCcsICdocmVmJywgJ25hbWUnLCAncmVsJywgJ3RhcmdldCcsICd0aXRsZSddLFxuICAgIGltZzogWydhbHQnLCAnY2xhc3MnLCAnc3JjJ11cbiAgfSxcbiAgYWxsb3dlZFNjaGVtZXM6IFsnZGF0YScsICdodHRwJywgJ2h0dHBzJywgJ2Z0cCcsICdtYWlsdG8nLCAnc2lwJywgJ3RlbCddLFxuICBhbGxvd2VkVGFnczogW1xuICAgICdhJyxcbiAgICAnYicsXG4gICAgJ2Jsb2NrcXVvdGUnLFxuICAgICdicicsXG4gICAgJ2NhcHRpb24nLFxuICAgICdjb2RlJyxcbiAgICAnZGVsJyxcbiAgICAnZGl2JyxcbiAgICAnZW0nLFxuICAgICdoMScsXG4gICAgJ2gyJyxcbiAgICAnaDMnLFxuICAgICdoNCcsXG4gICAgJ2g1JyxcbiAgICAnaDYnLFxuICAgICdocicsXG4gICAgJ2knLFxuICAgICdpbWcnLFxuICAgICdpbnMnLFxuICAgICdsaScsXG4gICAgJ25sJyxcbiAgICAnb2wnLFxuICAgICdwJyxcbiAgICAncHJlJyxcbiAgICAncycsXG4gICAgJ3NwYW4nLFxuICAgICdzdHJpa2UnLFxuICAgICdzdHJvbmcnLFxuICAgICd0YWJsZScsXG4gICAgJ3Rib2R5JyxcbiAgICAndGQnLFxuICAgICd0Zm9vdCcsXG4gICAgJ3RoJyxcbiAgICAndGhlYWQnLFxuICAgICd0cicsXG4gICAgJ3VsJ1xuICBdXG59O1xuXG4vLyBQdXQgYSB0cmFuc3BhcmVudCBwaXhlbCBpbnN0ZWFkIG9mIHRoZSBcIm9wZW4gaW4gbmV3IHdpbmRvd1wiIGljb24sIHNvIGRldmVsb3BlcnMgY2FuIGVhc2lseSBtb2RpZnkgdGhlIGljb24gaW4gQ1NTLlxuY29uc3QgVFJBTlNQQVJFTlRfR0lGID0gJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyc7XG5cbi8vIFRoaXMgaXMgdXNlZCBmb3IgcGFyc2luZyBNYXJrZG93biBmb3IgZXh0ZXJuYWwgbGlua3MuXG5jb25zdCBpbnRlcm5hbE1hcmtkb3duSXQgPSBuZXcgTWFya2Rvd25JdCgpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXIobWFya2Rvd24sIHsgbWFya2Rvd25SZXNwZWN0Q1JMRiB9LCB7IGV4dGVybmFsTGlua0FsdCA9ICcnIH0gPSB7fSkge1xuICBpZiAobWFya2Rvd25SZXNwZWN0Q1JMRikge1xuICAgIG1hcmtkb3duID0gbWFya2Rvd24ucmVwbGFjZSgvXFxuXFxyfFxcclxcbi9ndSwgY2FycmlhZ2VSZXR1cm4gPT4gKGNhcnJpYWdlUmV0dXJuID09PSAnXFxuXFxyJyA/ICdcXHJcXG4nIDogJ1xcblxccicpKTtcbiAgfVxuXG4gIGNvbnN0IGh0bWwgPSBuZXcgTWFya2Rvd25JdCh7XG4gICAgYnJlYWtzOiBmYWxzZSxcbiAgICBodG1sOiBmYWxzZSxcbiAgICBsaW5raWZ5OiB0cnVlLFxuICAgIHR5cG9ncmFwaGVyOiB0cnVlLFxuICAgIHhodG1sT3V0OiB0cnVlXG4gIH0pXG4gICAgLnVzZShtYXJrZG93bkl0QXR0cnMpXG4gICAgLnVzZShpdGVyYXRvciwgJ3VybF9uZXdfd2luJywgJ2xpbmtfb3BlbicsICh0b2tlbnMsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpbmRleF07XG5cbiAgICAgIHRva2VuLmF0dHJTZXQoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG4gICAgICB0b2tlbi5hdHRyU2V0KCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cbiAgICAgIGNvbnN0IGxpbmtPcGVuVG9rZW4gPSB0b2tlbnMuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdsaW5rX29wZW4nKTtcbiAgICAgIGNvbnN0IFssIGhyZWZdID0gbGlua09wZW5Ub2tlbi5hdHRycy5maW5kKChbbmFtZV0pID0+IG5hbWUgPT09ICdocmVmJyk7XG5cbiAgICAgIC8vIEFkZHMgYSBuZXcgaWNvbiBpZiB0aGUgbGluayBpcyBodHRwOiBvciBodHRwczouXG4gICAgICAvLyBEb24ndCBhZGQgaWYgaXQncyBhIHBob25lIG51bWJlciwgZXRjLlxuICAgICAgaWYgKC9eaHR0cHM/Oi9pdS50ZXN0KGhyZWYpKSB7XG4gICAgICAgIGV4dGVybmFsTGlua0FsdCAmJiB0b2tlbi5hdHRyU2V0KCd0aXRsZScsIGV4dGVybmFsTGlua0FsdCk7XG5cbiAgICAgICAgY29uc3QgaWNvblRva2VucyA9IGludGVybmFsTWFya2Rvd25JdC5wYXJzZUlubGluZShgIVske2V4dGVybmFsTGlua0FsdH1dKCR7VFJBTlNQQVJFTlRfR0lGfSlgKVswXS5jaGlsZHJlbjtcblxuICAgICAgICBpY29uVG9rZW5zWzBdLmF0dHJKb2luKCdjbGFzcycsICd3ZWJjaGF0X19tYXJrZG93bl9fZXh0ZXJuYWwtbGluay1pY29uJyk7XG5cbiAgICAgICAgdG9rZW5zLnNwbGljZShpbmRleCArIDIsIDAsIC4uLmljb25Ub2tlbnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLnJlbmRlcihtYXJrZG93bik7XG5cbiAgcmV0dXJuIHNhbml0aXplSFRNTChodG1sLCBTQU5JVElaRV9IVE1MX09QVElPTlMpO1xufVxuIl19
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXJNYXJrZG93bi50cyJdLCJuYW1lcyI6WyJTQU5JVElaRV9IVE1MX09QVElPTlMiLCJhbGxvd2VkQXR0cmlidXRlcyIsImEiLCJpbWciLCJhbGxvd2VkU2NoZW1lcyIsImFsbG93ZWRUYWdzIiwiVFJBTlNQQVJFTlRfR0lGIiwiaW50ZXJuYWxNYXJrZG93bkl0IiwiTWFya2Rvd25JdCIsInJlbmRlciIsIm1hcmtkb3duIiwibWFya2Rvd25SZXNwZWN0Q1JMRiIsImV4dGVybmFsTGlua0FsdCIsInJlcGxhY2UiLCJjYXJyaWFnZVJldHVybiIsImh0bWwiLCJicmVha3MiLCJsaW5raWZ5IiwidHlwb2dyYXBoZXIiLCJ4aHRtbE91dCIsInVzZSIsIm1hcmtkb3duSXRBdHRycyIsIml0ZXJhdG9yIiwidG9rZW5zIiwiaW5kZXgiLCJ0b2tlbiIsImF0dHJTZXQiLCJsaW5rT3BlblRva2VuIiwiZmluZCIsInR5cGUiLCJhdHRycyIsIm5hbWUiLCJocmVmIiwidGVzdCIsImljb25Ub2tlbnMiLCJwYXJzZUlubGluZSIsImNoaWxkcmVuIiwiYXR0ckpvaW4iLCJzcGxpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFMQTtBQU9BLElBQU1BLHFCQUFxQixHQUFHO0FBQzVCQyxFQUFBQSxpQkFBaUIsRUFBRTtBQUNqQkMsSUFBQUEsQ0FBQyxFQUFFLENBQUMsWUFBRCxFQUFlLE1BQWYsRUFBdUIsTUFBdkIsRUFBK0IsS0FBL0IsRUFBc0MsUUFBdEMsRUFBZ0QsT0FBaEQsQ0FEYztBQUVqQkMsSUFBQUEsR0FBRyxFQUFFLENBQUMsS0FBRCxFQUFRLE9BQVIsRUFBaUIsS0FBakI7QUFGWSxHQURTO0FBSzVCQyxFQUFBQSxjQUFjLEVBQUUsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixLQUExQixFQUFpQyxRQUFqQyxFQUEyQyxLQUEzQyxFQUFrRCxLQUFsRCxDQUxZO0FBTTVC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QUFBQSxNQUFNLENBQUNlLE1BQVAsT0FBQWYsTUFBTSxHQUFRQyxLQUFLLEdBQUcsQ0FBaEIsRUFBbUIsQ0FBbkIsMENBQXlCVSxVQUF6QixHQUFOO0FBQ0Q7QUFDRixHQTVCVSxFQTZCVnpCLE1BN0JVLENBNkJIQyxRQTdCRyxDQUFiLENBTFEsQ0FvQ1I7QUFDQTtBQUNBOztBQUNBLFNBQU8sMkJBQWFLLElBQWIsRUFBbUJmLHFCQUFuQixDQUFQO0FBQ0QiLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFswLCAxLCAyXSB9XSAqL1xuXG5pbXBvcnQgaXRlcmF0b3IgZnJvbSAnbWFya2Rvd24taXQtZm9yLWlubGluZSc7XG5pbXBvcnQgTWFya2Rvd25JdCBmcm9tICdtYXJrZG93bi1pdCc7XG5pbXBvcnQgbWFya2Rvd25JdEF0dHJzIGZyb20gJ21hcmtkb3duLWl0LWF0dHJzLWVzNSc7XG5pbXBvcnQgc2FuaXRpemVIVE1MIGZyb20gJ3Nhbml0aXplLWh0bWwnO1xuXG5jb25zdCBTQU5JVElaRV9IVE1MX09QVElPTlMgPSB7XG4gIGFsbG93ZWRBdHRyaWJ1dGVzOiB7XG4gICAgYTogWydhcmlhLWxhYmVsJywgJ2hyZWYnLCAnbmFtZScsICdyZWwnLCAndGFyZ2V0JywgJ3RpdGxlJ10sXG4gICAgaW1nOiBbJ2FsdCcsICdjbGFzcycsICdzcmMnXVxuICB9LFxuICBhbGxvd2VkU2NoZW1lczogWydkYXRhJywgJ2h0dHAnLCAnaHR0cHMnLCAnZnRwJywgJ21haWx0bycsICdzaXAnLCAndGVsJ10sXG4gIGFsbG93ZWRUYWdzOiBbXG4gICAgJ2EnLFxuICAgICdiJyxcbiAgICAnYmxvY2txdW90ZScsXG4gICAgJ2JyJyxcbiAgICAnY2FwdGlvbicsXG4gICAgJ2NvZGUnLFxuICAgICdkZWwnLFxuICAgICdkaXYnLFxuICAgICdlbScsXG4gICAgJ2gxJyxcbiAgICAnaDInLFxuICAgICdoMycsXG4gICAgJ2g0JyxcbiAgICAnaDUnLFxuICAgICdoNicsXG4gICAgJ2hyJyxcbiAgICAnaScsXG4gICAgJ2ltZycsXG4gICAgJ2lucycsXG4gICAgJ2xpJyxcbiAgICAnbmwnLFxuICAgICdvbCcsXG4gICAgJ3AnLFxuICAgICdwcmUnLFxuICAgICdzJyxcbiAgICAnc3BhbicsXG4gICAgJ3N0cmlrZScsXG4gICAgJ3N0cm9uZycsXG4gICAgJ3RhYmxlJyxcbiAgICAndGJvZHknLFxuICAgICd0ZCcsXG4gICAgJ3Rmb290JyxcbiAgICAndGgnLFxuICAgICd0aGVhZCcsXG4gICAgJ3RyJyxcbiAgICAndWwnXG4gIF1cbn07XG5cbi8vIFB1dCBhIHRyYW5zcGFyZW50IHBpeGVsIGluc3RlYWQgb2YgdGhlIFwib3BlbiBpbiBuZXcgd2luZG93XCIgaWNvbiwgc28gZGV2ZWxvcGVycyBjYW4gZWFzaWx5IG1vZGlmeSB0aGUgaWNvbiBpbiBDU1MuXG5jb25zdCBUUkFOU1BBUkVOVF9HSUYgPSAnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3JztcblxuLy8gVGhpcyBpcyB1c2VkIGZvciBwYXJzaW5nIE1hcmtkb3duIGZvciBleHRlcm5hbCBsaW5rcy5cbmNvbnN0IGludGVybmFsTWFya2Rvd25JdCA9IG5ldyBNYXJrZG93bkl0KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbmRlcihcbiAgbWFya2Rvd246IHN0cmluZyxcbiAgeyBtYXJrZG93blJlc3BlY3RDUkxGIH06IHsgbWFya2Rvd25SZXNwZWN0Q1JMRjogYm9vbGVhbiB9LFxuICB7IGV4dGVybmFsTGlua0FsdCA9ICcnIH06IHsgZXh0ZXJuYWxMaW5rQWx0Pzogc3RyaW5nIH0gPSB7fVxuKTogc3RyaW5nIHtcbiAgaWYgKG1hcmtkb3duUmVzcGVjdENSTEYpIHtcbiAgICBtYXJrZG93biA9IG1hcmtkb3duLnJlcGxhY2UoL1xcblxccnxcXHJcXG4vZ3UsIGNhcnJpYWdlUmV0dXJuID0+IChjYXJyaWFnZVJldHVybiA9PT0gJ1xcblxccicgPyAnXFxyXFxuJyA6ICdcXG5cXHInKSk7XG4gIH1cblxuICBjb25zdCBodG1sID0gbmV3IE1hcmtkb3duSXQoe1xuICAgIGJyZWFrczogZmFsc2UsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgbGlua2lmeTogdHJ1ZSxcbiAgICB0eXBvZ3JhcGhlcjogdHJ1ZSxcbiAgICB4aHRtbE91dDogdHJ1ZVxuICB9KVxuICAgIC51c2UobWFya2Rvd25JdEF0dHJzKVxuICAgIC51c2UoaXRlcmF0b3IsICd1cmxfbmV3X3dpbicsICdsaW5rX29wZW4nLCAodG9rZW5zLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaW5kZXhdO1xuXG4gICAgICB0b2tlbi5hdHRyU2V0KCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuICAgICAgdG9rZW4uYXR0clNldCgndGFyZ2V0JywgJ19ibGFuaycpO1xuXG4gICAgICBjb25zdCBsaW5rT3BlblRva2VuID0gdG9rZW5zLmZpbmQoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnbGlua19vcGVuJyk7XG4gICAgICBjb25zdCBbLCBocmVmXSA9IGxpbmtPcGVuVG9rZW4uYXR0cnMuZmluZCgoW25hbWVdKSA9PiBuYW1lID09PSAnaHJlZicpO1xuXG4gICAgICAvLyBBZGRzIGEgbmV3IGljb24gaWYgdGhlIGxpbmsgaXMgaHR0cDogb3IgaHR0cHM6LlxuICAgICAgLy8gRG9uJ3QgYWRkIGlmIGl0J3MgYSBwaG9uZSBudW1iZXIsIGV0Yy5cbiAgICAgIGlmICgvXmh0dHBzPzovaXUudGVzdChocmVmKSkge1xuICAgICAgICBleHRlcm5hbExpbmtBbHQgJiYgdG9rZW4uYXR0clNldCgndGl0bGUnLCBleHRlcm5hbExpbmtBbHQpO1xuXG4gICAgICAgIGNvbnN0IGljb25Ub2tlbnMgPSBpbnRlcm5hbE1hcmtkb3duSXQucGFyc2VJbmxpbmUoYCFbJHtleHRlcm5hbExpbmtBbHR9XSgke1RSQU5TUEFSRU5UX0dJRn0pYClbMF0uY2hpbGRyZW47XG5cbiAgICAgICAgaWNvblRva2Vuc1swXS5hdHRySm9pbignY2xhc3MnLCAnd2ViY2hhdF9fbWFya2Rvd25fX2V4dGVybmFsLWxpbmstaWNvbicpO1xuXG4gICAgICAgIHRva2Vucy5zcGxpY2UoaW5kZXggKyAyLCAwLCAuLi5pY29uVG9rZW5zKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5yZW5kZXIobWFya2Rvd24pO1xuXG4gIC8vIFRoZSBzaWduYXR1cmUgZnJvbSBcInNhbml0aXplLWh0bWxcIiBtb2R1bGUgaXMgbm90IGNvcnJlY3QuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gc2FuaXRpemVIVE1MKGh0bWwsIFNBTklUSVpFX0hUTUxfT1BUSU9OUyk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { ComponentType } from 'react';
2
+ export default function renderWebChat(ReactWebChat: ComponentType<any>, props: any, element: HTMLElement): void;
3
+ //# sourceMappingURL=renderWebChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderWebChat.d.ts","sourceRoot":"","sources":["../src/renderWebChat.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAE9G"}
@@ -14,4 +14,4 @@ var _reactDom = _interopRequireDefault(require("react-dom"));
14
14
  function renderWebChat(ReactWebChat, props, element) {
15
15
  _reactDom.default.render( /*#__PURE__*/_react.default.createElement(ReactWebChat, props), element);
16
16
  }
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXJXZWJDaGF0LmpzIl0sIm5hbWVzIjpbInJlbmRlcldlYkNoYXQiLCJSZWFjdFdlYkNoYXQiLCJwcm9wcyIsImVsZW1lbnQiLCJSZWFjdERPTSIsInJlbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRWUsU0FBU0EsYUFBVCxDQUF1QkMsWUFBdkIsRUFBcUNDLEtBQXJDLEVBQTRDQyxPQUE1QyxFQUFxRDtBQUNsRUMsb0JBQVNDLE1BQVQsZUFBZ0IsNkJBQUMsWUFBRCxFQUFrQkgsS0FBbEIsQ0FBaEIsRUFBNkNDLE9BQTdDO0FBQ0QiLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVuZGVyV2ViQ2hhdChSZWFjdFdlYkNoYXQsIHByb3BzLCBlbGVtZW50KSB7XG4gIFJlYWN0RE9NLnJlbmRlcig8UmVhY3RXZWJDaGF0IHsuLi5wcm9wc30gLz4sIGVsZW1lbnQpO1xufVxuIl19
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXJXZWJDaGF0LnRzeCJdLCJuYW1lcyI6WyJyZW5kZXJXZWJDaGF0IiwiUmVhY3RXZWJDaGF0IiwicHJvcHMiLCJlbGVtZW50IiwiUmVhY3RET00iLCJyZW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVlLFNBQVNBLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQXlEQyxLQUF6RCxFQUFxRUMsT0FBckUsRUFBaUc7QUFDOUdDLG9CQUFTQyxNQUFULGVBQWdCLDZCQUFDLFlBQUQsRUFBa0JILEtBQWxCLENBQWhCLEVBQTZDQyxPQUE3QztBQUNEIiwic291cmNlUm9vdCI6ImJ1bmRsZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXJXZWJDaGF0KFJlYWN0V2ViQ2hhdDogQ29tcG9uZW50VHlwZTxhbnk+LCBwcm9wczogYW55LCBlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICBSZWFjdERPTS5yZW5kZXIoPFJlYWN0V2ViQ2hhdCB7Li4ucHJvcHN9IC8+LCBlbGVtZW50KTtcbn1cbiJdfQ==
@@ -0,0 +1,94 @@
1
+ import { AudioInputStream } from 'microsoft-cognitiveservices-speech-sdk';
2
+ import { AudioSourceEvent, EventSource } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/Exports';
3
+ import { AudioStreamFormatImpl } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/AudioStreamFormat';
4
+ import { connectivity as Connectivity, ISpeechConfigAudioDevice, type as Type } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Exports';
5
+ import { DeferredPromise } from 'p-defer-es5';
6
+ declare type AudioStreamNode = {
7
+ detach: () => Promise<void>;
8
+ id: () => string;
9
+ read: () => Promise<StreamChunk<ArrayBuffer>>;
10
+ };
11
+ declare type DeviceInfo = {
12
+ connectivity?: Connectivity | 'Bluetooth' | 'Wired' | 'WiFi' | 'Cellular' | 'InBuilt' | 'Unknown';
13
+ manufacturer?: string;
14
+ model?: string;
15
+ type?: Type | 'Phone' | 'Speaker' | 'Car' | 'Headset' | 'Thermostat' | 'Microphones' | 'Deskphone' | 'RemoteControl' | 'Unknown' | 'File' | 'Stream';
16
+ };
17
+ declare type Format = {
18
+ bitsPerSample: number;
19
+ channels: number;
20
+ samplesPerSec: number;
21
+ };
22
+ declare type NormalizedOptions = Required<Omit<Options, 'debug'>> & {
23
+ debug: boolean;
24
+ };
25
+ declare type Options = {
26
+ debug?: true;
27
+ id?: string;
28
+ };
29
+ declare type StreamChunk<T> = {
30
+ isEnd: boolean;
31
+ buffer: T;
32
+ timeReceived: number;
33
+ };
34
+ declare const SYMBOL_DEVICE_INFO_DEFERRED: unique symbol;
35
+ declare const SYMBOL_EVENTS: unique symbol;
36
+ declare const SYMBOL_FORMAT_DEFERRED: unique symbol;
37
+ declare const SYMBOL_OPTIONS: unique symbol;
38
+ declare abstract class CustomAudioInputStream extends AudioInputStream {
39
+ constructor(options?: Options);
40
+ [SYMBOL_DEVICE_INFO_DEFERRED]: DeferredPromise<DeviceInfo>;
41
+ [SYMBOL_EVENTS]: EventSource<AudioSourceEvent>;
42
+ [SYMBOL_FORMAT_DEFERRED]: DeferredPromise<AudioStreamFormatImpl>;
43
+ [SYMBOL_OPTIONS]: NormalizedOptions;
44
+ /** Gets the event source for listening to events. */
45
+ get events(): EventSource<AudioSourceEvent>;
46
+ /** Gets the format of the audio stream. */
47
+ get format(): Promise<AudioStreamFormatImpl>;
48
+ /** Gets the ID of this audio stream. */
49
+ id(): string;
50
+ /** Emits an event. */
51
+ protected onEvent(event: AudioSourceEvent): void;
52
+ /** Emits an `AudioSourceInitializingEvent`. */
53
+ protected emitInitializing(): void;
54
+ /** Emits an `AudioSourceReadyEvent`. */
55
+ protected emitReady(): void;
56
+ /** Emits an `AudioSourceErrorEvent`. */
57
+ protected emitError(error: Error): void;
58
+ /** Emits an `AudioStreamNodeAttachingEvent`. */
59
+ protected emitNodeAttaching(audioNodeId: string): void;
60
+ /** Emits an `AudioStreamNodeAttachedEvent`. */
61
+ protected emitNodeAttached(audioNodeId: string): void;
62
+ /** Emits an `AudioStreamNodeErrorEvent`. */
63
+ protected emitNodeError(audioNodeId: string, error: Error): void;
64
+ /** Emits an `AudioStreamNodeDetachedEvent`. */
65
+ protected emitNodeDetached(audioNodeId: string): void;
66
+ /** Emits an `AudioSourceOffEvent`. */
67
+ protected emitOff(): void;
68
+ close(): void;
69
+ turnOn(): void;
70
+ detach(): void;
71
+ /** Log the message to console if `debug` is set to `true`. */
72
+ private debug;
73
+ /** Implements this function. When called, it should start recording and return an `IAudioStreamNode`. */
74
+ protected abstract performAttach(audioNodeId: string): Promise<{
75
+ audioStreamNode: AudioStreamNode;
76
+ deviceInfo: DeviceInfo;
77
+ format: Format;
78
+ }>;
79
+ /** Attaches the device by returning an audio node. */
80
+ attach(audioNodeId: string): Promise<AudioStreamNode>;
81
+ /**
82
+ * Implements this function. When called, it should stop recording. This is called before the `IAudioStreamNode.detach` function.
83
+ *
84
+ * Note: when using with Direct Line Speech, this function is never called.
85
+ */
86
+ protected performTurnOff(): Promise<void>;
87
+ /** Turn off the audio device. This is called before detaching from the graph. */
88
+ turnOff(): Promise<void>;
89
+ /** Gets the device information. */
90
+ get deviceInfo(): Promise<ISpeechConfigAudioDevice>;
91
+ }
92
+ export default CustomAudioInputStream;
93
+ export type { AudioStreamNode, DeviceInfo, Format, Options };
94
+ //# sourceMappingURL=CustomAudioInputStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomAudioInputStream.d.ts","sourceRoot":"","sources":["../../src/speech/CustomAudioInputStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
+
26
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
+
28
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
+
30
+ var _microsoftCognitiveservicesSpeechSdk = require("microsoft-cognitiveservices-speech-sdk");
31
+
32
+ var _Exports = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/Exports");
33
+
34
+ var _AudioStreamFormat = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/AudioStreamFormat");
35
+
36
+ var _Exports2 = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Exports");
37
+
38
+ var _uuid = require("uuid");
39
+
40
+ var _pDeferEs = _interopRequireDefault(require("p-defer-es5"));
41
+
42
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
43
+
44
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
45
+
46
+ var SYMBOL_DEVICE_INFO_DEFERRED = Symbol('deviceInfoDeferred');
47
+ var SYMBOL_EVENTS = Symbol('events');
48
+ var SYMBOL_FORMAT_DEFERRED = Symbol('formatDeferred');
49
+ var SYMBOL_OPTIONS = Symbol('options'); // Speech SDK quirks: Only 2 lifecycle functions are actually used.
50
+ // They are: attach() and turnOff().
51
+ // Others are not used, including: blob(), close(), detach(), turnOn().
52
+
53
+ var CustomAudioInputStream = /*#__PURE__*/function (_AudioInputStream) {
54
+ (0, _inherits2.default)(CustomAudioInputStream, _AudioInputStream);
55
+
56
+ var _super = _createSuper(CustomAudioInputStream);
57
+
58
+ function CustomAudioInputStream() {
59
+ var _this;
60
+
61
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
62
+ (0, _classCallCheck2.default)(this, CustomAudioInputStream);
63
+ _this = _super.call(this);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_DEVICE_INFO_DEFERRED, void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_EVENTS, void 0);
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_FORMAT_DEFERRED, void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_OPTIONS, void 0);
68
+ var normalizedOptions = {
69
+ debug: options.debug || false,
70
+ id: options.id || (0, _uuid.v4)().replace(/\x2D/g, '')
71
+ };
72
+ _this[SYMBOL_DEVICE_INFO_DEFERRED] = (0, _pDeferEs.default)();
73
+ _this[SYMBOL_EVENTS] = new _Exports.EventSource();
74
+ _this[SYMBOL_FORMAT_DEFERRED] = (0, _pDeferEs.default)();
75
+ _this[SYMBOL_OPTIONS] = normalizedOptions;
76
+ return _this;
77
+ }
78
+
79
+ (0, _createClass2.default)(CustomAudioInputStream, [{
80
+ key: "events",
81
+ get:
82
+ /** Gets the event source for listening to events. */
83
+ // ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
84
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
85
+ // @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
86
+ function get() {
87
+ return this[SYMBOL_EVENTS];
88
+ }
89
+ /** Gets the format of the audio stream. */
90
+ // Speech SDK quirks: `AudioStreamFormatImpl` is internal implementation while `AudioStreamFormat` is public.
91
+ // It is weird to expose `AudioStreamFormatImpl` instead of `AudioStreamFormat`.
92
+ // Speech SDK quirks: It is weird to return a `Promise` in a property.
93
+ // Speech SDK quirks: In normal speech recognition, getter of "format" is called only after "attach".
94
+ // But in Direct Line Speech, it is called before "attach".
95
+ // ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
96
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
97
+ // @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
98
+
99
+ }, {
100
+ key: "format",
101
+ get: function get() {
102
+ this.debug('Getting "format".');
103
+ return this[SYMBOL_FORMAT_DEFERRED].promise;
104
+ }
105
+ /** Gets the ID of this audio stream. */
106
+
107
+ }, {
108
+ key: "id",
109
+ value: function id() {
110
+ return this[SYMBOL_OPTIONS].id;
111
+ }
112
+ /** Emits an event. */
113
+ // Speech SDK quirks: In JavaScript, onXxx means "listen to event XXX".
114
+ // Instead, in Speech SDK, it means "emit event XXX".
115
+
116
+ }, {
117
+ key: "onEvent",
118
+ value: function onEvent(event) {
119
+ this[SYMBOL_EVENTS].onEvent(event);
120
+
121
+ _Exports.Events.instance.onEvent(event);
122
+ }
123
+ /** Emits an `AudioSourceInitializingEvent`. */
124
+
125
+ }, {
126
+ key: "emitInitializing",
127
+ value: function emitInitializing() {
128
+ this.debug('Emitting "AudioSourceInitializingEvent".');
129
+ this.onEvent(new _Exports.AudioSourceInitializingEvent(this.id()));
130
+ }
131
+ /** Emits an `AudioSourceReadyEvent`. */
132
+
133
+ }, {
134
+ key: "emitReady",
135
+ value: function emitReady() {
136
+ this.debug('Emitting "AudioSourceReadyEvent".');
137
+ this.onEvent(new _Exports.AudioSourceReadyEvent(this.id()));
138
+ }
139
+ /** Emits an `AudioSourceErrorEvent`. */
140
+ // Speech SDK quirks: Since "turnOn" is never called and "turnOff" does not work in Direct Line Speech, the "source error" event is not emitted at all.
141
+ // Instead, we only emit "node error" event.
142
+
143
+ }, {
144
+ key: "emitError",
145
+ value: function emitError(error) {
146
+ this.debug('Emitting "AudioSourceErrorEvent".', {
147
+ error: error
148
+ }); // Speech SDK quirks: "error" is a string, instead of object of type "Error".
149
+
150
+ this.onEvent(new _Exports.AudioSourceErrorEvent(this.id(), error.message));
151
+ }
152
+ /** Emits an `AudioStreamNodeAttachingEvent`. */
153
+
154
+ }, {
155
+ key: "emitNodeAttaching",
156
+ value: function emitNodeAttaching(audioNodeId) {
157
+ this.debug("Emitting \"AudioStreamNodeAttachingEvent\" for node \"".concat(audioNodeId, "\"."));
158
+ this.onEvent(new _Exports.AudioStreamNodeAttachingEvent(this.id(), audioNodeId));
159
+ }
160
+ /** Emits an `AudioStreamNodeAttachedEvent`. */
161
+
162
+ }, {
163
+ key: "emitNodeAttached",
164
+ value: function emitNodeAttached(audioNodeId) {
165
+ this.debug("Emitting \"AudioStreamNodeAttachedEvent\" for node \"".concat(audioNodeId, "\"."));
166
+ this.onEvent(new _Exports.AudioStreamNodeAttachedEvent(this.id(), audioNodeId));
167
+ }
168
+ /** Emits an `AudioStreamNodeErrorEvent`. */
169
+
170
+ }, {
171
+ key: "emitNodeError",
172
+ value: function emitNodeError(audioNodeId, error) {
173
+ this.debug("Emitting \"AudioStreamNodeErrorEvent\" for node \"".concat(audioNodeId, "\"."), {
174
+ error: error
175
+ }); // Speech SDK quirks: "error" is a string, instead of object of type "Error".
176
+
177
+ this.onEvent(new _Exports.AudioStreamNodeErrorEvent(this.id(), audioNodeId, error.message));
178
+ }
179
+ /** Emits an `AudioStreamNodeDetachedEvent`. */
180
+
181
+ }, {
182
+ key: "emitNodeDetached",
183
+ value: function emitNodeDetached(audioNodeId) {
184
+ this.debug('Emitting "AudioStreamNodeDetachedEvent".');
185
+ this.onEvent(new _Exports.AudioStreamNodeDetachedEvent(this.id(), audioNodeId));
186
+ }
187
+ /** Emits an `AudioSourceOffEvent`. */
188
+
189
+ }, {
190
+ key: "emitOff",
191
+ value: function emitOff() {
192
+ this.debug('Emitting "AudioSourceOffEvent".');
193
+ this.onEvent(new _Exports.AudioSourceOffEvent(this.id()));
194
+ } // Speech SDK quirks: Although "close" is marked as abstract, it is never called in our observations.
195
+ // ESLint: Speech SDK requires this function, but we are not implementing it.
196
+ // eslint-disable-next-line class-methods-use-this
197
+
198
+ }, {
199
+ key: "close",
200
+ value: function close() {
201
+ this.debug('Callback for "close".');
202
+ throw new Error('Not implemented');
203
+ } // Speech SDK quirks: Although "turnOn" is implemented in Speech SDK Push/PullAudioInputStream, it is never called in our observations.
204
+
205
+ }, {
206
+ key: "turnOn",
207
+ value: function turnOn() {
208
+ this.debug('Callback for "turnOn".');
209
+ throw new Error('Not implemented');
210
+ } // Speech SDK quirks: Although "detach" is implemented in Speech SDK Push/PullAudioInputStream, it is never called in our observations.
211
+
212
+ }, {
213
+ key: "detach",
214
+ value: function detach() {
215
+ this.debug('Callback for "detach".');
216
+ throw new Error('Not implemented');
217
+ }
218
+ /** Log the message to console if `debug` is set to `true`. */
219
+
220
+ }, {
221
+ key: "debug",
222
+ value: function debug(message) {
223
+ var _console;
224
+
225
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
226
+ args[_key - 1] = arguments[_key];
227
+ }
228
+
229
+ // ESLint: For debugging, will only log when "debug" is set to "true".
230
+ // eslint-disable-next-line no-console
231
+ this[SYMBOL_OPTIONS].debug && (_console = console).info.apply(_console, ["CustomAudioInputStream: ".concat(message)].concat(args));
232
+ }
233
+ /** Implements this function. When called, it should start recording and return an `IAudioStreamNode`. */
234
+
235
+ }, {
236
+ key: "attach",
237
+ value:
238
+ /** Attaches the device by returning an audio node. */
239
+ function attach(audioNodeId) {
240
+ var _this2 = this;
241
+
242
+ this.debug("Callback for \"attach\" with \"".concat(audioNodeId, "\"."));
243
+ this.emitNodeAttaching(audioNodeId);
244
+ return Promise.resolve().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
245
+ var _yield$_this2$perform, audioStreamNode, deviceInfo, format;
246
+
247
+ return _regenerator.default.wrap(function _callee2$(_context2) {
248
+ while (1) {
249
+ switch (_context2.prev = _context2.next) {
250
+ case 0:
251
+ _this2.emitInitializing();
252
+
253
+ _context2.prev = 1;
254
+ _context2.next = 4;
255
+ return _this2.performAttach(audioNodeId);
256
+
257
+ case 4:
258
+ _yield$_this2$perform = _context2.sent;
259
+ audioStreamNode = _yield$_this2$perform.audioStreamNode;
260
+ deviceInfo = _yield$_this2$perform.deviceInfo;
261
+ format = _yield$_this2$perform.format;
262
+
263
+ // Although only getter of "format" is called before "attach" (in Direct Line Speech),
264
+ // we are handling both "deviceInfo" and "format" in similar way for uniformity.
265
+ _this2[SYMBOL_DEVICE_INFO_DEFERRED].resolve(deviceInfo);
266
+
267
+ _this2[SYMBOL_FORMAT_DEFERRED].resolve(new _AudioStreamFormat.AudioStreamFormatImpl(format.samplesPerSec, format.bitsPerSample, format.channels));
268
+
269
+ _this2.emitReady();
270
+
271
+ _this2.emitNodeAttached(audioNodeId);
272
+
273
+ return _context2.abrupt("return", {
274
+ detach: function () {
275
+ var _detach = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
276
+ return _regenerator.default.wrap(function _callee$(_context) {
277
+ while (1) {
278
+ switch (_context.prev = _context.next) {
279
+ case 0:
280
+ _this2.debug("Detaching audio node \"".concat(audioNodeId, "\"."));
281
+
282
+ _context.next = 3;
283
+ return audioStreamNode.detach();
284
+
285
+ case 3:
286
+ // Speech SDK quirks: Since "turnOff" is not called in Direct Line Speech, we will emit event "source off" here instead.
287
+ _this2.emitOff();
288
+
289
+ _this2.emitNodeDetached(audioNodeId);
290
+
291
+ case 5:
292
+ case "end":
293
+ return _context.stop();
294
+ }
295
+ }
296
+ }, _callee);
297
+ }));
298
+
299
+ function detach() {
300
+ return _detach.apply(this, arguments);
301
+ }
302
+
303
+ return detach;
304
+ }(),
305
+ id: function id() {
306
+ return audioStreamNode.id();
307
+ },
308
+ read: function read() {
309
+ _this2.debug('Reading');
310
+
311
+ return audioStreamNode.read();
312
+ }
313
+ });
314
+
315
+ case 15:
316
+ _context2.prev = 15;
317
+ _context2.t0 = _context2["catch"](1);
318
+
319
+ _this2.emitNodeError(audioNodeId, _context2.t0);
320
+
321
+ throw _context2.t0;
322
+
323
+ case 19:
324
+ case "end":
325
+ return _context2.stop();
326
+ }
327
+ }
328
+ }, _callee2, null, [[1, 15]]);
329
+ })));
330
+ }
331
+ /**
332
+ * Implements this function. When called, it should stop recording. This is called before the `IAudioStreamNode.detach` function.
333
+ *
334
+ * Note: when using with Direct Line Speech, this function is never called.
335
+ */
336
+ // ESLint: We are not implementing this function because it is not called by Direct Line Speech.
337
+ // eslint-disable-next-line class-methods-use-this
338
+
339
+ }, {
340
+ key: "performTurnOff",
341
+ value: function performTurnOff() {
342
+ // ESLint: "return" is required by TypeScript
343
+ // eslint-disable-next-line no-useless-return
344
+ return;
345
+ }
346
+ /** Turn off the audio device. This is called before detaching from the graph. */
347
+ // Speech SDK quirks: It is confused to have both "turnOff" and "detach". "turnOff" is called before "detach".
348
+ // Why don't we put all logics at "detach"?
349
+ // Speech SDK quirks: Direct Line Speech never call "turnOff". "Source off" event need to be emitted during "detach" instead.
350
+ // Also, custom implementation should be done at "detach" instead, such as ending and closing output streams.
351
+
352
+ }, {
353
+ key: "turnOff",
354
+ value: function () {
355
+ var _turnOff = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
356
+ return _regenerator.default.wrap(function _callee3$(_context3) {
357
+ while (1) {
358
+ switch (_context3.prev = _context3.next) {
359
+ case 0:
360
+ this.debug("Callback for \"turnOff\".");
361
+ _context3.next = 3;
362
+ return this.performTurnOff();
363
+
364
+ case 3:
365
+ case "end":
366
+ return _context3.stop();
367
+ }
368
+ }
369
+ }, _callee3, this);
370
+ }));
371
+
372
+ function turnOff() {
373
+ return _turnOff.apply(this, arguments);
374
+ }
375
+
376
+ return turnOff;
377
+ }()
378
+ /** Gets the device information. */
379
+ // ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
380
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
381
+ // @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
382
+
383
+ }, {
384
+ key: "deviceInfo",
385
+ get: function get() {
386
+ this.debug("Getting \"deviceInfo\".");
387
+ return Promise.all([this[SYMBOL_DEVICE_INFO_DEFERRED].promise, this[SYMBOL_FORMAT_DEFERRED].promise]).then(function (_ref2) {
388
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
389
+ _ref3$ = _ref3[0],
390
+ connectivity = _ref3$.connectivity,
391
+ manufacturer = _ref3$.manufacturer,
392
+ model = _ref3$.model,
393
+ type = _ref3$.type,
394
+ _ref3$2 = _ref3[1],
395
+ bitsPerSample = _ref3$2.bitsPerSample,
396
+ channels = _ref3$2.channels,
397
+ samplesPerSec = _ref3$2.samplesPerSec;
398
+
399
+ return {
400
+ bitspersample: bitsPerSample,
401
+ channelcount: channels,
402
+ connectivity: typeof connectivity === 'string' ? _Exports2.connectivity[connectivity] : connectivity || _Exports2.connectivity.Unknown,
403
+ manufacturer: manufacturer || '',
404
+ model: model || '',
405
+ samplerate: samplesPerSec,
406
+ type: typeof type === 'string' ? _Exports2.type[type] : type || _Exports2.type.Unknown
407
+ };
408
+ });
409
+ }
410
+ }]);
411
+ return CustomAudioInputStream;
412
+ }(_microsoftCognitiveservicesSpeechSdk.AudioInputStream);
413
+
414
+ var _default = CustomAudioInputStream;
415
+ exports.default = _default;
416
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGVlY2gvQ3VzdG9tQXVkaW9JbnB1dFN0cmVhbS50cyJdLCJuYW1lcyI6WyJTWU1CT0xfREVWSUNFX0lORk9fREVGRVJSRUQiLCJTeW1ib2wiLCJTWU1CT0xfRVZFTlRTIiwiU1lNQk9MX0ZPUk1BVF9ERUZFUlJFRCIsIlNZTUJPTF9PUFRJT05TIiwiQ3VzdG9tQXVkaW9JbnB1dFN0cmVhbSIsIm9wdGlvbnMiLCJub3JtYWxpemVkT3B0aW9ucyIsImRlYnVnIiwiaWQiLCJyZXBsYWNlIiwiRXZlbnRTb3VyY2UiLCJwcm9taXNlIiwiZXZlbnQiLCJvbkV2ZW50IiwiRXZlbnRzIiwiaW5zdGFuY2UiLCJBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50IiwiQXVkaW9Tb3VyY2VSZWFkeUV2ZW50IiwiZXJyb3IiLCJBdWRpb1NvdXJjZUVycm9yRXZlbnQiLCJtZXNzYWdlIiwiYXVkaW9Ob2RlSWQiLCJBdWRpb1N0cmVhbU5vZGVBdHRhY2hpbmdFdmVudCIsIkF1ZGlvU3RyZWFtTm9kZUF0dGFjaGVkRXZlbnQiLCJBdWRpb1N0cmVhbU5vZGVFcnJvckV2ZW50IiwiQXVkaW9TdHJlYW1Ob2RlRGV0YWNoZWRFdmVudCIsIkF1ZGlvU291cmNlT2ZmRXZlbnQiLCJFcnJvciIsImFyZ3MiLCJjb25zb2xlIiwiaW5mbyIsImVtaXROb2RlQXR0YWNoaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZW1pdEluaXRpYWxpemluZyIsInBlcmZvcm1BdHRhY2giLCJhdWRpb1N0cmVhbU5vZGUiLCJkZXZpY2VJbmZvIiwiZm9ybWF0IiwiQXVkaW9TdHJlYW1Gb3JtYXRJbXBsIiwic2FtcGxlc1BlclNlYyIsImJpdHNQZXJTYW1wbGUiLCJjaGFubmVscyIsImVtaXRSZWFkeSIsImVtaXROb2RlQXR0YWNoZWQiLCJkZXRhY2giLCJlbWl0T2ZmIiwiZW1pdE5vZGVEZXRhY2hlZCIsInJlYWQiLCJlbWl0Tm9kZUVycm9yIiwicGVyZm9ybVR1cm5PZmYiLCJhbGwiLCJjb25uZWN0aXZpdHkiLCJtYW51ZmFjdHVyZXIiLCJtb2RlbCIsInR5cGUiLCJiaXRzcGVyc2FtcGxlIiwiY2hhbm5lbGNvdW50IiwiQ29ubmVjdGl2aXR5IiwiVW5rbm93biIsInNhbXBsZXJhdGUiLCJUeXBlIiwiQXVkaW9JbnB1dFN0cmVhbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFjQTs7QUFFQTs7QUFNQTs7QUFDQTs7Ozs7O0FBZ0RBLElBQU1BLDJCQUEyQixHQUFHQyxNQUFNLENBQUMsb0JBQUQsQ0FBMUM7QUFDQSxJQUFNQyxhQUFhLEdBQUdELE1BQU0sQ0FBQyxRQUFELENBQTVCO0FBQ0EsSUFBTUUsc0JBQXNCLEdBQUdGLE1BQU0sQ0FBQyxnQkFBRCxDQUFyQztBQUNBLElBQU1HLGNBQWMsR0FBR0gsTUFBTSxDQUFDLFNBQUQsQ0FBN0IsQyxDQUVBO0FBQ0E7QUFDQTs7SUFDZUksc0I7Ozs7O0FBQ2Isb0NBQW1DO0FBQUE7O0FBQUEsUUFBdkJDLE9BQXVCLHVFQUFKLEVBQUk7QUFBQTtBQUNqQztBQURpQywrRUFjbENOLDJCQWRrQztBQUFBLCtFQWVsQ0UsYUFma0M7QUFBQSwrRUFnQmxDQyxzQkFoQmtDO0FBQUEsK0VBaUJsQ0MsY0FqQmtDO0FBR2pDLFFBQU1HLGlCQUFvQyxHQUFHO0FBQzNDQyxNQUFBQSxLQUFLLEVBQUVGLE9BQU8sQ0FBQ0UsS0FBUixJQUFpQixLQURtQjtBQUUzQ0MsTUFBQUEsRUFBRSxFQUFFSCxPQUFPLENBQUNHLEVBQVIsSUFBYyxnQkFBS0MsT0FBTCxDQUFhLE9BQWIsRUFBb0IsRUFBcEI7QUFGeUIsS0FBN0M7QUFLQSxVQUFLViwyQkFBTCxJQUFvQyx3QkFBcEM7QUFDQSxVQUFLRSxhQUFMLElBQXNCLElBQUlTLG9CQUFKLEVBQXRCO0FBQ0EsVUFBS1Isc0JBQUwsSUFBK0Isd0JBQS9CO0FBQ0EsVUFBS0MsY0FBTCxJQUF1QkcsaUJBQXZCO0FBWGlDO0FBWWxDOzs7OztBQU9EO0FB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RCxXQUFLNUMsS0FBTDtBQUVBLGFBQU95QixPQUFPLENBQUNvQixHQUFSLENBQVksQ0FBQyxLQUFLckQsMkJBQUwsRUFBa0NZLE9BQW5DLEVBQTRDLEtBQUtULHNCQUFMLEVBQTZCUyxPQUF6RSxDQUFaLEVBQStGdUIsSUFBL0YsQ0FDTDtBQUFBO0FBQUE7QUFBQSxZQUFJbUIsWUFBSixVQUFJQSxZQUFKO0FBQUEsWUFBa0JDLFlBQWxCLFVBQWtCQSxZQUFsQjtBQUFBLFlBQWdDQyxLQUFoQyxVQUFnQ0EsS0FBaEM7QUFBQSxZQUF1Q0MsSUFBdkMsVUFBdUNBLElBQXZDO0FBQUE7QUFBQSxZQUFpRGQsYUFBakQsV0FBaURBLGFBQWpEO0FBQUEsWUFBZ0VDLFFBQWhFLFdBQWdFQSxRQUFoRTtBQUFBLFlBQTBFRixhQUExRSxXQUEwRUEsYUFBMUU7O0FBQUEsZUFBZ0c7QUFDOUZnQixVQUFBQSxhQUFhLEVBQUVmLGFBRCtFO0FBRTlGZ0IsVUFBQUEsWUFBWSxFQUFFZixRQUZnRjtBQUc5RlUsVUFBQUEsWUFBWSxFQUNWLE9BQU9BLFlBQVAsS0FBd0IsUUFBeEIsR0FBbUNNLHVCQUFhTixZQUFiLENBQW5DLEdBQWdFQSxZQUFZLElBQUlNLHVCQUFhQyxPQUpEO0FBSzlGTixVQUFBQSxZQUFZLEVBQUVBLFlBQVksSUFBSSxFQUxnRTtBQU05RkMsVUFBQUEsS0FBSyxFQUFFQSxLQUFLLElBQUksRUFOOEU7QUFPOUZNLFVBQUFBLFVBQVUsRUFBRXBCLGFBUGtGO0FBUTlGZSxVQUFBQSxJQUFJLEVBQUUsT0FBT0EsSUFBUCxLQUFnQixRQUFoQixHQUEyQk0sZUFBS04sSUFBTCxDQUEzQixHQUF3Q0EsSUFBSSxJQUFJTSxlQUFLRjtBQVJtQyxTQUFoRztBQUFBLE9BREssQ0FBUDtBQVlEOzs7RUE5TzJDRyxxRDs7ZUFpUC9CM0Qsc0IiLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1ZGlvSW5wdXRTdHJlYW0gfSBmcm9tICdtaWNyb3NvZnQtY29nbml0aXZlc2VydmljZXMtc3BlZWNoLXNkayc7XG5cbmltcG9ydCB7XG4gIEF1ZGlvU291cmNlRXJyb3JFdmVudCxcbiAgQXVkaW9Tb3VyY2VFdmVudCxcbiAgQXVkaW9Tb3VyY2VJbml0aWFsaXppbmdFdmVudCxcbiAgQXVkaW9Tb3VyY2VPZmZFdmVudCxcbiAgQXVkaW9Tb3VyY2VSZWFkeUV2ZW50LFxuICBBdWRpb1N0cmVhbU5vZGVBdHRhY2hlZEV2ZW50LFxuICBBdWRpb1N0cmVhbU5vZGVBdHRhY2hpbmdFdmVudCxcbiAgQXVkaW9TdHJlYW1Ob2RlRGV0YWNoZWRFdmVudCxcbiAgQXVkaW9TdHJlYW1Ob2RlRXJyb3JFdmVudCxcbiAgRXZlbnRzLFxuICBFdmVudFNvdXJjZVxufSBmcm9tICdtaWNyb3NvZnQtY29nbml0aXZlc2VydmljZXMtc3BlZWNoLXNkay9kaXN0cmliL2xpYi9zcmMvY29tbW9uL0V4cG9ydHMnO1xuXG5pbXBvcnQgeyBBdWRpb1N0cmVhbUZvcm1hdEltcGwgfSBmcm9tICdtaWNyb3NvZnQtY29nbml0aXZlc2VydmljZXMtc3BlZWNoLXNkay9kaXN0cmliL2xpYi9zcmMvc2RrL0F1ZGlvL0F1ZGlvU3RyZWFtRm9ybWF0JztcblxuaW1wb3J0IHtcbiAgY29ubmVjdGl2aXR5IGFzIENvbm5lY3Rpdml0eSxcbiAgSVNwZWVjaENvbmZpZ0F1ZGlvRGV2aWNlLFxuICB0eXBlIGFzIFR5cGVcbn0gZnJvbSAnbWljcm9zb2Z0LWNvZ25pdGl2ZXNlcnZpY2VzLXNwZWVjaC1zZGsvZGlzdHJpYi9saWIvc3JjL2NvbW1vbi5zcGVlY2gvRXhwb3J0cyc7XG5cbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgY3JlYXRlRGVmZXJyZWQsIHsgRGVmZXJyZWRQcm9taXNlIH0gZnJvbSAncC1kZWZlci1lczUnO1xuXG50eXBlIEF1ZGlvU3RyZWFtTm9kZSA9IHtcbiAgZGV0YWNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpZDogKCkgPT4gc3RyaW5nO1xuICByZWFkOiAoKSA9PiBQcm9taXNlPFN0cmVhbUNodW5rPEFycmF5QnVmZmVyPj47XG59O1xuXG50eXBlIERldmljZUluZm8gPSB7XG4gIGNvbm5lY3Rpdml0eT86IENvbm5lY3Rpdml0eSB8ICdCbHVldG9vdGgnIHwgJ1dpcmVkJyB8ICdXaUZpJyB8ICdDZWxsdWxhcicgfCAnSW5CdWlsdCcgfCAnVW5rbm93bic7XG4gIG1hbnVmYWN0dXJlcj86IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIHR5cGU/OlxuICAgIHwgVHlwZVxuICAgIHwgJ1Bob25lJ1xuICAgIHwgJ1NwZWFrZXInXG4gICAgfCAnQ2FyJ1xuICAgIHwgJ0hlYWRzZXQnXG4gICAgfCAnVGhlcm1vc3RhdCdcbiAgICB8ICdNaWNyb3Bob25lcydcbiAgICB8ICdEZXNrcGhvbmUnXG4gICAgfCAnUmVtb3RlQ29udHJvbCdcbiAgICB8ICdVbmtub3duJ1xuICAgIHwgJ0ZpbGUnXG4gICAgfCAnU3RyZWFtJztcbn07XG5cbnR5cGUgRm9ybWF0ID0ge1xuICBiaXRzUGVyU2FtcGxlOiBudW1iZXI7XG4gIGNoYW5uZWxzOiBudW1iZXI7XG4gIHNhbXBsZXNQZXJTZWM6IG51bWJlcjtcbn07XG5cbnR5cGUgTm9ybWFsaXplZE9wdGlvbnMgPSBSZXF1aXJlZDxPbWl0PE9wdGlvbnMsICdkZWJ1Zyc+PiAmIHtcbiAgZGVidWc6IGJvb2xlYW47XG59O1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIGRlYnVnPzogdHJ1ZTtcbiAgaWQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIFN0cmVhbUNodW5rPFQ+ID0ge1xuICBpc0VuZDogYm9vbGVhbjtcbiAgYnVmZmVyOiBUO1xuICB0aW1lUmVjZWl2ZWQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IFNZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRCA9IFN5bWJvbCgnZGV2aWNlSW5mb0RlZmVycmVkJyk7XG5jb25zdCBTWU1CT0xfRVZFTlRTID0gU3ltYm9sKCdldmVudHMnKTtcbmNvbnN0IFNZTUJPTF9GT1JNQVRfREVGRVJSRUQgPSBTeW1ib2woJ2Zvcm1hdERlZmVycmVkJyk7XG5jb25zdCBTWU1CT0xfT1BUSU9OUyA9IFN5bWJvbCgnb3B0aW9ucycpO1xuXG4vLyBTcGVlY2ggU0RLIHF1aXJrczogT25seSAyIGxpZmVjeWNsZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQuXG4vLyAgICAgICAgICAgICAgICAgICAgVGhleSBhcmU6IGF0dGFjaCgpIGFuZCB0dXJuT2ZmKCkuXG4vLyAgICAgICAgICAgICAgICAgICAgT3RoZXJzIGFyZSBub3QgdXNlZCwgaW5jbHVkaW5nOiBibG9iKCksIGNsb3NlKCksIGRldGFjaCgpLCB0dXJuT24oKS5cbmFic3RyYWN0IGNsYXNzIEN1c3RvbUF1ZGlvSW5wdXRTdHJlYW0gZXh0ZW5kcyBBdWRpb0lucHV0U3RyZWFtIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zOiBOb3JtYWxpemVkT3B0aW9ucyA9IHtcbiAgICAgIGRlYnVnOiBvcHRpb25zLmRlYnVnIHx8IGZhbHNlLFxuICAgICAgaWQ6IG9wdGlvbnMuaWQgfHwgdjQoKS5yZXBsYWNlKC8tL2d1LCAnJylcbiAgICB9O1xuXG4gICAgdGhpc1tTWU1CT0xfREVWSUNFX0lORk9fREVGRVJSRURdID0gY3JlYXRlRGVmZXJyZWQ8RGV2aWNlSW5mbz4oKTtcbiAgICB0aGlzW1NZTUJPTF9FVkVOVFNdID0gbmV3IEV2ZW50U291cmNlPEF1ZGlvU291cmNlRXZlbnQ+KCk7XG4gICAgdGhpc1tTWU1CT0xfRk9STUFUX0RFRkVSUkVEXSA9IGNyZWF0ZURlZmVycmVkPEF1ZGlvU3RyZWFtRm9ybWF0SW1wbD4oKTtcbiAgICB0aGlzW1NZTUJPTF9PUFRJT05TXSA9IG5vcm1hbGl6ZWRPcHRpb25zO1xuICB9XG5cbiAgW1NZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRF06IERlZmVycmVkUHJvbWlzZTxEZXZpY2VJbmZvPjtcbiAgW1NZTUJPTF9FVkVOVFNdOiBFdmVudFNvdXJjZTxBdWRpb1NvdXJjZUV2ZW50PjtcbiAgW1NZTUJPTF9GT1JNQVRfREVGRVJSRURdOiBEZWZlcnJlZFByb21pc2U8QXVkaW9TdHJlYW1Gb3JtYXRJbXBsPjtcbiAgW1NZTUJPTF9PUFRJT05TXTogTm9ybWFsaXplZE9wdGlvbnM7XG5cbiAgLyoqIEdldHMgdGhlIGV2ZW50IHNvdXJjZSBmb3IgbGlzdGVuaW5nIHRvIGV2ZW50cy4gKi9cbiAgLy8gRVNMaW50OiBUaGlzIGNvZGUgd2lsbCBvbmx5IHdvcmtzIGluIGJyb3dzZXJzIG90aGVyIHRoYW4gSUUxMS4gT25seSB3b3JrcyBpbiBFUzUgaXMgb2theS5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlIEFjY2Vzc29ycyBhcmUgb25seSBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXIudHMoMTA1NilcbiAgZ2V0IGV2ZW50cygpOiBFdmVudFNvdXJjZTxBdWRpb1NvdXJjZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXNbU1lNQk9MX0VWRU5UU107XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZm9ybWF0IG9mIHRoZSBhdWRpbyBzdHJlYW0uICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBgQXVkaW9TdHJlYW1Gb3JtYXRJbXBsYCBpcyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3aGlsZSBgQXVkaW9TdHJlYW1Gb3JtYXRgIGlzIHB1YmxpYy5cbiAgLy8gICAgICAgICAgICAgICAgICAgIEl0IGlzIHdlaXJkIHRvIGV4cG9zZSBgQXVkaW9TdHJlYW1Gb3JtYXRJbXBsYCBpbnN0ZWFkIG9mIGBBdWRpb1N0cmVhbUZvcm1hdGAuXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBJdCBpcyB3ZWlyZCB0byByZXR1cm4gYSBgUHJvbWlzZWAgaW4gYSBwcm9wZXJ0eS5cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IEluIG5vcm1hbCBzcGVlY2ggcmVjb2duaXRpb24sIGdldHRlciBvZiBcImZvcm1hdFwiIGlzIGNhbGxlZCBvbmx5IGFmdGVyIFwiYXR0YWNoXCIuXG4gIC8vICAgICAgICAgICAgICAgICAgICBCdXQgaW4gRGlyZWN0IExpbmUgU3BlZWNoLCBpdCBpcyBjYWxsZWQgYmVmb3JlIFwiYXR0YWNoXCIuXG4gIC8vIEVTTGludDogVGhpcyBjb2RlIHdpbGwgb25seSB3b3JrcyBpbiBicm93c2VycyBvdGhlciB0aGFuIElFMTEuIE9ubHkgd29ya3MgaW4gRVM1IGlzIG9rYXkuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZSBBY2Nlc3NvcnMgYXJlIG9ubHkgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyLnRzKDEwNTYpXG4gIGdldCBmb3JtYXQoKTogUHJvbWlzZTxBdWRpb1N0cmVhbUZvcm1hdEltcGw+IHtcbiAgICB0aGlzLmRlYnVnKCdHZXR0aW5nIFwiZm9ybWF0XCIuJyk7XG5cbiAgICByZXR1cm4gdGhpc1tTWU1CT0xfRk9STUFUX0RFRkVSUkVEXS5wcm9taXNlO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIElEIG9mIHRoaXMgYXVkaW8gc3RyZWFtLiAqL1xuICBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzW1NZTUJPTF9PUFRJT05TXS5pZDtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBldmVudC4gKi9cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IEluIEphdmFTY3JpcHQsIG9uWHh4IG1lYW5zIFwibGlzdGVuIHRvIGV2ZW50IFhYWFwiLlxuICAvLyAgICAgICAgICAgICAgICAgICAgSW5zdGVhZCwgaW4gU3BlZWNoIFNESywgaXQgbWVhbnMgXCJlbWl0IGV2ZW50IFhYWFwiLlxuICBwcm90ZWN0ZWQgb25FdmVudChldmVudDogQXVkaW9Tb3VyY2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXNbU1lNQk9MX0VWRU5UU10ub25FdmVudChldmVudCk7XG4gICAgRXZlbnRzLmluc3RhbmNlLm9uRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGBBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50YC4gKi9cbiAgcHJvdGVjdGVkIGVtaXRJbml0aWFsaXppbmcoKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnRW1pdHRpbmcgXCJBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50KHRoaXMuaWQoKSkpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGBBdWRpb1NvdXJjZVJlYWR5RXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdFJlYWR5KCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0VtaXR0aW5nIFwiQXVkaW9Tb3VyY2VSZWFkeUV2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1NvdXJjZVJlYWR5RXZlbnQodGhpcy5pZCgpKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU291cmNlRXJyb3JFdmVudGAuICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBTaW5jZSBcInR1cm5PblwiIGlzIG5ldmVyIGNhbGxlZCBhbmQgXCJ0dXJuT2ZmXCIgZG9lcyBub3Qgd29yayBpbiBEaXJlY3QgTGluZSBTcGVlY2gsIHRoZSBcInNvdXJjZSBlcnJvclwiIGV2ZW50IGlzIG5vdCBlbWl0dGVkIGF0IGFsbC5cbiAgLy8gICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHdlIG9ubHkgZW1pdCBcIm5vZGUgZXJyb3JcIiBldmVudC5cbiAgcHJvdGVjdGVkIGVtaXRFcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmRlYnVnKCdFbWl0dGluZyBcIkF1ZGlvU291cmNlRXJyb3JFdmVudFwiLicsIHsgZXJyb3IgfSk7XG5cbiAgICAvLyBTcGVlY2ggU0RLIHF1aXJrczogXCJlcnJvclwiIGlzIGEgc3RyaW5nLCBpbnN0ZWFkIG9mIG9iamVjdCBvZiB0eXBlIFwiRXJyb3JcIi5cbiAgICB0aGlzLm9uRXZlbnQobmV3IEF1ZGlvU291cmNlRXJyb3JFdmVudCh0aGlzLmlkKCksIGVycm9yLm1lc3NhZ2UpKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBgQXVkaW9TdHJlYW1Ob2RlQXR0YWNoaW5nRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVBdHRhY2hpbmcoYXVkaW9Ob2RlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoYEVtaXR0aW5nIFwiQXVkaW9TdHJlYW1Ob2RlQXR0YWNoaW5nRXZlbnRcIiBmb3Igbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1N0cmVhbU5vZGVBdHRhY2hpbmdFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZUF0dGFjaGVkRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVBdHRhY2hlZChhdWRpb05vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZyhgRW1pdHRpbmcgXCJBdWRpb1N0cmVhbU5vZGVBdHRhY2hlZEV2ZW50XCIgZm9yIG5vZGUgXCIke2F1ZGlvTm9kZUlkfVwiLmApO1xuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9TdHJlYW1Ob2RlQXR0YWNoZWRFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZUVycm9yRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVFcnJvcihhdWRpb05vZGVJZDogc3RyaW5nLCBlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmRlYnVnKGBFbWl0dGluZyBcIkF1ZGlvU3RyZWFtTm9kZUVycm9yRXZlbnRcIiBmb3Igbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCwgeyBlcnJvciB9KTtcblxuICAgIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBcImVycm9yXCIgaXMgYSBzdHJpbmcsIGluc3RlYWQgb2Ygb2JqZWN0IG9mIHR5cGUgXCJFcnJvclwiLlxuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9TdHJlYW1Ob2RlRXJyb3JFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkLCBlcnJvci5tZXNzYWdlKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZURldGFjaGVkRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVEZXRhY2hlZChhdWRpb05vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnRW1pdHRpbmcgXCJBdWRpb1N0cmVhbU5vZGVEZXRhY2hlZEV2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1N0cmVhbU5vZGVEZXRhY2hlZEV2ZW50KHRoaXMuaWQoKSwgYXVkaW9Ob2RlSWQpKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBgQXVkaW9Tb3VyY2VPZmZFdmVudGAuICovXG4gIHByb3RlY3RlZCBlbWl0T2ZmKCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0VtaXR0aW5nIFwiQXVkaW9Tb3VyY2VPZmZFdmVudFwiLicpO1xuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9Tb3VyY2VPZmZFdmVudCh0aGlzLmlkKCkpKTtcbiAgfVxuXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBBbHRob3VnaCBcImNsb3NlXCIgaXMgbWFya2VkIGFzIGFic3RyYWN0LCBpdCBpcyBuZXZlciBjYWxsZWQgaW4gb3VyIG9ic2VydmF0aW9ucy5cbiAgLy8gRVNMaW50OiBTcGVlY2ggU0RLIHJlcXVpcmVzIHRoaXMgZnVuY3Rpb24sIGJ1dCB3ZSBhcmUgbm90IGltcGxlbWVudGluZyBpdC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnQ2FsbGJhY2sgZm9yIFwiY2xvc2VcIi4nKTtcblxuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvLyBTcGVlY2ggU0RLIHF1aXJrczogQWx0aG91Z2ggXCJ0dXJuT25cIiBpcyBpbXBsZW1lbnRlZCBpbiBTcGVlY2ggU0RLIFB1c2gvUHVsbEF1ZGlvSW5wdXRTdHJlYW0sIGl0IGlzIG5ldmVyIGNhbGxlZCBpbiBvdXIgb2JzZXJ2YXRpb25zLlxuICB0dXJuT24oKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnQ2FsbGJhY2sgZm9yIFwidHVybk9uXCIuJyk7XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IEFsdGhvdWdoIFwiZGV0YWNoXCIgaXMgaW1wbGVtZW50ZWQgaW4gU3BlZWNoIFNESyBQdXNoL1B1bGxBdWRpb0lucHV0U3RyZWFtLCBpdCBpcyBuZXZlciBjYWxsZWQgaW4gb3VyIG9ic2VydmF0aW9ucy5cbiAgZGV0YWNoKCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0NhbGxiYWNrIGZvciBcImRldGFjaFwiLicpO1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBMb2cgdGhlIG1lc3NhZ2UgdG8gY29uc29sZSBpZiBgZGVidWdgIGlzIHNldCB0byBgdHJ1ZWAuICovXG4gIHByaXZhdGUgZGVidWcobWVzc2FnZSwgLi4uYXJncykge1xuICAgIC8vIEVTTGludDogRm9yIGRlYnVnZ2luZywgd2lsbCBvbmx5IGxvZyB3aGVuIFwiZGVidWdcIiBpcyBzZXQgdG8gXCJ0cnVlXCIuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICB0aGlzW1NZTUJPTF9PUFRJT05TXS5kZWJ1ZyAmJiBjb25zb2xlLmluZm8oYEN1c3RvbUF1ZGlvSW5wdXRTdHJlYW06ICR7bWVzc2FnZX1gLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24uIFdoZW4gY2FsbGVkLCBpdCBzaG91bGQgc3RhcnQgcmVjb3JkaW5nIGFuZCByZXR1cm4gYW4gYElBdWRpb1N0cmVhbU5vZGVgLiAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGVyZm9ybUF0dGFjaChhdWRpb05vZGVJZDogc3RyaW5nKTogUHJvbWlzZTx7XG4gICAgYXVkaW9TdHJlYW1Ob2RlOiBBdWRpb1N0cmVhbU5vZGU7XG4gICAgZGV2aWNlSW5mbzogRGV2aWNlSW5mbztcbiAgICBmb3JtYXQ6IEZvcm1hdDtcbiAgfT47XG5cbiAgLyoqIEF0dGFjaGVzIHRoZSBkZXZpY2UgYnkgcmV0dXJuaW5nIGFuIGF1ZGlvIG5vZGUuICovXG4gIGF0dGFjaChhdWRpb05vZGVJZDogc3RyaW5nKTogUHJvbWlzZTxBdWRpb1N0cmVhbU5vZGU+IHtcbiAgICB0aGlzLmRlYnVnKGBDYWxsYmFjayBmb3IgXCJhdHRhY2hcIiB3aXRoIFwiJHthdWRpb05vZGVJZH1cIi5gKTtcblxuICAgIHRoaXMuZW1pdE5vZGVBdHRhY2hpbmcoYXVkaW9Ob2RlSWQpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW48QXVkaW9TdHJlYW1Ob2RlPihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXRJbml0aWFsaXppbmcoKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBhdWRpb1N0cmVhbU5vZGUsIGRldmljZUluZm8sIGZvcm1hdCB9ID0gYXdhaXQgdGhpcy5wZXJmb3JtQXR0YWNoKGF1ZGlvTm9kZUlkKTtcblxuICAgICAgICAvLyBBbHRob3VnaCBvbmx5IGdldHRlciBvZiBcImZvcm1hdFwiIGlzIGNhbGxlZCBiZWZvcmUgXCJhdHRhY2hcIiAoaW4gRGlyZWN0IExpbmUgU3BlZWNoKSxcbiAgICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIGJvdGggXCJkZXZpY2VJbmZvXCIgYW5kIFwiZm9ybWF0XCIgaW4gc2ltaWxhciB3YXkgZm9yIHVuaWZvcm1pdHkuXG4gICAgICAgIHRoaXNbU1lNQk9MX0RFVklDRV9JTkZPX0RFRkVSUkVEXS5yZXNvbHZlKGRldmljZUluZm8pO1xuICAgICAgICB0aGlzW1NZTUJPTF9GT1JNQVRfREVGRVJSRURdLnJlc29sdmUoXG4gICAgICAgICAgbmV3IEF1ZGlvU3RyZWFtRm9ybWF0SW1wbChmb3JtYXQuc2FtcGxlc1BlclNlYywgZm9ybWF0LmJpdHNQZXJTYW1wbGUsIGZvcm1hdC5jaGFubmVscylcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmVtaXRSZWFkeSgpO1xuICAgICAgICB0aGlzLmVtaXROb2RlQXR0YWNoZWQoYXVkaW9Ob2RlSWQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGV0YWNoOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGBEZXRhY2hpbmcgYXVkaW8gbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCk7XG5cbiAgICAgICAgICAgIGF3YWl0IGF1ZGlvU3RyZWFtTm9kZS5kZXRhY2goKTtcblxuICAgICAgICAgICAgLy8gU3BlZWNoIFNESyBxdWlya3M6IFNpbmNlIFwidHVybk9mZlwiIGlzIG5vdCBjYWxsZWQgaW4gRGlyZWN0IExpbmUgU3BlZWNoLCB3ZSB3aWxsIGVtaXQgZXZlbnQgXCJzb3VyY2Ugb2ZmXCIgaGVyZSBpbnN0ZWFkLlxuICAgICAgICAgICAgdGhpcy5lbWl0T2ZmKCk7XG4gICAgICAgICAgICB0aGlzLmVtaXROb2RlRGV0YWNoZWQoYXVkaW9Ob2RlSWQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaWQ6ICgpID0+IGF1ZGlvU3RyZWFtTm9kZS5pZCgpLFxuICAgICAgICAgIHJlYWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ1JlYWRpbmcnKTtcblxuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU3RyZWFtTm9kZS5yZWFkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lbWl0Tm9kZUVycm9yKGF1ZGlvTm9kZUlkLCBlcnJvcik7XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uLiBXaGVuIGNhbGxlZCwgaXQgc2hvdWxkIHN0b3AgcmVjb3JkaW5nLiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGBJQXVkaW9TdHJlYW1Ob2RlLmRldGFjaGAgZnVuY3Rpb24uXG4gICAqXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgd2l0aCBEaXJlY3QgTGluZSBTcGVlY2gsIHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkLlxuICAgKi9cblxuICAvLyBFU0xpbnQ6IFdlIGFyZSBub3QgaW1wbGVtZW50aW5nIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSBpdCBpcyBub3QgY2FsbGVkIGJ5IERpcmVjdCBMaW5lIFNwZWVjaC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHJvdGVjdGVkIHBlcmZvcm1UdXJuT2ZmKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEVTTGludDogXCJyZXR1cm5cIiBpcyByZXF1aXJlZCBieSBUeXBlU2NyaXB0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqIFR1cm4gb2ZmIHRoZSBhdWRpbyBkZXZpY2UuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBkZXRhY2hpbmcgZnJvbSB0aGUgZ3JhcGguICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBJdCBpcyBjb25mdXNlZCB0byBoYXZlIGJvdGggXCJ0dXJuT2ZmXCIgYW5kIFwiZGV0YWNoXCIuIFwidHVybk9mZlwiIGlzIGNhbGxlZCBiZWZvcmUgXCJkZXRhY2hcIi5cbiAgLy8gICAgICAgICAgICAgICAgICAgIFdoeSBkb24ndCB3ZSBwdXQgYWxsIGxvZ2ljcyBhdCBcImRldGFjaFwiP1xuICAvLyBTcGVlY2ggU0RLIHF1aXJrczogRGlyZWN0IExpbmUgU3BlZWNoIG5ldmVyIGNhbGwgXCJ0dXJuT2ZmXCIuIFwiU291cmNlIG9mZlwiIGV2ZW50IG5lZWQgdG8gYmUgZW1pdHRlZCBkdXJpbmcgXCJkZXRhY2hcIiBpbnN0ZWFkLlxuICAvLyAgICAgICAgICAgICAgICAgICAgQWxzbywgY3VzdG9tIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBkb25lIGF0IFwiZGV0YWNoXCIgaW5zdGVhZCwgc3VjaCBhcyBlbmRpbmcgYW5kIGNsb3Npbmcgb3V0cHV0IHN0cmVhbXMuXG4gIGFzeW5jIHR1cm5PZmYoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kZWJ1ZyhgQ2FsbGJhY2sgZm9yIFwidHVybk9mZlwiLmApO1xuXG4gICAgYXdhaXQgdGhpcy5wZXJmb3JtVHVybk9mZigpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRldmljZSBpbmZvcm1hdGlvbi4gKi9cbiAgLy8gRVNMaW50OiBUaGlzIGNvZGUgd2lsbCBvbmx5IHdvcmtzIGluIGJyb3dzZXJzIG90aGVyIHRoYW4gSUUxMS4gT25seSB3b3JrcyBpbiBFUzUgaXMgb2theS5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlIEFjY2Vzc29ycyBhcmUgb25seSBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXIudHMoMTA1NilcbiAgZ2V0IGRldmljZUluZm8oKTogUHJvbWlzZTxJU3BlZWNoQ29uZmlnQXVkaW9EZXZpY2U+IHtcbiAgICB0aGlzLmRlYnVnKGBHZXR0aW5nIFwiZGV2aWNlSW5mb1wiLmApO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzW1NZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRF0ucHJvbWlzZSwgdGhpc1tTWU1CT0xfRk9STUFUX0RFRkVSUkVEXS5wcm9taXNlXSkudGhlbihcbiAgICAgIChbeyBjb25uZWN0aXZpdHksIG1hbnVmYWN0dXJlciwgbW9kZWwsIHR5cGUgfSwgeyBiaXRzUGVyU2FtcGxlLCBjaGFubmVscywgc2FtcGxlc1BlclNlYyB9XSkgPT4gKHtcbiAgICAgICAgYml0c3BlcnNhbXBsZTogYml0c1BlclNhbXBsZSxcbiAgICAgICAgY2hhbm5lbGNvdW50OiBjaGFubmVscyxcbiAgICAgICAgY29ubmVjdGl2aXR5OlxuICAgICAgICAgIHR5cGVvZiBjb25uZWN0aXZpdHkgPT09ICdzdHJpbmcnID8gQ29ubmVjdGl2aXR5W2Nvbm5lY3Rpdml0eV0gOiBjb25uZWN0aXZpdHkgfHwgQ29ubmVjdGl2aXR5LlVua25vd24sXG4gICAgICAgIG1hbnVmYWN0dXJlcjogbWFudWZhY3R1cmVyIHx8ICcnLFxuICAgICAgICBtb2RlbDogbW9kZWwgfHwgJycsXG4gICAgICAgIHNhbXBsZXJhdGU6IHNhbXBsZXNQZXJTZWMsXG4gICAgICAgIHR5cGU6IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyA/IFR5cGVbdHlwZV0gOiB0eXBlIHx8IFR5cGUuVW5rbm93blxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUF1ZGlvSW5wdXRTdHJlYW07XG5cbmV4cG9ydCB0eXBlIHsgQXVkaW9TdHJlYW1Ob2RlLCBEZXZpY2VJbmZvLCBGb3JtYXQsIE9wdGlvbnMgfTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export default function bytesPerSample(settings: MediaTrackSettings): number;
2
+ //# sourceMappingURL=bytesPerSample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytesPerSample.d.ts","sourceRoot":"","sources":["../../src/speech/bytesPerSample.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,QAAQ,EAAE,kBAAkB,UAGlE"}