@hyperframes/engine 0.7.72 → 0.7.74
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.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/browserManager.d.ts +23 -1
- package/dist/services/browserManager.d.ts.map +1 -1
- package/dist/services/browserManager.js +141 -34
- package/dist/services/browserManager.js.map +1 -1
- package/dist/services/videoFrameExtractor.d.ts +52 -4
- package/dist/services/videoFrameExtractor.d.ts.map +1 -1
- package/dist/services/videoFrameExtractor.js +257 -27
- package/dist/services/videoFrameExtractor.js.map +1 -1
- package/dist/utils/urlDownloader.d.ts +8 -1
- package/dist/utils/urlDownloader.d.ts.map +1 -1
- package/dist/utils/urlDownloader.js +283 -74
- package/dist/utils/urlDownloader.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,42 +1,116 @@
|
|
|
1
|
-
import { createWriteStream, existsSync, mkdirSync } from "fs";
|
|
1
|
+
import { closeSync, createWriteStream, existsSync, fsyncSync, mkdtempSync, mkdirSync, lstatSync, openSync, renameSync, rmSync, statSync, } from "fs";
|
|
2
2
|
import { createHash } from "crypto";
|
|
3
|
-
import {
|
|
3
|
+
import { BlockList, isIP } from "node:net";
|
|
4
|
+
import { dirname, extname, join } from "path";
|
|
4
5
|
import { Readable } from "stream";
|
|
5
|
-
import {
|
|
6
|
-
const downloadPathCache = new Map();
|
|
6
|
+
import { pipeline } from "stream/promises";
|
|
7
7
|
const inFlightDownloads = new Map();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
8
|
+
const signalScopes = new WeakMap();
|
|
9
|
+
let nextSignalScope = 1;
|
|
10
|
+
function signalScopeKey(signal) {
|
|
11
|
+
if (!signal)
|
|
12
|
+
return "none";
|
|
13
|
+
let scope = signalScopes.get(signal);
|
|
14
|
+
if (scope === undefined) {
|
|
15
|
+
scope = nextSignalScope;
|
|
16
|
+
nextSignalScope += 1;
|
|
17
|
+
signalScopes.set(signal, scope);
|
|
18
|
+
}
|
|
19
|
+
return String(scope);
|
|
20
|
+
}
|
|
21
|
+
export class UrlDownloadError extends Error {
|
|
22
|
+
kind;
|
|
23
|
+
retryable;
|
|
24
|
+
status;
|
|
25
|
+
constructor(kind, retryable, message, status) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.kind = kind;
|
|
28
|
+
this.retryable = retryable;
|
|
29
|
+
this.status = status;
|
|
30
|
+
this.name = "UrlDownloadError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function classifyHttpFailure(status, statusText) {
|
|
34
|
+
const message = `HTTP ${status}: ${statusText}`;
|
|
35
|
+
if (status === 404 || status === 410) {
|
|
36
|
+
return new UrlDownloadError("http_not_found", false, message, status);
|
|
37
|
+
}
|
|
38
|
+
if (status === 408 || status === 429 || status >= 500) {
|
|
39
|
+
return new UrlDownloadError("http_transient", true, message, status);
|
|
40
|
+
}
|
|
41
|
+
return new UrlDownloadError("http_rejected", false, message, status);
|
|
42
|
+
}
|
|
43
|
+
function classifyDownloadFailure(error) {
|
|
44
|
+
if (error instanceof UrlDownloadError)
|
|
45
|
+
return error;
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
let current = error;
|
|
48
|
+
// Undici often wraps a mid-body socket failure as `TypeError: terminated`
|
|
49
|
+
// with the actionable `UND_ERR_*` code on `cause`.
|
|
50
|
+
for (let depth = 0; current && depth < 4; depth += 1) {
|
|
51
|
+
if (isRetryableNetworkCause(current)) {
|
|
52
|
+
return new UrlDownloadError("network", true, `Download failed: ${message}`);
|
|
53
|
+
}
|
|
54
|
+
current =
|
|
55
|
+
typeof current === "object" && current !== null && "cause" in current
|
|
56
|
+
? current.cause
|
|
57
|
+
: undefined;
|
|
58
|
+
}
|
|
59
|
+
return new UrlDownloadError("filesystem", false, `Download failed: ${message}`);
|
|
60
|
+
}
|
|
61
|
+
const RETRYABLE_NETWORK_CODES = new Set(["ECONNRESET", "ECONNREFUSED", "ETIMEDOUT", "EAI_AGAIN"]);
|
|
62
|
+
function isRetryableNetworkCause(error) {
|
|
63
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
64
|
+
const code = typeof error === "object" && error !== null && "code" in error && typeof error.code === "string"
|
|
65
|
+
? error.code
|
|
66
|
+
: "";
|
|
67
|
+
return (RETRYABLE_NETWORK_CODES.has(code) ||
|
|
68
|
+
code.startsWith("UND_ERR_") ||
|
|
69
|
+
/fetch failed|network|socket|connection reset|terminated/i.test(message));
|
|
70
|
+
}
|
|
71
|
+
const NON_PUBLIC_IPV4_ADDRESSES = new BlockList();
|
|
72
|
+
for (const [network, prefix] of [
|
|
73
|
+
["0.0.0.0", 8],
|
|
74
|
+
["10.0.0.0", 8],
|
|
75
|
+
["100.64.0.0", 10],
|
|
76
|
+
["127.0.0.0", 8],
|
|
77
|
+
["169.254.0.0", 16],
|
|
78
|
+
["172.16.0.0", 12],
|
|
79
|
+
["192.0.0.0", 24],
|
|
80
|
+
["192.0.2.0", 24],
|
|
81
|
+
["192.88.99.0", 24],
|
|
82
|
+
["192.168.0.0", 16],
|
|
83
|
+
["198.18.0.0", 15],
|
|
84
|
+
["198.51.100.0", 24],
|
|
85
|
+
["203.0.113.0", 24],
|
|
86
|
+
["224.0.0.0", 4],
|
|
87
|
+
["240.0.0.0", 4],
|
|
88
|
+
]) {
|
|
89
|
+
NON_PUBLIC_IPV4_ADDRESSES.addSubnet(network, prefix, "ipv4");
|
|
90
|
+
}
|
|
91
|
+
const NON_PUBLIC_IPV6_ADDRESSES = new BlockList();
|
|
92
|
+
for (const [network, prefix] of [
|
|
93
|
+
["::", 128],
|
|
94
|
+
["::1", 128],
|
|
95
|
+
["::ffff:0:0", 96],
|
|
96
|
+
["fc00::", 7],
|
|
97
|
+
["fe80::", 10],
|
|
98
|
+
["fec0::", 10],
|
|
99
|
+
["ff00::", 8],
|
|
100
|
+
["2001:db8::", 32],
|
|
101
|
+
]) {
|
|
102
|
+
NON_PUBLIC_IPV6_ADDRESSES.addSubnet(network, prefix, "ipv6");
|
|
103
|
+
}
|
|
26
104
|
function isBlockedHost(hostname) {
|
|
27
|
-
const h = hostname.toLowerCase();
|
|
105
|
+
const h = hostname.toLowerCase().replace(/^\[|\]$/g, "");
|
|
28
106
|
if (h === "localhost")
|
|
29
107
|
return true;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (octet >= BLOCKED_172_RANGE.min && octet <= BLOCKED_172_RANGE.max)
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
return false;
|
|
108
|
+
const addressType = isIP(h);
|
|
109
|
+
if (addressType === 0)
|
|
110
|
+
return false;
|
|
111
|
+
return addressType === 4
|
|
112
|
+
? NON_PUBLIC_IPV4_ADDRESSES.check(h, "ipv4")
|
|
113
|
+
: NON_PUBLIC_IPV6_ADDRESSES.check(h, "ipv6");
|
|
40
114
|
}
|
|
41
115
|
/**
|
|
42
116
|
* Validate that a URL is safe to fetch on behalf of customer-supplied
|
|
@@ -64,16 +138,179 @@ function getFilenameFromUrl(url) {
|
|
|
64
138
|
const ext = extname(urlObj.pathname) || ".mp4";
|
|
65
139
|
return `download_${hash}${ext}`;
|
|
66
140
|
}
|
|
67
|
-
|
|
141
|
+
function hasCompleteFile(path) {
|
|
142
|
+
if (!existsSync(path))
|
|
143
|
+
return false;
|
|
144
|
+
const entry = lstatSync(path);
|
|
145
|
+
if (entry.isFile() && entry.size > 0)
|
|
146
|
+
return true;
|
|
147
|
+
// Old versions could leave an empty file behind. Never trust that stale
|
|
148
|
+
// cache entry—or a symlink/special entry planted at the final path.
|
|
149
|
+
rmSync(path, { recursive: entry.isDirectory(), force: true });
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
|
|
153
|
+
const MAX_REDIRECTS = 5;
|
|
154
|
+
function assertAllowedDownloadUrl(url, redirect) {
|
|
155
|
+
try {
|
|
156
|
+
assertPublicHttpsUrl(url);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
throw new UrlDownloadError("http_rejected", false, redirect ? "Download redirect target is not permitted" : "Download URL is not permitted");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async function cancelResponseBody(response) {
|
|
163
|
+
try {
|
|
164
|
+
await response.body?.cancel();
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Redirect validation remains authoritative if teardown also fails.
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function resolveRedirectUrl(response, currentUrl, redirects) {
|
|
171
|
+
if (redirects >= MAX_REDIRECTS) {
|
|
172
|
+
throw new UrlDownloadError("http_rejected", false, "Download exceeded redirect limit");
|
|
173
|
+
}
|
|
174
|
+
const location = response.headers.get("location");
|
|
175
|
+
if (!location) {
|
|
176
|
+
throw new UrlDownloadError("http_rejected", false, "Download redirect omitted a Location header");
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
return new URL(location, currentUrl).toString();
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
throw new UrlDownloadError("http_rejected", false, "Download redirect Location is invalid");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async function fetchWithValidatedRedirects(initialUrl, controller) {
|
|
186
|
+
let currentUrl = initialUrl;
|
|
187
|
+
for (let redirects = 0;; redirects += 1) {
|
|
188
|
+
assertAllowedDownloadUrl(currentUrl, redirects > 0);
|
|
189
|
+
// lgtm[js/file-access-to-http] — every redirect hop is fetched manually
|
|
190
|
+
// only after the HTTPS/private-host guard above; automatic redirect
|
|
191
|
+
// following is disabled so an allowed host cannot bounce into IMDS.
|
|
192
|
+
const response = await fetch(currentUrl, {
|
|
193
|
+
signal: controller.signal,
|
|
194
|
+
redirect: "manual",
|
|
195
|
+
});
|
|
196
|
+
if (!REDIRECT_STATUSES.has(response.status))
|
|
197
|
+
return response;
|
|
198
|
+
await cancelResponseBody(response);
|
|
199
|
+
currentUrl = resolveRedirectUrl(response, currentUrl, redirects);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async function fetchToPartial(url, partialPath, controller) {
|
|
203
|
+
const response = await fetchWithValidatedRedirects(url, controller);
|
|
204
|
+
if (!response.ok) {
|
|
205
|
+
// Do not leave a streaming error response holding an Undici connection
|
|
206
|
+
// while the bounded retry starts.
|
|
207
|
+
try {
|
|
208
|
+
await response.body?.cancel();
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// The HTTP status remains the useful failure if teardown also fails.
|
|
212
|
+
}
|
|
213
|
+
throw classifyHttpFailure(response.status, response.statusText);
|
|
214
|
+
}
|
|
215
|
+
if (!response.body) {
|
|
216
|
+
throw new UrlDownloadError("empty_body", true, "Download response body is empty");
|
|
217
|
+
}
|
|
218
|
+
const fileStream = createWriteStream(partialPath, { flags: "wx" });
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
220
|
+
const readableStream = Readable.fromWeb(response.body);
|
|
221
|
+
await pipeline(readableStream, fileStream);
|
|
222
|
+
if (statSync(partialPath).size === 0) {
|
|
223
|
+
throw new UrlDownloadError("empty_body", true, "Download response body contained zero bytes");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function syncAndPublishPartial(partialPath, localPath) {
|
|
227
|
+
// Windows rejects fsync on a read-only handle (EPERM); the partial is ours
|
|
228
|
+
// and writable, so r+ preserves the same flush semantics cross-platform.
|
|
229
|
+
const fd = openSync(partialPath, "r+");
|
|
230
|
+
try {
|
|
231
|
+
fsyncSync(fd);
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
closeSync(fd);
|
|
235
|
+
}
|
|
236
|
+
// Different cancellation scopes intentionally do not share a physical
|
|
237
|
+
// request. If another complete attempt won the final-path race, reuse it.
|
|
238
|
+
if (hasCompleteFile(localPath))
|
|
239
|
+
return;
|
|
240
|
+
try {
|
|
241
|
+
renameSync(partialPath, localPath);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (!hasCompleteFile(localPath))
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
async function runDownloadAttempt(url, localPath, timeoutMs, signal) {
|
|
249
|
+
// A private, unguessable directory prevents symlink planting and keeps the
|
|
250
|
+
// partial on the destination filesystem so the final rename stays atomic.
|
|
251
|
+
const attemptDir = mkdtempSync(join(dirname(localPath), ".hf-download-"));
|
|
252
|
+
const partialPath = join(attemptDir, "payload");
|
|
253
|
+
const controller = new AbortController();
|
|
254
|
+
let timedOut = false;
|
|
255
|
+
let callerAborted = signal?.aborted ?? false;
|
|
256
|
+
const onCallerAbort = () => {
|
|
257
|
+
callerAborted = true;
|
|
258
|
+
controller.abort();
|
|
259
|
+
};
|
|
260
|
+
signal?.addEventListener("abort", onCallerAbort, { once: true });
|
|
261
|
+
const timeoutId = setTimeout(() => {
|
|
262
|
+
timedOut = true;
|
|
263
|
+
controller.abort();
|
|
264
|
+
}, timeoutMs);
|
|
265
|
+
try {
|
|
266
|
+
if (callerAborted) {
|
|
267
|
+
throw new UrlDownloadError("cancelled", false, "Download cancelled");
|
|
268
|
+
}
|
|
269
|
+
await fetchToPartial(url, partialPath, controller);
|
|
270
|
+
syncAndPublishPartial(partialPath, localPath);
|
|
271
|
+
return localPath;
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
if (callerAborted) {
|
|
275
|
+
throw new UrlDownloadError("cancelled", false, "Download cancelled");
|
|
276
|
+
}
|
|
277
|
+
if (timedOut) {
|
|
278
|
+
throw new UrlDownloadError("timeout", true, `Download timeout after ${timeoutMs / 1000}s`);
|
|
279
|
+
}
|
|
280
|
+
throw classifyDownloadFailure(error);
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
clearTimeout(timeoutId);
|
|
284
|
+
signal?.removeEventListener("abort", onCallerAbort);
|
|
285
|
+
controller.abort();
|
|
286
|
+
rmSync(attemptDir, { recursive: true, force: true });
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async function downloadWithRetry(url, localPath, timeoutMs, signal, onTransientRetry) {
|
|
290
|
+
const maxTransientRetries = 1;
|
|
291
|
+
for (let attempt = 0;; attempt += 1) {
|
|
292
|
+
try {
|
|
293
|
+
return await runDownloadAttempt(url, localPath, timeoutMs, signal);
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
const classified = classifyDownloadFailure(error);
|
|
297
|
+
if (!classified.retryable || attempt >= maxTransientRetries)
|
|
298
|
+
throw classified;
|
|
299
|
+
onTransientRetry?.(classified);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
export async function downloadToTemp(url, destDir, timeoutMs = 300000, signal, onTransientRetry) {
|
|
68
304
|
// Reject non-HTTPS URLs and private/reserved address ranges before
|
|
69
305
|
// touching the cache or filesystem — customer-supplied compositions must
|
|
70
306
|
// not be able to trigger outbound fetches to internal infrastructure.
|
|
71
307
|
assertPublicHttpsUrl(url);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
308
|
+
const cacheKey = `${url}\0${destDir}`;
|
|
309
|
+
// The physical request may be shared only by callers with the same
|
|
310
|
+
// cancellation scope and deadline. Otherwise the first caller's abort or
|
|
311
|
+
// timeout would incorrectly own every waiter.
|
|
312
|
+
const inFlightKey = `${cacheKey}\0${timeoutMs}\0${signalScopeKey(signal)}`;
|
|
313
|
+
const inFlight = inFlightDownloads.get(inFlightKey);
|
|
77
314
|
if (inFlight) {
|
|
78
315
|
return inFlight;
|
|
79
316
|
}
|
|
@@ -82,42 +319,14 @@ export async function downloadToTemp(url, destDir, timeoutMs = 300000) {
|
|
|
82
319
|
}
|
|
83
320
|
const filename = getFilenameFromUrl(url);
|
|
84
321
|
const localPath = join(destDir, filename);
|
|
85
|
-
if (
|
|
86
|
-
downloadPathCache.set(url, localPath);
|
|
322
|
+
if (hasCompleteFile(localPath))
|
|
87
323
|
return localPath;
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
clearTimeout(timeoutId);
|
|
95
|
-
if (!response.ok) {
|
|
96
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
97
|
-
}
|
|
98
|
-
if (!response.body) {
|
|
99
|
-
throw new Error("Response body is empty");
|
|
100
|
-
}
|
|
101
|
-
const fileStream = createWriteStream(localPath);
|
|
102
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
-
const readableStream = Readable.fromWeb(response.body);
|
|
104
|
-
await finished(readableStream.pipe(fileStream));
|
|
105
|
-
downloadPathCache.set(url, localPath);
|
|
106
|
-
return localPath;
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
110
|
-
if (message.includes("aborted")) {
|
|
111
|
-
throw new Error(`[URLDownloader] Download timeout after ${timeoutMs / 1000}s: ${url}`);
|
|
112
|
-
}
|
|
113
|
-
throw new Error(`[URLDownloader] Download failed: ${message}`);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
inFlightDownloads.delete(url);
|
|
117
|
-
}
|
|
118
|
-
})();
|
|
119
|
-
inFlightDownloads.set(url, downloadPromise);
|
|
120
|
-
return downloadPromise;
|
|
324
|
+
const downloadPromise = downloadWithRetry(url, localPath, timeoutMs, signal, onTransientRetry);
|
|
325
|
+
const trackedDownload = downloadPromise.finally(() => {
|
|
326
|
+
inFlightDownloads.delete(inFlightKey);
|
|
327
|
+
});
|
|
328
|
+
inFlightDownloads.set(inFlightKey, trackedDownload);
|
|
329
|
+
return trackedDownload;
|
|
121
330
|
}
|
|
122
331
|
export function isHttpUrl(path) {
|
|
123
332
|
return path.startsWith("http://") || path.startsWith("https://");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlDownloader.js","sourceRoot":"","sources":["../../src/utils/urlDownloader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"urlDownloader.js","sourceRoot":"","sources":["../../src/utils/urlDownloader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/engine",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.74",
|
|
4
4
|
"description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"linkedom": "^0.18.12",
|
|
39
39
|
"puppeteer": "^25.2.1",
|
|
40
40
|
"puppeteer-core": "^25.2.1",
|
|
41
|
-
"@hyperframes/core": "^0.7.
|
|
42
|
-
"@hyperframes/parsers": "^0.7.
|
|
41
|
+
"@hyperframes/core": "^0.7.74",
|
|
42
|
+
"@hyperframes/parsers": "^0.7.74"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^25.0.10",
|