@hyperframes/engine 0.8.145 → 0.8.147

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 (265) hide show
  1. package/dist/config.d.ts +0 -1
  2. package/dist/config.js +1 -2
  3. package/dist/index.d.ts +1 -2
  4. package/dist/index.js +1 -2
  5. package/dist/services/__fixtures__/jpeg.d.ts +0 -1
  6. package/dist/services/__fixtures__/jpeg.js +0 -1
  7. package/dist/services/audioFxRender.d.ts +0 -1
  8. package/dist/services/audioFxRender.js +0 -1
  9. package/dist/services/audioMixer.d.ts +0 -1
  10. package/dist/services/audioMixer.js +0 -1
  11. package/dist/services/audioMixer.types.d.ts +0 -1
  12. package/dist/services/audioMixer.types.js +0 -1
  13. package/dist/services/audioVolumeEnvelope.d.ts +0 -1
  14. package/dist/services/audioVolumeEnvelope.js +0 -1
  15. package/dist/services/browserLeasePool.d.ts +0 -1
  16. package/dist/services/browserLeasePool.js +0 -1
  17. package/dist/services/browserManager.d.ts +0 -1
  18. package/dist/services/browserManager.js +2 -3
  19. package/dist/services/captureFailure.d.ts +0 -1
  20. package/dist/services/captureFailure.js +0 -1
  21. package/dist/services/captureWarning.d.ts +0 -1
  22. package/dist/services/captureWarning.js +0 -1
  23. package/dist/services/chromeHostCeiling.d.ts +0 -1
  24. package/dist/services/chromeHostCeiling.js +0 -1
  25. package/dist/services/chromeMemorySampler.d.ts +0 -1
  26. package/dist/services/chromeMemorySampler.js +0 -1
  27. package/dist/services/chunkEncoder.d.ts +0 -1
  28. package/dist/services/chunkEncoder.js +0 -1
  29. package/dist/services/chunkEncoder.types.d.ts +0 -1
  30. package/dist/services/chunkEncoder.types.js +0 -1
  31. package/dist/services/drawElementCaptureError.d.ts +0 -1
  32. package/dist/services/drawElementCaptureError.js +0 -1
  33. package/dist/services/drawElementService.d.ts +0 -1
  34. package/dist/services/drawElementService.js +1 -2
  35. package/dist/services/extractedFrameIndex.d.ts +0 -1
  36. package/dist/services/extractedFrameIndex.js +0 -1
  37. package/dist/services/extractionCache.d.ts +3 -1
  38. package/dist/services/extractionCache.js +17 -4
  39. package/dist/services/fileServer.d.ts +0 -1
  40. package/dist/services/fileServer.js +0 -1
  41. package/dist/services/frameCapture.d.ts +5 -2
  42. package/dist/services/frameCapture.js +44 -33
  43. package/dist/services/hdrCapture.d.ts +0 -1
  44. package/dist/services/hdrCapture.js +0 -1
  45. package/dist/services/mediaHidden.d.ts +0 -1
  46. package/dist/services/mediaHidden.js +0 -1
  47. package/dist/services/mediaRenderIdBridge.d.ts +0 -1
  48. package/dist/services/mediaRenderIdBridge.js +0 -1
  49. package/dist/services/mediaTimelineWindow.d.ts +0 -1
  50. package/dist/services/mediaTimelineWindow.js +0 -1
  51. package/dist/services/motionBlur.d.ts +0 -1
  52. package/dist/services/motionBlur.js +0 -1
  53. package/dist/services/pageNavigationTimeoutErrorHint.d.ts +0 -1
  54. package/dist/services/pageNavigationTimeoutErrorHint.js +0 -1
  55. package/dist/services/parallelCoordinator.d.ts +0 -1
  56. package/dist/services/parallelCoordinator.js +2 -3
  57. package/dist/services/protocolTimeoutErrorHint.d.ts +0 -1
  58. package/dist/services/protocolTimeoutErrorHint.js +0 -1
  59. package/dist/services/referenceResolver.d.ts +0 -1
  60. package/dist/services/referenceResolver.js +0 -1
  61. package/dist/services/screenshotService.d.ts +0 -1
  62. package/dist/services/screenshotService.js +19 -20
  63. package/dist/services/streamingEncoder.d.ts +0 -1
  64. package/dist/services/streamingEncoder.js +0 -1
  65. package/dist/services/systemMemory.d.ts +0 -1
  66. package/dist/services/systemMemory.js +2 -3
  67. package/dist/services/threeDProjection.d.ts +0 -1
  68. package/dist/services/threeDProjection.js +2 -3
  69. package/dist/services/videoFrameExtractor.d.ts +3 -1
  70. package/dist/services/videoFrameExtractor.js +37 -7
  71. package/dist/services/videoFrameInjector.d.ts +0 -1
  72. package/dist/services/videoFrameInjector.js +0 -1
  73. package/dist/services/vp9Options.d.ts +0 -1
  74. package/dist/services/vp9Options.js +0 -1
  75. package/dist/services/wavChunks.d.ts +0 -1
  76. package/dist/services/wavChunks.js +0 -1
  77. package/dist/types.d.ts +0 -1
  78. package/dist/types.js +0 -1
  79. package/dist/utils/alphaBlit.d.ts +0 -1
  80. package/dist/utils/alphaBlit.js +0 -1
  81. package/dist/utils/alphaPlaneProbe.d.ts +0 -1
  82. package/dist/utils/alphaPlaneProbe.js +0 -1
  83. package/dist/utils/assertSwiftShader.d.ts +0 -1
  84. package/dist/utils/assertSwiftShader.js +0 -1
  85. package/dist/utils/concurrencyLimit.d.ts +0 -1
  86. package/dist/utils/concurrencyLimit.js +0 -1
  87. package/dist/utils/crc32.d.ts +0 -1
  88. package/dist/utils/crc32.js +0 -1
  89. package/dist/utils/evenDimensions.d.ts +0 -1
  90. package/dist/utils/evenDimensions.js +0 -1
  91. package/dist/utils/ffmpegBinaries.d.ts +0 -1
  92. package/dist/utils/ffmpegBinaries.js +0 -1
  93. package/dist/utils/ffprobe.d.ts +0 -1
  94. package/dist/utils/ffprobe.js +0 -1
  95. package/dist/utils/gpuEncoder.d.ts +0 -1
  96. package/dist/utils/gpuEncoder.js +0 -1
  97. package/dist/utils/gpuParityDiff.d.ts +0 -1
  98. package/dist/utils/gpuParityDiff.js +4 -5
  99. package/dist/utils/hdr.d.ts +0 -1
  100. package/dist/utils/hdr.js +1 -2
  101. package/dist/utils/htmlTemplate.d.ts +0 -1
  102. package/dist/utils/htmlTemplate.js +0 -1
  103. package/dist/utils/jpegInput.d.ts +0 -1
  104. package/dist/utils/jpegInput.js +0 -1
  105. package/dist/utils/layerCompositor.d.ts +0 -1
  106. package/dist/utils/layerCompositor.js +0 -1
  107. package/dist/utils/managedChildProcess.d.ts +0 -1
  108. package/dist/utils/managedChildProcess.js +0 -1
  109. package/dist/utils/notMediaPayload.d.ts +0 -1
  110. package/dist/utils/notMediaPayload.js +0 -1
  111. package/dist/utils/parityContract.d.ts +0 -1
  112. package/dist/utils/parityContract.js +0 -1
  113. package/dist/utils/processRss.d.ts +0 -1
  114. package/dist/utils/processRss.js +0 -1
  115. package/dist/utils/processTracker.d.ts +0 -1
  116. package/dist/utils/processTracker.js +0 -1
  117. package/dist/utils/psnr.d.ts +0 -1
  118. package/dist/utils/psnr.js +0 -1
  119. package/dist/utils/psnrFilterAvailability.d.ts +0 -1
  120. package/dist/utils/psnrFilterAvailability.js +0 -1
  121. package/dist/utils/readWebGlVendorInfoFromCanvas.d.ts +0 -1
  122. package/dist/utils/readWebGlVendorInfoFromCanvas.js +0 -1
  123. package/dist/utils/renderProvenance.d.ts +0 -1
  124. package/dist/utils/renderProvenance.js +0 -1
  125. package/dist/utils/runFfmpeg.d.ts +0 -1
  126. package/dist/utils/runFfmpeg.js +0 -1
  127. package/dist/utils/sdrCaptureColor.d.ts +0 -1
  128. package/dist/utils/sdrCaptureColor.js +0 -1
  129. package/dist/utils/shaderTransitions.d.ts +0 -1
  130. package/dist/utils/shaderTransitions.js +0 -1
  131. package/dist/utils/urlDownloader.d.ts +0 -1
  132. package/dist/utils/urlDownloader.js +0 -1
  133. package/package.json +3 -3
  134. package/dist/config.d.ts.map +0 -1
  135. package/dist/config.js.map +0 -1
  136. package/dist/index.d.ts.map +0 -1
  137. package/dist/index.js.map +0 -1
  138. package/dist/services/__fixtures__/jpeg.d.ts.map +0 -1
  139. package/dist/services/__fixtures__/jpeg.js.map +0 -1
  140. package/dist/services/audioFxRender.d.ts.map +0 -1
  141. package/dist/services/audioFxRender.js.map +0 -1
  142. package/dist/services/audioMixer.d.ts.map +0 -1
  143. package/dist/services/audioMixer.js.map +0 -1
  144. package/dist/services/audioMixer.types.d.ts.map +0 -1
  145. package/dist/services/audioMixer.types.js.map +0 -1
  146. package/dist/services/audioVolumeEnvelope.d.ts.map +0 -1
  147. package/dist/services/audioVolumeEnvelope.js.map +0 -1
  148. package/dist/services/browserLeasePool.d.ts.map +0 -1
  149. package/dist/services/browserLeasePool.js.map +0 -1
  150. package/dist/services/browserManager.d.ts.map +0 -1
  151. package/dist/services/browserManager.js.map +0 -1
  152. package/dist/services/captureFailure.d.ts.map +0 -1
  153. package/dist/services/captureFailure.js.map +0 -1
  154. package/dist/services/captureWarning.d.ts.map +0 -1
  155. package/dist/services/captureWarning.js.map +0 -1
  156. package/dist/services/chromeHostCeiling.d.ts.map +0 -1
  157. package/dist/services/chromeHostCeiling.js.map +0 -1
  158. package/dist/services/chromeMemorySampler.d.ts.map +0 -1
  159. package/dist/services/chromeMemorySampler.js.map +0 -1
  160. package/dist/services/chunkEncoder.d.ts.map +0 -1
  161. package/dist/services/chunkEncoder.js.map +0 -1
  162. package/dist/services/chunkEncoder.types.d.ts.map +0 -1
  163. package/dist/services/chunkEncoder.types.js.map +0 -1
  164. package/dist/services/drawElementCaptureError.d.ts.map +0 -1
  165. package/dist/services/drawElementCaptureError.js.map +0 -1
  166. package/dist/services/drawElementService.d.ts.map +0 -1
  167. package/dist/services/drawElementService.js.map +0 -1
  168. package/dist/services/extractedFrameIndex.d.ts.map +0 -1
  169. package/dist/services/extractedFrameIndex.js.map +0 -1
  170. package/dist/services/extractionCache.d.ts.map +0 -1
  171. package/dist/services/extractionCache.js.map +0 -1
  172. package/dist/services/fileServer.d.ts.map +0 -1
  173. package/dist/services/fileServer.js.map +0 -1
  174. package/dist/services/frameCapture.d.ts.map +0 -1
  175. package/dist/services/frameCapture.js.map +0 -1
  176. package/dist/services/hdrCapture.d.ts.map +0 -1
  177. package/dist/services/hdrCapture.js.map +0 -1
  178. package/dist/services/mediaHidden.d.ts.map +0 -1
  179. package/dist/services/mediaHidden.js.map +0 -1
  180. package/dist/services/mediaRenderIdBridge.d.ts.map +0 -1
  181. package/dist/services/mediaRenderIdBridge.js.map +0 -1
  182. package/dist/services/mediaTimelineWindow.d.ts.map +0 -1
  183. package/dist/services/mediaTimelineWindow.js.map +0 -1
  184. package/dist/services/motionBlur.d.ts.map +0 -1
  185. package/dist/services/motionBlur.js.map +0 -1
  186. package/dist/services/pageNavigationTimeoutErrorHint.d.ts.map +0 -1
  187. package/dist/services/pageNavigationTimeoutErrorHint.js.map +0 -1
  188. package/dist/services/parallelCoordinator.d.ts.map +0 -1
  189. package/dist/services/parallelCoordinator.js.map +0 -1
  190. package/dist/services/protocolTimeoutErrorHint.d.ts.map +0 -1
  191. package/dist/services/protocolTimeoutErrorHint.js.map +0 -1
  192. package/dist/services/referenceResolver.d.ts.map +0 -1
  193. package/dist/services/referenceResolver.js.map +0 -1
  194. package/dist/services/screenshotService.d.ts.map +0 -1
  195. package/dist/services/screenshotService.js.map +0 -1
  196. package/dist/services/streamingEncoder.d.ts.map +0 -1
  197. package/dist/services/streamingEncoder.js.map +0 -1
  198. package/dist/services/systemMemory.d.ts.map +0 -1
  199. package/dist/services/systemMemory.js.map +0 -1
  200. package/dist/services/threeDProjection.d.ts.map +0 -1
  201. package/dist/services/threeDProjection.js.map +0 -1
  202. package/dist/services/videoFrameExtractor.d.ts.map +0 -1
  203. package/dist/services/videoFrameExtractor.js.map +0 -1
  204. package/dist/services/videoFrameInjector.d.ts.map +0 -1
  205. package/dist/services/videoFrameInjector.js.map +0 -1
  206. package/dist/services/vp9Options.d.ts.map +0 -1
  207. package/dist/services/vp9Options.js.map +0 -1
  208. package/dist/services/wavChunks.d.ts.map +0 -1
  209. package/dist/services/wavChunks.js.map +0 -1
  210. package/dist/types.d.ts.map +0 -1
  211. package/dist/types.js.map +0 -1
  212. package/dist/utils/alphaBlit.d.ts.map +0 -1
  213. package/dist/utils/alphaBlit.js.map +0 -1
  214. package/dist/utils/alphaPlaneProbe.d.ts.map +0 -1
  215. package/dist/utils/alphaPlaneProbe.js.map +0 -1
  216. package/dist/utils/assertSwiftShader.d.ts.map +0 -1
  217. package/dist/utils/assertSwiftShader.js.map +0 -1
  218. package/dist/utils/concurrencyLimit.d.ts.map +0 -1
  219. package/dist/utils/concurrencyLimit.js.map +0 -1
  220. package/dist/utils/crc32.d.ts.map +0 -1
  221. package/dist/utils/crc32.js.map +0 -1
  222. package/dist/utils/evenDimensions.d.ts.map +0 -1
  223. package/dist/utils/evenDimensions.js.map +0 -1
  224. package/dist/utils/ffmpegBinaries.d.ts.map +0 -1
  225. package/dist/utils/ffmpegBinaries.js.map +0 -1
  226. package/dist/utils/ffprobe.d.ts.map +0 -1
  227. package/dist/utils/ffprobe.js.map +0 -1
  228. package/dist/utils/gpuEncoder.d.ts.map +0 -1
  229. package/dist/utils/gpuEncoder.js.map +0 -1
  230. package/dist/utils/gpuParityDiff.d.ts.map +0 -1
  231. package/dist/utils/gpuParityDiff.js.map +0 -1
  232. package/dist/utils/hdr.d.ts.map +0 -1
  233. package/dist/utils/hdr.js.map +0 -1
  234. package/dist/utils/htmlTemplate.d.ts.map +0 -1
  235. package/dist/utils/htmlTemplate.js.map +0 -1
  236. package/dist/utils/jpegInput.d.ts.map +0 -1
  237. package/dist/utils/jpegInput.js.map +0 -1
  238. package/dist/utils/layerCompositor.d.ts.map +0 -1
  239. package/dist/utils/layerCompositor.js.map +0 -1
  240. package/dist/utils/managedChildProcess.d.ts.map +0 -1
  241. package/dist/utils/managedChildProcess.js.map +0 -1
  242. package/dist/utils/notMediaPayload.d.ts.map +0 -1
  243. package/dist/utils/notMediaPayload.js.map +0 -1
  244. package/dist/utils/parityContract.d.ts.map +0 -1
  245. package/dist/utils/parityContract.js.map +0 -1
  246. package/dist/utils/processRss.d.ts.map +0 -1
  247. package/dist/utils/processRss.js.map +0 -1
  248. package/dist/utils/processTracker.d.ts.map +0 -1
  249. package/dist/utils/processTracker.js.map +0 -1
  250. package/dist/utils/psnr.d.ts.map +0 -1
  251. package/dist/utils/psnr.js.map +0 -1
  252. package/dist/utils/psnrFilterAvailability.d.ts.map +0 -1
  253. package/dist/utils/psnrFilterAvailability.js.map +0 -1
  254. package/dist/utils/readWebGlVendorInfoFromCanvas.d.ts.map +0 -1
  255. package/dist/utils/readWebGlVendorInfoFromCanvas.js.map +0 -1
  256. package/dist/utils/renderProvenance.d.ts.map +0 -1
  257. package/dist/utils/renderProvenance.js.map +0 -1
  258. package/dist/utils/runFfmpeg.d.ts.map +0 -1
  259. package/dist/utils/runFfmpeg.js.map +0 -1
  260. package/dist/utils/sdrCaptureColor.d.ts.map +0 -1
  261. package/dist/utils/sdrCaptureColor.js.map +0 -1
  262. package/dist/utils/shaderTransitions.d.ts.map +0 -1
  263. package/dist/utils/shaderTransitions.js.map +0 -1
  264. package/dist/utils/urlDownloader.d.ts.map +0 -1
  265. package/dist/utils/urlDownloader.js.map +0 -1
@@ -11,6 +11,7 @@ import { join } from "path";
11
11
  import { cpus } from "os";
12
12
  import { createConcurrencyLimit } from "../utils/concurrencyLimit.js";
13
13
  import { parseHTML } from "linkedom";
14
+ import { isPathInside } from "@hyperframes/parsers/asset-paths";
14
15
  import { resolveProjectRelativeSrc } from "@hyperframes/parsers/asset-resolution";
15
16
  import { MEDIA_RENDER_ID_ATTR, isAudibleVideoElement, fpsToFfmpegArg, fpsToNumber, MEDIA_DURATION_CLAMP_EPSILON_SECONDS, normalizeRateSpec, readElementRateSpec, shiftRateLane, sourceTimeAt, timeAtSourceTime, exportClipWindow, hasClipStarted, isInClipWindow, parseStrictFiniteTimingNumber, readMediaStart, toFps, firstFrameColourArgs, hdrToSdrToneMapFilter, parseFirstFrameColour, } from "@hyperframes/core";
16
17
  import { resolveReferencedStart } from "./referenceResolver.js";
@@ -23,7 +24,7 @@ import { runFfmpeg, runFfmpegPipeline } from "../utils/runFfmpeg.js";
23
24
  import { isFfmpegFilterAvailable } from "../utils/psnrFilterAvailability.js";
24
25
  import { DEFAULT_CONFIG } from "../config.js";
25
26
  import { unwrapTemplate } from "../utils/htmlTemplate.js";
26
- import { FRAME_FILENAME_PREFIX, gcExtractionCache, gcSweepDue, lookupCacheEntry, partialCacheEntryDir, publishCacheEntry, readKeyStat, rehydrateCacheEntry, touchCacheEntry, } from "./extractionCache.js";
27
+ import { FRAME_FILENAME_PREFIX, gcExtractionCache, gcSweepDue, lookupCacheEntry, partialCacheEntryDir, publishCacheEntry, readContentSha256, readKeyStat, rehydrateCacheEntry, touchCacheEntry, } from "./extractionCache.js";
27
28
  import { framePathsFromDirectory } from "./extractedFrameIndex.js";
28
29
  export { resolveProjectRelativeSrc };
29
30
  /**
@@ -106,6 +107,7 @@ export function extractionFrameCountForDuration(durationSeconds, fps, isVFR) {
106
107
  const frames = Number(frameCount);
107
108
  return Math.max(1, Number.isSafeInteger(frames) ? frames : Number.MAX_SAFE_INTEGER);
108
109
  }
110
+ const DOWNLOAD_SUBDIR = "_downloads";
109
111
  export const EXTRACT_CACHE_MIN_AGE_MS = 60 * 60 * 1000;
110
112
  const GC_STALENESS_MS = 24 * 60 * 60 * 1000;
111
113
  const SDR_TO_HDR_COLORSPACE_FILTER = "colorspace=all=bt2020:iall=bt709:range=tv";
@@ -805,6 +807,9 @@ function canHoldFinalFramePastEof(video) {
805
807
  // deliberately below any supported output frame interval: coverage expects
806
808
  // one frame, while FFmpeg seeks to the separately probed real frame timestamp.
807
809
  const FINAL_FRAME_LOGICAL_DURATION_SECONDS = 1e-6;
810
+ export function isVideoPastTimelineEnd(video, timelineEnd) {
811
+ return video.start >= timelineEnd;
812
+ }
808
813
  /** Move a clip to its extraction window; a rate lane is shifted so it keeps integrating from the new origin. */
809
814
  export function rebaseVideoToWindow(video, window) {
810
815
  if (window.preserveTimelinePhase)
@@ -1170,15 +1175,16 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1170
1175
  for (const video of videos) {
1171
1176
  if (signal?.aborted)
1172
1177
  break;
1173
- if (options.timelineEnd !== undefined && video.start >= options.timelineEnd)
1178
+ if (options.timelineEnd !== undefined && isVideoPastTimelineEnd(video, options.timelineEnd)) {
1174
1179
  continue;
1180
+ }
1175
1181
  try {
1176
1182
  let videoPath = video.src;
1177
1183
  if (!isHttpUrl(videoPath)) {
1178
1184
  videoPath = resolveProjectRelativeSrc(video.src, baseDir, compiledDir);
1179
1185
  }
1180
1186
  if (isHttpUrl(videoPath)) {
1181
- const downloadDir = join(options.outputDir, "_downloads");
1187
+ const downloadDir = join(options.outputDir, DOWNLOAD_SUBDIR);
1182
1188
  mkdirSync(downloadDir, { recursive: true });
1183
1189
  videoPath = await downloadToTemp(videoPath, downloadDir, undefined, signal, () => recordTransientRetries(1), { onTelemetry: writeUrlDownloadTelemetry });
1184
1190
  }
@@ -1222,6 +1228,11 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1222
1228
  // HDR preflight. Without this, every render would write a new
1223
1229
  // normalized file with a fresh mtime → fresh cache key → perpetual misses.
1224
1230
  // Phase 3 updates mediaStart after trimming any invisible negative preroll.
1231
+ // Downloads land at a new path and mtime every render, so they are keyed by content instead.
1232
+ const contentKeyedDirs = [
1233
+ join(options.outputDir, DOWNLOAD_SUBDIR),
1234
+ ...(options.contentKeyedDirs ?? []),
1235
+ ];
1225
1236
  const cacheKeyInputs = resolvedVideos.map(({ video, videoPath }) => {
1226
1237
  const stat = readKeyStat(videoPath);
1227
1238
  // Missing files return null — skip the cache path for that entry. The
@@ -1235,6 +1246,7 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1235
1246
  mtimeMs: stat.mtimeMs,
1236
1247
  size: stat.size,
1237
1248
  mediaStart: video.mediaStart,
1249
+ contentKeyed: contentKeyedDirs.some((dir) => isPathInside(videoPath, dir)),
1238
1250
  };
1239
1251
  });
1240
1252
  // Phase 2: Probe color spaces and normalize if mixed HDR/SDR
@@ -1414,12 +1426,30 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1414
1426
  });
1415
1427
  return { ...rehydrated, ownedByLookup: true };
1416
1428
  }
1429
+ // Hashed only for works that reach a lookup (deferred ranges never do), once per file.
1430
+ const contentSha256ByPath = new Map();
1431
+ async function hashContentKeyedSources(works) {
1432
+ if (!cacheRootDir)
1433
+ return;
1434
+ const paths = new Set();
1435
+ for (const work of works) {
1436
+ const keyInput = cacheKeyInputs[work.index];
1437
+ if (keyInput?.contentKeyed)
1438
+ paths.add(keyInput.videoPath);
1439
+ }
1440
+ await Promise.all([...paths].map(async (path) => contentSha256ByPath.set(path, await readContentSha256(path, signal))));
1441
+ }
1417
1442
  function lookupCacheFor(work) {
1418
1443
  if (!cacheRootDir)
1419
1444
  return { work };
1420
1445
  const keyInput = cacheKeyInputs[work.index];
1421
1446
  if (!keyInput)
1422
1447
  return { work };
1448
+ const contentSha256 = keyInput.contentKeyed
1449
+ ? (contentSha256ByPath.get(keyInput.videoPath) ?? null)
1450
+ : undefined;
1451
+ if (contentSha256 === null)
1452
+ return { work };
1423
1453
  const transformParts = [
1424
1454
  work.sdrToHdrTransfer ? sdrToHdrTransformKey(work.sdrToHdrTransfer) : undefined,
1425
1455
  work.hdrToSdrTransformKey,
@@ -1431,6 +1461,7 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1431
1461
  mtimeMs: keyInput.mtimeMs,
1432
1462
  size: keyInput.size,
1433
1463
  mediaStart: keyInput.mediaStart,
1464
+ contentSha256,
1434
1465
  duration: work.videoDuration,
1435
1466
  fps: fpsKey,
1436
1467
  format: work.format,
@@ -1661,9 +1692,9 @@ export async function extractAllVideoFrames(videos, baseDir, options, signal, co
1661
1692
  });
1662
1693
  }
1663
1694
  const cacheMisses = [];
1664
- for (const work of uniqueWorks.values()) {
1665
- if (uniqueOutcomes.has(work.dedupeKey))
1666
- continue;
1695
+ const worksToLookUp = [...uniqueWorks.values()].filter((work) => !uniqueOutcomes.has(work.dedupeKey));
1696
+ await hashContentKeyedSources(worksToLookUp);
1697
+ for (const work of worksToLookUp) {
1667
1698
  const lookup = lookupCacheFor(work);
1668
1699
  if ("work" in lookup) {
1669
1700
  cacheMisses.push(lookup);
@@ -1933,4 +1964,3 @@ export function createFrameLookupTable(videos, extracted, fps) {
1933
1964
  }
1934
1965
  return table;
1935
1966
  }
1936
- //# sourceMappingURL=videoFrameExtractor.js.map
@@ -149,4 +149,3 @@ export interface ElementStackingInfo {
149
149
  */
150
150
  export declare function queryElementStacking(page: Page, nativeHdrIds: Set<string>): Promise<ElementStackingInfo[]>;
151
151
  export {};
152
- //# sourceMappingURL=videoFrameInjector.d.ts.map
@@ -593,4 +593,3 @@ export async function queryElementStacking(page, nativeHdrIds) {
593
593
  return results;
594
594
  }, hdrIds, RENDER_FRAME_ID_PREFIX, RENDER_FRAME_ID_SUFFIX);
595
595
  }
596
- //# sourceMappingURL=videoFrameInjector.js.map
@@ -3,4 +3,3 @@ export declare const MIN_VP9_CPU_USED = -8;
3
3
  export declare const MAX_VP9_CPU_USED = 8;
4
4
  export declare function normalizeVp9CpuUsed(value: number | undefined): number;
5
5
  export declare function appendVp9CpuUsedArg(args: string[], value: number | undefined): void;
6
- //# sourceMappingURL=vp9Options.d.ts.map
@@ -10,4 +10,3 @@ export function normalizeVp9CpuUsed(value) {
10
10
  export function appendVp9CpuUsedArg(args, value) {
11
11
  args.push("-cpu-used", String(normalizeVp9CpuUsed(value)));
12
12
  }
13
- //# sourceMappingURL=vp9Options.js.map
@@ -17,4 +17,3 @@ export interface RiffChunk {
17
17
  export declare function riffChunks(buffer: Buffer): Generator<RiffChunk>;
18
18
  /** Canonical codec tag, or null for a truncated or unsupported extensible header. */
19
19
  export declare function wavFormatTag(buffer: Buffer, body: number, size: number): number | null;
20
- //# sourceMappingURL=wavChunks.d.ts.map
@@ -36,4 +36,3 @@ export function wavFormatTag(buffer, body, size) {
36
36
  return tag;
37
37
  return fmt.length < 40 ? null : extensibleFormatTag(fmt);
38
38
  }
39
- //# sourceMappingURL=wavChunks.js.map
package/dist/types.d.ts CHANGED
@@ -388,4 +388,3 @@ declare global {
388
388
  __hf?: HfProtocol;
389
389
  }
390
390
  }
391
- //# sourceMappingURL=types.d.ts.map
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -189,4 +189,3 @@ export declare function normalizeObjectFit(value: string | undefined): ObjectFit
189
189
  * flattening their scene rather than failing it.
190
190
  */
191
191
  export declare function parseTransformMatrix(css: string): number[] | null;
192
- //# sourceMappingURL=alphaBlit.d.ts.map
@@ -929,4 +929,3 @@ function warnIfZSignificant(parts) {
929
929
  `This warning is emitted once per process.`);
930
930
  }
931
931
  }
932
- //# sourceMappingURL=alphaBlit.js.map
@@ -6,4 +6,3 @@ export declare function sampledRgbaAlphaIsFullyOpaque(buf: Buffer): boolean | un
6
6
  */
7
7
  export declare function probeInputAlphaPlane(videoPath: string, decoder: string, signal?: AbortSignal): Promise<boolean | undefined>;
8
8
  export declare function inputAlphaOpaqueWarning(src: string): string;
9
- //# sourceMappingURL=alphaPlaneProbe.d.ts.map
@@ -62,4 +62,3 @@ export function inputAlphaOpaqueWarning(src) {
62
62
  "it with an alpha pixel format and avoid remuxing afterward, which can drop the " +
63
63
  "alpha while keeping the tag.\n");
64
64
  }
65
- //# sourceMappingURL=alphaPlaneProbe.js.map
@@ -56,4 +56,3 @@ export declare function readWebGlVendorInfo(page: Page): Promise<WebGlInfo>;
56
56
  */
57
57
  export declare function assertSwiftShader(page: Page, readInfo?: (page: Page) => Promise<WebGlInfo>): Promise<void>;
58
58
  export {};
59
- //# sourceMappingURL=assertSwiftShader.d.ts.map
@@ -103,4 +103,3 @@ export async function assertSwiftShader(page, readInfo = readWebGlVendorInfo) {
103
103
  `Ensure Chrome was launched with --use-gl=swiftshader --use-angle=swiftshader and that the ` +
104
104
  `SwiftShader libraries are present in the runtime image.`, vendor, renderer);
105
105
  }
106
- //# sourceMappingURL=assertSwiftShader.js.map
@@ -3,4 +3,3 @@
3
3
  * `signal` aborts stops waiting and runs at once without a slot, so a cancel never queues behind others.
4
4
  */
5
5
  export declare function createConcurrencyLimit(limit: number): <T>(task: () => Promise<T>, signal?: AbortSignal) => Promise<T>;
6
- //# sourceMappingURL=concurrencyLimit.d.ts.map
@@ -37,4 +37,3 @@ export function createConcurrencyLimit(limit) {
37
37
  }
38
38
  };
39
39
  }
40
- //# sourceMappingURL=concurrencyLimit.js.map
@@ -1,2 +1 @@
1
1
  export declare function chunkCrc32(chunkType: string, chunkData: Buffer): number;
2
- //# sourceMappingURL=crc32.d.ts.map
@@ -32,4 +32,3 @@ export function chunkCrc32(chunkType, chunkData) {
32
32
  return nativeCrc32(chunkData, nativeCrc32(typeBytes));
33
33
  return crc32Fallback(chunkData, crc32Fallback(typeBytes, 0));
34
34
  }
35
- //# sourceMappingURL=crc32.js.map
@@ -32,4 +32,3 @@ export declare function requiresEvenDimensions(pixelFormat: string): boolean;
32
32
  * returns just the pad when there is no existing chain.
33
33
  */
34
34
  export declare function withEvenDimensionPad(vfChain: string, pixelFormat: string, width?: number, height?: number): string;
35
- //# sourceMappingURL=evenDimensions.d.ts.map
@@ -46,4 +46,3 @@ export function withEvenDimensionPad(vfChain, pixelFormat, width, height) {
46
46
  }
47
47
  return vfChain ? `${vfChain},${EVEN_DIMENSION_PAD}` : EVEN_DIMENSION_PAD;
48
48
  }
49
- //# sourceMappingURL=evenDimensions.js.map
@@ -3,4 +3,3 @@ export { FFMPEG_PATH_ENV, FFPROBE_PATH_ENV };
3
3
  export declare function getFfmpegBinary(): string;
4
4
  export declare function getFfprobeBinary(): string;
5
5
  export declare function assertConfiguredFfmpegBinariesExist(): void;
6
- //# sourceMappingURL=ffmpegBinaries.d.ts.map
@@ -27,4 +27,3 @@ function pathEncodingHint(configuredPath) {
27
27
  return "";
28
28
  return " The path contains a Unicode replacement character, which usually means it was mangled while being copied or decoded.";
29
29
  }
30
- //# sourceMappingURL=ffmpegBinaries.js.map
@@ -154,4 +154,3 @@ export interface KeyframeAnalysis {
154
154
  */
155
155
  export declare function analyzeKeyframeIntervals(filePath: string, metadata: Pick<VideoMetadata, "videoStreamDurationSeconds" | "videoStreamStartSeconds">): Promise<KeyframeAnalysis>;
156
156
  export {};
157
- //# sourceMappingURL=ffprobe.d.ts.map
@@ -929,4 +929,3 @@ async function analyzeKeyframeIntervalsUncached(filePath, videoStreamStartSecond
929
929
  isProblematic: maxInterval > PROBLEMATIC_KEYFRAME_INTERVAL_SECONDS,
930
930
  };
931
931
  }
932
- //# sourceMappingURL=ffprobe.js.map
@@ -31,4 +31,3 @@ export declare function getProbeArgs(encoder: ConcreteGpuEncoder): string[];
31
31
  * `-preset` entirely or accept the libx264 vocabulary).
32
32
  */
33
33
  export declare function mapPresetForGpuEncoder(encoder: GpuEncoder, preset: string): string;
34
- //# sourceMappingURL=gpuEncoder.d.ts.map
@@ -224,4 +224,3 @@ export function mapPresetForGpuEncoder(encoder, preset) {
224
224
  return preset;
225
225
  }
226
226
  }
227
- //# sourceMappingURL=gpuEncoder.js.map
@@ -139,4 +139,3 @@ export declare function diffGpuParityPngs(pngA: Buffer, pngB: Buffer, options?:
139
139
  * metrics without a second pass.
140
140
  */
141
141
  export declare function verifyGpuParity(a: RgbaFrame, b: RgbaFrame, options?: GpuParityDiffOptions): VerifyGpuParityResult;
142
- //# sourceMappingURL=gpuParityDiff.d.ts.map
@@ -49,7 +49,7 @@ const DEFAULT_BLACK_ONLY_FRACTION_THRESHOLD = 0.001;
49
49
  */
50
50
  export function diffGpuParityFrames(a, b, options = {}) {
51
51
  if (a.width !== b.width || a.height !== b.height) {
52
- throw new Error(`diffGpuParityFrames: frame size mismatch — A is ${a.width}x${a.height}, ` +
52
+ throw new Error(`diffGpuParityFrames: frame size mismatch: A is ${a.width}x${a.height}, ` +
53
53
  `B is ${b.width}x${b.height}`);
54
54
  }
55
55
  const expectedLen = a.width * a.height * 4;
@@ -66,7 +66,7 @@ export function diffGpuParityFrames(a, b, options = {}) {
66
66
  const contentSum = options.contentSumThreshold ?? DEFAULT_CONTENT_SUM_THRESHOLD;
67
67
  if (contentSum <= blackSum) {
68
68
  throw new Error(`diffGpuParityFrames: contentSumThreshold (${contentSum}) must be strictly greater ` +
69
- `than blackSumThreshold (${blackSum}) — overlapping thresholds would double-classify ` +
69
+ `than blackSumThreshold (${blackSum}): overlapping thresholds would double-classify ` +
70
70
  `borderline pixels`);
71
71
  }
72
72
  const total = a.width * a.height;
@@ -183,7 +183,7 @@ export function verifyGpuParity(a, b, options = {}) {
183
183
  ok: false,
184
184
  reason: `hardware-GPU frame has ${diff.blackOnlyInA.pixels} pixel(s) ` +
185
185
  `(${(diff.blackOnlyInA.fraction * 100).toFixed(3)}%) that are solid-black ` +
186
- `while software-GPU frame has content there${region} — likely shape-dependent ` +
186
+ `while software-GPU frame has content there${region}, likely a shape-dependent ` +
187
187
  `hardware-GPU capture bug`,
188
188
  diff,
189
189
  };
@@ -195,11 +195,10 @@ export function verifyGpuParity(a, b, options = {}) {
195
195
  ok: false,
196
196
  reason: `software-GPU frame has ${diff.blackOnlyInB.pixels} pixel(s) ` +
197
197
  `(${(diff.blackOnlyInB.fraction * 100).toFixed(3)}%) that are solid-black ` +
198
- `while hardware-GPU frame has content there${region} — unexpected inverse ` +
198
+ `while hardware-GPU frame has content there${region}, an unexpected inverse ` +
199
199
  `pattern, worth investigating`,
200
200
  diff,
201
201
  };
202
202
  }
203
203
  return { ok: true, reason: "", diff };
204
204
  }
205
- //# sourceMappingURL=gpuParityDiff.js.map
@@ -93,4 +93,3 @@ export declare function formatHdrAutoPromotionWarning(promotion: HdrAutoPromotio
93
93
  * contains HDR content and what the dominant transfer function is.
94
94
  */
95
95
  export declare function analyzeCompositionHdr(colorSpaces: Array<VideoColorSpace | null>): CompositionHdrInfo;
96
- //# sourceMappingURL=hdr.d.ts.map
package/dist/utils/hdr.js CHANGED
@@ -81,7 +81,7 @@ export function findHdrAutoPromotion(sources) {
81
81
  : null;
82
82
  }
83
83
  export function formatHdrAutoPromotionWarning(promotion) {
84
- return `[Render] HDR auto-promotion triggered by "${promotion.triggeringAsset}" — output: ${promotion.output.colorSpace} / ${promotion.output.codec}`;
84
+ return `[Render] HDR auto-promotion triggered by "${promotion.triggeringAsset}", output: ${promotion.output.colorSpace} / ${promotion.output.codec}`;
85
85
  }
86
86
  /**
87
87
  * Analyze a set of video color spaces to determine if the composition
@@ -103,4 +103,3 @@ export function analyzeCompositionHdr(colorSpaces) {
103
103
  const dominantTransfer = hasPq ? "pq" : "hlg";
104
104
  return { hasHdr: true, dominantTransfer };
105
105
  }
106
- //# sourceMappingURL=hdr.js.map
@@ -5,4 +5,3 @@
5
5
  * of inputs that contain multiple sibling templates or other top-level content.
6
6
  */
7
7
  export declare function unwrapTemplate(html: string): string;
8
- //# sourceMappingURL=htmlTemplate.d.ts.map
@@ -39,4 +39,3 @@ export function unwrapTemplate(html) {
39
39
  }
40
40
  return template.innerHTML ?? html;
41
41
  }
42
- //# sourceMappingURL=htmlTemplate.js.map
@@ -1,3 +1,2 @@
1
1
  /** Check JPEG headers before image2pipe; entropy-coded pixels still belong to FFmpeg. */
2
2
  export declare function jpegInputError(buffer: Buffer): string | undefined;
3
- //# sourceMappingURL=jpegInput.d.ts.map
@@ -59,4 +59,3 @@ function quantizationTableError(buffer, start, end) {
59
59
  }
60
60
  return undefined;
61
61
  }
62
- //# sourceMappingURL=jpegInput.js.map
@@ -33,4 +33,3 @@ export type CompositeLayer = {
33
33
  * hide them).
34
34
  */
35
35
  export declare function groupIntoLayers(elements: ElementStackingInfo[]): CompositeLayer[];
36
- //# sourceMappingURL=layerCompositor.d.ts.map
@@ -46,4 +46,3 @@ export function groupIntoLayers(elements) {
46
46
  }
47
47
  return layers;
48
48
  }
49
- //# sourceMappingURL=layerCompositor.js.map
@@ -47,4 +47,3 @@ export declare class ManagedChildProcess {
47
47
  private settle;
48
48
  private clearTimers;
49
49
  }
50
- //# sourceMappingURL=managedChildProcess.d.ts.map
@@ -145,4 +145,3 @@ export class ManagedChildProcess {
145
145
  this.escalationTimer = null;
146
146
  }
147
147
  }
148
- //# sourceMappingURL=managedChildProcess.js.map
@@ -61,4 +61,3 @@ export declare function isNotMediaPayload(filePath: string): Promise<boolean>;
61
61
  * through its `svg_pipe` demuxer, so image sources must not be sniffed.
62
62
  */
63
63
  export declare function assertMediaPayload(filePath: string, elementId: string): Promise<void>;
64
- //# sourceMappingURL=notMediaPayload.d.ts.map
@@ -142,4 +142,3 @@ export async function assertMediaPayload(filePath, elementId) {
142
142
  throw new NotMediaPayloadError([fingerprintElementId(elementId)]);
143
143
  }
144
144
  }
145
- //# sourceMappingURL=notMediaPayload.js.map
@@ -1,2 +1 @@
1
1
  export { MEDIA_VISUAL_STYLE_PROPERTIES, quantizeTimeToFrame } from "@hyperframes/core";
2
- //# sourceMappingURL=parityContract.d.ts.map
@@ -1,2 +1 @@
1
1
  export { MEDIA_VISUAL_STYLE_PROPERTIES, quantizeTimeToFrame } from "@hyperframes/core";
2
- //# sourceMappingURL=parityContract.js.map
@@ -20,4 +20,3 @@ export declare function parseProcStatusRss(pid: number, status: string): Process
20
20
  * rejects; a pid that exited between discovery and sampling is simply absent.
21
21
  */
22
22
  export declare function sampleProcessRss(pids: readonly number[], exec?: ExecFileLike, platform?: NodeJS.Platform, readStatus?: ReadFileLike): Promise<ProcessRssSample[]>;
23
- //# sourceMappingURL=processRss.d.ts.map
@@ -90,4 +90,3 @@ export async function sampleProcessRss(pids, exec = defaultExec(), platform = pr
90
90
  return [];
91
91
  }
92
92
  }
93
- //# sourceMappingURL=processRss.js.map
@@ -5,4 +5,3 @@ export declare function trackChildProcess(proc: ChildProcess): void;
5
5
  * after a short grace period.
6
6
  */
7
7
  export declare function killTrackedProcesses(): void;
8
- //# sourceMappingURL=processTracker.d.ts.map
@@ -36,4 +36,3 @@ export function killTrackedProcesses() {
36
36
  }
37
37
  }, 500).unref();
38
38
  }
39
- //# sourceMappingURL=processTracker.js.map
@@ -10,4 +10,3 @@ export declare function psnrDb(a: Buffer, b: Buffer): Promise<number>;
10
10
  * every prior eval used to separate real compositor damage from encoder noise.
11
11
  */
12
12
  export declare function resolveDeVerifyMinDb(): number;
13
- //# sourceMappingURL=psnr.d.ts.map
@@ -39,4 +39,3 @@ export function resolveDeVerifyMinDb() {
39
39
  const raw = Number(process.env.HF_DE_VERIFY_MIN_DB ?? "32");
40
40
  return Number.isFinite(raw) && raw >= 10 && raw <= 60 ? raw : 32;
41
41
  }
42
- //# sourceMappingURL=psnr.js.map
@@ -11,4 +11,3 @@ export declare function isPsnrFilterAvailable(): Promise<boolean>;
11
11
  export declare function isFfmpegFilterAvailable(name: string): Promise<boolean>;
12
12
  /** Test-only: drop the memoized probe result. */
13
13
  export declare function resetPsnrFilterAvailabilityCache(): void;
14
- //# sourceMappingURL=psnrFilterAvailability.d.ts.map
@@ -56,4 +56,3 @@ async function listFilters() {
56
56
  return null;
57
57
  }
58
58
  }
59
- //# sourceMappingURL=psnrFilterAvailability.js.map
@@ -17,4 +17,3 @@ export declare function readWebGlVendorInfoFromCanvas(page: Page): Promise<{
17
17
  vendor: string;
18
18
  renderer: string;
19
19
  }>;
20
- //# sourceMappingURL=readWebGlVendorInfoFromCanvas.d.ts.map
@@ -42,4 +42,3 @@ export async function readWebGlVendorInfoFromCanvas(page) {
42
42
  }
43
43
  });
44
44
  }
45
- //# sourceMappingURL=readWebGlVendorInfoFromCanvas.js.map
@@ -55,4 +55,3 @@ export interface RenderProvenance {
55
55
  * case-insensitive — a case-sensitive read works on mp4 and misses every webm.
56
56
  */
57
57
  export declare function readRenderProvenance(tags: Record<string, string | undefined> | undefined): RenderProvenance | null;
58
- //# sourceMappingURL=renderProvenance.d.ts.map
@@ -162,4 +162,3 @@ export function readRenderProvenance(tags) {
162
162
  return null;
163
163
  return { renderer, version: readTagCI(tags, PROVENANCE_VERSION_TAG) };
164
164
  }
165
- //# sourceMappingURL=renderProvenance.js.map
@@ -55,4 +55,3 @@ export declare function runFfmpeg(args: string[], opts?: RunFfmpegOptions): Prom
55
55
  * fails and reports the first failure, its stderr last so error tails show it.
56
56
  */
57
57
  export declare function runFfmpegPipeline(producerArgs: string[], consumerArgs: string[], opts?: RunFfmpegOptions): Promise<RunFfmpegResult>;
58
- //# sourceMappingURL=runFfmpeg.d.ts.map
@@ -184,4 +184,3 @@ export async function runFfmpegPipeline(producerArgs, consumerArgs, opts) {
184
184
  .join("");
185
185
  return toResult(reported, stderr);
186
186
  }
187
- //# sourceMappingURL=runFfmpeg.js.map
@@ -1,3 +1,2 @@
1
1
  export declare const SDR_RGB_TO_BT709_FILTER = "scale=out_color_matrix=bt709:out_range=tv:flags=neighbor";
2
2
  export declare const SDR_CAPTURE_TO_BT709_FILTER = "scale=in_color_matrix=bt601:in_range=pc:flags=neighbor,format=gbrp,scale=out_color_matrix=bt709:out_range=tv:flags=neighbor";
3
- //# sourceMappingURL=sdrCaptureColor.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export const SDR_RGB_TO_BT709_FILTER = "scale=out_color_matrix=bt709:out_range=tv:flags=neighbor";
2
2
  export const SDR_CAPTURE_TO_BT709_FILTER = `scale=in_color_matrix=bt601:in_range=pc:flags=neighbor,format=gbrp,${SDR_RGB_TO_BT709_FILTER}`;
3
- //# sourceMappingURL=sdrCaptureColor.js.map
@@ -163,4 +163,3 @@ export declare const thermalDistortion: TransitionFn;
163
163
  */
164
164
  export declare const domainWarp: TransitionFn;
165
165
  export declare const ridgedBurn: TransitionFn;
166
- //# sourceMappingURL=shaderTransitions.d.ts.map
@@ -891,4 +891,3 @@ export const ridgedBurn = (from, to, out, w, h, p) => {
891
891
  }
892
892
  };
893
893
  TRANSITIONS["ridged-burn"] = ridgedBurn;
894
- //# sourceMappingURL=shaderTransitions.js.map
@@ -58,4 +58,3 @@ export declare function assertPublicHttpsUrl(url: string): void;
58
58
  export declare function fetchPublicHttpsText(url: string, options: PublicHttpsTextOptions): Promise<string>;
59
59
  export declare function downloadToTemp(url: string, destDir: string, timeoutMs?: number, signal?: AbortSignal, onTransientRetry?: (error: UrlDownloadError) => void, options?: UrlDownloadOptions): Promise<string>;
60
60
  export declare function isHttpUrl(path: string): boolean;
61
- //# sourceMappingURL=urlDownloader.d.ts.map
@@ -1025,4 +1025,3 @@ export async function downloadToTemp(url, destDir, timeoutMs = 300000, signal, o
1025
1025
  export function isHttpUrl(path) {
1026
1026
  return path.startsWith("http://") || path.startsWith("https://");
1027
1027
  }
1028
- //# sourceMappingURL=urlDownloader.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/engine",
3
- "version": "0.8.145",
3
+ "version": "0.8.147",
4
4
  "description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,8 +46,8 @@
46
46
  "linkedom": "^0.18.12",
47
47
  "puppeteer": "^25.8.0",
48
48
  "puppeteer-core": "^25.8.0",
49
- "@hyperframes/core": "^0.8.145",
50
- "@hyperframes/parsers": "^0.8.145"
49
+ "@hyperframes/core": "^0.8.147",
50
+ "@hyperframes/parsers": "^0.8.147"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^25.0.10",
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}