@hyperframes/producer 0.9.2 → 0.9.3
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
|
@@ -82,6 +82,7 @@ import { join, extname, resolve as resolve2, sep } from "node:path";
|
|
|
82
82
|
import { injectScriptsAtHeadStart, injectScriptsIntoHtml } from "@hyperframes/core/compiler";
|
|
83
83
|
import { fpsToNumber } from "@hyperframes/core";
|
|
84
84
|
import { stripSdrPngColourTags } from "@hyperframes/core/compiler/png-colour-tags";
|
|
85
|
+
import { openRangeEnd } from "@hyperframes/studio-server/media-range";
|
|
85
86
|
|
|
86
87
|
// src/services/hyperframeRuntimeLoader.ts
|
|
87
88
|
import { createHash } from "node:crypto";
|
|
@@ -239,7 +240,7 @@ var MIME_TYPES = {
|
|
|
239
240
|
".ttf": "font/ttf",
|
|
240
241
|
".otf": "font/otf"
|
|
241
242
|
};
|
|
242
|
-
function parseRangeHeader(header, size) {
|
|
243
|
+
function parseRangeHeader(header, size, contentType = "application/octet-stream") {
|
|
243
244
|
if (!header) return { kind: "absent" };
|
|
244
245
|
const match = /^\s*bytes\s*=\s*(.*?)\s*$/i.exec(header);
|
|
245
246
|
if (!match) return { kind: "absent" };
|
|
@@ -264,7 +265,7 @@ function parseRangeHeader(header, size) {
|
|
|
264
265
|
if (!Number.isFinite(start)) return { kind: "absent" };
|
|
265
266
|
if (rawEnd === "") {
|
|
266
267
|
if (start >= size) return { kind: "unsatisfiable" };
|
|
267
|
-
return { kind: "satisfiable", start, end: size - 1 };
|
|
268
|
+
return { kind: "satisfiable", start, end: openRangeEnd(start, size - 1, contentType) };
|
|
268
269
|
}
|
|
269
270
|
if (!/^\d+$/.test(rawEnd)) return { kind: "absent" };
|
|
270
271
|
const requestedEnd = Number(rawEnd);
|
|
@@ -736,7 +737,7 @@ function createFileServer(options) {
|
|
|
736
737
|
}
|
|
737
738
|
const totalSize = stat.size;
|
|
738
739
|
const rangeHeader = c.req.header("range");
|
|
739
|
-
const rangeRequest = parseRangeHeader(rangeHeader, totalSize);
|
|
740
|
+
const rangeRequest = parseRangeHeader(rangeHeader, totalSize, contentType);
|
|
740
741
|
if (rangeRequest.kind === "unsatisfiable") {
|
|
741
742
|
return new Response(null, {
|
|
742
743
|
status: 416,
|
package/dist/public-server.js
CHANGED
|
@@ -103,6 +103,7 @@ import { join, extname, resolve as resolve2, sep } from "node:path";
|
|
|
103
103
|
import { injectScriptsAtHeadStart, injectScriptsIntoHtml } from "@hyperframes/core/compiler";
|
|
104
104
|
import { fpsToNumber } from "@hyperframes/core";
|
|
105
105
|
import { stripSdrPngColourTags } from "@hyperframes/core/compiler/png-colour-tags";
|
|
106
|
+
import { openRangeEnd } from "@hyperframes/studio-server/media-range";
|
|
106
107
|
|
|
107
108
|
// src/services/hyperframeRuntimeLoader.ts
|
|
108
109
|
import { createHash } from "node:crypto";
|
|
@@ -260,7 +261,7 @@ var MIME_TYPES = {
|
|
|
260
261
|
".ttf": "font/ttf",
|
|
261
262
|
".otf": "font/otf"
|
|
262
263
|
};
|
|
263
|
-
function parseRangeHeader(header, size) {
|
|
264
|
+
function parseRangeHeader(header, size, contentType = "application/octet-stream") {
|
|
264
265
|
if (!header) return { kind: "absent" };
|
|
265
266
|
const match = /^\s*bytes\s*=\s*(.*?)\s*$/i.exec(header);
|
|
266
267
|
if (!match) return { kind: "absent" };
|
|
@@ -285,7 +286,7 @@ function parseRangeHeader(header, size) {
|
|
|
285
286
|
if (!Number.isFinite(start)) return { kind: "absent" };
|
|
286
287
|
if (rawEnd === "") {
|
|
287
288
|
if (start >= size) return { kind: "unsatisfiable" };
|
|
288
|
-
return { kind: "satisfiable", start, end: size - 1 };
|
|
289
|
+
return { kind: "satisfiable", start, end: openRangeEnd(start, size - 1, contentType) };
|
|
289
290
|
}
|
|
290
291
|
if (!/^\d+$/.test(rawEnd)) return { kind: "absent" };
|
|
291
292
|
const requestedEnd = Number(rawEnd);
|
|
@@ -757,7 +758,7 @@ function createFileServer(options) {
|
|
|
757
758
|
}
|
|
758
759
|
const totalSize = stat.size;
|
|
759
760
|
const rangeHeader = c.req.header("range");
|
|
760
|
-
const rangeRequest = parseRangeHeader(rangeHeader, totalSize);
|
|
761
|
+
const rangeRequest = parseRangeHeader(rangeHeader, totalSize, contentType);
|
|
761
762
|
if (rangeRequest.kind === "unsatisfiable") {
|
|
762
763
|
return new Response(null, {
|
|
763
764
|
status: 416,
|
|
@@ -64,7 +64,7 @@ export type RangeRequest = {
|
|
|
64
64
|
*
|
|
65
65
|
* Supports the three forms of `bytes=...`:
|
|
66
66
|
* - `bytes=START-END`: closed range, both bounds inclusive.
|
|
67
|
-
* - `bytes=
|
|
67
|
+
* - `bytes=start-`: open-ended, from start to EOF (audio/video: see `openRangeEnd`).
|
|
68
68
|
* - `bytes=-SUFFIX`: last SUFFIX bytes.
|
|
69
69
|
*
|
|
70
70
|
* Multi-range requests (`bytes=0-99,200-299`) are treated as `absent`. The
|
|
@@ -74,7 +74,7 @@ export type RangeRequest = {
|
|
|
74
74
|
*
|
|
75
75
|
* Exported for unit tests; not part of the public package surface.
|
|
76
76
|
*/
|
|
77
|
-
export declare function parseRangeHeader(header: string | null | undefined, size: number): RangeRequest;
|
|
77
|
+
export declare function parseRangeHeader(header: string | null | undefined, size: number, contentType?: string): RangeRequest;
|
|
78
78
|
/**
|
|
79
79
|
* Options for {@link buildVirtualTimeShim}.
|
|
80
80
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/producer",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.3",
|
|
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.11.0",
|
|
37
37
|
"puppeteer-core": "^25.11.0",
|
|
38
|
-
"@hyperframes/
|
|
39
|
-
"@hyperframes/
|
|
40
|
-
"@hyperframes/
|
|
41
|
-
"@hyperframes/
|
|
42
|
-
"@hyperframes/
|
|
38
|
+
"@hyperframes/engine": "0.9.3",
|
|
39
|
+
"@hyperframes/core": "0.9.3",
|
|
40
|
+
"@hyperframes/lint": "0.9.3",
|
|
41
|
+
"@hyperframes/parsers": "0.9.3",
|
|
42
|
+
"@hyperframes/studio-server": "0.9.3"
|
|
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.9.
|
|
51
|
+
"@hyperframes/aws-lambda": "0.9.3"
|
|
52
52
|
},
|
|
53
53
|
"engines": {
|
|
54
54
|
"node": ">=22"
|