@thunderkiller/video-clipper 1.8.0 → 1.10.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 (428) hide show
  1. package/dist/app/cli/args.d.ts.map +1 -1
  2. package/dist/app/cli/args.js +13 -13
  3. package/dist/app/cli/args.js.map +1 -1
  4. package/dist/app/cli/index.js +10 -9
  5. package/dist/app/cli/index.js.map +1 -1
  6. package/dist/app/cli/pipeline/dumper.d.ts.map +1 -1
  7. package/dist/app/cli/pipeline/dumper.js +4 -4
  8. package/dist/app/cli/pipeline/dumper.js.map +1 -1
  9. package/dist/app/cli/pipeline/runner.d.ts +1 -1
  10. package/dist/app/cli/pipeline/runner.d.ts.map +1 -1
  11. package/dist/app/cli/pipeline/runner.js +16 -15
  12. package/dist/app/cli/pipeline/runner.js.map +1 -1
  13. package/dist/app/cli/pipeline/stages/audioProcessor.d.ts +2 -15
  14. package/dist/app/cli/pipeline/stages/audioProcessor.d.ts.map +1 -1
  15. package/dist/app/cli/pipeline/stages/audioProcessor.js +7 -7
  16. package/dist/app/cli/pipeline/stages/audioProcessor.js.map +1 -1
  17. package/dist/app/cli/pipeline/stages/videoResolver.d.ts.map +1 -1
  18. package/dist/app/cli/pipeline/stages/videoResolver.js +2 -2
  19. package/dist/app/cli/pipeline/stages/videoResolver.js.map +1 -1
  20. package/dist/app/web/lib/activity/analysisActivity.d.ts +3 -5
  21. package/dist/app/web/lib/activity/analysisActivity.d.ts.map +1 -1
  22. package/dist/app/web/lib/activity/analysisActivity.js.map +1 -1
  23. package/dist/app/web/lib/analysisStream.d.ts +3 -11
  24. package/dist/app/web/lib/analysisStream.d.ts.map +1 -1
  25. package/dist/app/web/lib/analysisStream.js +26 -3
  26. package/dist/app/web/lib/analysisStream.js.map +1 -1
  27. package/dist/app/web/lib/captionTemplates.d.ts +3 -0
  28. package/dist/app/web/lib/captionTemplates.d.ts.map +1 -0
  29. package/dist/app/web/lib/captionTemplates.js +98 -0
  30. package/dist/app/web/lib/captionTemplates.js.map +1 -0
  31. package/dist/app/web/lib/format.d.ts +2 -0
  32. package/dist/app/web/lib/format.d.ts.map +1 -1
  33. package/dist/app/web/lib/format.js +20 -0
  34. package/dist/app/web/lib/format.js.map +1 -1
  35. package/dist/app/web/lib/services/analysis/analysisService.d.ts +1 -1
  36. package/dist/app/web/lib/services/analysis/analysisService.d.ts.map +1 -1
  37. package/dist/app/web/lib/services/analysis/analysisService.js +5 -4
  38. package/dist/app/web/lib/services/analysis/analysisService.js.map +1 -1
  39. package/dist/app/web/lib/services/analysis/streamEvents.d.ts +2 -1
  40. package/dist/app/web/lib/services/analysis/streamEvents.d.ts.map +1 -1
  41. package/dist/app/web/lib/services/analysis/streamEvents.js +1 -1
  42. package/dist/app/web/lib/services/analysis/streamEvents.js.map +1 -1
  43. package/dist/app/web/lib/services/analysis/transcriptService.d.ts.map +1 -1
  44. package/dist/app/web/lib/services/analysis/transcriptService.js +1 -2
  45. package/dist/app/web/lib/services/analysis/transcriptService.js.map +1 -1
  46. package/dist/app/web/lib/services/artifacts/artifactStore.d.ts +9 -0
  47. package/dist/app/web/lib/services/artifacts/artifactStore.d.ts.map +1 -1
  48. package/dist/app/web/lib/services/artifacts/artifactStore.js +45 -0
  49. package/dist/app/web/lib/services/artifacts/artifactStore.js.map +1 -1
  50. package/dist/app/web/lib/services/clipping/clipEditService.d.ts +12 -0
  51. package/dist/app/web/lib/services/clipping/clipEditService.d.ts.map +1 -0
  52. package/dist/app/web/lib/services/clipping/clipEditService.js +73 -0
  53. package/dist/app/web/lib/services/clipping/clipEditService.js.map +1 -0
  54. package/dist/app/web/lib/services/clipping/clipService.d.ts.map +1 -1
  55. package/dist/app/web/lib/services/clipping/clipService.js +27 -5
  56. package/dist/app/web/lib/services/clipping/clipService.js.map +1 -1
  57. package/dist/app/web/lib/services/config/webConfig.d.ts +2 -8
  58. package/dist/app/web/lib/services/config/webConfig.d.ts.map +1 -1
  59. package/dist/app/web/lib/services/config/webConfig.js.map +1 -1
  60. package/dist/app/web/lib/services/publishing/draftService.d.ts +1 -0
  61. package/dist/app/web/lib/services/publishing/draftService.d.ts.map +1 -1
  62. package/dist/app/web/lib/services/publishing/draftService.js +60 -9
  63. package/dist/app/web/lib/services/publishing/draftService.js.map +1 -1
  64. package/dist/app/web/lib/services/publishing/metadataCache.d.ts +1 -9
  65. package/dist/app/web/lib/services/publishing/metadataCache.d.ts.map +1 -1
  66. package/dist/app/web/lib/services/publishing/metadataCache.js +3 -9
  67. package/dist/app/web/lib/services/publishing/metadataCache.js.map +1 -1
  68. package/dist/app/web/lib/services/publishing/metadataService.d.ts.map +1 -1
  69. package/dist/app/web/lib/services/publishing/metadataService.js +10 -16
  70. package/dist/app/web/lib/services/publishing/metadataService.js.map +1 -1
  71. package/dist/app/web/lib/services/publishing/uploadService.d.ts +3 -6
  72. package/dist/app/web/lib/services/publishing/uploadService.d.ts.map +1 -1
  73. package/dist/app/web/lib/services/publishing/uploadService.js +107 -27
  74. package/dist/app/web/lib/services/publishing/uploadService.js.map +1 -1
  75. package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts +2 -1
  76. package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts.map +1 -1
  77. package/dist/app/web/lib/services/publishing/uploadStreamEvents.js +1 -1
  78. package/dist/app/web/lib/services/publishing/uploadStreamEvents.js.map +1 -1
  79. package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts +5 -0
  80. package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts.map +1 -0
  81. package/dist/app/web/lib/services/subtitles/subtitlePlanService.js +113 -0
  82. package/dist/app/web/lib/services/subtitles/subtitlePlanService.js.map +1 -0
  83. package/dist/app/web/lib/services/youtube/catalogFactory.d.ts +1 -1
  84. package/dist/app/web/lib/services/youtube/catalogFactory.d.ts.map +1 -1
  85. package/dist/app/web/lib/services/youtube/uploadAuth.d.ts +1 -6
  86. package/dist/app/web/lib/services/youtube/uploadAuth.d.ts.map +1 -1
  87. package/dist/app/web/lib/services/youtube/uploadAuth.js +34 -7
  88. package/dist/app/web/lib/services/youtube/uploadAuth.js.map +1 -1
  89. package/dist/app/web/lib/{configStore.d.ts → stores/config.d.ts} +2 -2
  90. package/dist/app/web/lib/stores/config.d.ts.map +1 -0
  91. package/dist/app/web/lib/{configStore.js → stores/config.js} +3 -3
  92. package/dist/app/web/lib/stores/config.js.map +1 -0
  93. package/dist/app/web/lib/stores/theme.d.ts +2 -0
  94. package/dist/app/web/lib/stores/theme.d.ts.map +1 -0
  95. package/dist/app/web/lib/stores/theme.js +12 -0
  96. package/dist/app/web/lib/stores/theme.js.map +1 -0
  97. package/dist/app/web/lib/{toastStore.d.ts → stores/toast.d.ts} +3 -6
  98. package/dist/app/web/lib/stores/toast.d.ts.map +1 -0
  99. package/dist/app/web/lib/{toastStore.js → stores/toast.js} +1 -1
  100. package/dist/app/web/lib/{toastStore.js.map → stores/toast.js.map} +1 -1
  101. package/dist/app/web/lib/stores/video.d.ts +12 -0
  102. package/dist/app/web/lib/stores/video.d.ts.map +1 -0
  103. package/dist/app/web/lib/stores/video.js +65 -0
  104. package/dist/app/web/lib/stores/video.js.map +1 -0
  105. package/dist/app/web/lib/subtitleTiming.d.ts +5 -0
  106. package/dist/app/web/lib/subtitleTiming.d.ts.map +1 -0
  107. package/dist/app/web/lib/subtitleTiming.js +45 -0
  108. package/dist/app/web/lib/subtitleTiming.js.map +1 -0
  109. package/dist/app/web/lib/uploadStream.d.ts +4 -17
  110. package/dist/app/web/lib/uploadStream.d.ts.map +1 -1
  111. package/dist/app/web/lib/uploadStream.js.map +1 -1
  112. package/dist/app/web/lib/videoWorkflow.d.ts +2 -8
  113. package/dist/app/web/lib/videoWorkflow.d.ts.map +1 -1
  114. package/dist/app/web/lib/videoWorkflow.js.map +1 -1
  115. package/dist/app/web/routes/api/analysis/transcript/+server.d.ts.map +1 -1
  116. package/dist/app/web/routes/api/analysis/transcript/+server.js +32 -6
  117. package/dist/app/web/routes/api/analysis/transcript/+server.js.map +1 -1
  118. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts +3 -0
  119. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts.map +1 -0
  120. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js +21 -0
  121. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js.map +1 -0
  122. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts +3 -0
  123. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts.map +1 -0
  124. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js +21 -0
  125. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js.map +1 -0
  126. package/dist/app/web/routes/api/clips/+server.d.ts.map +1 -1
  127. package/dist/app/web/routes/api/clips/+server.js +9 -2
  128. package/dist/app/web/routes/api/clips/+server.js.map +1 -1
  129. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts +4 -0
  130. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts.map +1 -0
  131. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js +61 -0
  132. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js.map +1 -0
  133. package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts +3 -0
  134. package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts.map +1 -0
  135. package/dist/app/web/routes/api/clips/[clipId]/file/+server.js +99 -0
  136. package/dist/app/web/routes/api/clips/[clipId]/file/+server.js.map +1 -0
  137. package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts +3 -0
  138. package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts.map +1 -0
  139. package/dist/app/web/routes/api/clips/[clipId]/render/+server.js +31 -0
  140. package/dist/app/web/routes/api/clips/[clipId]/render/+server.js.map +1 -0
  141. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts +3 -0
  142. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts.map +1 -0
  143. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js +25 -0
  144. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js.map +1 -0
  145. package/dist/app/web/routes/api/config/+server.d.ts.map +1 -1
  146. package/dist/app/web/routes/api/config/+server.js +1 -1
  147. package/dist/app/web/routes/api/config/+server.js.map +1 -1
  148. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts.map +1 -1
  149. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js +1 -4
  150. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js.map +1 -1
  151. package/dist/app/web/routes/api/library/clips/+server.d.ts.map +1 -1
  152. package/dist/app/web/routes/api/library/clips/+server.js +1 -4
  153. package/dist/app/web/routes/api/library/clips/+server.js.map +1 -1
  154. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts.map +1 -1
  155. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js +3 -9
  156. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js.map +1 -1
  157. package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts.map +1 -1
  158. package/dist/app/web/routes/api/publish/drafts/generate/+server.js +6 -2
  159. package/dist/app/web/routes/api/publish/drafts/generate/+server.js.map +1 -1
  160. package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts.map +1 -1
  161. package/dist/app/web/routes/api/publish/thumbnails/+server.js +5 -1
  162. package/dist/app/web/routes/api/publish/thumbnails/+server.js.map +1 -1
  163. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts.map +1 -1
  164. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js +1 -5
  165. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js.map +1 -1
  166. package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts.map +1 -1
  167. package/dist/app/web/routes/api/youtube/channels/resolve/+server.js +1 -4
  168. package/dist/app/web/routes/api/youtube/channels/resolve/+server.js.map +1 -1
  169. package/dist/app/web/routes/api/youtube/uploads/+server.d.ts.map +1 -1
  170. package/dist/app/web/routes/api/youtube/uploads/+server.js +12 -6
  171. package/dist/app/web/routes/api/youtube/uploads/+server.js.map +1 -1
  172. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts.map +1 -1
  173. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js +1 -4
  174. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js.map +1 -1
  175. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts.map +1 -1
  176. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js +1 -4
  177. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js.map +1 -1
  178. package/dist/app/web/types/activity.d.ts +4 -0
  179. package/dist/app/web/types/activity.d.ts.map +1 -1
  180. package/dist/app/web/types/analysis.d.ts +36 -0
  181. package/dist/app/web/types/analysis.d.ts.map +1 -1
  182. package/dist/app/web/types/analysis.js +17 -0
  183. package/dist/app/web/types/analysis.js.map +1 -1
  184. package/dist/app/web/types/componentProps.d.ts +383 -0
  185. package/dist/app/web/types/componentProps.d.ts.map +1 -0
  186. package/dist/app/web/types/componentProps.js +2 -0
  187. package/dist/app/web/types/componentProps.js.map +1 -0
  188. package/dist/app/web/types/publish.d.ts +40 -3
  189. package/dist/app/web/types/publish.d.ts.map +1 -1
  190. package/dist/app/web/types/publish.js +21 -0
  191. package/dist/app/web/types/publish.js.map +1 -1
  192. package/dist/app/web/types/subtitlePlan.d.ts +46 -0
  193. package/dist/app/web/types/subtitlePlan.d.ts.map +1 -0
  194. package/dist/app/web/types/subtitlePlan.js +20 -0
  195. package/dist/app/web/types/subtitlePlan.js.map +1 -0
  196. package/dist/app/web/types/upload.d.ts +23 -0
  197. package/dist/app/web/types/upload.d.ts.map +1 -0
  198. package/dist/app/web/types/upload.js +2 -0
  199. package/dist/app/web/types/upload.js.map +1 -0
  200. package/dist/app/web/types/videoStore.d.ts +13 -0
  201. package/dist/app/web/types/videoStore.d.ts.map +1 -0
  202. package/dist/app/web/types/videoStore.js +2 -0
  203. package/dist/app/web/types/videoStore.js.map +1 -0
  204. package/dist/app/web/types/web.d.ts +38 -0
  205. package/dist/app/web/types/web.d.ts.map +1 -1
  206. package/dist/app/web/types/web.js +1 -0
  207. package/dist/app/web/types/web.js.map +1 -1
  208. package/dist/app/web/types/workflow.d.ts +9 -0
  209. package/dist/app/web/types/workflow.d.ts.map +1 -0
  210. package/dist/app/web/types/workflow.js +2 -0
  211. package/dist/app/web/types/workflow.js.map +1 -0
  212. package/dist/app/web/types/youtube.d.ts +15 -0
  213. package/dist/app/web/types/youtube.d.ts.map +1 -0
  214. package/dist/app/web/types/youtube.js +12 -0
  215. package/dist/app/web/types/youtube.js.map +1 -0
  216. package/dist/app/web/widgets/settings/groupConfig.d.ts +4 -0
  217. package/dist/app/web/widgets/settings/groupConfig.d.ts.map +1 -0
  218. package/dist/app/web/widgets/settings/groupConfig.js +219 -0
  219. package/dist/app/web/widgets/settings/groupConfig.js.map +1 -0
  220. package/dist/hooks.server.js +1 -1
  221. package/dist/hooks.server.js.map +1 -1
  222. package/dist/lib/config/env.d.ts +1 -5
  223. package/dist/lib/config/env.d.ts.map +1 -1
  224. package/dist/lib/config/env.js +1 -1
  225. package/dist/lib/config/env.js.map +1 -1
  226. package/dist/lib/config/index.d.ts +1 -1
  227. package/dist/lib/config/index.d.ts.map +1 -1
  228. package/dist/lib/config/registry.d.ts +2 -23
  229. package/dist/lib/config/registry.d.ts.map +1 -1
  230. package/dist/lib/config/registry.js +1 -1
  231. package/dist/lib/config/registry.js.map +1 -1
  232. package/dist/lib/index.d.ts +3 -4
  233. package/dist/lib/index.d.ts.map +1 -1
  234. package/dist/lib/index.js +1 -2
  235. package/dist/lib/index.js.map +1 -1
  236. package/dist/lib/pipeline/stages/clipExporter.d.ts +2 -7
  237. package/dist/lib/pipeline/stages/clipExporter.d.ts.map +1 -1
  238. package/dist/lib/pipeline/stages/clipExporter.js +4 -4
  239. package/dist/lib/pipeline/stages/clipExporter.js.map +1 -1
  240. package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts +2 -2
  241. package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts.map +1 -1
  242. package/dist/lib/pipeline/stages/segmentAnalyzer.js +6 -2
  243. package/dist/lib/pipeline/stages/segmentAnalyzer.js.map +1 -1
  244. package/dist/lib/pipeline/stages/segmentSelector.d.ts.map +1 -1
  245. package/dist/lib/pipeline/stages/segmentSelector.js +2 -2
  246. package/dist/lib/pipeline/stages/segmentSelector.js.map +1 -1
  247. package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts +2 -2
  248. package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts.map +1 -1
  249. package/dist/lib/services/analysis/llm/LLMAnalyzer.js +5 -3
  250. package/dist/lib/services/analysis/llm/LLMAnalyzer.js.map +1 -1
  251. package/dist/lib/services/analysis/llm/index.d.ts +3 -10
  252. package/dist/lib/services/analysis/llm/index.d.ts.map +1 -1
  253. package/dist/lib/services/analysis/llm/index.js +12 -8
  254. package/dist/lib/services/analysis/llm/index.js.map +1 -1
  255. package/dist/lib/services/analysis/refiner/index.d.ts +3 -11
  256. package/dist/lib/services/analysis/refiner/index.d.ts.map +1 -1
  257. package/dist/lib/services/analysis/refiner/index.js +9 -8
  258. package/dist/lib/services/analysis/refiner/index.js.map +1 -1
  259. package/dist/lib/services/analysis/transcript/detector.d.ts +1 -1
  260. package/dist/lib/services/analysis/transcript/detector.d.ts.map +1 -1
  261. package/dist/lib/services/analysis/transcript/detector.js +4 -4
  262. package/dist/lib/services/analysis/transcript/detector.js.map +1 -1
  263. package/dist/lib/services/audio/analyzer/factory.d.ts +1 -6
  264. package/dist/lib/services/audio/analyzer/factory.d.ts.map +1 -1
  265. package/dist/lib/services/audio/analyzer/factory.js +1 -1
  266. package/dist/lib/services/audio/analyzer/factory.js.map +1 -1
  267. package/dist/lib/services/audio/analyzer/gemini.d.ts +1 -5
  268. package/dist/lib/services/audio/analyzer/gemini.d.ts.map +1 -1
  269. package/dist/lib/services/audio/analyzer/gemini.js +2 -13
  270. package/dist/lib/services/audio/analyzer/gemini.js.map +1 -1
  271. package/dist/lib/services/audio/analyzer/index.d.ts +1 -1
  272. package/dist/lib/services/audio/analyzer/index.d.ts.map +1 -1
  273. package/dist/lib/services/audio/index.d.ts +1 -1
  274. package/dist/lib/services/audio/index.d.ts.map +1 -1
  275. package/dist/lib/services/audio/processor/detector.d.ts.map +1 -1
  276. package/dist/lib/services/audio/processor/detector.js +13 -3
  277. package/dist/lib/services/audio/processor/detector.js.map +1 -1
  278. package/dist/lib/services/audio/processor/slicer.d.ts +2 -4
  279. package/dist/lib/services/audio/processor/slicer.d.ts.map +1 -1
  280. package/dist/lib/services/audio/processor/slicer.js.map +1 -1
  281. package/dist/lib/services/audio/source/index.d.ts +1 -1
  282. package/dist/lib/services/audio/source/index.d.ts.map +1 -1
  283. package/dist/lib/services/audio/source/youtube.d.ts.map +1 -1
  284. package/dist/lib/services/audio/source/youtube.js +6 -7
  285. package/dist/lib/services/audio/source/youtube.js.map +1 -1
  286. package/dist/lib/services/audio/transcriber/factory.js +1 -2
  287. package/dist/lib/services/audio/transcriber/factory.js.map +1 -1
  288. package/dist/lib/services/audio/transcriber/whisper.d.ts.map +1 -1
  289. package/dist/lib/services/audio/transcriber/whisper.js +1 -6
  290. package/dist/lib/services/audio/transcriber/whisper.js.map +1 -1
  291. package/dist/lib/services/cache/backends/disabled.d.ts +20 -0
  292. package/dist/lib/services/cache/backends/disabled.d.ts.map +1 -0
  293. package/dist/lib/{utils/cacheBackend.js → services/cache/backends/disabled.js} +1 -1
  294. package/dist/lib/services/cache/backends/disabled.js.map +1 -0
  295. package/dist/lib/{utils/fileCacheBackend.d.ts → services/cache/backends/file.d.ts} +7 -4
  296. package/dist/lib/services/cache/backends/file.d.ts.map +1 -0
  297. package/dist/lib/{utils/fileCacheBackend.js → services/cache/backends/file.js} +18 -9
  298. package/dist/lib/services/cache/backends/file.js.map +1 -0
  299. package/dist/lib/{utils/mongoCacheBackend.d.ts → services/cache/backends/mongo.d.ts} +3 -3
  300. package/dist/lib/services/cache/backends/mongo.d.ts.map +1 -0
  301. package/dist/lib/{utils/mongoCacheBackend.js → services/cache/backends/mongo.js} +8 -8
  302. package/dist/lib/services/cache/backends/mongo.js.map +1 -0
  303. package/dist/lib/{utils → services/cache}/cache.d.ts +6 -5
  304. package/dist/lib/services/cache/cache.d.ts.map +1 -0
  305. package/dist/lib/{utils → services/cache}/cache.js +25 -4
  306. package/dist/lib/services/cache/cache.js.map +1 -0
  307. package/dist/lib/{utils/cacheFactory.d.ts → services/cache/factory.d.ts} +3 -3
  308. package/dist/lib/services/cache/factory.d.ts.map +1 -0
  309. package/dist/lib/{utils/cacheFactory.js → services/cache/factory.js} +6 -6
  310. package/dist/lib/services/cache/factory.js.map +1 -0
  311. package/dist/lib/services/cache/index.d.ts +4 -0
  312. package/dist/lib/services/cache/index.d.ts.map +1 -0
  313. package/dist/lib/services/cache/index.js +3 -0
  314. package/dist/lib/services/cache/index.js.map +1 -0
  315. package/dist/lib/services/cache/manifest.d.ts +6 -0
  316. package/dist/lib/services/cache/manifest.d.ts.map +1 -0
  317. package/dist/lib/services/cache/manifest.js +101 -0
  318. package/dist/lib/services/cache/manifest.js.map +1 -0
  319. package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts +6 -0
  320. package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts.map +1 -0
  321. package/dist/lib/services/video/clipper/editor/drawtextBuilder.js +42 -0
  322. package/dist/lib/services/video/clipper/editor/drawtextBuilder.js.map +1 -0
  323. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts +7 -0
  324. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts.map +1 -0
  325. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js +58 -0
  326. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js.map +1 -0
  327. package/dist/lib/services/video/clipper/editor/renderer.d.ts +4 -0
  328. package/dist/lib/services/video/clipper/editor/renderer.d.ts.map +1 -0
  329. package/dist/lib/services/video/clipper/editor/renderer.js +83 -0
  330. package/dist/lib/services/video/clipper/editor/renderer.js.map +1 -0
  331. package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts +6 -0
  332. package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts.map +1 -0
  333. package/dist/lib/services/video/clipper/editor/subtitleBuilder.js +155 -0
  334. package/dist/lib/services/video/clipper/editor/subtitleBuilder.js.map +1 -0
  335. package/dist/lib/services/video/clipper/editor/textEscape.d.ts +3 -0
  336. package/dist/lib/services/video/clipper/editor/textEscape.d.ts.map +1 -0
  337. package/dist/lib/services/video/clipper/editor/textEscape.js +11 -0
  338. package/dist/lib/services/video/clipper/editor/textEscape.js.map +1 -0
  339. package/dist/lib/services/video/clipper/index.d.ts +11 -7
  340. package/dist/lib/services/video/clipper/index.d.ts.map +1 -1
  341. package/dist/lib/services/video/clipper/index.js +38 -26
  342. package/dist/lib/services/video/clipper/index.js.map +1 -1
  343. package/dist/lib/services/video/index.d.ts +2 -2
  344. package/dist/lib/services/video/index.d.ts.map +1 -1
  345. package/dist/lib/services/video/source/index.d.ts +2 -2
  346. package/dist/lib/services/video/source/index.d.ts.map +1 -1
  347. package/dist/lib/services/video/source/youtube/catalog.d.ts +1 -17
  348. package/dist/lib/services/video/source/youtube/catalog.d.ts.map +1 -1
  349. package/dist/lib/services/video/source/youtube/catalog.js.map +1 -1
  350. package/dist/lib/services/video/source/youtube/downloader.d.ts.map +1 -1
  351. package/dist/lib/services/video/source/youtube/downloader.js +17 -19
  352. package/dist/lib/services/video/source/youtube/downloader.js.map +1 -1
  353. package/dist/lib/services/video/source/youtube/metadata.d.ts.map +1 -1
  354. package/dist/lib/services/video/source/youtube/metadata.js +3 -3
  355. package/dist/lib/services/video/source/youtube/metadata.js.map +1 -1
  356. package/dist/lib/services/video/source/youtube/subtitles.d.ts +1 -30
  357. package/dist/lib/services/video/source/youtube/subtitles.d.ts.map +1 -1
  358. package/dist/lib/services/video/source/youtube/subtitles.js +4 -4
  359. package/dist/lib/services/video/source/youtube/subtitles.js.map +1 -1
  360. package/dist/lib/types/analyzer.d.ts +23 -0
  361. package/dist/lib/types/analyzer.d.ts.map +1 -1
  362. package/dist/lib/types/analyzer.js +5 -1
  363. package/dist/lib/types/analyzer.js.map +1 -1
  364. package/dist/lib/types/audio.d.ts +28 -0
  365. package/dist/lib/types/audio.d.ts.map +1 -1
  366. package/dist/lib/types/audio.js +10 -0
  367. package/dist/lib/types/audio.js.map +1 -1
  368. package/dist/lib/types/cache.d.ts +34 -0
  369. package/dist/lib/types/cache.d.ts.map +1 -1
  370. package/dist/lib/types/cache.js.map +1 -1
  371. package/dist/lib/types/clipEdit.d.ts +232 -0
  372. package/dist/lib/types/clipEdit.d.ts.map +1 -0
  373. package/dist/lib/types/clipEdit.js +68 -0
  374. package/dist/lib/types/clipEdit.js.map +1 -0
  375. package/dist/lib/types/config.d.ts +39 -3
  376. package/dist/lib/types/config.d.ts.map +1 -1
  377. package/dist/lib/types/config.js +32 -1
  378. package/dist/lib/types/config.js.map +1 -1
  379. package/dist/lib/types/index.d.ts +11 -8
  380. package/dist/lib/types/index.d.ts.map +1 -1
  381. package/dist/lib/types/index.js +3 -1
  382. package/dist/lib/types/index.js.map +1 -1
  383. package/dist/lib/types/pipeline.d.ts +22 -10
  384. package/dist/lib/types/pipeline.d.ts.map +1 -1
  385. package/dist/lib/types/video.d.ts +17 -0
  386. package/dist/lib/types/video.d.ts.map +1 -1
  387. package/dist/lib/types/video.js.map +1 -1
  388. package/dist/lib/types/youtube.d.ts +51 -0
  389. package/dist/lib/types/youtube.d.ts.map +1 -1
  390. package/dist/lib/utils/logger.d.ts +20 -6
  391. package/dist/lib/utils/logger.d.ts.map +1 -1
  392. package/dist/lib/utils/logger.js +59 -30
  393. package/dist/lib/utils/logger.js.map +1 -1
  394. package/dist/lib/utils/modelFactory.d.ts +1 -6
  395. package/dist/lib/utils/modelFactory.d.ts.map +1 -1
  396. package/dist/lib/utils/modelFactory.js.map +1 -1
  397. package/dist/lib/utils/pythonBin.js +1 -1
  398. package/dist/lib/utils/pythonBin.js.map +1 -1
  399. package/dist/lib/utils/retryAsync.d.ts.map +1 -1
  400. package/dist/lib/utils/retryAsync.js +1 -2
  401. package/dist/lib/utils/retryAsync.js.map +1 -1
  402. package/dist/lib/utils/textScale.d.ts +14 -0
  403. package/dist/lib/utils/textScale.d.ts.map +1 -0
  404. package/dist/lib/utils/textScale.js +14 -0
  405. package/dist/lib/utils/textScale.js.map +1 -0
  406. package/package.json +3 -1
  407. package/dist/app/web/lib/configStore.d.ts.map +0 -1
  408. package/dist/app/web/lib/configStore.js.map +0 -1
  409. package/dist/app/web/lib/toastStore.d.ts.map +0 -1
  410. package/dist/lib/services/audio/source/types.d.ts +0 -5
  411. package/dist/lib/services/audio/source/types.d.ts.map +0 -1
  412. package/dist/lib/services/audio/source/types.js +0 -2
  413. package/dist/lib/services/audio/source/types.js.map +0 -1
  414. package/dist/lib/services/video/source/types.d.ts +0 -12
  415. package/dist/lib/services/video/source/types.d.ts.map +0 -1
  416. package/dist/lib/services/video/source/types.js +0 -2
  417. package/dist/lib/services/video/source/types.js.map +0 -1
  418. package/dist/lib/utils/cache.d.ts.map +0 -1
  419. package/dist/lib/utils/cache.js.map +0 -1
  420. package/dist/lib/utils/cacheBackend.d.ts +0 -40
  421. package/dist/lib/utils/cacheBackend.d.ts.map +0 -1
  422. package/dist/lib/utils/cacheBackend.js.map +0 -1
  423. package/dist/lib/utils/cacheFactory.d.ts.map +0 -1
  424. package/dist/lib/utils/cacheFactory.js.map +0 -1
  425. package/dist/lib/utils/fileCacheBackend.d.ts.map +0 -1
  426. package/dist/lib/utils/fileCacheBackend.js.map +0 -1
  427. package/dist/lib/utils/mongoCacheBackend.d.ts.map +0 -1
  428. package/dist/lib/utils/mongoCacheBackend.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import type { ConfigRegistryResponse } from '../../../lib/config/registry.js';
1
+ import type { ConfigRegistryResponse } from '../../../../lib/types/config.js';
2
2
  export declare const configValues: import("svelte/store").Writable<Record<string, unknown>>;
3
3
  export declare const configRegistry: import("svelte/store").Writable<ConfigRegistryResponse | null>;
4
4
  export declare const configLoaded: import("svelte/store").Writable<boolean>;
5
5
  export declare function initConfig(): Promise<void>;
6
6
  export declare function updateField(key: string, value: unknown): void;
7
7
  export declare function resetToDefaults(): void;
8
- //# sourceMappingURL=configStore.d.ts.map
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGnE,eAAO,MAAM,YAAY,0DAAwC,CAAC;AAClE,eAAO,MAAM,cAAc,gEAAgD,CAAC;AAC5E,eAAO,MAAM,YAAY,0CAAkB,CAAC;AAwD5C,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAI7D;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
@@ -1,6 +1,6 @@
1
1
  import { writable, get } from 'svelte/store';
2
- import { apiFetch, readApiError } from './api.js';
3
- import { showToast } from './toastStore.js';
2
+ import { apiFetch, readApiError } from '../api.js';
3
+ import { showToast } from './toast.js';
4
4
  export const configValues = writable({});
5
5
  export const configRegistry = writable(null);
6
6
  export const configLoaded = writable(false);
@@ -64,4 +64,4 @@ export function updateField(key, value) {
64
64
  export function resetToDefaults() {
65
65
  void initConfig();
66
66
  }
67
- //# sourceMappingURL=configStore.js.map
67
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAgC,IAAI,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AACpC,IAAI,SAAS,GAAyC,IAAI,CAAC;AAE3D,SAAS,YAAY;IACnB,IAAI,SAAS;QAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAC1B,KAAK,eAAe,EAAE,CAAC;IACzB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IACE,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,UAAU,IAAK,KAAiC,EAChD,CAAC;YACD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAY,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAoB,aAAa,CAAC,CAAC;IAC9E,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,KAAc;IACrD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,KAAK,UAAU,EAAE,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const theme: import("svelte/store").Writable<"light" | "dark">;
2
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/theme.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,mDAAyD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { browser } from '$app/environment';
2
+ import { writable } from 'svelte/store';
3
+ const stored = browser ? (localStorage.getItem('theme') ?? 'light') : 'light';
4
+ export const theme = writable(stored);
5
+ if (browser) {
6
+ document.documentElement.dataset.theme = stored === 'dark' ? 'dark' : '';
7
+ theme.subscribe((value) => {
8
+ localStorage.setItem('theme', value);
9
+ document.documentElement.dataset.theme = value === 'dark' ? 'dark' : '';
10
+ });
11
+ }
12
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAE9E,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAmB,MAA0B,CAAC,CAAC;AAE5E,IAAI,OAAO,EAAE,CAAC;IACZ,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,9 +1,6 @@
1
- export interface Toast {
2
- id: string;
3
- message: string;
4
- type: 'success' | 'error';
5
- }
1
+ import type { Toast } from '../../types/web.js';
2
+ export type { Toast };
6
3
  export declare const toasts: import("svelte/store").Writable<Toast[]>;
7
4
  export declare function showToast(type: Toast['type'], message: string, duration?: number): void;
8
5
  export declare function dismissToast(id: string): void;
9
- //# sourceMappingURL=toastStore.d.ts.map
6
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/toast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,eAAO,MAAM,MAAM,0CAAwB,CAAC;AAI5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,IAAI,CAOrF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE7C"}
@@ -11,4 +11,4 @@ export function showToast(type, message, duration = 5000) {
11
11
  export function dismissToast(id) {
12
12
  toasts.update((list) => list.filter((t) => t.id !== id));
13
13
  }
14
- //# sourceMappingURL=toastStore.js.map
14
+ //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toastStore.js","sourceRoot":"","sources":["../../../../src/app/web/lib/toastStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQxC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAC;AAE5C,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,MAAM,UAAU,SAAS,CAAC,IAAmB,EAAE,OAAe,EAAE,QAAQ,GAAG,IAAI;IAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAC;AAE5C,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,MAAM,UAAU,SAAS,CAAC,IAAmB,EAAE,OAAe,EAAE,QAAQ,GAAG,IAAI;IAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { VideoDetails } from '../../../../lib/types/index.js';
2
+ import type { TranscriptBundle, ClipPlan, ClipArtifact } from '../../types/analysis.js';
3
+ import type { VideoStore, VideoEntry, AnalysisEntry } from '../../types/videoStore.js';
4
+ export declare const videoStore: import("svelte/store").Readable<VideoStore>;
5
+ export declare function setVideo(videoId: string, video: VideoDetails): void;
6
+ export declare function setTranscript(videoId: string, transcript: TranscriptBundle): void;
7
+ export declare function clearTranscript(videoId: string): void;
8
+ export declare function setAnalysisPlan(videoId: string, analysisId: string, plan: ClipPlan): void;
9
+ export declare function setClips(videoId: string, analysisId: string, clips: ClipArtifact[]): void;
10
+ export declare function clearAnalysis(videoId: string): void;
11
+ export type { VideoStore, VideoEntry, AnalysisEntry };
12
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/video.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI1F,eAAO,MAAM,UAAU,6CAA8B,CAAC;AAuBtD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAMnE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAMjF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAMzF;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAMzF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { writable, derived } from 'svelte/store';
2
+ const _store = writable({});
3
+ export const videoStore = derived(_store, ($s) => $s);
4
+ function ensureVideoEntry(videoId) {
5
+ _store.update((s) => {
6
+ if (!s[videoId]) {
7
+ s[videoId] = { video: null, transcript: null, analyses: {} };
8
+ }
9
+ return s;
10
+ });
11
+ }
12
+ function ensureAnalysisEntry(videoId, analysisId) {
13
+ _store.update((s) => {
14
+ if (!s[videoId]) {
15
+ s[videoId] = { video: null, transcript: null, analyses: {} };
16
+ }
17
+ if (!s[videoId].analyses[analysisId]) {
18
+ s[videoId].analyses[analysisId] = { plan: null, clips: [] };
19
+ }
20
+ return s;
21
+ });
22
+ }
23
+ export function setVideo(videoId, video) {
24
+ ensureVideoEntry(videoId);
25
+ _store.update((s) => {
26
+ s[videoId].video = video;
27
+ return s;
28
+ });
29
+ }
30
+ export function setTranscript(videoId, transcript) {
31
+ ensureVideoEntry(videoId);
32
+ _store.update((s) => {
33
+ s[videoId].transcript = transcript;
34
+ return s;
35
+ });
36
+ }
37
+ export function clearTranscript(videoId) {
38
+ _store.update((s) => {
39
+ if (s[videoId])
40
+ s[videoId].transcript = null;
41
+ return s;
42
+ });
43
+ }
44
+ export function setAnalysisPlan(videoId, analysisId, plan) {
45
+ ensureAnalysisEntry(videoId, analysisId);
46
+ _store.update((s) => {
47
+ s[videoId].analyses[analysisId].plan = plan;
48
+ return s;
49
+ });
50
+ }
51
+ export function setClips(videoId, analysisId, clips) {
52
+ ensureAnalysisEntry(videoId, analysisId);
53
+ _store.update((s) => {
54
+ s[videoId].analyses[analysisId].clips = clips;
55
+ return s;
56
+ });
57
+ }
58
+ export function clearAnalysis(videoId) {
59
+ _store.update((s) => {
60
+ if (s[videoId])
61
+ s[videoId].analyses = {};
62
+ return s;
63
+ });
64
+ }
65
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../../../src/app/web/lib/stores/video.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { WordToken } from '../../../lib/types/clipEdit.js';
2
+ export declare function wordsFromText(text: string, startSec: number, endSec: number, prev?: WordToken[]): WordToken[];
3
+ export declare function shiftWords(words: WordToken[], delta: number): WordToken[];
4
+ export declare function rescaleWords(words: WordToken[], oldStart: number, oldEnd: number, newStart: number, newEnd: number): WordToken[];
5
+ //# sourceMappingURL=subtitleTiming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtitleTiming.d.ts","sourceRoot":"","sources":["../../../../src/app/web/lib/subtitleTiming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,SAAS,EAAO,GACrB,SAAS,EAAE,CAmBb;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAOzE;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,SAAS,EAAE,CAWb"}
@@ -0,0 +1,45 @@
1
+ export function wordsFromText(text, startSec, endSec, prev = []) {
2
+ const tokens = text.trim().split(/\s+/).filter(Boolean);
3
+ if (tokens.length === 0)
4
+ return [];
5
+ const dur = endSec - startSec;
6
+ if (dur <= 0) {
7
+ return tokens.map((t, i) => ({
8
+ text: t,
9
+ startSec,
10
+ endSec,
11
+ highlight: prev[i]?.highlight ?? false,
12
+ }));
13
+ }
14
+ const step = dur / tokens.length;
15
+ return tokens.map((t, i) => ({
16
+ text: t,
17
+ startSec: startSec + i * step,
18
+ endSec: startSec + (i + 1) * step,
19
+ highlight: prev[i]?.highlight ?? false,
20
+ }));
21
+ }
22
+ export function shiftWords(words, delta) {
23
+ if (delta === 0 || words.length === 0)
24
+ return words;
25
+ return words.map((w) => ({
26
+ ...w,
27
+ startSec: Math.max(0, w.startSec + delta),
28
+ endSec: Math.max(0, w.endSec + delta),
29
+ }));
30
+ }
31
+ export function rescaleWords(words, oldStart, oldEnd, newStart, newEnd) {
32
+ if (words.length === 0)
33
+ return words;
34
+ const oldDur = oldEnd - oldStart;
35
+ const newDur = newEnd - newStart;
36
+ if (oldDur <= 0 || newDur <= 0)
37
+ return words;
38
+ const scale = newDur / oldDur;
39
+ return words.map((w) => ({
40
+ ...w,
41
+ startSec: newStart + (w.startSec - oldStart) * scale,
42
+ endSec: newStart + (w.endSec - oldStart) * scale,
43
+ }));
44
+ }
45
+ //# sourceMappingURL=subtitleTiming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtitleTiming.js","sourceRoot":"","sources":["../../../../src/app/web/lib/subtitleTiming.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,QAAgB,EAChB,MAAc,EACd,OAAoB,EAAE;IAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9B,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC;YACP,QAAQ;YACR,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,KAAK;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI;QAC7B,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;QACjC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,KAAK;KACvC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAkB,EAAE,KAAa;IAC1D,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC;QACJ,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACzC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;KACtC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAkB,EAClB,QAAgB,EAChB,MAAc,EACd,QAAgB,EAChB,MAAc;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC;QACJ,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,KAAK;QACpD,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,KAAK;KACjD,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,19 +1,6 @@
1
- import type { UploadArtifact } from '../types/publish.js';
2
- export type UploadQueueStatus = 'queued' | 'uploading' | 'uploaded' | 'failed';
3
- export interface UploadQueueItem {
4
- clipArtifactId: string;
5
- title: string;
6
- status: UploadQueueStatus;
7
- youtubeUrl?: string;
8
- youtubeVideoId?: string;
9
- error?: string;
10
- }
11
- export interface UploadStreamCallbacks {
12
- onUploadStarted?: (clipArtifactId: string) => void;
13
- onUploadFinished?: (upload: UploadArtifact) => void;
14
- onUploadFailed?: (upload: UploadArtifact) => void;
15
- onComplete?: (uploads: UploadArtifact[]) => void;
16
- onError?: (message: string) => void;
17
- }
1
+ import type { UploadArtifact, UploadQueueStatus } from '../types/publish.js';
2
+ export type { UploadQueueStatus };
3
+ import type { UploadQueueItem, UploadStreamCallbacks } from '../types/upload.js';
4
+ export type { UploadQueueItem, UploadStreamCallbacks };
18
5
  export declare function streamUploads(analysisId: string, callbacks: UploadStreamCallbacks): Promise<UploadArtifact[]>;
19
6
  //# sourceMappingURL=uploadStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadStream.d.ts","sourceRoot":"","sources":["../../../../src/app/web/lib/uploadStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,cAAc,EAAE,CAAC,CAqD3B"}
1
+ {"version":3,"file":"uploadStream.d.ts","sourceRoot":"","sources":["../../../../src/app/web/lib/uploadStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;AAEvD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,cAAc,EAAE,CAAC,CAqD3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"uploadStream.js","sourceRoot":"","sources":["../../../../src/app/web/lib/uploadStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uploadStream.js","sourceRoot":"","sources":["../../../../src/app/web/lib/uploadStream.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,4 @@
1
- export type VideoWorkflowStepId = 'analyze' | 'clip' | 'connect' | 'prepare' | 'publish';
2
- export interface VideoWorkflowStep {
3
- id: VideoWorkflowStepId;
4
- label: string;
5
- number: number;
6
- href?: string;
7
- status: 'current' | 'complete' | 'upcoming' | 'locked';
8
- }
1
+ import type { VideoWorkflowStepId, VideoWorkflowStep } from '../types/workflow.js';
2
+ export type { VideoWorkflowStepId, VideoWorkflowStep };
9
3
  export declare function buildVideoWorkflowSteps(videoId: string | undefined, analysisId: string | undefined, pathname: string): VideoWorkflowStep[];
10
4
  //# sourceMappingURL=videoWorkflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"videoWorkflow.d.ts","sourceRoot":"","sources":["../../../../src/app/web/lib/videoWorkflow.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,mBAAmB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;CACxD;AAID,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,GACf,iBAAiB,EAAE,CAmBrB"}
1
+ {"version":3,"file":"videoWorkflow.d.ts","sourceRoot":"","sources":["../../../../src/app/web/lib/videoWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAIvD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,GACf,iBAAiB,EAAE,CAmBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"videoWorkflow.js","sourceRoot":"","sources":["../../../../src/app/web/lib/videoWorkflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"videoWorkflow.js","sourceRoot":"","sources":["../../../../src/app/web/lib/videoWorkflow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../../src/app/web/routes/api/analysis/transcript/+server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,IAAI,EAAE,cA0ElB,CAAC"}
1
+ {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../../src/app/web/routes/api/analysis/transcript/+server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,IAAI,EAAE,cAmGlB,CAAC"}
@@ -18,13 +18,34 @@ export const POST = async (event) => {
18
18
  reqDone(500);
19
19
  return jsonError(500, 'Failed to parse request.', error instanceof Error ? error.message : String(error));
20
20
  }
21
+ const abortSignal = event.request.signal;
21
22
  const stream = new ReadableStream({
22
23
  async start(controller) {
23
24
  const encoder = new TextEncoder();
25
+ let closed = false;
24
26
  function send(eventName, data) {
27
+ if (closed)
28
+ return;
25
29
  logEmittedAnalysisEvent(event.locals.requestId, eventName, data);
26
- controller.enqueue(encoder.encode(serializeSSE(eventName, data)));
30
+ try {
31
+ controller.enqueue(encoder.encode(serializeSSE(eventName, data)));
32
+ }
33
+ catch {
34
+ // controller was closed — ignore
35
+ }
27
36
  }
37
+ function closeOnce() {
38
+ if (closed)
39
+ return;
40
+ closed = true;
41
+ try {
42
+ controller.close();
43
+ }
44
+ catch {
45
+ // already closed
46
+ }
47
+ }
48
+ abortSignal.addEventListener('abort', closeOnce);
28
49
  const callbacks = {
29
50
  onChunkStarted: (chunkIndex) => {
30
51
  send('chunk_started', { chunkIndex });
@@ -46,16 +67,21 @@ export const POST = async (event) => {
46
67
  },
47
68
  };
48
69
  try {
49
- const plan = await analyzeTranscriptForWeb(input, event.locals.config, callbacks, event.locals.requestId);
70
+ const plan = await analyzeTranscriptForWeb(input, event.locals.config, callbacks, event.locals.requestId, abortSignal);
50
71
  send('analysis_complete', { plan });
51
72
  }
52
73
  catch (error) {
53
- send('error', {
54
- message: error instanceof Error ? error.message : String(error),
55
- });
74
+ if (abortSignal.aborted) {
75
+ // Client aborted do not emit an error event, just close.
76
+ }
77
+ else {
78
+ send('error', {
79
+ message: error instanceof Error ? error.message : String(error),
80
+ });
81
+ }
56
82
  }
57
83
  finally {
58
- controller.close();
84
+ closeOnce();
59
85
  }
60
86
  },
61
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../../src/app/web/routes/api/analysis/transcript/+server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../../src/app/web/routes/api/analysis/transcript/+server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RequestHandler } from '@sveltejs/kit';
2
+ export declare const DELETE: RequestHandler;
3
+ //# sourceMappingURL=+server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/app/web/routes/api/cache/videos/[videoId]/analysis/+server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,eAAO,MAAM,MAAM,EAAE,cAiBpB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { errorMessage, jsonError, jsonOk } from '../../../../../../lib/services/http/responses.js';
2
+ import { clearVideoAnalysisManifest } from '../../../../../../../../lib/services/cache/manifest.js';
3
+ import { log } from '../../../../../../../../lib/utils/logger.js';
4
+ export const DELETE = async ({ params, locals }) => {
5
+ const videoId = params.videoId ?? '';
6
+ const reqDone = log.request('DELETE', `/api/cache/videos/${videoId}/analysis`, locals.requestId);
7
+ if (!videoId) {
8
+ reqDone(400);
9
+ return jsonError(400, 'Missing videoId.');
10
+ }
11
+ try {
12
+ const result = await clearVideoAnalysisManifest(locals.config.CACHE_DIR, videoId);
13
+ reqDone(200);
14
+ return jsonOk({ ok: true, ...result });
15
+ }
16
+ catch (error) {
17
+ reqDone(500);
18
+ return jsonError(500, 'Failed to clear analysis cache.', errorMessage(error));
19
+ }
20
+ };
21
+ //# sourceMappingURL=+server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../../../../src/app/web/routes/api/cache/videos/[videoId]/analysis/+server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAmB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,OAAO,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjG,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,iCAAiC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RequestHandler } from '@sveltejs/kit';
2
+ export declare const DELETE: RequestHandler;
3
+ //# sourceMappingURL=+server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/app/web/routes/api/cache/videos/[videoId]/transcript/+server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,eAAO,MAAM,MAAM,EAAE,cAqBpB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { errorMessage, jsonError, jsonOk } from '../../../../../../lib/services/http/responses.js';
2
+ import { clearVideoTranscriptCache } from '../../../../../../../../lib/services/cache/manifest.js';
3
+ import { log } from '../../../../../../../../lib/utils/logger.js';
4
+ export const DELETE = async ({ params, locals }) => {
5
+ const videoId = params.videoId ?? '';
6
+ const reqDone = log.request('DELETE', `/api/cache/videos/${videoId}/transcript`, locals.requestId);
7
+ if (!videoId) {
8
+ reqDone(400);
9
+ return jsonError(400, 'Missing videoId.');
10
+ }
11
+ try {
12
+ const result = await clearVideoTranscriptCache(locals.config.CACHE_DIR, videoId);
13
+ reqDone(200);
14
+ return jsonOk({ ok: true, ...result });
15
+ }
16
+ catch (error) {
17
+ reqDone(500);
18
+ return jsonError(500, 'Failed to clear transcript cache.', errorMessage(error));
19
+ }
20
+ };
21
+ //# sourceMappingURL=+server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../../../../src/app/web/routes/api/cache/videos/[videoId]/transcript/+server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAmB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CACzB,QAAQ,EACR,qBAAqB,OAAO,aAAa,EACzC,MAAM,CAAC,SAAS,CACjB,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,mCAAmC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/routes/api/clips/+server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,IAAI,EAAE,cAsBlB,CAAC"}
1
+ {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/routes/api/clips/+server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,IAAI,EAAE,cAyBlB,CAAC"}
@@ -7,9 +7,16 @@ export const POST = async (event) => {
7
7
  const reqDone = log.request('POST', '/api/clips', event.locals.requestId);
8
8
  try {
9
9
  const input = await parseJsonBody(event, CreateClipsRequestSchema);
10
- log.info(`${event.locals.requestId} [clips] [api] | analysisId=${input.analysisId} videoId=${input.videoId} segments=${input.segments.length}`);
10
+ log.info('POST /api/clips', 'clip generation request', event.locals.requestId, {
11
+ analysisId: input.analysisId,
12
+ videoId: input.videoId,
13
+ segments: input.segments.length,
14
+ });
11
15
  const clips = await generateWebClips(input, event.locals.config, event.locals.requestId);
12
- log.info(`${event.locals.requestId} [clips] [api-result] | analysisId=${input.analysisId} generated=${clips.length}`);
16
+ log.info('POST /api/clips', 'clips generated', event.locals.requestId, {
17
+ analysisId: input.analysisId,
18
+ generated: clips.length,
19
+ });
13
20
  reqDone(200);
14
21
  return jsonOk({ clips });
15
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../src/app/web/routes/api/clips/+server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EACL,YAAY,EACZ,SAAS,EACT,MAAM,EACN,aAAa,EACb,cAAc,GACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,IAAI,GAAmB,KAAK,EAAE,KAAK,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CACN,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,+BAA+B,KAAK,CAAC,UAAU,YAAY,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CACtI,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzF,GAAG,CAAC,IAAI,CACN,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,sCAAsC,KAAK,CAAC,UAAU,cAAc,KAAK,CAAC,MAAM,EAAE,CAC5G,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,SAAS,CAAC,GAAG,EAAE,kCAAkC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,2BAA2B,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"+server.js","sourceRoot":"","sources":["../../../../../../src/app/web/routes/api/clips/+server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EACL,YAAY,EACZ,SAAS,EACT,MAAM,EACN,aAAa,EACb,cAAc,GACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,IAAI,GAAmB,KAAK,EAAE,KAAK,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;YAC7E,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;SAChC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzF,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,SAAS,CAAC,GAAG,EAAE,kCAAkC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,2BAA2B,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RequestHandler } from '@sveltejs/kit';
2
+ export declare const GET: RequestHandler;
3
+ export declare const PUT: RequestHandler;
4
+ //# sourceMappingURL=+server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+server.d.ts","sourceRoot":"","sources":["../../../../../../../../src/app/web/routes/api/clips/[clipId]/edits/+server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,GAAG,EAAE,cAmBjB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,cAuCjB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { ClipEditsSchema } from '../../../../../../../lib/types/clipEdit.js';
2
+ import { ClipParamsSchema } from '../../../../../types/analysis.js';
3
+ import { loadClipEdits, saveClipEdits } from '../../../../../lib/services/clipping/clipEditService.js';
4
+ import { errorMessage, jsonError, jsonOk, zodErrorDetail, } from '../../../../../lib/services/http/responses.js';
5
+ import { log } from '../../../../../../../lib/utils/logger.js';
6
+ export const GET = async ({ params, locals }) => {
7
+ const reqDone = log.request('GET', '/api/clips/[clipId]/edits', locals.requestId, {
8
+ clipId: params.clipId,
9
+ });
10
+ const parsed = ClipParamsSchema.safeParse(params);
11
+ if (!parsed.success) {
12
+ reqDone(400);
13
+ return jsonError(400, 'Invalid clip id.', zodErrorDetail(parsed.error));
14
+ }
15
+ try {
16
+ const edits = await loadClipEdits(locals.config.OUTPUT_DIR, parsed.data.clipId);
17
+ reqDone(200);
18
+ return jsonOk({ edits });
19
+ }
20
+ catch (error) {
21
+ reqDone(500);
22
+ return jsonError(500, 'Failed to load clip edits.', errorMessage(error));
23
+ }
24
+ };
25
+ export const PUT = async (event) => {
26
+ const reqDone = log.request('PUT', '/api/clips/[clipId]/edits', event.locals.requestId, {
27
+ clipId: event.params.clipId,
28
+ });
29
+ const parsedParams = ClipParamsSchema.safeParse(event.params);
30
+ if (!parsedParams.success) {
31
+ reqDone(400);
32
+ return jsonError(400, 'Invalid clip id.', zodErrorDetail(parsedParams.error));
33
+ }
34
+ let rawBody;
35
+ try {
36
+ rawBody = await event.request.json();
37
+ }
38
+ catch {
39
+ reqDone(400);
40
+ return jsonError(400, 'Request body must be valid JSON.');
41
+ }
42
+ const parsedBody = ClipEditsSchema.safeParse(rawBody);
43
+ if (!parsedBody.success) {
44
+ reqDone(400);
45
+ return jsonError(400, 'Invalid edits payload.', zodErrorDetail(parsedBody.error));
46
+ }
47
+ if (parsedBody.data.clipId !== parsedParams.data.clipId) {
48
+ reqDone(400);
49
+ return jsonError(400, 'clipId in body does not match URL parameter.');
50
+ }
51
+ try {
52
+ const saved = await saveClipEdits(event.locals.config.OUTPUT_DIR, parsedBody.data);
53
+ reqDone(200);
54
+ return jsonOk({ edits: saved });
55
+ }
56
+ catch (error) {
57
+ reqDone(500);
58
+ return jsonError(500, 'Failed to save clip edits.', errorMessage(error));
59
+ }
60
+ };
61
+ //# sourceMappingURL=+server.js.map