hyperframes 0.8.189 → 0.8.190
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/{add-TIKUM2YX.js → add-DBKN5H7H.js} +11 -11
- package/dist/{animatedGifPrep-25X4G5IE.js → animatedGifPrep-YVBKKLQY.js} +5 -5
- package/dist/api.js +13 -13
- package/dist/{asset-TPKLIP4R.js → asset-2OHQKUMQ.js} +2 -2
- package/dist/{assetCataloger-PQAIV3FI.js → assetCataloger-O3QAUWIK.js} +5 -5
- package/dist/{audio-6RLPKB5X.js → audio-IR3JGCMM.js} +11 -11
- package/dist/{auth-O7QSTP6Y.js → auth-J6TAJLGD.js} +1 -1
- package/dist/{autoUpdate-TIEJODP7.js → autoUpdate-D7BJJUT2.js} +2 -2
- package/dist/{backgroundChecks-K2AXYDYG.js → backgroundChecks-AILHY2YZ.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-ORVWYJAH.js → batchRender-QZKFVWEI.js} +3 -3
- package/dist/{beats-2VTB2ATR.js → beats-6LOEKZPB.js} +4 -4
- package/dist/{benchmark-NLNBL6YR.js → benchmark-RJMHI3YW.js} +8 -8
- package/dist/{browser-M5UV6VJB.js → browser-Q3Q36FE3.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-EDD2XDS2.js → bundleWithLocalizedFonts-RWHFMSFL.js} +2 -2
- package/dist/{capture-JSYVNFKO.js → capture-2PNTGVYV.js} +8 -8
- package/dist/{capture-WHWEE5FE.js → capture-FO3ZZCT4.js} +2 -2
- package/dist/{captureCompositionFrame-JANGQCIA.js → captureCompositionFrame-WTMLWVEJ.js} +10 -10
- package/dist/{catalog-MPOOKNSZ.js → catalog-LUZYPUYT.js} +11 -11
- package/dist/{catch-up-6KZV3UMZ.js → catch-up-TUTLUTFP.js} +4 -4
- package/dist/{check-G273NWK7.js → check-K2TBTJZS.js} +32 -32
- package/dist/{checkBrowser-G53E2ZQI.js → checkBrowser-JT7CXDT6.js} +27 -27
- package/dist/{chunk-74Y43RJZ.js → chunk-2FFOLLU2.js} +3 -3
- package/dist/{chunk-QYQ2EYOI.js → chunk-3QLT727N.js} +3 -3
- package/dist/{chunk-GBT7P3OQ.js → chunk-45U3KY7Z.js} +4 -4
- package/dist/{chunk-AYBKDHYD.js → chunk-56IDMP37.js} +1 -1
- package/dist/{chunk-WYCFMNU3.js → chunk-56IOFIYB.js} +1 -1
- package/dist/{chunk-WMJJCHVQ.js → chunk-6HYHHMX3.js} +2 -2
- package/dist/{chunk-NSJ5HD6A.js → chunk-76ITJYXX.js} +5 -5
- package/dist/{chunk-4DZ3HBKF.js → chunk-7JHTNUF2.js} +1 -1
- package/dist/{chunk-XJVXROOL.js → chunk-A5YHWTSP.js} +2 -2
- package/dist/{chunk-5HJJEHGE.js → chunk-AYFF3GX6.js} +1 -1
- package/dist/{chunk-4QFKGRTB.js → chunk-B7JFAXDP.js} +2 -2
- package/dist/{chunk-BZQLTNMB.js → chunk-BT64TTSE.js} +1 -1
- package/dist/{chunk-3X6LH25W.js → chunk-BWPY64WA.js} +1 -1
- package/dist/{chunk-565X6Q4X.js → chunk-CWVSJA52.js} +16 -8
- package/dist/{chunk-F45HHA3M.js → chunk-CWYS2UNQ.js} +1 -1
- package/dist/chunk-DIV37NUE.js +3896 -0
- package/dist/{chunk-FJF5JBYU.js → chunk-DRTIIAIZ.js} +1 -1
- package/dist/{chunk-KS4HMJJD.js → chunk-DX7VEUBO.js} +1 -1
- package/dist/{chunk-CTF7BYCV.js → chunk-E7DXKMKU.js} +2 -2
- package/dist/{chunk-AQ3L7DVB.js → chunk-EPOYPP36.js} +2 -2
- package/dist/{chunk-44TJOEH5.js → chunk-EQF6TVWB.js} +16 -16
- package/dist/{chunk-TREMHDWT.js → chunk-EU5HTY3E.js} +9 -9
- package/dist/{chunk-R5FS7GFU.js → chunk-EUUHVDMN.js} +1 -1
- package/dist/{chunk-ASZ4IQB4.js → chunk-F6DNM676.js} +2 -2
- package/dist/{chunk-TPTQHOXU.js → chunk-FANFO5HI.js} +9 -9
- package/dist/{chunk-M6FHSQZ3.js → chunk-FUHI34T4.js} +3 -3
- package/dist/{chunk-HQIFMCQN.js → chunk-FVD44EQX.js} +42 -26
- package/dist/{chunk-HNMDLKA4.js → chunk-GGVGOY6M.js} +1 -1
- package/dist/{chunk-CSYSEPWL.js → chunk-HJZ5CPZA.js} +5 -5
- package/dist/{chunk-3OLOVRWS.js → chunk-IARWN467.js} +1 -1
- package/dist/{chunk-IFXOMIBP.js → chunk-JB7LML5B.js} +3 -3
- package/dist/{chunk-GWYMAII7.js → chunk-JLSXXMRU.js} +1 -1
- package/dist/{chunk-E676Y7AY.js → chunk-K4664CDS.js} +27 -13
- package/dist/{chunk-B52BJM5K.js → chunk-KNQQZRB2.js} +2 -2
- package/dist/{chunk-KLWUB37U.js → chunk-KUMUK6QS.js} +7 -7
- package/dist/{chunk-ZPMF6GAQ.js → chunk-L34DPWY4.js} +11 -7
- package/dist/{chunk-HXM2ISEK.js → chunk-OAPYPSEB.js} +239 -204
- package/dist/{chunk-IPEP346Y.js → chunk-OOAVKK2W.js} +1 -1
- package/dist/{chunk-37EPEFXM.js → chunk-OTQXYTQZ.js} +1 -1
- package/dist/{chunk-JZDVIDFH.js → chunk-R4QASDTN.js} +2 -2
- package/dist/{chunk-TFUAKV6O.js → chunk-RBGNU7VD.js} +1 -1
- package/dist/{chunk-2CYM34M7.js → chunk-RDHEG7RX.js} +2 -2
- package/dist/{chunk-JIPUWKLA.js → chunk-S2IEO6TH.js} +11 -11
- package/dist/{chunk-6RA4TWGV.js → chunk-S7C6EM7N.js} +1 -1
- package/dist/{chunk-OHXHBMF4.js → chunk-STJ2ANMF.js} +1 -1
- package/dist/{chunk-VRQU564T.js → chunk-SUSSMCWL.js} +1 -1
- package/dist/{chunk-SMF6YAUL.js → chunk-TSQAPPRS.js} +1 -1
- package/dist/{chunk-T37XXYRK.js → chunk-TTZTGXKG.js} +1 -1
- package/dist/{chunk-Z2BW2WJS.js → chunk-UZ7RJDEC.js} +1 -1
- package/dist/{chunk-QMFI4N7J.js → chunk-WBUO6WH6.js} +1 -1
- package/dist/{chunk-5544QB3U.js → chunk-WCT6KGGT.js} +1 -1
- package/dist/{chunk-ANYBRVPF.js → chunk-WLG4OYH7.js} +1 -1
- package/dist/{chunk-B634ZCY2.js → chunk-XBGEWNGQ.js} +1 -1
- package/dist/{chunk-HUG47UEE.js → chunk-XNLYMHX2.js} +1 -1
- package/dist/{chunk-NDBWI7OA.js → chunk-Y5L5I4US.js} +5 -5
- package/dist/{chunk-E7TI5PAQ.js → chunk-YT5VLUHM.js} +1 -1
- package/dist/{chunk-SGFMCNLY.js → chunk-ZFFKWHXN.js} +1 -1
- package/dist/{clean-PS4VYGQ6.js → clean-UVTWBPXK.js} +13 -13
- package/dist/cli.js +53 -53
- package/dist/{cloud-E47CE5VQ.js → cloud-M42IPKFD.js} +4 -4
- package/dist/{cloudrun-3J4SQBXE.js → cloudrun-CTNX64R6.js} +4 -4
- package/dist/{compare-EAKHXBDO.js → compare-MQI7TG5M.js} +24 -24
- package/dist/{compiler-23MT6CX6.js → compiler-EJE3HLCS.js} +2 -2
- package/dist/{component-QBOXYJJS.js → component-QSYOSFVV.js} +3 -3
- package/dist/{compositions-QC3EO3MJ.js → compositions-ITDFE7K4.js} +9 -9
- package/dist/{delete-TXEOLPC6.js → delete-NTGTENKJ.js} +2 -2
- package/dist/{deploy-3B3WJ6PM.js → deploy-AOJOXEYX.js} +1 -1
- package/dist/{dist-F4UJFK4S.js → dist-NHW2JQCA.js} +2 -2
- package/dist/{doctor-2CRFH4B3.js → doctor-Q6DAYVSQ.js} +9 -9
- package/dist/{events-KVTX3QFV.js → events-BQIBYPCF.js} +2 -2
- package/dist/{events-GUIOSBIB.js → events-PV3CDO4A.js} +3 -3
- package/dist/{feedback-VQIOSTIB.js → feedback-BZH26JQE.js} +6 -6
- package/dist/{ffmpeg-BPCZGXFW.js → ffmpeg-KU7RNT3U.js} +5 -5
- package/dist/{figma-QIOKCH26.js → figma-PBGZUEIL.js} +3 -3
- package/dist/fontLocalizeCli.js +7 -7
- package/dist/{get-TU45SNXF.js → get-MM2JZ5ET.js} +2 -2
- package/dist/{gpuPolicy-AWAJBGYY.js → gpuPolicy-DQE2CD5T.js} +5 -5
- package/dist/{grade-compare-LDNUXX3Q.js → grade-compare-YTDQ7YXW.js} +25 -25
- package/dist/{help-YUCHJKKL.js → help-M4B2DN7E.js} +1 -1
- package/dist/{history-MMHFUMIG.js → history-ZW4UYKAJ.js} +6 -6
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +62 -62
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/{info-HBHOFSC2.js → info-L7LQAXLK.js} +7 -7
- package/dist/{init-3E4GUXIZ.js → init-HTSQ535A.js} +25 -25
- package/dist/{inspect-YNUPJVIH.js → inspect-EWF2THRR.js} +25 -25
- package/dist/{installer-WLCRP33K.js → installer-PQKH2S7C.js} +4 -4
- package/dist/{keyframes-Z47GHCGO.js → keyframes-X2QKJ4DP.js} +6 -6
- package/dist/{lambda-CA4PEUO2.js → lambda-BURM66GP.js} +6 -6
- package/dist/{layout-YPV6PIKF.js → layout-3Z3SJGZZ.js} +25 -25
- package/dist/{lint-3AVVQ74A.js → lint-OMNZ2K5J.js} +6 -6
- package/dist/{list-JH52Y735.js → list-5ZSQEH6N.js} +2 -2
- package/dist/{login-G7NPJUAW.js → login-YNCQPHLA.js} +4 -4
- package/dist/{manager-2LSMMZY4.js → manager-N6XXRQN3.js} +6 -6
- package/dist/{media-treatment-BVMMD5EN.js → media-treatment-EOKBRJPY.js} +11 -11
- package/dist/{models-P3TNRVRV.js → models-6T4CCKUV.js} +9 -9
- package/dist/{motionShot-LK62QHNE.js → motionShot-KXKMYZ3A.js} +13 -13
- package/dist/{normalize-audio-Y7BAQ7AR.js → normalize-audio-VWB7RHHA.js} +4 -4
- package/dist/{open-CCFFLAT7.js → open-32SQCNUP.js} +11 -11
- package/dist/{parakeetRunner-N2BWSOSD.js → parakeetRunner-BXW2WX6Q.js} +10 -10
- package/dist/{pipeline-3VT2DQGU.js → pipeline-V5ONFRCY.js} +6 -6
- package/dist/{play-G4I5IFHO.js → play-BBL262JE.js} +16 -16
- package/dist/{preflight-2KU2QLCZ.js → preflight-LCNGQFNY.js} +6 -6
- package/dist/{present-EJ7XHGQO.js → present-RY4HO4ZQ.js} +12 -12
- package/dist/{preview-O23BYFAY.js → preview-BLLPCCLG.js} +16 -16
- package/dist/{producer-UJQVLKLP.js → producer-QG4AQ35S.js} +1 -1
- package/dist/{projectConfig-QFVIBT37.js → projectConfig-LN3NR5OM.js} +6 -6
- package/dist/{publication-4UYGFB2X.js → publication-TXMCS4KM.js} +2 -2
- package/dist/{publish-MHLVJLCR.js → publish-57VURD7Z.js} +7 -7
- package/dist/{remove-background-N7AHTZWP.js → remove-background-VEWVIO3A.js} +7 -7
- package/dist/{render-CDATEVDJ.js → render-4E7QDVOI.js} +12 -12
- package/dist/{render-6HQV4LZJ.js → render-SP7WAUB4.js} +5 -5
- package/dist/{render-EI2ODKOP.js → render-XMN3NJIQ.js} +26 -26
- package/dist/{render-batch-F7HMC7XH.js → render-batch-7ULP5RIJ.js} +5 -5
- package/dist/{resolver-63DB5JCY.js → resolver-D3XERO6U.js} +4 -4
- package/dist/{sherpa-AK3MTPL3.js → sherpa-5B5G426W.js} +9 -9
- package/dist/skills/hyperframes/references/motion.md +1 -1
- package/dist/{skills-EVIDL7PV.js → skills-RXHRF7O7.js} +5 -5
- package/dist/{skillsUpdateCheck-YCNJYDJO.js → skillsUpdateCheck-JOTDZJAE.js} +3 -3
- package/dist/{snapshot-WSYZKR3C.js → snapshot-DN4MP4VN.js} +29 -29
- package/dist/{src-KTD6WTEV.js → src-W6Y5ZYRQ.js} +6 -6
- package/dist/{src-YNXBU4ZQ.js → src-XSDYRKLG.js} +4 -4
- package/dist/{staticProjectServer-D2D3BKBP.js → staticProjectServer-JMFGTPMX.js} +13 -13
- package/dist/studio/assets/{hyperframes-player-CkK8Zijf.js → hyperframes-player-0HXJPmYC.js} +1 -1
- package/dist/studio/assets/{index-CESvLzz0.css → index-B3vk3hfU.css} +1 -1
- package/dist/studio/assets/{index-B2JcCaRF.js → index-BYw97F07.js} +127 -127
- package/dist/studio/assets/{index-ATnRoBug.js → index-DsSfhjUS.js} +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/{studio-api-3ZGQPE5J.js → studio-api-SZ4OMFPN.js} +6 -6
- package/dist/{studioServer-VWM4J7ZP.js → studioServer-LWO33H7D.js} +42 -42
- package/dist/{telemetry-BEVI64BB.js → telemetry-K3AFDKOP.js} +3 -3
- package/dist/{timeline-P57FUXJQ.js → timeline-NYQOAQDH.js} +14 -14
- package/dist/{tokens-OUQY6LPD.js → tokens-K7YWUVOK.js} +2 -2
- package/dist/{transcribe-CK66VIU4.js → transcribe-ANPUQDZD.js} +8 -8
- package/dist/{transcribe-QUPX67KC.js → transcribe-QAUMODXM.js} +14 -14
- package/dist/{updateCheck-XZ43CH3L.js → updateCheck-RNR4HMDI.js} +2 -2
- package/dist/{upgrade-7QQNGI7I.js → upgrade-MKUGZZPA.js} +2 -2
- package/dist/{urlDownloader-ESAEL6YX.js → urlDownloader-5USPXLCS.js} +4 -4
- package/dist/{validate-5GZ6KFRU.js → validate-OJHPDLC5.js} +19 -19
- package/dist/{video-AQNVR6PE.js → video-BCKRR6LU.js} +5 -5
- package/dist/warmCheck.js +32 -32
- package/package.json +1 -1
- package/dist/chunk-BPX7LZG6.js +0 -3896
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
renderFrameIdForRenderId,
|
|
27
27
|
resolveAuthoredTimingWindow,
|
|
28
28
|
toFps
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-56IOFIYB.js";
|
|
30
30
|
import {
|
|
31
31
|
AUDIO_GROUP_RENDER_ID_ATTR,
|
|
32
32
|
COLOR_GRADING_SOURCE_HIDDEN_ATTR,
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
sourceTimeAt,
|
|
64
64
|
timeAtSourceTime,
|
|
65
65
|
volumeSegmentSampleCount
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-DIV37NUE.js";
|
|
67
67
|
import {
|
|
68
68
|
clampAudioGain,
|
|
69
69
|
clipGain,
|
|
@@ -1090,7 +1090,6 @@ var BEGINFRAME_ONLY_FLAGS = /* @__PURE__ */ new Set([
|
|
|
1090
1090
|
function stripBeginFrameFlags(args) {
|
|
1091
1091
|
return args.filter((a) => !BEGINFRAME_ONLY_FLAGS.has(a));
|
|
1092
1092
|
}
|
|
1093
|
-
var BEGINFRAME_SCREENSHOT_PROBE_ATTEMPTS = 10;
|
|
1094
1093
|
var BEGINFRAME_PROBE_TIMEOUT_MS = 2e3;
|
|
1095
1094
|
var BEGINFRAME_PROBE_CLEANUP_TIMEOUT_MS = 250;
|
|
1096
1095
|
async function awaitBeforeDeadline(operation, deadline, label) {
|
|
@@ -1174,7 +1173,8 @@ async function probeBeginFrameSupport(browser, timeoutMs = BEGINFRAME_PROBE_TIME
|
|
|
1174
1173
|
let bytes = Buffer.alloc(0);
|
|
1175
1174
|
let isPng = false;
|
|
1176
1175
|
let attempts = 0;
|
|
1177
|
-
|
|
1176
|
+
while (!isPng && Date.now() < deadline) {
|
|
1177
|
+
attempts += 1;
|
|
1178
1178
|
const response = await awaitBeforeDeadline(
|
|
1179
1179
|
client.send("HeadlessExperimental.beginFrame", {
|
|
1180
1180
|
frameTimeTicks: 1e3 + (attempts - 1) * 33,
|
|
@@ -1187,7 +1187,7 @@ async function probeBeginFrameSupport(browser, timeoutMs = BEGINFRAME_PROBE_TIME
|
|
|
1187
1187
|
const screenshot = response.screenshotData ?? "";
|
|
1188
1188
|
bytes = screenshot ? Buffer.from(screenshot, "base64") : Buffer.alloc(0);
|
|
1189
1189
|
isPng = bytes.length >= 8 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71;
|
|
1190
|
-
if (isPng) break;
|
|
1190
|
+
if (isPng || Date.now() + 10 >= deadline) break;
|
|
1191
1191
|
await awaitBeforeDeadline(
|
|
1192
1192
|
new Promise((resolveDelay) => setTimeout(resolveDelay, 10)),
|
|
1193
1193
|
deadline,
|
|
@@ -1196,7 +1196,7 @@ async function probeBeginFrameSupport(browser, timeoutMs = BEGINFRAME_PROBE_TIME
|
|
|
1196
1196
|
}
|
|
1197
1197
|
if (!isPng) {
|
|
1198
1198
|
throw new Error(
|
|
1199
|
-
`beginFrame screenshot returned ${bytes.length} bytes after ${
|
|
1199
|
+
`beginFrame screenshot returned ${bytes.length} bytes after ${attempts} attempts in ${Date.now() - started}ms with signature ${bytes.length >= 4 ? bytes.subarray(0, 4).toString("hex") : "<empty>"}`
|
|
1200
1200
|
);
|
|
1201
1201
|
}
|
|
1202
1202
|
await awaitBeforeDeadline(client.detach(), deadline, "CDP detach").catch(() => {
|
|
@@ -1691,6 +1691,24 @@ identically under Docker. Consider:
|
|
|
1691
1691
|
import { existsSync as existsSync3, mkdirSync, writeFileSync } from "fs";
|
|
1692
1692
|
import { join as join3 } from "path";
|
|
1693
1693
|
|
|
1694
|
+
// ../engine/src/services/renderFrameVideoHold.ts
|
|
1695
|
+
function holdRenderFrameVideos(ids, renderIdAttr) {
|
|
1696
|
+
const held = new Set(ids);
|
|
1697
|
+
window.__HF_RENDER_FRAME_VIDEO_IDS = ids;
|
|
1698
|
+
const hold = (el) => {
|
|
1699
|
+
if (el instanceof HTMLVideoElement && held.has(el.getAttribute(renderIdAttr) || el.id))
|
|
1700
|
+
el.preload = "none";
|
|
1701
|
+
};
|
|
1702
|
+
new MutationObserver((records) => {
|
|
1703
|
+
for (const record2 of records)
|
|
1704
|
+
for (const node of record2.addedNodes) {
|
|
1705
|
+
if (node.nodeType !== 1) continue;
|
|
1706
|
+
hold(node);
|
|
1707
|
+
for (const video of node.querySelectorAll("video")) hold(video);
|
|
1708
|
+
}
|
|
1709
|
+
}).observe(document, { childList: true, subtree: true });
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1694
1712
|
// ../engine/src/services/drawElementCaptureError.ts
|
|
1695
1713
|
var DrawElementCaptureError = class extends Error {
|
|
1696
1714
|
frameIndex;
|
|
@@ -2548,15 +2566,17 @@ async function readPageMotionBlur(page) {
|
|
|
2548
2566
|
const report = api && typeof api === "object" ? Reflect.get(api, "report") : null;
|
|
2549
2567
|
const got = typeof report === "function" ? report() : null;
|
|
2550
2568
|
if (!got || typeof got !== "object") return null;
|
|
2569
|
+
const tier = Reflect.get(got, "tier");
|
|
2551
2570
|
return {
|
|
2552
2571
|
state: String(Reflect.get(got, "state")),
|
|
2553
2572
|
code: String(Reflect.get(got, "reasonCode")),
|
|
2554
2573
|
movers: Number(Reflect.get(got, "movers")),
|
|
2555
|
-
failedFrames: Number(Reflect.get(got, "failedFrames")) || 0
|
|
2574
|
+
failedFrames: Number(Reflect.get(got, "failedFrames")) || 0,
|
|
2575
|
+
tier: typeof tier === "string" ? tier : null
|
|
2556
2576
|
};
|
|
2557
2577
|
});
|
|
2558
2578
|
}
|
|
2559
|
-
var formatPageMotionBlur = (r) => `[motion-blur] ${r.state} reasonCode=${r.code} movers=${r.movers} failedFrames=${r.failedFrames}`;
|
|
2579
|
+
var formatPageMotionBlur = (r) => `[motion-blur] ${r.state} reasonCode=${r.code} movers=${r.movers} failedFrames=${r.failedFrames}${r.tier ? ` tier=${r.tier}` : ""}`;
|
|
2560
2580
|
async function describePageMotionBlur(page) {
|
|
2561
2581
|
const r = await readPageMotionBlur(page);
|
|
2562
2582
|
return r && formatPageMotionBlur(r);
|
|
@@ -5488,6 +5508,13 @@ async function constructCaptureSession(input) {
|
|
|
5488
5508
|
}
|
|
5489
5509
|
});
|
|
5490
5510
|
await installMediaRenderIdBridge(page);
|
|
5511
|
+
if (options.skipReadinessVideoIds?.length) {
|
|
5512
|
+
await page.evaluateOnNewDocument(
|
|
5513
|
+
holdRenderFrameVideos,
|
|
5514
|
+
options.skipReadinessVideoIds,
|
|
5515
|
+
MEDIA_RENDER_ID_ATTR
|
|
5516
|
+
);
|
|
5517
|
+
}
|
|
5491
5518
|
if (useDrawElement) {
|
|
5492
5519
|
await page.evaluateOnNewDocument(instrumentAcceleratedCanvases);
|
|
5493
5520
|
}
|
|
@@ -14021,6 +14048,9 @@ function clampFadesToDuration(fades, duration) {
|
|
|
14021
14048
|
return { fadeIn: fadeIn * scale, fadeOut: fadeOut * scale };
|
|
14022
14049
|
}
|
|
14023
14050
|
|
|
14051
|
+
// ../engine/src/services/audioMixer.ts
|
|
14052
|
+
import { cpus as cpus2 } from "os";
|
|
14053
|
+
|
|
14024
14054
|
// ../engine/src/services/aacEncode.ts
|
|
14025
14055
|
import { mkdtempSync as mkdtempSync4, readFileSync as readFileSync5, rmSync as rmSync5, writeFileSync as writeFileSync4 } from "fs";
|
|
14026
14056
|
import { dirname as dirname5, join as join11 } from "path";
|
|
@@ -15136,6 +15166,7 @@ function escapeExpressionCommas(expression) {
|
|
|
15136
15166
|
function legacyFilterScriptOptionIsUnsupported(stderr) {
|
|
15137
15167
|
return /filter_complex_script/i.test(stderr) && /(?:unrecognized option|option (?:was )?not found)/i.test(stderr);
|
|
15138
15168
|
}
|
|
15169
|
+
var inPrepareSlot = createConcurrencyLimit(Math.max(2, Math.floor(cpus2().length / 2)));
|
|
15139
15170
|
var MAX_VOLUME_SEGMENTS = 32;
|
|
15140
15171
|
var VOLUME_SIMPLIFY_EPSILON = 5e-3;
|
|
15141
15172
|
var STEREO_CHANNEL_FILTER = "pan=stereo|FL=FL+FC|FR=FR+FC";
|
|
@@ -15862,216 +15893,220 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
|
|
|
15862
15893
|
else signal.addEventListener("abort", () => internalController.abort(), { once: true });
|
|
15863
15894
|
}
|
|
15864
15895
|
await Promise.all(
|
|
15865
|
-
elements.map(
|
|
15866
|
-
|
|
15867
|
-
|
|
15868
|
-
stage: "cancelled",
|
|
15869
|
-
reason: "cancelled",
|
|
15870
|
-
owner: "user",
|
|
15871
|
-
retryable: false,
|
|
15872
|
-
elementId: element.id,
|
|
15873
|
-
detail: boundedDetail(`Cancelled audio element ${element.id}`)
|
|
15874
|
-
});
|
|
15875
|
-
return;
|
|
15876
|
-
}
|
|
15877
|
-
try {
|
|
15878
|
-
let srcPath = element.src;
|
|
15879
|
-
let readInPlace = false;
|
|
15880
|
-
if (!isHttpUrl(srcPath)) {
|
|
15881
|
-
srcPath = resolveProjectRelativeSrc(element.src, baseDir, compiledDir);
|
|
15882
|
-
const remoteUrl = config?.urlByAbsentLocalPath?.get(srcPath);
|
|
15883
|
-
if (remoteUrl) {
|
|
15884
|
-
srcPath = remoteUrl;
|
|
15885
|
-
readInPlace = true;
|
|
15886
|
-
}
|
|
15887
|
-
}
|
|
15888
|
-
if (isHttpUrl(srcPath) && !readInPlace) {
|
|
15889
|
-
try {
|
|
15890
|
-
srcPath = await downloadToTemp(
|
|
15891
|
-
srcPath,
|
|
15892
|
-
workDir,
|
|
15893
|
-
void 0,
|
|
15894
|
-
effectiveSignal,
|
|
15895
|
-
void 0,
|
|
15896
|
-
{
|
|
15897
|
-
onTelemetry: writeUrlDownloadTelemetry
|
|
15898
|
-
}
|
|
15899
|
-
);
|
|
15900
|
-
} catch (err) {
|
|
15901
|
-
failures.push(downloadFailure(err, element.id));
|
|
15902
|
-
return;
|
|
15903
|
-
}
|
|
15904
|
-
}
|
|
15905
|
-
if (!readInPlace && !existsSync11(srcPath)) {
|
|
15896
|
+
elements.map(
|
|
15897
|
+
(element, index) => inPrepareSlot(async () => {
|
|
15898
|
+
if (effectiveSignal.aborted) {
|
|
15906
15899
|
failures.push({
|
|
15907
|
-
stage: "
|
|
15908
|
-
reason: "
|
|
15900
|
+
stage: "cancelled",
|
|
15901
|
+
reason: "cancelled",
|
|
15909
15902
|
owner: "user",
|
|
15910
15903
|
retryable: false,
|
|
15911
15904
|
elementId: element.id,
|
|
15912
|
-
detail: boundedDetail(
|
|
15905
|
+
detail: boundedDetail(`Cancelled audio element ${element.id}`)
|
|
15913
15906
|
});
|
|
15914
15907
|
return;
|
|
15915
15908
|
}
|
|
15916
|
-
|
|
15917
|
-
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15922
|
-
|
|
15923
|
-
|
|
15924
|
-
|
|
15925
|
-
|
|
15926
|
-
}
|
|
15927
|
-
|
|
15928
|
-
|
|
15929
|
-
|
|
15930
|
-
|
|
15931
|
-
|
|
15932
|
-
|
|
15909
|
+
try {
|
|
15910
|
+
let srcPath = element.src;
|
|
15911
|
+
let readInPlace = false;
|
|
15912
|
+
if (!isHttpUrl(srcPath)) {
|
|
15913
|
+
srcPath = resolveProjectRelativeSrc(element.src, baseDir, compiledDir);
|
|
15914
|
+
const remoteUrl = config?.urlByAbsentLocalPath?.get(srcPath);
|
|
15915
|
+
if (remoteUrl) {
|
|
15916
|
+
srcPath = remoteUrl;
|
|
15917
|
+
readInPlace = true;
|
|
15918
|
+
}
|
|
15919
|
+
}
|
|
15920
|
+
if (isHttpUrl(srcPath) && !readInPlace) {
|
|
15921
|
+
try {
|
|
15922
|
+
srcPath = await downloadToTemp(
|
|
15923
|
+
srcPath,
|
|
15924
|
+
workDir,
|
|
15925
|
+
void 0,
|
|
15926
|
+
effectiveSignal,
|
|
15927
|
+
void 0,
|
|
15928
|
+
{
|
|
15929
|
+
onTelemetry: writeUrlDownloadTelemetry
|
|
15930
|
+
}
|
|
15931
|
+
);
|
|
15932
|
+
} catch (err) {
|
|
15933
|
+
failures.push(downloadFailure(err, element.id));
|
|
15934
|
+
return;
|
|
15935
|
+
}
|
|
15936
|
+
}
|
|
15937
|
+
if (!readInPlace && !existsSync11(srcPath)) {
|
|
15938
|
+
failures.push({
|
|
15939
|
+
stage: "source",
|
|
15940
|
+
reason: "source_not_found",
|
|
15941
|
+
owner: "user",
|
|
15942
|
+
retryable: false,
|
|
15943
|
+
elementId: element.id,
|
|
15944
|
+
detail: boundedDetail(
|
|
15945
|
+
missingSourceMessage(element.id, element.src, baseDir, srcPath)
|
|
15946
|
+
)
|
|
15947
|
+
});
|
|
15948
|
+
return;
|
|
15949
|
+
}
|
|
15950
|
+
if (await isNotMediaPayload(srcPath)) {
|
|
15951
|
+
failures.push({
|
|
15952
|
+
stage: "source",
|
|
15953
|
+
reason: "invalid_media",
|
|
15954
|
+
owner: "user",
|
|
15955
|
+
retryable: false,
|
|
15956
|
+
elementId: element.id,
|
|
15957
|
+
detail: boundedDetail(
|
|
15958
|
+
`Audio element ${element.id} source is a text document (HTML/XML/JSON), not media`
|
|
15959
|
+
)
|
|
15960
|
+
});
|
|
15961
|
+
return;
|
|
15962
|
+
}
|
|
15963
|
+
if (element.end - element.start <= 0) {
|
|
15964
|
+
let metadata;
|
|
15965
|
+
try {
|
|
15966
|
+
metadata = await extractAudioMetadata(
|
|
15967
|
+
srcPath,
|
|
15968
|
+
readInPlace ? { signal: effectiveSignal } : void 0
|
|
15969
|
+
);
|
|
15970
|
+
} catch (err) {
|
|
15971
|
+
failures.push(
|
|
15972
|
+
probeFailure(err instanceof Error ? err.message : String(err), element.id)
|
|
15973
|
+
);
|
|
15974
|
+
return;
|
|
15975
|
+
}
|
|
15976
|
+
const effectiveDuration = timeAtSourceTime(
|
|
15977
|
+
normalizeRateSpec(element.playbackRate),
|
|
15978
|
+
metadata.durationSeconds - element.mediaStart
|
|
15979
|
+
);
|
|
15980
|
+
element.end = element.start + (effectiveDuration > 0 ? effectiveDuration : metadata.durationSeconds);
|
|
15981
|
+
}
|
|
15982
|
+
let audioSrcPath = srcPath;
|
|
15983
|
+
if (element.type === "video") {
|
|
15984
|
+
const extractedPath = join14(workDir, `${element.id}-extracted.wav`);
|
|
15985
|
+
const extractResult = await extractAudioSegment(
|
|
15933
15986
|
srcPath,
|
|
15934
|
-
|
|
15987
|
+
extractedPath,
|
|
15988
|
+
"extract",
|
|
15989
|
+
element.mediaStart,
|
|
15990
|
+
element.end - element.start,
|
|
15991
|
+
element.playbackRate,
|
|
15992
|
+
effectiveSignal,
|
|
15993
|
+
config
|
|
15935
15994
|
);
|
|
15936
|
-
|
|
15937
|
-
|
|
15938
|
-
|
|
15995
|
+
if (!extractResult.success) {
|
|
15996
|
+
failures.push(
|
|
15997
|
+
extractResult.failure ? { ...extractResult.failure, elementId: element.id } : {
|
|
15998
|
+
stage: "extract",
|
|
15999
|
+
reason: "ffmpeg_failed",
|
|
16000
|
+
owner: "system",
|
|
16001
|
+
retryable: false,
|
|
16002
|
+
elementId: element.id,
|
|
16003
|
+
detail: boundedDetail(`Audio extract failed for element ${element.id}`)
|
|
16004
|
+
}
|
|
16005
|
+
);
|
|
16006
|
+
return;
|
|
16007
|
+
}
|
|
16008
|
+
audioSrcPath = extractedPath;
|
|
16009
|
+
} else {
|
|
16010
|
+
const trimmedPath = join14(workDir, `${element.id}-trimmed.wav`);
|
|
16011
|
+
const prepResult = await extractAudioSegment(
|
|
16012
|
+
srcPath,
|
|
16013
|
+
trimmedPath,
|
|
16014
|
+
"prepare",
|
|
16015
|
+
element.mediaStart,
|
|
16016
|
+
element.end - element.start,
|
|
16017
|
+
element.playbackRate,
|
|
16018
|
+
effectiveSignal,
|
|
16019
|
+
config
|
|
15939
16020
|
);
|
|
15940
|
-
|
|
16021
|
+
if (!prepResult.success) {
|
|
16022
|
+
failures.push(
|
|
16023
|
+
prepResult.failure ? { ...prepResult.failure, elementId: element.id } : {
|
|
16024
|
+
stage: "prepare",
|
|
16025
|
+
reason: "ffmpeg_failed",
|
|
16026
|
+
owner: "system",
|
|
16027
|
+
retryable: false,
|
|
16028
|
+
elementId: element.id,
|
|
16029
|
+
detail: boundedDetail(`Audio prepare failed for element ${element.id}`)
|
|
16030
|
+
}
|
|
16031
|
+
);
|
|
16032
|
+
return;
|
|
16033
|
+
}
|
|
16034
|
+
audioSrcPath = trimmedPath;
|
|
15941
16035
|
}
|
|
15942
|
-
const
|
|
15943
|
-
|
|
15944
|
-
|
|
15945
|
-
|
|
15946
|
-
|
|
15947
|
-
|
|
15948
|
-
let audioSrcPath = srcPath;
|
|
15949
|
-
if (element.type === "video") {
|
|
15950
|
-
const extractedPath = join14(workDir, `${element.id}-extracted.wav`);
|
|
15951
|
-
const extractResult = await extractAudioSegment(
|
|
15952
|
-
srcPath,
|
|
15953
|
-
extractedPath,
|
|
15954
|
-
"extract",
|
|
15955
|
-
element.mediaStart,
|
|
16036
|
+
const chain = element.fxChain ? parseAudioFxChain(element.fxChain) : void 0;
|
|
16037
|
+
const automation = element.automation ? resolveAutomation(parseAutomation(element.automation), chain) : null;
|
|
16038
|
+
const gainBeforeFx = chain !== void 0 && enabledAudioFxNodes(chain).length > 0;
|
|
16039
|
+
const laneKeyframes = automation ? volumeLaneKeyframes(
|
|
16040
|
+
automation,
|
|
16041
|
+
element.start,
|
|
15956
16042
|
element.end - element.start,
|
|
15957
|
-
element.
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
);
|
|
15961
|
-
|
|
15962
|
-
|
|
15963
|
-
|
|
15964
|
-
|
|
15965
|
-
|
|
15966
|
-
|
|
15967
|
-
|
|
15968
|
-
|
|
15969
|
-
|
|
16043
|
+
element.volume ?? 1,
|
|
16044
|
+
gainBeforeFx
|
|
16045
|
+
) : null;
|
|
16046
|
+
const tweened = !laneKeyframes && (element.volumeKeyframes?.length ?? 0) > 0;
|
|
16047
|
+
const envelopeKeyframes = laneKeyframes ?? element.volumeKeyframes;
|
|
16048
|
+
const envelope = envelopeKeyframes && envelopeKeyframes.length > 0 ? {
|
|
16049
|
+
keyframes: envelopeKeyframes,
|
|
16050
|
+
trackStart: element.start,
|
|
16051
|
+
baseVolume: element.volume ?? 1
|
|
16052
|
+
} : null;
|
|
16053
|
+
let bakedEnvelope = false;
|
|
16054
|
+
let tailSeconds = 0;
|
|
16055
|
+
if (chain) {
|
|
16056
|
+
tailSeconds = chainTailSeconds(chain, automation ?? void 0);
|
|
16057
|
+
const fxResult = await applyAudioFxChain(
|
|
16058
|
+
audioSrcPath,
|
|
16059
|
+
chain,
|
|
16060
|
+
join14(workDir, `${element.id}-fx.wav`),
|
|
16061
|
+
{
|
|
16062
|
+
trackId: element.id,
|
|
16063
|
+
signal: effectiveSignal,
|
|
16064
|
+
...automation ? { automation } : {},
|
|
16065
|
+
...envelope ? { envelope } : {},
|
|
16066
|
+
...gainBeforeFx ? { inputGain: clipGain(element.volume ?? 1, tweened) } : {}
|
|
15970
16067
|
}
|
|
15971
16068
|
);
|
|
15972
|
-
|
|
16069
|
+
audioSrcPath = fxResult.path;
|
|
16070
|
+
bakedEnvelope = fxResult.envelopeBaked;
|
|
15973
16071
|
}
|
|
15974
|
-
|
|
15975
|
-
|
|
15976
|
-
|
|
15977
|
-
|
|
15978
|
-
|
|
15979
|
-
|
|
15980
|
-
"prepare",
|
|
15981
|
-
element.mediaStart,
|
|
15982
|
-
element.end - element.start,
|
|
15983
|
-
element.playbackRate,
|
|
15984
|
-
effectiveSignal,
|
|
15985
|
-
config
|
|
15986
|
-
);
|
|
15987
|
-
if (!prepResult.success) {
|
|
15988
|
-
failures.push(
|
|
15989
|
-
prepResult.failure ? { ...prepResult.failure, elementId: element.id } : {
|
|
15990
|
-
stage: "prepare",
|
|
15991
|
-
reason: "ffmpeg_failed",
|
|
15992
|
-
owner: "system",
|
|
15993
|
-
retryable: false,
|
|
15994
|
-
elementId: element.id,
|
|
15995
|
-
detail: boundedDetail(`Audio prepare failed for element ${element.id}`)
|
|
15996
|
-
}
|
|
16072
|
+
if (envelope && !bakedEnvelope) {
|
|
16073
|
+
bakedEnvelope = applyVolumeEnvelopeToWav(
|
|
16074
|
+
audioSrcPath,
|
|
16075
|
+
envelope.keyframes,
|
|
16076
|
+
envelope.trackStart,
|
|
16077
|
+
envelope.baseVolume
|
|
15997
16078
|
);
|
|
15998
|
-
return;
|
|
15999
16079
|
}
|
|
16000
|
-
|
|
16001
|
-
|
|
16002
|
-
|
|
16003
|
-
|
|
16004
|
-
|
|
16005
|
-
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16010
|
-
|
|
16011
|
-
|
|
16012
|
-
|
|
16013
|
-
|
|
16014
|
-
|
|
16015
|
-
|
|
16016
|
-
|
|
16017
|
-
|
|
16018
|
-
|
|
16019
|
-
|
|
16020
|
-
|
|
16021
|
-
|
|
16022
|
-
|
|
16023
|
-
|
|
16024
|
-
|
|
16025
|
-
|
|
16026
|
-
|
|
16027
|
-
{
|
|
16028
|
-
trackId: element.id,
|
|
16029
|
-
signal: effectiveSignal,
|
|
16030
|
-
...automation ? { automation } : {},
|
|
16031
|
-
...envelope ? { envelope } : {},
|
|
16032
|
-
...gainBeforeFx ? { inputGain: clipGain(element.volume ?? 1, tweened) } : {}
|
|
16033
|
-
}
|
|
16034
|
-
);
|
|
16035
|
-
audioSrcPath = fxResult.path;
|
|
16036
|
-
bakedEnvelope = fxResult.envelopeBaked;
|
|
16037
|
-
}
|
|
16038
|
-
if (envelope && !bakedEnvelope) {
|
|
16039
|
-
bakedEnvelope = applyVolumeEnvelopeToWav(
|
|
16040
|
-
audioSrcPath,
|
|
16041
|
-
envelope.keyframes,
|
|
16042
|
-
envelope.trackStart,
|
|
16043
|
-
envelope.baseVolume
|
|
16044
|
-
);
|
|
16080
|
+
const track = {
|
|
16081
|
+
id: element.id,
|
|
16082
|
+
srcPath: audioSrcPath,
|
|
16083
|
+
start: element.start,
|
|
16084
|
+
end: element.end,
|
|
16085
|
+
mediaStart: element.mediaStart,
|
|
16086
|
+
duration: element.end - element.start,
|
|
16087
|
+
// Gain is already in the samples when baked, so mix at unity.
|
|
16088
|
+
volume: bakedEnvelope || gainBeforeFx && !tweened ? 1 : element.volume ?? 1,
|
|
16089
|
+
volumeKeyframes: bakedEnvelope ? void 0 : envelopeKeyframes ?? void 0,
|
|
16090
|
+
...element.fadeIn ? { fadeIn: element.fadeIn } : {},
|
|
16091
|
+
...element.fadeOut ? { fadeOut: element.fadeOut } : {},
|
|
16092
|
+
...tailSeconds > 0 ? { tailSeconds } : {}
|
|
16093
|
+
};
|
|
16094
|
+
preparedTracks[index] = track;
|
|
16095
|
+
} catch (err) {
|
|
16096
|
+
if (err instanceof AudioFxRenderError) throw err;
|
|
16097
|
+
failures.push({
|
|
16098
|
+
stage: "internal",
|
|
16099
|
+
reason: "internal",
|
|
16100
|
+
owner: "system",
|
|
16101
|
+
retryable: false,
|
|
16102
|
+
elementId: element.id,
|
|
16103
|
+
detail: boundedDetail(
|
|
16104
|
+
`Audio processing failed for element ${element.id}: ${err instanceof Error ? err.message : String(err)}`
|
|
16105
|
+
)
|
|
16106
|
+
});
|
|
16045
16107
|
}
|
|
16046
|
-
|
|
16047
|
-
|
|
16048
|
-
srcPath: audioSrcPath,
|
|
16049
|
-
start: element.start,
|
|
16050
|
-
end: element.end,
|
|
16051
|
-
mediaStart: element.mediaStart,
|
|
16052
|
-
duration: element.end - element.start,
|
|
16053
|
-
// Gain is already in the samples when baked, so mix at unity.
|
|
16054
|
-
volume: bakedEnvelope || gainBeforeFx && !tweened ? 1 : element.volume ?? 1,
|
|
16055
|
-
volumeKeyframes: bakedEnvelope ? void 0 : envelopeKeyframes ?? void 0,
|
|
16056
|
-
...element.fadeIn ? { fadeIn: element.fadeIn } : {},
|
|
16057
|
-
...element.fadeOut ? { fadeOut: element.fadeOut } : {},
|
|
16058
|
-
...tailSeconds > 0 ? { tailSeconds } : {}
|
|
16059
|
-
};
|
|
16060
|
-
preparedTracks[index] = track;
|
|
16061
|
-
} catch (err) {
|
|
16062
|
-
if (err instanceof AudioFxRenderError) throw err;
|
|
16063
|
-
failures.push({
|
|
16064
|
-
stage: "internal",
|
|
16065
|
-
reason: "internal",
|
|
16066
|
-
owner: "system",
|
|
16067
|
-
retryable: false,
|
|
16068
|
-
elementId: element.id,
|
|
16069
|
-
detail: boundedDetail(
|
|
16070
|
-
`Audio processing failed for element ${element.id}: ${err instanceof Error ? err.message : String(err)}`
|
|
16071
|
-
)
|
|
16072
|
-
});
|
|
16073
|
-
}
|
|
16074
|
-
})
|
|
16108
|
+
}, effectiveSignal)
|
|
16109
|
+
)
|
|
16075
16110
|
).catch((err) => {
|
|
16076
16111
|
internalController.abort();
|
|
16077
16112
|
try {
|
|
@@ -16254,7 +16289,7 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
|
|
|
16254
16289
|
}
|
|
16255
16290
|
|
|
16256
16291
|
// ../engine/src/services/parallelCoordinator.ts
|
|
16257
|
-
import { cpus as
|
|
16292
|
+
import { cpus as cpus3, freemem } from "os";
|
|
16258
16293
|
import { existsSync as existsSync12, mkdirSync as mkdirSync8, readdirSync as readdirSync6 } from "fs";
|
|
16259
16294
|
import { copyFile, readFile as readFile2, rename } from "fs/promises";
|
|
16260
16295
|
import { join as join16 } from "path";
|
|
@@ -16369,7 +16404,7 @@ var MIN_WORKERS = 1;
|
|
|
16369
16404
|
var MAX_WORKER_DIAGNOSTIC_LINES = 8;
|
|
16370
16405
|
var ABSOLUTE_MAX_WORKERS = 24;
|
|
16371
16406
|
function defaultSafeMaxWorkers() {
|
|
16372
|
-
return Math.max(6, Math.min(16, Math.floor(
|
|
16407
|
+
return Math.max(6, Math.min(16, Math.floor(cpus3().length / 8)));
|
|
16373
16408
|
}
|
|
16374
16409
|
var MIN_FRAMES_PER_WORKER = 30;
|
|
16375
16410
|
function shouldDisableBrowserPoolForParallelWorker({
|
|
@@ -16409,7 +16444,7 @@ function formatWorkerFailure(result) {
|
|
|
16409
16444
|
return `${base}; diagnostics: ${diagnostics}`;
|
|
16410
16445
|
}
|
|
16411
16446
|
function computeWorkerSizing(totalFrames, requested, config) {
|
|
16412
|
-
const cpuCount =
|
|
16447
|
+
const cpuCount = cpus3().length;
|
|
16413
16448
|
const totalMemoryMb = getSystemTotalMb();
|
|
16414
16449
|
const heapLimitMb = Math.round(getHeapStatistics().heap_size_limit / (1024 * 1024));
|
|
16415
16450
|
const heapBasedWorkers = Math.max(
|
|
@@ -16964,7 +16999,7 @@ async function mergeWorkerFrames(workDir, tasks, outputDir) {
|
|
|
16964
16999
|
}
|
|
16965
17000
|
function getSystemResources() {
|
|
16966
17001
|
return {
|
|
16967
|
-
cpuCores:
|
|
17002
|
+
cpuCores: cpus3().length,
|
|
16968
17003
|
totalMemoryMB: getSystemTotalMb(),
|
|
16969
17004
|
freeMemoryMB: Math.round(freemem() / (1024 * 1024)),
|
|
16970
17005
|
recommendedWorkers: calculateOptimalWorkers(1e3)
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
typeDirPath,
|
|
21
21
|
updateRecord,
|
|
22
22
|
withFigmaErrors
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YT5VLUHM.js";
|
|
24
24
|
import {
|
|
25
25
|
defineCommand
|
|
26
26
|
} from "./chunk-S3S4TGEH.js";
|
|
@@ -229,7 +229,7 @@ var asset_default = defineCommand({
|
|
|
229
229
|
rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
|
|
230
230
|
);
|
|
231
231
|
}
|
|
232
|
-
const { trackFigmaImport } = await import("./telemetry-
|
|
232
|
+
const { trackFigmaImport } = await import("./telemetry-K3AFDKOP.js");
|
|
233
233
|
trackFigmaImport({
|
|
234
234
|
phase: "asset",
|
|
235
235
|
reused: results.every((r) => r.reused),
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
isAllowedHtmlAttribute,
|
|
12
12
|
isSafeAttributeValue,
|
|
13
13
|
sanitizeRichTextChildren
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-56IOFIYB.js";
|
|
15
15
|
import {
|
|
16
16
|
EXCLUDED_TAGS,
|
|
17
17
|
ensureHfIds,
|
|
18
18
|
mintHfId,
|
|
19
19
|
walkCompositionDescendants
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TSQAPPRS.js";
|
|
21
21
|
import {
|
|
22
22
|
decodedUrlPath,
|
|
23
23
|
removeElementWithGsapCascade
|