hyperframes 0.4.1 → 0.4.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/cli.js +65 -5
- package/dist/hyperframe-runtime.js +4 -4
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +4 -4
- package/dist/studio/assets/hyperframes-player-CB8_cuLZ.js +198 -0
- package/dist/studio/assets/{index-DKII_C6N.js → index-DAQNCMgC.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/package.json +1 -1
- package/dist/studio/assets/hyperframes-player-DvTKPzaI.js +0 -198
package/dist/cli.js
CHANGED
|
@@ -54,7 +54,7 @@ var VERSION;
|
|
|
54
54
|
var init_version = __esm({
|
|
55
55
|
"src/version.ts"() {
|
|
56
56
|
"use strict";
|
|
57
|
-
VERSION = true ? "0.4.
|
|
57
|
+
VERSION = true ? "0.4.3" : "0.0.0-dev";
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
|
|
@@ -20428,6 +20428,34 @@ function resolveHeadlessShellPath(config) {
|
|
|
20428
20428
|
}
|
|
20429
20429
|
return void 0;
|
|
20430
20430
|
}
|
|
20431
|
+
function stripBeginFrameFlags(args) {
|
|
20432
|
+
return args.filter((a) => !BEGINFRAME_ONLY_FLAGS.has(a));
|
|
20433
|
+
}
|
|
20434
|
+
async function probeBeginFrameSupport(browser) {
|
|
20435
|
+
let page;
|
|
20436
|
+
try {
|
|
20437
|
+
page = await browser.newPage();
|
|
20438
|
+
const client = await page.createCDPSession();
|
|
20439
|
+
await client.send("HeadlessExperimental.enable");
|
|
20440
|
+
const beginFrame = client.send("HeadlessExperimental.beginFrame", {
|
|
20441
|
+
frameTimeTicks: 0,
|
|
20442
|
+
interval: 33,
|
|
20443
|
+
noDisplayUpdates: true
|
|
20444
|
+
});
|
|
20445
|
+
const timeout = new Promise(
|
|
20446
|
+
(_2, reject) => setTimeout(() => reject(new Error("beginFrame probe timeout")), 2e3)
|
|
20447
|
+
);
|
|
20448
|
+
await Promise.race([beginFrame, timeout]);
|
|
20449
|
+
await client.detach().catch(() => {
|
|
20450
|
+
});
|
|
20451
|
+
return true;
|
|
20452
|
+
} catch {
|
|
20453
|
+
return false;
|
|
20454
|
+
} finally {
|
|
20455
|
+
await page?.close().catch(() => {
|
|
20456
|
+
});
|
|
20457
|
+
}
|
|
20458
|
+
}
|
|
20431
20459
|
async function acquireBrowser(chromeArgs, config) {
|
|
20432
20460
|
const enablePool = config?.enableBrowserPool ?? DEFAULT_CONFIG2.enableBrowserPool;
|
|
20433
20461
|
if (enablePool && pooledBrowser) {
|
|
@@ -20447,14 +20475,35 @@ async function acquireBrowser(chromeArgs, config) {
|
|
|
20447
20475
|
executablePath = headlessShell ?? void 0;
|
|
20448
20476
|
}
|
|
20449
20477
|
const ppt = await getPuppeteer();
|
|
20450
|
-
const
|
|
20478
|
+
const browserTimeout = config?.browserTimeout ?? DEFAULT_CONFIG2.browserTimeout;
|
|
20479
|
+
const protocolTimeout = config?.protocolTimeout ?? DEFAULT_CONFIG2.protocolTimeout;
|
|
20480
|
+
let browser = await ppt.launch({
|
|
20451
20481
|
headless: true,
|
|
20452
20482
|
args: chromeArgs,
|
|
20453
20483
|
defaultViewport: null,
|
|
20454
20484
|
executablePath,
|
|
20455
|
-
timeout:
|
|
20456
|
-
protocolTimeout
|
|
20485
|
+
timeout: browserTimeout,
|
|
20486
|
+
protocolTimeout
|
|
20457
20487
|
});
|
|
20488
|
+
if (captureMode === "beginframe") {
|
|
20489
|
+
const supported = await probeBeginFrameSupport(browser).catch(() => true);
|
|
20490
|
+
if (!supported) {
|
|
20491
|
+
await browser.close().catch(() => {
|
|
20492
|
+
});
|
|
20493
|
+
console.warn(
|
|
20494
|
+
"[BrowserManager] HeadlessExperimental.beginFrame unavailable in this Chromium build; falling back to screenshot mode."
|
|
20495
|
+
);
|
|
20496
|
+
captureMode = "screenshot";
|
|
20497
|
+
browser = await ppt.launch({
|
|
20498
|
+
headless: true,
|
|
20499
|
+
args: stripBeginFrameFlags(chromeArgs),
|
|
20500
|
+
defaultViewport: null,
|
|
20501
|
+
executablePath,
|
|
20502
|
+
timeout: browserTimeout,
|
|
20503
|
+
protocolTimeout
|
|
20504
|
+
});
|
|
20505
|
+
}
|
|
20506
|
+
}
|
|
20458
20507
|
if (enablePool) {
|
|
20459
20508
|
pooledBrowser = browser;
|
|
20460
20509
|
pooledBrowserRefCount = 1;
|
|
@@ -20537,7 +20586,7 @@ function buildChromeArgs(options, config) {
|
|
|
20537
20586
|
}
|
|
20538
20587
|
return chromeArgs;
|
|
20539
20588
|
}
|
|
20540
|
-
var _puppeteer, pooledBrowser, pooledBrowserRefCount, pooledCaptureMode, ENABLE_BROWSER_POOL;
|
|
20589
|
+
var _puppeteer, pooledBrowser, pooledBrowserRefCount, pooledCaptureMode, ENABLE_BROWSER_POOL, BEGINFRAME_ONLY_FLAGS;
|
|
20541
20590
|
var init_browserManager = __esm({
|
|
20542
20591
|
"../engine/src/services/browserManager.ts"() {
|
|
20543
20592
|
"use strict";
|
|
@@ -20546,6 +20595,17 @@ var init_browserManager = __esm({
|
|
|
20546
20595
|
pooledBrowserRefCount = 0;
|
|
20547
20596
|
pooledCaptureMode = "screenshot";
|
|
20548
20597
|
ENABLE_BROWSER_POOL = DEFAULT_CONFIG2.enableBrowserPool;
|
|
20598
|
+
BEGINFRAME_ONLY_FLAGS = /* @__PURE__ */ new Set([
|
|
20599
|
+
"--deterministic-mode",
|
|
20600
|
+
"--enable-begin-frame-control",
|
|
20601
|
+
"--disable-new-content-rendering-timeout",
|
|
20602
|
+
"--run-all-compositor-stages-before-draw",
|
|
20603
|
+
"--disable-threaded-animation",
|
|
20604
|
+
"--disable-threaded-scrolling",
|
|
20605
|
+
"--disable-checker-imaging",
|
|
20606
|
+
"--disable-image-animation-resync",
|
|
20607
|
+
"--enable-surface-synchronization"
|
|
20608
|
+
]);
|
|
20549
20609
|
}
|
|
20550
20610
|
});
|
|
20551
20611
|
|