@hyperframes/producer 0.8.155 → 0.8.157

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.
package/dist/index.js CHANGED
@@ -4124,6 +4124,14 @@ async function createSegmentWorker(run, id) {
4124
4124
  }
4125
4125
  };
4126
4126
  }
4127
+ async function openSegmentWorkersTogether(run, workersToCloseLater) {
4128
+ const opened = await Promise.allSettled(
4129
+ Array.from({ length: run.workerCount }, (_, id) => createSegmentWorker(run, id))
4130
+ );
4131
+ for (const o of opened) if (o.status === "fulfilled") workersToCloseLater.push(o.value);
4132
+ const failure = opened.find((o) => o.status === "rejected");
4133
+ if (failure && failure.status === "rejected") throw failure.reason;
4134
+ }
4127
4135
  async function recycleWorkerSession(run, worker, why) {
4128
4136
  run.input.dedupPerfs.push(getCapturePerfSummary2(worker.ctx.session));
4129
4137
  const memory = worker.ctx.session.chromeMemory?.stats();
@@ -4246,7 +4254,7 @@ async function runCaptureSegmentedStage(input) {
4246
4254
  };
4247
4255
  try {
4248
4256
  assertNotAborted();
4249
- for (let id = 0; id < run.workerCount; id++) workers.push(await createSegmentWorker(run, id));
4257
+ await openSegmentWorkersTogether(run, workers);
4250
4258
  const outcomes = await Promise.allSettled(workers.map((w) => runWorkerLoop(w)));
4251
4259
  for (const worker of workers) dedupPerfs.push(getCapturePerfSummary2(worker.ctx.session));
4252
4260
  const failure = outcomes.find((o) => o.status === "rejected");
@@ -4143,6 +4143,14 @@ async function createSegmentWorker(run, id) {
4143
4143
  }
4144
4144
  };
4145
4145
  }
4146
+ async function openSegmentWorkersTogether(run, workersToCloseLater) {
4147
+ const opened = await Promise.allSettled(
4148
+ Array.from({ length: run.workerCount }, (_, id) => createSegmentWorker(run, id))
4149
+ );
4150
+ for (const o of opened) if (o.status === "fulfilled") workersToCloseLater.push(o.value);
4151
+ const failure = opened.find((o) => o.status === "rejected");
4152
+ if (failure && failure.status === "rejected") throw failure.reason;
4153
+ }
4146
4154
  async function recycleWorkerSession(run, worker, why) {
4147
4155
  run.input.dedupPerfs.push(getCapturePerfSummary2(worker.ctx.session));
4148
4156
  const memory = worker.ctx.session.chromeMemory?.stats();
@@ -4265,7 +4273,7 @@ async function runCaptureSegmentedStage(input) {
4265
4273
  };
4266
4274
  try {
4267
4275
  assertNotAborted();
4268
- for (let id = 0; id < run.workerCount; id++) workers.push(await createSegmentWorker(run, id));
4276
+ await openSegmentWorkersTogether(run, workers);
4269
4277
  const outcomes = await Promise.allSettled(workers.map((w) => runWorkerLoop(w)));
4270
4278
  for (const worker of workers) dedupPerfs.push(getCapturePerfSummary2(worker.ctx.session));
4271
4279
  const failure = outcomes.find((o) => o.status === "rejected");
@@ -84,9 +84,9 @@ export declare function isVideoFrameCoverageError(err: unknown): err is VideoFra
84
84
  */
85
85
  export declare function resolveVideoCoverageThreshold(envValue?: string | undefined): number | null;
86
86
  /**
87
- * Count frames in a clip's authored `[start,end)` window. CFR extraction uses
88
- * FFmpeg's `-vf fps=<fps>` and rounds to the nearest output-frame boundary;
89
- * VFR extraction uses `-fps_mode cfr -r <fps>` and rounds up. Missing entries
87
+ * Count frames in a clip's authored `[start,end)` window. CFR extraction
88
+ * rounds to the nearest output-frame boundary and VFR extraction rounds up,
89
+ * as `extractionFrameCountForDuration` does. Missing entries
90
90
  * retain the fail-closed `ceil` default. Positive sub-frame clips emit one.
91
91
  */
92
92
  export declare function expectedFramesForClip(start: number, end: number, fps: FpsInput, rounding?: "ceil" | "nearest"): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/producer",
3
- "version": "0.8.155",
3
+ "version": "0.8.157",
4
4
  "description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,11 +35,11 @@
35
35
  "postcss": "^8.4.0",
36
36
  "puppeteer": "^25.2.1",
37
37
  "puppeteer-core": "^25.2.1",
38
- "@hyperframes/core": "0.8.155",
39
- "@hyperframes/engine": "0.8.155",
40
- "@hyperframes/lint": "0.8.155",
41
- "@hyperframes/parsers": "0.8.155",
42
- "@hyperframes/studio-server": "0.8.155"
38
+ "@hyperframes/core": "0.8.157",
39
+ "@hyperframes/engine": "0.8.157",
40
+ "@hyperframes/lint": "0.8.157",
41
+ "@hyperframes/parsers": "0.8.157",
42
+ "@hyperframes/studio-server": "0.8.157"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^25.0.10",
@@ -48,7 +48,7 @@
48
48
  "tsx": "^4.21.0",
49
49
  "typescript": "^5.7.2",
50
50
  "vitest": "^4.1.11",
51
- "@hyperframes/aws-lambda": "0.8.155"
51
+ "@hyperframes/aws-lambda": "0.8.157"
52
52
  },
53
53
  "engines": {
54
54
  "node": ">=22"