@tscaps/engine 0.2.1 → 0.3.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 (495) hide show
  1. package/README.md +47 -7
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/modules/bidi/BidiAnalyzer.d.ts +23 -0
  7. package/dist/modules/bidi/BidiAnalyzer.d.ts.map +1 -0
  8. package/dist/modules/bidi/BidiAnalyzer.js +2 -0
  9. package/dist/modules/bidi/BidiAnalyzer.js.map +1 -0
  10. package/dist/modules/bidi/BidiCharacterClassifier.d.ts +13 -0
  11. package/dist/modules/bidi/BidiCharacterClassifier.d.ts.map +1 -0
  12. package/dist/modules/bidi/BidiCharacterClassifier.js +2 -0
  13. package/dist/modules/bidi/BidiCharacterClassifier.js.map +1 -0
  14. package/dist/modules/bidi/BidiJsAnalyzer.d.ts +14 -0
  15. package/dist/modules/bidi/BidiJsAnalyzer.d.ts.map +1 -0
  16. package/dist/modules/bidi/BidiJsAnalyzer.js +19 -0
  17. package/dist/modules/bidi/BidiJsAnalyzer.js.map +1 -0
  18. package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts +8 -0
  19. package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts.map +1 -0
  20. package/dist/modules/bidi/BidiJsCharacterClassifier.js +19 -0
  21. package/dist/modules/bidi/BidiJsCharacterClassifier.js.map +1 -0
  22. package/dist/modules/bidi/CursiveScriptDetector.d.ts +12 -0
  23. package/dist/modules/bidi/CursiveScriptDetector.d.ts.map +1 -0
  24. package/dist/modules/bidi/CursiveScriptDetector.js +20 -0
  25. package/dist/modules/bidi/CursiveScriptDetector.js.map +1 -0
  26. package/dist/modules/bidi/HorizontalSide.d.ts +18 -0
  27. package/dist/modules/bidi/HorizontalSide.d.ts.map +1 -0
  28. package/dist/modules/bidi/HorizontalSide.js +3 -0
  29. package/dist/modules/bidi/HorizontalSide.js.map +1 -0
  30. package/dist/modules/bidi/HorizontalSideResolver.d.ts +21 -0
  31. package/dist/modules/bidi/HorizontalSideResolver.d.ts.map +1 -0
  32. package/dist/modules/bidi/HorizontalSideResolver.js +27 -0
  33. package/dist/modules/bidi/HorizontalSideResolver.js.map +1 -0
  34. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts +24 -0
  35. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts.map +1 -0
  36. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js +34 -0
  37. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js.map +1 -0
  38. package/dist/modules/bidi/TextDirection.d.ts +9 -0
  39. package/dist/modules/bidi/TextDirection.d.ts.map +1 -0
  40. package/dist/modules/bidi/TextDirection.js +2 -0
  41. package/dist/modules/bidi/TextDirection.js.map +1 -0
  42. package/dist/modules/bidi/TextDirectionDetector.d.ts +12 -0
  43. package/dist/modules/bidi/TextDirectionDetector.d.ts.map +1 -0
  44. package/dist/modules/bidi/TextDirectionDetector.js +2 -0
  45. package/dist/modules/bidi/TextDirectionDetector.js.map +1 -0
  46. package/dist/modules/bidi/WordFragment.d.ts +34 -0
  47. package/dist/modules/bidi/WordFragment.d.ts.map +1 -0
  48. package/dist/modules/bidi/WordFragment.js +2 -0
  49. package/dist/modules/bidi/WordFragment.js.map +1 -0
  50. package/dist/modules/bidi/WordFragmenter.d.ts +43 -0
  51. package/dist/modules/bidi/WordFragmenter.d.ts.map +1 -0
  52. package/dist/modules/bidi/WordFragmenter.js +112 -0
  53. package/dist/modules/bidi/WordFragmenter.js.map +1 -0
  54. package/dist/modules/bidi/index.d.ts +14 -0
  55. package/dist/modules/bidi/index.d.ts.map +1 -0
  56. package/dist/modules/bidi/index.js +8 -0
  57. package/dist/modules/bidi/index.js.map +1 -0
  58. package/dist/modules/css/CssBlockSealer.d.ts +30 -0
  59. package/dist/modules/css/CssBlockSealer.d.ts.map +1 -0
  60. package/dist/modules/css/CssBlockSealer.js +64 -0
  61. package/dist/modules/css/CssBlockSealer.js.map +1 -0
  62. package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts +13 -0
  63. package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts.map +1 -0
  64. package/dist/modules/css/CssCustomPropertyDefinitionScanner.js +24 -0
  65. package/dist/modules/css/CssCustomPropertyDefinitionScanner.js.map +1 -0
  66. package/dist/modules/css/CssFilterReferenceScanner.d.ts +15 -0
  67. package/dist/modules/css/CssFilterReferenceScanner.d.ts.map +1 -0
  68. package/dist/modules/css/CssFilterReferenceScanner.js +22 -0
  69. package/dist/modules/css/CssFilterReferenceScanner.js.map +1 -0
  70. package/dist/modules/css/CssFragmentParser.d.ts +53 -0
  71. package/dist/modules/css/CssFragmentParser.d.ts.map +1 -0
  72. package/dist/modules/css/CssFragmentParser.js +127 -0
  73. package/dist/modules/css/CssFragmentParser.js.map +1 -0
  74. package/dist/modules/css/CssKeyframeNamespacer.d.ts +21 -0
  75. package/dist/modules/css/CssKeyframeNamespacer.d.ts.map +1 -0
  76. package/dist/modules/css/CssKeyframeNamespacer.js +48 -0
  77. package/dist/modules/css/CssKeyframeNamespacer.js.map +1 -0
  78. package/dist/modules/css/CssKeyframesScanner.d.ts +29 -0
  79. package/dist/modules/css/CssKeyframesScanner.d.ts.map +1 -0
  80. package/dist/modules/css/CssKeyframesScanner.js +102 -0
  81. package/dist/modules/css/CssKeyframesScanner.js.map +1 -0
  82. package/dist/modules/css/CssLayer.d.ts +20 -0
  83. package/dist/modules/css/CssLayer.d.ts.map +1 -0
  84. package/dist/modules/css/CssLayer.js +21 -0
  85. package/dist/modules/css/CssLayer.js.map +1 -0
  86. package/dist/modules/css/CssScoper.d.ts +11 -2
  87. package/dist/modules/css/CssScoper.d.ts.map +1 -1
  88. package/dist/modules/css/CssScoper.js +53 -37
  89. package/dist/modules/css/CssScoper.js.map +1 -1
  90. package/dist/modules/css/CssSelectorClassScanner.d.ts +25 -0
  91. package/dist/modules/css/CssSelectorClassScanner.d.ts.map +1 -0
  92. package/dist/modules/css/CssSelectorClassScanner.js +91 -0
  93. package/dist/modules/css/CssSelectorClassScanner.js.map +1 -0
  94. package/dist/modules/css/CssVarReferenceScanner.d.ts +8 -5
  95. package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -1
  96. package/dist/modules/css/CssVarReferenceScanner.js +14 -7
  97. package/dist/modules/css/CssVarReferenceScanner.js.map +1 -1
  98. package/dist/modules/css/index.d.ts +8 -0
  99. package/dist/modules/css/index.d.ts.map +1 -1
  100. package/dist/modules/css/index.js +8 -0
  101. package/dist/modules/css/index.js.map +1 -1
  102. package/dist/modules/document/CssClass.d.ts +20 -0
  103. package/dist/modules/document/CssClass.d.ts.map +1 -0
  104. package/dist/modules/document/CssClass.js +21 -0
  105. package/dist/modules/document/CssClass.js.map +1 -0
  106. package/dist/modules/document/CssVariable.d.ts +0 -6
  107. package/dist/modules/document/CssVariable.d.ts.map +1 -1
  108. package/dist/modules/document/CssVariable.js +0 -6
  109. package/dist/modules/document/CssVariable.js.map +1 -1
  110. package/dist/modules/document/DataAttribute.d.ts +26 -0
  111. package/dist/modules/document/DataAttribute.d.ts.map +1 -0
  112. package/dist/modules/document/DataAttribute.js +27 -0
  113. package/dist/modules/document/DataAttribute.js.map +1 -0
  114. package/dist/modules/document/DocumentEditor.d.ts +40 -9
  115. package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
  116. package/dist/modules/document/DocumentEditor.js +69 -17
  117. package/dist/modules/document/DocumentEditor.js.map +1 -1
  118. package/dist/modules/document/DocumentNodeId.d.ts +23 -0
  119. package/dist/modules/document/DocumentNodeId.d.ts.map +1 -0
  120. package/dist/modules/document/DocumentNodeId.js +31 -0
  121. package/dist/modules/document/DocumentNodeId.js.map +1 -0
  122. package/dist/modules/document/Line.d.ts +1 -1
  123. package/dist/modules/document/Line.d.ts.map +1 -1
  124. package/dist/modules/document/Line.js +2 -1
  125. package/dist/modules/document/Line.js.map +1 -1
  126. package/dist/modules/document/Section.d.ts +1 -4
  127. package/dist/modules/document/Section.d.ts.map +1 -1
  128. package/dist/modules/document/Section.js +2 -17
  129. package/dist/modules/document/Section.js.map +1 -1
  130. package/dist/modules/document/Segment.d.ts +14 -7
  131. package/dist/modules/document/Segment.d.ts.map +1 -1
  132. package/dist/modules/document/Segment.js +26 -1
  133. package/dist/modules/document/Segment.js.map +1 -1
  134. package/dist/modules/document/Word.d.ts +1 -1
  135. package/dist/modules/document/Word.d.ts.map +1 -1
  136. package/dist/modules/document/Word.js +2 -1
  137. package/dist/modules/document/Word.js.map +1 -1
  138. package/dist/modules/document/index.d.ts +4 -2
  139. package/dist/modules/document/index.d.ts.map +1 -1
  140. package/dist/modules/document/index.js +3 -1
  141. package/dist/modules/document/index.js.map +1 -1
  142. package/dist/modules/effect/GapFreeEffect.d.ts +15 -0
  143. package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -1
  144. package/dist/modules/effect/GapFreeEffect.js +29 -4
  145. package/dist/modules/effect/GapFreeEffect.js.map +1 -1
  146. package/dist/modules/pipeline/RenderPipelineBuilder.js +3 -3
  147. package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
  148. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
  149. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +4 -1
  150. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
  151. package/dist/modules/rendering/HorizontalPlacementResolver.d.ts +27 -0
  152. package/dist/modules/rendering/HorizontalPlacementResolver.d.ts.map +1 -0
  153. package/dist/modules/rendering/HorizontalPlacementResolver.js +31 -0
  154. package/dist/modules/rendering/HorizontalPlacementResolver.js.map +1 -0
  155. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +2 -0
  156. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
  157. package/dist/modules/rendering/index.d.ts +7 -4
  158. package/dist/modules/rendering/index.d.ts.map +1 -1
  159. package/dist/modules/rendering/index.js +5 -2
  160. package/dist/modules/rendering/index.js.map +1 -1
  161. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +19 -1
  162. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -1
  163. package/dist/modules/rendering/styles/BaselineCssComposer.js +32 -8
  164. package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -1
  165. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -1
  166. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +5 -4
  167. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -1
  168. package/dist/modules/rendering/styles/FrozenFrameCss.d.ts +28 -0
  169. package/dist/modules/rendering/styles/FrozenFrameCss.d.ts.map +1 -0
  170. package/dist/modules/rendering/styles/FrozenFrameCss.js +28 -0
  171. package/dist/modules/rendering/styles/FrozenFrameCss.js.map +1 -0
  172. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +0 -7
  173. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -1
  174. package/dist/modules/rendering/styles/InlineStyleEmitter.js +0 -9
  175. package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -1
  176. package/dist/modules/rendering/styles/{VideoFrameLayerClass.d.ts → VideoFrameLayerBaselineCss.d.ts} +3 -10
  177. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.d.ts.map +1 -0
  178. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js +15 -0
  179. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js.map +1 -0
  180. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +3 -1
  181. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -1
  182. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +9 -4
  183. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -1
  184. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +23 -9
  185. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -1
  186. package/dist/modules/rendering/subtitle/AnimationProbe.js +86 -81
  187. package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -1
  188. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +1 -0
  189. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -1
  190. package/dist/modules/rendering/subtitle/BatchPlanner.js +16 -14
  191. package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -1
  192. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +1 -0
  193. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -1
  194. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +1 -1
  195. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -1
  196. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -1
  197. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js +7 -4
  198. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -1
  199. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +30 -2
  200. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -1
  201. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +85 -27
  202. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -1
  203. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +3 -8
  204. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -1
  205. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +31 -40
  206. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -1
  207. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +2 -0
  208. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -1
  209. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +18 -9
  210. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -1
  211. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +8 -15
  212. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -1
  213. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +10 -20
  214. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -1
  215. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -1
  216. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +12 -3
  217. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -1
  218. package/dist/modules/rendering/types/AlignmentConfig.d.ts +16 -4
  219. package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -1
  220. package/dist/modules/rendering/types/AlignmentConfig.js +2 -1
  221. package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -1
  222. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts +8 -0
  223. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -1
  224. package/dist/modules/rendering/types/ElementRenderOverrides.js +28 -0
  225. package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -1
  226. package/dist/modules/rendering/types/RenderingConfig.d.ts +7 -2
  227. package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -1
  228. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts +9 -4
  229. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -1
  230. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts +53 -0
  231. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts.map +1 -0
  232. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js +133 -0
  233. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js.map +1 -0
  234. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts +20 -0
  235. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts.map +1 -0
  236. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js +31 -0
  237. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js.map +1 -0
  238. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts +21 -0
  239. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts.map +1 -0
  240. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js +33 -0
  241. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js.map +1 -0
  242. package/dist/modules/subtitle-file/SubtitleCue.d.ts +18 -0
  243. package/dist/modules/subtitle-file/SubtitleCue.d.ts.map +1 -0
  244. package/dist/modules/subtitle-file/SubtitleCue.js +20 -0
  245. package/dist/modules/subtitle-file/SubtitleCue.js.map +1 -0
  246. package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts +38 -0
  247. package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts.map +1 -0
  248. package/dist/modules/subtitle-file/SubtitleCueBuilder.js +106 -0
  249. package/dist/modules/subtitle-file/SubtitleCueBuilder.js.map +1 -0
  250. package/dist/modules/subtitle-file/SubtitleFileJob.d.ts +17 -0
  251. package/dist/modules/subtitle-file/SubtitleFileJob.d.ts.map +1 -0
  252. package/dist/modules/subtitle-file/SubtitleFileJob.js +2 -0
  253. package/dist/modules/subtitle-file/SubtitleFileJob.js.map +1 -0
  254. package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts +36 -0
  255. package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts.map +1 -0
  256. package/dist/modules/subtitle-file/SubtitleFileSerializer.js +44 -0
  257. package/dist/modules/subtitle-file/SubtitleFileSerializer.js.map +1 -0
  258. package/dist/modules/subtitle-file/SubtitleGranularity.d.ts +11 -0
  259. package/dist/modules/subtitle-file/SubtitleGranularity.d.ts.map +1 -0
  260. package/dist/modules/subtitle-file/SubtitleGranularity.js +2 -0
  261. package/dist/modules/subtitle-file/SubtitleGranularity.js.map +1 -0
  262. package/dist/modules/subtitle-file/SubtitleRow.d.ts +11 -0
  263. package/dist/modules/subtitle-file/SubtitleRow.d.ts.map +1 -0
  264. package/dist/modules/subtitle-file/SubtitleRow.js +14 -0
  265. package/dist/modules/subtitle-file/SubtitleRow.js.map +1 -0
  266. package/dist/modules/subtitle-file/SubtitleToken.d.ts +13 -0
  267. package/dist/modules/subtitle-file/SubtitleToken.d.ts.map +1 -0
  268. package/dist/modules/subtitle-file/SubtitleToken.js +15 -0
  269. package/dist/modules/subtitle-file/SubtitleToken.js.map +1 -0
  270. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts +19 -0
  271. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts.map +1 -0
  272. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js +24 -0
  273. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js.map +1 -0
  274. package/dist/modules/subtitle-file/Timecode.d.ts +20 -0
  275. package/dist/modules/subtitle-file/Timecode.d.ts.map +1 -0
  276. package/dist/modules/subtitle-file/Timecode.js +32 -0
  277. package/dist/modules/subtitle-file/Timecode.js.map +1 -0
  278. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts +22 -0
  279. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts.map +1 -0
  280. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js +57 -0
  281. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js.map +1 -0
  282. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts +21 -0
  283. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts.map +1 -0
  284. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js +39 -0
  285. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js.map +1 -0
  286. package/dist/modules/subtitle-file/index.d.ts +10 -0
  287. package/dist/modules/subtitle-file/index.d.ts.map +1 -0
  288. package/dist/modules/subtitle-file/index.js +8 -0
  289. package/dist/modules/subtitle-file/index.js.map +1 -0
  290. package/dist/modules/svg-filter/SvgFilter.d.ts +8 -1
  291. package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -1
  292. package/dist/modules/svg-filter/SvgFilter.js +9 -1
  293. package/dist/modules/svg-filter/SvgFilter.js.map +1 -1
  294. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +1 -0
  295. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -1
  296. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +9 -1
  297. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -1
  298. package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts +44 -0
  299. package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts.map +1 -0
  300. package/dist/modules/svg-filter/SvgFilterDefsRenderer.js +47 -0
  301. package/dist/modules/svg-filter/SvgFilterDefsRenderer.js.map +1 -0
  302. package/dist/modules/svg-filter/index.d.ts +2 -0
  303. package/dist/modules/svg-filter/index.d.ts.map +1 -1
  304. package/dist/modules/svg-filter/index.js +1 -0
  305. package/dist/modules/svg-filter/index.js.map +1 -1
  306. package/dist/modules/tagging/PauseTagger.d.ts.map +1 -1
  307. package/dist/modules/tagging/PauseTagger.js +2 -1
  308. package/dist/modules/tagging/PauseTagger.js.map +1 -1
  309. package/dist/modules/tagging/RegexTagger.js +1 -1
  310. package/dist/modules/tagging/RegexTagger.js.map +1 -1
  311. package/dist/modules/tagging/SpanTagger.js +1 -1
  312. package/dist/modules/tagging/SpanTagger.js.map +1 -1
  313. package/dist/modules/tagging/StructureTagger.d.ts +0 -1
  314. package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
  315. package/dist/modules/tagging/StructureTagger.js +3 -8
  316. package/dist/modules/tagging/StructureTagger.js.map +1 -1
  317. package/dist/modules/tagging/WordlistTagger.js +1 -1
  318. package/dist/modules/tagging/WordlistTagger.js.map +1 -1
  319. package/dist/modules/tags/AndTagCondition.d.ts +10 -0
  320. package/dist/modules/tags/AndTagCondition.d.ts.map +1 -0
  321. package/dist/modules/tags/AndTagCondition.js +14 -0
  322. package/dist/modules/tags/AndTagCondition.js.map +1 -0
  323. package/dist/modules/tags/HasTagCondition.d.ts +10 -0
  324. package/dist/modules/tags/HasTagCondition.d.ts.map +1 -0
  325. package/dist/modules/tags/HasTagCondition.js +18 -0
  326. package/dist/modules/tags/HasTagCondition.js.map +1 -0
  327. package/dist/modules/tags/NotTagCondition.d.ts +10 -0
  328. package/dist/modules/tags/NotTagCondition.d.ts.map +1 -0
  329. package/dist/modules/tags/NotTagCondition.js +14 -0
  330. package/dist/modules/tags/NotTagCondition.js.map +1 -0
  331. package/dist/modules/tags/OrTagCondition.d.ts +10 -0
  332. package/dist/modules/tags/OrTagCondition.d.ts.map +1 -0
  333. package/dist/modules/tags/OrTagCondition.js +14 -0
  334. package/dist/modules/tags/OrTagCondition.js.map +1 -0
  335. package/dist/modules/{document/Tag.d.ts → tags/StructureTag.d.ts} +2 -11
  336. package/dist/modules/tags/StructureTag.d.ts.map +1 -0
  337. package/dist/modules/{document/Tag.js → tags/StructureTag.js} +1 -19
  338. package/dist/modules/tags/StructureTag.js.map +1 -0
  339. package/dist/modules/tags/Tag.d.ts +8 -0
  340. package/dist/modules/tags/Tag.d.ts.map +1 -0
  341. package/dist/modules/tags/Tag.js +16 -0
  342. package/dist/modules/tags/Tag.js.map +1 -0
  343. package/dist/modules/tags/TagCondition.d.ts +12 -0
  344. package/dist/modules/tags/TagCondition.d.ts.map +1 -0
  345. package/dist/modules/tags/TagCondition.js +2 -0
  346. package/dist/modules/tags/TagCondition.js.map +1 -0
  347. package/dist/modules/tags/TagConditionParser.d.ts +21 -0
  348. package/dist/modules/tags/TagConditionParser.d.ts.map +1 -0
  349. package/dist/modules/tags/TagConditionParser.js +75 -0
  350. package/dist/modules/tags/TagConditionParser.js.map +1 -0
  351. package/dist/modules/tags/index.d.ts +9 -0
  352. package/dist/modules/tags/index.d.ts.map +1 -0
  353. package/dist/modules/tags/index.js +8 -0
  354. package/dist/modules/tags/index.js.map +1 -0
  355. package/dist/modules/transcription/AudioDecoder.d.ts +9 -4
  356. package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -1
  357. package/dist/modules/transcription/BatchedMonoResampler.d.ts +45 -0
  358. package/dist/modules/transcription/BatchedMonoResampler.d.ts.map +1 -0
  359. package/dist/modules/transcription/BatchedMonoResampler.js +116 -0
  360. package/dist/modules/transcription/BatchedMonoResampler.js.map +1 -0
  361. package/dist/modules/transcription/CacheStorageModelFileCache.d.ts +38 -0
  362. package/dist/modules/transcription/CacheStorageModelFileCache.d.ts.map +1 -0
  363. package/dist/modules/transcription/CacheStorageModelFileCache.js +86 -0
  364. package/dist/modules/transcription/CacheStorageModelFileCache.js.map +1 -0
  365. package/dist/modules/transcription/CueDocumentBuilder.d.ts +40 -0
  366. package/dist/modules/transcription/CueDocumentBuilder.d.ts.map +1 -0
  367. package/dist/modules/transcription/CueDocumentBuilder.js +77 -0
  368. package/dist/modules/transcription/CueDocumentBuilder.js.map +1 -0
  369. package/dist/modules/transcription/CueParseResult.d.ts +16 -0
  370. package/dist/modules/transcription/CueParseResult.d.ts.map +1 -0
  371. package/dist/modules/transcription/CueParseResult.js +2 -0
  372. package/dist/modules/transcription/CueParseResult.js.map +1 -0
  373. package/dist/modules/transcription/CueTextTokenizer.d.ts +10 -0
  374. package/dist/modules/transcription/CueTextTokenizer.d.ts.map +1 -0
  375. package/dist/modules/transcription/CueTextTokenizer.js +21 -0
  376. package/dist/modules/transcription/CueTextTokenizer.js.map +1 -0
  377. package/dist/modules/transcription/CueTimecodeReader.d.ts +19 -0
  378. package/dist/modules/transcription/CueTimecodeReader.d.ts.map +1 -0
  379. package/dist/modules/transcription/CueTimecodeReader.js +45 -0
  380. package/dist/modules/transcription/CueTimecodeReader.js.map +1 -0
  381. package/dist/modules/transcription/CueWordReader.d.ts +12 -0
  382. package/dist/modules/transcription/CueWordReader.d.ts.map +1 -0
  383. package/dist/modules/transcription/CueWordReader.js +2 -0
  384. package/dist/modules/transcription/CueWordReader.js.map +1 -0
  385. package/dist/modules/transcription/EstimatedCueWordReader.d.ts +16 -0
  386. package/dist/modules/transcription/EstimatedCueWordReader.d.ts.map +1 -0
  387. package/dist/modules/transcription/EstimatedCueWordReader.js +17 -0
  388. package/dist/modules/transcription/EstimatedCueWordReader.js.map +1 -0
  389. package/dist/modules/transcription/LogitsProcessorListFactory.d.ts +43 -0
  390. package/dist/modules/transcription/LogitsProcessorListFactory.d.ts.map +1 -0
  391. package/dist/modules/transcription/LogitsProcessorListFactory.js +72 -0
  392. package/dist/modules/transcription/LogitsProcessorListFactory.js.map +1 -0
  393. package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts +27 -0
  394. package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts.map +1 -0
  395. package/dist/modules/transcription/MediaBunnyAudioDecoder.js +76 -0
  396. package/dist/modules/transcription/MediaBunnyAudioDecoder.js.map +1 -0
  397. package/dist/modules/transcription/ModelFileCache.d.ts +20 -0
  398. package/dist/modules/transcription/ModelFileCache.d.ts.map +1 -0
  399. package/dist/modules/transcription/ModelFileCache.js +2 -0
  400. package/dist/modules/transcription/ModelFileCache.js.map +1 -0
  401. package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts +18 -0
  402. package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts.map +1 -0
  403. package/dist/modules/transcription/ModelFileCacheUnavailableError.js +18 -0
  404. package/dist/modules/transcription/ModelFileCacheUnavailableError.js.map +1 -0
  405. package/dist/modules/transcription/SrtTranscriber.d.ts +24 -15
  406. package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -1
  407. package/dist/modules/transcription/SrtTranscriber.js +32 -90
  408. package/dist/modules/transcription/SrtTranscriber.js.map +1 -1
  409. package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts +22 -0
  410. package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts.map +1 -0
  411. package/dist/modules/transcription/SubtitleFileUnreadableError.js +22 -0
  412. package/dist/modules/transcription/SubtitleFileUnreadableError.js.map +1 -0
  413. package/dist/modules/transcription/TimestampedCueWordReader.d.ts +27 -0
  414. package/dist/modules/transcription/TimestampedCueWordReader.d.ts.map +1 -0
  415. package/dist/modules/transcription/TimestampedCueWordReader.js +52 -0
  416. package/dist/modules/transcription/TimestampedCueWordReader.js.map +1 -0
  417. package/dist/modules/transcription/Transcriber.d.ts +13 -0
  418. package/dist/modules/transcription/Transcriber.d.ts.map +1 -1
  419. package/dist/modules/transcription/TransformersRuntime.d.ts +50 -0
  420. package/dist/modules/transcription/TransformersRuntime.d.ts.map +1 -0
  421. package/dist/modules/transcription/TransformersRuntime.js +79 -0
  422. package/dist/modules/transcription/TransformersRuntime.js.map +1 -0
  423. package/dist/modules/transcription/VttTranscriber.d.ts +25 -7
  424. package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -1
  425. package/dist/modules/transcription/VttTranscriber.js +36 -15
  426. package/dist/modules/transcription/VttTranscriber.js.map +1 -1
  427. package/dist/modules/transcription/WhisperChunkStitcher.d.ts +51 -0
  428. package/dist/modules/transcription/WhisperChunkStitcher.d.ts.map +1 -0
  429. package/dist/modules/transcription/WhisperChunkStitcher.js +101 -0
  430. package/dist/modules/transcription/WhisperChunkStitcher.js.map +1 -0
  431. package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts +16 -0
  432. package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts.map +1 -0
  433. package/dist/modules/transcription/WhisperDeviceUnavailableError.js +16 -0
  434. package/dist/modules/transcription/WhisperDeviceUnavailableError.js.map +1 -0
  435. package/dist/modules/transcription/WhisperInferenceFailedError.d.ts +16 -0
  436. package/dist/modules/transcription/WhisperInferenceFailedError.d.ts.map +1 -0
  437. package/dist/modules/transcription/WhisperInferenceFailedError.js +16 -0
  438. package/dist/modules/transcription/WhisperInferenceFailedError.js.map +1 -0
  439. package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts +61 -0
  440. package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts.map +1 -0
  441. package/dist/modules/transcription/WhisperInferenceProgressTracker.js +102 -0
  442. package/dist/modules/transcription/WhisperInferenceProgressTracker.js.map +1 -0
  443. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts +38 -0
  444. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts.map +1 -0
  445. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js +94 -0
  446. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js.map +1 -0
  447. package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts +15 -0
  448. package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts.map +1 -0
  449. package/dist/modules/transcription/WhisperModelLoadFailedError.js +15 -0
  450. package/dist/modules/transcription/WhisperModelLoadFailedError.js.map +1 -0
  451. package/dist/modules/transcription/WhisperTranscriber.d.ts +106 -7
  452. package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -1
  453. package/dist/modules/transcription/WhisperTranscriber.js +312 -25
  454. package/dist/modules/transcription/WhisperTranscriber.js.map +1 -1
  455. package/dist/modules/transcription/WhisperWindowCoverage.d.ts +79 -0
  456. package/dist/modules/transcription/WhisperWindowCoverage.d.ts.map +1 -0
  457. package/dist/modules/transcription/WhisperWindowCoverage.js +129 -0
  458. package/dist/modules/transcription/WhisperWindowCoverage.js.map +1 -0
  459. package/dist/modules/transcription/WordTimingEstimator.d.ts +14 -0
  460. package/dist/modules/transcription/WordTimingEstimator.d.ts.map +1 -0
  461. package/dist/modules/transcription/WordTimingEstimator.js +33 -0
  462. package/dist/modules/transcription/WordTimingEstimator.js.map +1 -0
  463. package/dist/modules/transcription/index.d.ts +8 -2
  464. package/dist/modules/transcription/index.d.ts.map +1 -1
  465. package/dist/modules/transcription/index.js +5 -1
  466. package/dist/modules/transcription/index.js.map +1 -1
  467. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -1
  468. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +8 -0
  469. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -1
  470. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +3 -1
  471. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
  472. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +33 -23
  473. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -1
  474. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +1 -1
  475. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -1
  476. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +6 -7
  477. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -1
  478. package/package.json +13 -10
  479. package/dist/modules/document/Tag.d.ts.map +0 -1
  480. package/dist/modules/document/Tag.js.map +0 -1
  481. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +0 -19
  482. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +0 -1
  483. package/dist/modules/rendering/styles/BehindActorBaselineCss.js +0 -19
  484. package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +0 -1
  485. package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +0 -1
  486. package/dist/modules/rendering/styles/VideoFrameLayerClass.js +0 -21
  487. package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +0 -1
  488. package/dist/modules/rendering/types/BehindActorRequirement.d.ts +0 -12
  489. package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +0 -1
  490. package/dist/modules/rendering/types/BehindActorRequirement.js +0 -2
  491. package/dist/modules/rendering/types/BehindActorRequirement.js.map +0 -1
  492. package/dist/modules/transcription/BrowserAudioDecoder.d.ts +0 -13
  493. package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +0 -1
  494. package/dist/modules/transcription/BrowserAudioDecoder.js +0 -34
  495. package/dist/modules/transcription/BrowserAudioDecoder.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import type { Tag } from '../tags/Tag';
2
+ import type { TagCondition } from '../tags/TagCondition';
3
+ /** True when any tag in the set carries the given name. */
4
+ export declare class HasTagCondition implements TagCondition {
5
+ private readonly tagName;
6
+ constructor(tagName: string);
7
+ evaluate(tags: ReadonlySet<Tag>): boolean;
8
+ toExpression(): string;
9
+ }
10
+ //# sourceMappingURL=HasTagCondition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasTagCondition.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/HasTagCondition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,2DAA2D;AAC3D,qBAAa,eAAgB,YAAW,YAAY;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO;IAOzC,YAAY,IAAI,MAAM;CAGvB"}
@@ -0,0 +1,18 @@
1
+ /** True when any tag in the set carries the given name. */
2
+ export class HasTagCondition {
3
+ tagName;
4
+ constructor(tagName) {
5
+ this.tagName = tagName;
6
+ }
7
+ evaluate(tags) {
8
+ for (const tag of tags) {
9
+ if (tag.name === this.tagName)
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ toExpression() {
15
+ return this.tagName;
16
+ }
17
+ }
18
+ //# sourceMappingURL=HasTagCondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasTagCondition.js","sourceRoot":"","sources":["../../../src/modules/tags/HasTagCondition.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,MAAM,OAAO,eAAe;IAEG;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,QAAQ,CAAC,IAAsB;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Tag } from '../tags/Tag';
2
+ import type { TagCondition } from '../tags/TagCondition';
3
+ /** Negates the wrapped condition. */
4
+ export declare class NotTagCondition implements TagCondition {
5
+ private readonly condition;
6
+ constructor(condition: TagCondition);
7
+ evaluate(tags: ReadonlySet<Tag>): boolean;
8
+ toExpression(): string;
9
+ }
10
+ //# sourceMappingURL=NotTagCondition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotTagCondition.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/NotTagCondition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,qCAAqC;AACrC,qBAAa,eAAgB,YAAW,YAAY;IAEtC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,YAAY;IAEpD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO;IAIzC,YAAY,IAAI,MAAM;CAGvB"}
@@ -0,0 +1,14 @@
1
+ /** Negates the wrapped condition. */
2
+ export class NotTagCondition {
3
+ condition;
4
+ constructor(condition) {
5
+ this.condition = condition;
6
+ }
7
+ evaluate(tags) {
8
+ return !this.condition.evaluate(tags);
9
+ }
10
+ toExpression() {
11
+ return `not (${this.condition.toExpression()})`;
12
+ }
13
+ }
14
+ //# sourceMappingURL=NotTagCondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotTagCondition.js","sourceRoot":"","sources":["../../../src/modules/tags/NotTagCondition.ts"],"names":[],"mappings":"AAGA,qCAAqC;AACrC,MAAM,OAAO,eAAe;IAEG;IAA7B,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAExD,QAAQ,CAAC,IAAsB;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;QACV,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC;IAClD,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Tag } from '../tags/Tag';
2
+ import type { TagCondition } from '../tags/TagCondition';
3
+ /** True when at least one operand is true. */
4
+ export declare class OrTagCondition implements TagCondition {
5
+ private readonly conditions;
6
+ constructor(...conditions: TagCondition[]);
7
+ evaluate(tags: ReadonlySet<Tag>): boolean;
8
+ toExpression(): string;
9
+ }
10
+ //# sourceMappingURL=OrTagCondition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrTagCondition.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/OrTagCondition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,8CAA8C;AAC9C,qBAAa,cAAe,YAAW,YAAY;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAE7C,GAAG,UAAU,EAAE,YAAY,EAAE;IAIzC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO;IAIzC,YAAY,IAAI,MAAM;CAGvB"}
@@ -0,0 +1,14 @@
1
+ /** True when at least one operand is true. */
2
+ export class OrTagCondition {
3
+ conditions;
4
+ constructor(...conditions) {
5
+ this.conditions = conditions;
6
+ }
7
+ evaluate(tags) {
8
+ return this.conditions.some((condition) => condition.evaluate(tags));
9
+ }
10
+ toExpression() {
11
+ return this.conditions.map((condition) => `(${condition.toExpression()})`).join(' or ');
12
+ }
13
+ }
14
+ //# sourceMappingURL=OrTagCondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrTagCondition.js","sourceRoot":"","sources":["../../../src/modules/tags/OrTagCondition.ts"],"names":[],"mappings":"AAGA,8CAA8C;AAC9C,MAAM,OAAO,cAAc;IAER,UAAU,CAA8B;IAEzD,YAAY,GAAG,UAA0B;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,QAAQ,CAAC,IAAsB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1F,CAAC;CACF"}
@@ -1,10 +1,3 @@
1
- export declare class Tag {
2
- readonly name: string;
3
- constructor(name: string);
4
- equals(other: Tag): boolean;
5
- toCssClass(): string;
6
- static of(name: string): Tag;
7
- }
8
1
  export declare enum StructureTag {
9
2
  FIRST_WORD_IN_SECTION = "first-word-in-section",
10
3
  LAST_WORD_IN_SECTION = "last-word-in-section",
@@ -20,8 +13,6 @@ export declare enum StructureTag {
20
13
  LAST_SEGMENT_IN_SECTION = "last-segment-in-section",
21
14
  FIRST_SEGMENT_IN_DOCUMENT = "first-segment-in-document",
22
15
  LAST_SEGMENT_IN_DOCUMENT = "last-segment-in-document",
23
- SEGMENT_AFTER_PAUSE = "segment-after-pause",
24
- FIRST_SECTION_IN_DOCUMENT = "first-section-in-document",
25
- LAST_SECTION_IN_DOCUMENT = "last-section-in-document"
16
+ SEGMENT_AFTER_PAUSE = "segment-after-pause"
26
17
  }
27
- //# sourceMappingURL=Tag.d.ts.map
18
+ //# sourceMappingURL=StructureTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructureTag.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/StructureTag.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IAEtB,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IAGvC,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAG7C,wBAAwB,6BAA6B;IACrD,uBAAuB,4BAA4B;IACnD,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;CAC5C"}
@@ -1,18 +1,3 @@
1
- export class Tag {
2
- name;
3
- constructor(name) {
4
- this.name = name;
5
- }
6
- equals(other) {
7
- return this.name === other.name;
8
- }
9
- toCssClass() {
10
- return this.name;
11
- }
12
- static of(name) {
13
- return new Tag(name);
14
- }
15
- }
16
1
  export var StructureTag;
17
2
  (function (StructureTag) {
18
3
  // Word-level
@@ -33,8 +18,5 @@ export var StructureTag;
33
18
  StructureTag["FIRST_SEGMENT_IN_DOCUMENT"] = "first-segment-in-document";
34
19
  StructureTag["LAST_SEGMENT_IN_DOCUMENT"] = "last-segment-in-document";
35
20
  StructureTag["SEGMENT_AFTER_PAUSE"] = "segment-after-pause";
36
- // Section-level
37
- StructureTag["FIRST_SECTION_IN_DOCUMENT"] = "first-section-in-document";
38
- StructureTag["LAST_SECTION_IN_DOCUMENT"] = "last-section-in-document";
39
21
  })(StructureTag || (StructureTag = {}));
40
- //# sourceMappingURL=Tag.js.map
22
+ //# sourceMappingURL=StructureTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructureTag.js","sourceRoot":"","sources":["../../../src/modules/tags/StructureTag.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAqBX;AArBD,WAAY,YAAY;IACtB,aAAa;IACb,+DAA+C,CAAA;IAC/C,6DAA6C,CAAA;IAC7C,+DAA+C,CAAA;IAC/C,6DAA6C,CAAA;IAC7C,yDAAyC,CAAA;IACzC,uDAAuC,CAAA;IAEvC,aAAa;IACb,+DAA+C,CAAA;IAC/C,6DAA6C,CAAA;IAC7C,+DAA+C,CAAA;IAC/C,6DAA6C,CAAA;IAE7C,gBAAgB;IAChB,qEAAqD,CAAA;IACrD,mEAAmD,CAAA;IACnD,uEAAuD,CAAA;IACvD,qEAAqD,CAAA;IACrD,2DAA2C,CAAA;AAC7C,CAAC,EArBW,YAAY,KAAZ,YAAY,QAqBvB"}
@@ -0,0 +1,8 @@
1
+ export declare class Tag {
2
+ readonly name: string;
3
+ constructor(name: string);
4
+ equals(other: Tag): boolean;
5
+ toCssClass(): string;
6
+ static of(name: string): Tag;
7
+ }
8
+ //# sourceMappingURL=Tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/Tag.ts"],"names":[],"mappings":"AAAA,qBAAa,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAEjC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI3B,UAAU,IAAI,MAAM;IAIpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;CAG7B"}
@@ -0,0 +1,16 @@
1
+ export class Tag {
2
+ name;
3
+ constructor(name) {
4
+ this.name = name;
5
+ }
6
+ equals(other) {
7
+ return this.name === other.name;
8
+ }
9
+ toCssClass() {
10
+ return this.name;
11
+ }
12
+ static of(name) {
13
+ return new Tag(name);
14
+ }
15
+ }
16
+ //# sourceMappingURL=Tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/modules/tags/Tag.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACO;IAArB,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAErC,MAAM,CAAC,KAAU;QACf,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,IAAY;QACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { Tag } from '../tags/Tag';
2
+ /**
3
+ * A boolean predicate over a set of tags. Implementations compose
4
+ * into arbitrary expressions (has / not / and / or); `toExpression`
5
+ * renders the condition in the textual form `TagConditionParser`
6
+ * accepts, so a parsed condition round-trips through serialization.
7
+ */
8
+ export interface TagCondition {
9
+ evaluate(tags: ReadonlySet<Tag>): boolean;
10
+ toExpression(): string;
11
+ }
12
+ //# sourceMappingURL=TagCondition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagCondition.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/TagCondition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC1C,YAAY,IAAI,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TagCondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagCondition.js","sourceRoot":"","sources":["../../../src/modules/tags/TagCondition.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { TagCondition } from '../tags/TagCondition';
2
+ /**
3
+ * Parses boolean tag expressions like `"emphasis or (hook and not
4
+ * cta)"` into a `TagCondition` tree. Keywords `and` / `or` / `not`
5
+ * are case-insensitive; every other token is a tag name. Precedence
6
+ * is `not` over `and` over `or`; parentheses group. Throws on an
7
+ * empty or malformed expression — callers surface that at load time,
8
+ * where the expression is authored. Stateless: every call builds its
9
+ * own context, so one instance is safe to share across callers.
10
+ */
11
+ export declare class TagConditionParser {
12
+ parse(expression: string): TagCondition;
13
+ private parseOr;
14
+ private parseAnd;
15
+ private parseNot;
16
+ private parsePrimary;
17
+ private match;
18
+ private matchKeyword;
19
+ private isKeyword;
20
+ }
21
+ //# sourceMappingURL=TagConditionParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagConditionParser.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/TagConditionParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAc/D;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAE7B,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAWvC,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;CAIlB"}
@@ -0,0 +1,75 @@
1
+ import { HasTagCondition } from '../tags/HasTagCondition';
2
+ import { NotTagCondition } from '../tags/NotTagCondition';
3
+ import { AndTagCondition } from '../tags/AndTagCondition';
4
+ import { OrTagCondition } from '../tags/OrTagCondition';
5
+ const TOKEN_RE = /\(|\)|[^\s()]+/g;
6
+ /**
7
+ * Parses boolean tag expressions like `"emphasis or (hook and not
8
+ * cta)"` into a `TagCondition` tree. Keywords `and` / `or` / `not`
9
+ * are case-insensitive; every other token is a tag name. Precedence
10
+ * is `not` over `and` over `or`; parentheses group. Throws on an
11
+ * empty or malformed expression — callers surface that at load time,
12
+ * where the expression is authored. Stateless: every call builds its
13
+ * own context, so one instance is safe to share across callers.
14
+ */
15
+ export class TagConditionParser {
16
+ parse(expression) {
17
+ const tokens = expression.match(TOKEN_RE) ?? [];
18
+ if (tokens.length === 0)
19
+ throw new Error('Tag condition is empty.');
20
+ const ctx = { expression, tokens, position: 0 };
21
+ const condition = this.parseOr(ctx);
22
+ if (ctx.position < ctx.tokens.length) {
23
+ throw new Error(`Invalid tag condition "${ctx.expression}": unexpected "${ctx.tokens[ctx.position]}".`);
24
+ }
25
+ return condition;
26
+ }
27
+ parseOr(ctx) {
28
+ const operands = [this.parseAnd(ctx)];
29
+ while (this.matchKeyword(ctx, 'or'))
30
+ operands.push(this.parseAnd(ctx));
31
+ return operands.length === 1 ? operands[0] : new OrTagCondition(...operands);
32
+ }
33
+ parseAnd(ctx) {
34
+ const operands = [this.parseNot(ctx)];
35
+ while (this.matchKeyword(ctx, 'and'))
36
+ operands.push(this.parseNot(ctx));
37
+ return operands.length === 1 ? operands[0] : new AndTagCondition(...operands);
38
+ }
39
+ parseNot(ctx) {
40
+ if (this.matchKeyword(ctx, 'not'))
41
+ return new NotTagCondition(this.parseNot(ctx));
42
+ return this.parsePrimary(ctx);
43
+ }
44
+ parsePrimary(ctx) {
45
+ if (this.match(ctx, '(')) {
46
+ const inner = this.parseOr(ctx);
47
+ if (!this.match(ctx, ')'))
48
+ throw new Error(`Invalid tag condition "${ctx.expression}": missing ")".`);
49
+ return inner;
50
+ }
51
+ const token = ctx.tokens[ctx.position];
52
+ if (token === undefined || token === ')' || this.isKeyword(token)) {
53
+ throw new Error(`Invalid tag condition "${ctx.expression}": expected a tag name${token === undefined ? '' : `, got "${token}"`}.`);
54
+ }
55
+ ctx.position++;
56
+ return new HasTagCondition(token);
57
+ }
58
+ match(ctx, token) {
59
+ if (ctx.tokens[ctx.position] !== token)
60
+ return false;
61
+ ctx.position++;
62
+ return true;
63
+ }
64
+ matchKeyword(ctx, keyword) {
65
+ if (ctx.tokens[ctx.position]?.toLowerCase() !== keyword)
66
+ return false;
67
+ ctx.position++;
68
+ return true;
69
+ }
70
+ isKeyword(token) {
71
+ const lower = token.toLowerCase();
72
+ return lower === 'and' || lower === 'or' || lower === 'not';
73
+ }
74
+ }
75
+ //# sourceMappingURL=TagConditionParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagConditionParser.js","sourceRoot":"","sources":["../../../src/modules/tags/TagConditionParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { Tag } from '../tags/Tag';
2
+ export { StructureTag } from '../tags/StructureTag';
3
+ export type { TagCondition } from '../tags/TagCondition';
4
+ export { HasTagCondition } from '../tags/HasTagCondition';
5
+ export { NotTagCondition } from '../tags/NotTagCondition';
6
+ export { AndTagCondition } from '../tags/AndTagCondition';
7
+ export { OrTagCondition } from '../tags/OrTagCondition';
8
+ export { TagConditionParser } from '../tags/TagConditionParser';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/tags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { Tag } from '../tags/Tag';
2
+ export { StructureTag } from '../tags/StructureTag';
3
+ export { HasTagCondition } from '../tags/HasTagCondition';
4
+ export { NotTagCondition } from '../tags/NotTagCondition';
5
+ export { AndTagCondition } from '../tags/AndTagCondition';
6
+ export { OrTagCondition } from '../tags/OrTagCondition';
7
+ export { TagConditionParser } from '../tags/TagConditionParser';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/tags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,11 +1,16 @@
1
1
  /**
2
2
  * Decodes an audio/video Blob to mono PCM at the requested sample rate.
3
3
  * Implementations choose how to do this — using browser Web Audio APIs,
4
- * a pure-JS WAV parser, or trusting a pre-decoded byte stream — so the
5
- * decode strategy is decoupled from the consumer (e.g. WhisperTranscriber)
6
- * and from the platform (main thread vs Worker context).
4
+ * demuxing the container first, or trusting a pre-decoded byte stream —
5
+ * so the decode strategy is decoupled from the consumer and from the
6
+ * platform (main thread vs Worker context).
7
+ *
8
+ * `onProgress` receives a `[0, 1]` value reflecting how much of the
9
+ * source has been decoded so far. Implementations are best-effort and
10
+ * may not call it at all when the underlying backend does not report
11
+ * incremental progress.
7
12
  */
8
13
  export interface AudioDecoder {
9
- decode(audio: Blob, targetSampleRate: number): Promise<Float32Array>;
14
+ decode(audio: Blob, targetSampleRate: number, onProgress?: (progress: number) => void): Promise<Float32Array>;
10
15
  }
11
16
  //# sourceMappingURL=AudioDecoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioDecoder.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/AudioDecoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACtE"}
1
+ {"version":3,"file":"AudioDecoder.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/AudioDecoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CACJ,KAAK,EAAE,IAAI,EACX,gBAAgB,EAAE,MAAM,EACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,45 @@
1
+ import type { AudioSample } from 'mediabunny';
2
+ /**
3
+ * Consumes mediabunny {@link AudioSample}s in source order, downmixes
4
+ * each to mono, and writes resampled frames into a caller-owned target
5
+ * buffer at monotonically increasing offsets.
6
+ *
7
+ * Batches source-rate frames in a fixed-size internal buffer so the
8
+ * whole track never sits in memory at once. Each full batch is
9
+ * resampled through a fresh `OfflineAudioContext` and copied straight
10
+ * into the target — a track of any length peaks at one batch worth of
11
+ * source-rate PCM plus the target buffer, instead of the full-track
12
+ * source-rate buffer the collect-then-resample approach needed. On a
13
+ * 60-minute 48 kHz mono source that is ~5.7 MB per batch instead of
14
+ * ~690 MB across the whole run.
15
+ *
16
+ * The source sample rate is discovered on the first appended sample —
17
+ * `AudioSample.sampleRate` is stable across a single mediabunny track.
18
+ * The target sample rate is fixed at construction. When the two match
19
+ * the batch bypasses `OfflineAudioContext` and is copied verbatim.
20
+ *
21
+ * The target buffer is written up to its own capacity; any tail beyond
22
+ * that is silently discarded, so the caller's pre-size determines the
23
+ * ceiling. `flush` returns the actual number of frames written and the
24
+ * caller can `subarray(0, written)` to trim any pre-sizing slack.
25
+ */
26
+ export declare class BatchedMonoResampler {
27
+ private readonly target;
28
+ private readonly targetSampleRate;
29
+ private static readonly BATCH_SECONDS;
30
+ private batch;
31
+ private batchFrames;
32
+ private sourceSampleRate;
33
+ private channelScratch;
34
+ private targetOffset;
35
+ constructor(target: Float32Array, targetSampleRate: number);
36
+ append(sample: AudioSample): Promise<void>;
37
+ flush(): Promise<number>;
38
+ private initFromFirstSample;
39
+ private ensureBatchCapacityFor;
40
+ private emitBatch;
41
+ private resampleBatch;
42
+ private writeIntoTarget;
43
+ private mixSampleIntoBatch;
44
+ }
45
+ //# sourceMappingURL=BatchedMonoResampler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchedMonoResampler.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/BatchedMonoResampler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,oBAAoB;IAW7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAVnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAM;IAE3C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,YAAY,CAAK;gBAGN,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM;IAGrC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,sBAAsB;YAOhB,SAAS;YAST,aAAa;IAa3B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,kBAAkB;CAoB3B"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Consumes mediabunny {@link AudioSample}s in source order, downmixes
3
+ * each to mono, and writes resampled frames into a caller-owned target
4
+ * buffer at monotonically increasing offsets.
5
+ *
6
+ * Batches source-rate frames in a fixed-size internal buffer so the
7
+ * whole track never sits in memory at once. Each full batch is
8
+ * resampled through a fresh `OfflineAudioContext` and copied straight
9
+ * into the target — a track of any length peaks at one batch worth of
10
+ * source-rate PCM plus the target buffer, instead of the full-track
11
+ * source-rate buffer the collect-then-resample approach needed. On a
12
+ * 60-minute 48 kHz mono source that is ~5.7 MB per batch instead of
13
+ * ~690 MB across the whole run.
14
+ *
15
+ * The source sample rate is discovered on the first appended sample —
16
+ * `AudioSample.sampleRate` is stable across a single mediabunny track.
17
+ * The target sample rate is fixed at construction. When the two match
18
+ * the batch bypasses `OfflineAudioContext` and is copied verbatim.
19
+ *
20
+ * The target buffer is written up to its own capacity; any tail beyond
21
+ * that is silently discarded, so the caller's pre-size determines the
22
+ * ceiling. `flush` returns the actual number of frames written and the
23
+ * caller can `subarray(0, written)` to trim any pre-sizing slack.
24
+ */
25
+ export class BatchedMonoResampler {
26
+ target;
27
+ targetSampleRate;
28
+ static BATCH_SECONDS = 30;
29
+ batch = new Float32Array(0);
30
+ batchFrames = 0;
31
+ sourceSampleRate = 0;
32
+ channelScratch = new Float32Array(0);
33
+ targetOffset = 0;
34
+ constructor(target, targetSampleRate) {
35
+ this.target = target;
36
+ this.targetSampleRate = targetSampleRate;
37
+ }
38
+ async append(sample) {
39
+ if (this.sourceSampleRate === 0)
40
+ this.initFromFirstSample(sample);
41
+ const frames = sample.numberOfFrames;
42
+ if (frames === 0)
43
+ return;
44
+ this.ensureBatchCapacityFor(this.batchFrames + frames);
45
+ this.mixSampleIntoBatch(sample, this.batchFrames);
46
+ this.batchFrames += frames;
47
+ if (this.batchFrames >= this.batch.length)
48
+ await this.emitBatch();
49
+ }
50
+ async flush() {
51
+ if (this.batchFrames > 0)
52
+ await this.emitBatch();
53
+ return this.targetOffset;
54
+ }
55
+ initFromFirstSample(sample) {
56
+ this.sourceSampleRate = sample.sampleRate;
57
+ this.batch = new Float32Array(this.sourceSampleRate * BatchedMonoResampler.BATCH_SECONDS);
58
+ }
59
+ ensureBatchCapacityFor(needed) {
60
+ if (this.batch.length >= needed)
61
+ return;
62
+ const grown = new Float32Array(needed);
63
+ grown.set(this.batch.subarray(0, this.batchFrames));
64
+ this.batch = grown;
65
+ }
66
+ async emitBatch() {
67
+ const source = this.batch.subarray(0, this.batchFrames);
68
+ const resampled = this.sourceSampleRate === this.targetSampleRate
69
+ ? source
70
+ : await this.resampleBatch(source);
71
+ this.writeIntoTarget(resampled);
72
+ this.batchFrames = 0;
73
+ }
74
+ async resampleBatch(source) {
75
+ const targetFrames = Math.max(1, Math.ceil(source.length * this.targetSampleRate / this.sourceSampleRate));
76
+ const ctx = new OfflineAudioContext(1, targetFrames, this.targetSampleRate);
77
+ const buffer = ctx.createBuffer(1, source.length, this.sourceSampleRate);
78
+ buffer.getChannelData(0).set(source);
79
+ const node = ctx.createBufferSource();
80
+ node.buffer = buffer;
81
+ node.connect(ctx.destination);
82
+ node.start();
83
+ const rendered = await ctx.startRendering();
84
+ return rendered.getChannelData(0);
85
+ }
86
+ writeIntoTarget(source) {
87
+ const room = this.target.length - this.targetOffset;
88
+ if (room <= 0)
89
+ return;
90
+ const writeLen = Math.min(source.length, room);
91
+ this.target.set(source.subarray(0, writeLen), this.targetOffset);
92
+ this.targetOffset += writeLen;
93
+ }
94
+ mixSampleIntoBatch(sample, writeOffset) {
95
+ const frames = sample.numberOfFrames;
96
+ const channels = sample.numberOfChannels;
97
+ const target = this.batch.subarray(writeOffset, writeOffset + frames);
98
+ if (channels <= 1) {
99
+ sample.copyTo(target, { planeIndex: 0, format: 'f32-planar' });
100
+ return;
101
+ }
102
+ if (this.channelScratch.length < frames)
103
+ this.channelScratch = new Float32Array(frames);
104
+ const scratch = this.channelScratch.subarray(0, frames);
105
+ sample.copyTo(target, { planeIndex: 0, format: 'f32-planar' });
106
+ for (let channel = 1; channel < channels; channel += 1) {
107
+ sample.copyTo(scratch, { planeIndex: channel, format: 'f32-planar' });
108
+ for (let frame = 0; frame < frames; frame += 1)
109
+ target[frame] += scratch[frame];
110
+ }
111
+ const inverseChannels = 1 / channels;
112
+ for (let frame = 0; frame < frames; frame += 1)
113
+ target[frame] *= inverseChannels;
114
+ }
115
+ }
116
+ //# sourceMappingURL=BatchedMonoResampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BatchedMonoResampler.js","sourceRoot":"","sources":["../../../src/modules/transcription/BatchedMonoResampler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ModelFileCache } from '../transcription/ModelFileCache';
2
+ /**
3
+ * Keeps model files in the browser's Cache Storage.
4
+ *
5
+ * Browsers refuse this write far more often than one would expect —
6
+ * an origin over its quota, a private window, a page outside a secure
7
+ * context — and every refusal costs the next run a full re-download of
8
+ * hundreds of megabytes with nothing on screen to explain it. The
9
+ * refusal is therefore handed to `onKeepFailure` instead of being
10
+ * swallowed, while the run in flight carries on regardless: the files
11
+ * are already in memory and the transcription does not need them kept.
12
+ *
13
+ * Only the first refusal of an instance's lifetime is announced. A
14
+ * model is several files and the condition behind a refusal applies to
15
+ * all of them, so the rest would say the same thing again.
16
+ */
17
+ export declare class CacheStorageModelFileCache implements ModelFileCache {
18
+ private readonly onKeepFailure;
19
+ private static readonly CACHE_NAME;
20
+ private opening;
21
+ private failureAnnounced;
22
+ /**
23
+ * @param onKeepFailure Called at most once per instance, with the
24
+ * refusal that stopped a file from being kept.
25
+ */
26
+ constructor(onKeepFailure: (error: unknown) => void);
27
+ match(key: string): Promise<Response | undefined>;
28
+ put(key: string, response: Response): Promise<void>;
29
+ private announce;
30
+ /**
31
+ * Resolves to `null` when this runtime has no Cache Storage at all,
32
+ * which is a standing condition rather than a transient one — hence
33
+ * the single attempt, reused by every later call.
34
+ */
35
+ private open;
36
+ private openOnce;
37
+ }
38
+ //# sourceMappingURL=CacheStorageModelFileCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheStorageModelFileCache.d.ts","sourceRoot":"","sources":["../../../src/modules/transcription/CacheStorageModelFileCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAG5E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAcnD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAT1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAE1D,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;;OAGG;gBAC0B,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAE9D,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAYjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,OAAO,CAAC,QAAQ;IAMhB;;;;OAIG;IACH,OAAO,CAAC,IAAI;YAKE,QAAQ;CAUvB"}