@hyperframes/studio-server 0.8.145 → 0.8.147
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/{chunk-DG2VOIGR.js → chunk-3RUFN2CK.js} +1 -2
- package/dist/{chunk-RN33UALN.js → chunk-EJC7TX3O.js} +1 -2
- package/dist/{chunk-4ETS2LXI.js → chunk-L3HJVTQE.js} +0 -1
- package/dist/{chunk-DTKK7TKL.js → chunk-M62HDRLX.js} +2 -3
- package/dist/{chunk-IMG2GSY6.js → chunk-RGC6DKVM.js} +0 -1
- package/dist/{chunk-6XMC64FJ.js → chunk-SVQFE44C.js} +0 -1
- package/dist/{chunk-X62ASOGO.js → chunk-UEEXAVOA.js} +0 -1
- package/dist/{chunk-32IH7WBY.js → chunk-VMT4OC5B.js} +2 -3
- package/dist/{chunk-2VZGTTEG.js → chunk-XKBQOQFZ.js} +42 -8
- package/dist/{chunk-K3H6HTVC.js → chunk-Y7V6FJHS.js} +41 -16
- package/dist/{chunk-JJ4N3PXT.js → chunk-Z5UJMFO4.js} +1 -2
- package/dist/{chunk-WE5JQ6V7.js → chunk-ZNRTEXK2.js} +2 -3
- package/dist/helpers/draftMarkers.js +0 -1
- package/dist/helpers/finiteMutation.js +1 -2
- package/dist/helpers/hfIdPersist.js +4 -5
- package/dist/helpers/loudness.js +4 -5
- package/dist/helpers/manualEditsRenderScript.js +1 -2
- package/dist/helpers/mediaCodecMap.js +4 -5
- package/dist/helpers/mediaProxyPreview.d.ts +2 -2
- package/dist/helpers/mediaProxyPreview.js +6 -7
- package/dist/helpers/proxyTranscoder.d.ts +13 -1
- package/dist/helpers/proxyTranscoder.js +9 -6
- package/dist/helpers/safePath.js +3 -4
- package/dist/helpers/screenshotClip.js +1 -2
- package/dist/helpers/sourceMutation.d.ts +0 -1
- package/dist/helpers/sourceMutation.js +1 -2
- package/dist/helpers/studioMotionRenderScript.js +1 -2
- package/dist/history/index.d.ts +2 -2
- package/dist/history/index.js +8 -7
- package/dist/index.d.ts +3 -3
- package/dist/index.js +15 -15
- package/dist/{mediaProxyPreview-uWqly-sz.d.ts → mediaProxyPreview-BR7yXz2M.d.ts} +1 -1
- package/dist/{projectHistory-Cm8Mdmmv.d.ts → projectHistory-CyTVYz2y.d.ts} +9 -1
- package/package.json +3 -3
- package/dist/chunk-2VZGTTEG.js.map +0 -1
- package/dist/chunk-32IH7WBY.js.map +0 -1
- package/dist/chunk-4ETS2LXI.js.map +0 -1
- package/dist/chunk-6XMC64FJ.js.map +0 -1
- package/dist/chunk-DG2VOIGR.js.map +0 -1
- package/dist/chunk-DTKK7TKL.js.map +0 -1
- package/dist/chunk-IMG2GSY6.js.map +0 -1
- package/dist/chunk-JJ4N3PXT.js.map +0 -1
- package/dist/chunk-K3H6HTVC.js.map +0 -1
- package/dist/chunk-RN33UALN.js.map +0 -1
- package/dist/chunk-WE5JQ6V7.js.map +0 -1
- package/dist/chunk-X62ASOGO.js.map +0 -1
- package/dist/helpers/draftMarkers.js.map +0 -1
- package/dist/helpers/finiteMutation.js.map +0 -1
- package/dist/helpers/hfIdPersist.js.map +0 -1
- package/dist/helpers/loudness.js.map +0 -1
- package/dist/helpers/manualEditsRenderScript.js.map +0 -1
- package/dist/helpers/mediaCodecMap.js.map +0 -1
- package/dist/helpers/mediaProxyPreview.js.map +0 -1
- package/dist/helpers/proxyTranscoder.js.map +0 -1
- package/dist/helpers/safePath.js.map +0 -1
- package/dist/helpers/screenshotClip.js.map +0 -1
- package/dist/helpers/sourceMutation.js.map +0 -1
- package/dist/helpers/studioMotionRenderScript.js.map +0 -1
- package/dist/history/index.js.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
isInHiddenOrVendorDir,
|
|
3
3
|
mkdirWithinProject,
|
|
4
4
|
walkDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-M62HDRLX.js";
|
|
6
6
|
|
|
7
7
|
// src/helpers/hfIdPersist.ts
|
|
8
8
|
import { ensureHfIds } from "@hyperframes/parsers/hf-ids";
|
|
@@ -95,4 +95,3 @@ export {
|
|
|
95
95
|
stampProjectHfIds,
|
|
96
96
|
stampFileHfIds
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=chunk-DG2VOIGR.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
realpath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-M62HDRLX.js";
|
|
4
4
|
|
|
5
5
|
// src/helpers/mediaCodecMap.ts
|
|
6
6
|
import { scanHtmlOpeningTags, decodeAuthoredAttribute } from "@hyperframes/parsers";
|
|
@@ -344,4 +344,3 @@ export {
|
|
|
344
344
|
probeAssetCodec,
|
|
345
345
|
scanProjectMediaCodecMap
|
|
346
346
|
};
|
|
347
|
-
//# sourceMappingURL=chunk-RN33UALN.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
STUDIO_MANUAL_EDITS_PATH
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SVQFE44C.js";
|
|
4
4
|
import {
|
|
5
5
|
STUDIO_MOTION_PATH
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L3HJVTQE.js";
|
|
7
7
|
|
|
8
8
|
// src/helpers/safePath.ts
|
|
9
9
|
import { basename, dirname, isAbsolute, join, relative, sep } from "path";
|
|
@@ -100,4 +100,3 @@ export {
|
|
|
100
100
|
realpath2 as realpath,
|
|
101
101
|
realProjectRoot
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=chunk-DTKK7TKL.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveWithinProject
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-M62HDRLX.js";
|
|
4
4
|
|
|
5
5
|
// src/helpers/loudness.ts
|
|
6
6
|
import { execFile } from "child_process";
|
|
@@ -269,7 +269,7 @@ function audioNormalizationPlan(referenceTrack, targetTrack) {
|
|
|
269
269
|
const wantedGainDb = referenceLufs - targetTrack.integratedLufs;
|
|
270
270
|
if (wantedGainDb > MAX_AUDIO_GAIN_DB + 1e-9) {
|
|
271
271
|
throw new Error(
|
|
272
|
-
`Matching #${targetTrack.id} needs ${wantedGainDb.toFixed(1)} dB, beyond the +${MAX_AUDIO_GAIN_DB} dB authoring ceiling. A gap this large belongs in the source file, not the mixer
|
|
272
|
+
`Matching #${targetTrack.id} needs ${wantedGainDb.toFixed(1)} dB, beyond the +${MAX_AUDIO_GAIN_DB} dB authoring ceiling. A gap this large belongs in the source file, not the mixer: mixer gain raises the noise floor with the signal. Normalize ${targetTrack.id}'s asset offline (e.g. ffmpeg loudnorm), or lower #${referenceTrack.id} instead.`
|
|
273
273
|
);
|
|
274
274
|
}
|
|
275
275
|
const volume = 10 ** (wantedGainDb / 20);
|
|
@@ -381,4 +381,3 @@ export {
|
|
|
381
381
|
NORMALIZE_TRUE_PEAK_CEILING_DBFS,
|
|
382
382
|
absoluteLoudnessPlan
|
|
383
383
|
};
|
|
384
|
-
//# sourceMappingURL=chunk-32IH7WBY.js.map
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
PROXY_VARIANT_CONFIG,
|
|
3
3
|
probeFirstFrameColour,
|
|
4
4
|
probeMediaMetadata
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EJC7TX3O.js";
|
|
6
6
|
import {
|
|
7
7
|
mkdirWithinProject,
|
|
8
8
|
realProjectRoot,
|
|
9
9
|
realpath
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-M62HDRLX.js";
|
|
11
11
|
|
|
12
12
|
// src/helpers/proxyTranscoder.ts
|
|
13
13
|
import { spawn } from "child_process";
|
|
@@ -148,8 +148,9 @@ var ProxyTranscodeError = class extends Error {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
var FfmpegUnavailableError = class extends ProxyTranscodeError {
|
|
151
|
-
constructor() {
|
|
152
|
-
super(
|
|
151
|
+
constructor(message = "ffmpeg binary not found", stderrTail = "") {
|
|
152
|
+
super(message, null, stderrTail);
|
|
153
|
+
this.name = "FfmpegUnavailableError";
|
|
153
154
|
}
|
|
154
155
|
};
|
|
155
156
|
var FfmpegMissingFilterError = class extends ProxyTranscodeError {
|
|
@@ -357,6 +358,13 @@ function proxyScaleFilter(box) {
|
|
|
357
358
|
const side = (d) => `min(trunc(${d}/2)*2\\,ceil(${d}*${factor}/2)*2)`;
|
|
358
359
|
return `scale=${side("iw")}:${side("ih")}`;
|
|
359
360
|
}
|
|
361
|
+
var STDERR_ERROR_LINE = /error|invalid|denied|no space|not found|unknown/i;
|
|
362
|
+
function stderrReason(stderrTail) {
|
|
363
|
+
const lines = stderrTail.split("\n").map((line2) => line2.trim()).filter(Boolean);
|
|
364
|
+
const errorLines = lines.filter((line2) => STDERR_ERROR_LINE.test(line2));
|
|
365
|
+
const line = errorLines.at(-1) ?? lines.at(-1);
|
|
366
|
+
return line ? `: ${line.replace(/[.!]+$/, "")}` : "";
|
|
367
|
+
}
|
|
360
368
|
async function runFfmpeg(sourcePath, outputPath, variant, box) {
|
|
361
369
|
const metadata = await probeMediaMetadata(sourcePath);
|
|
362
370
|
const ffmpegPath = findFfBinary("ffmpeg", { configuredMustExist: true });
|
|
@@ -439,7 +447,7 @@ async function runFfmpeg(sourcePath, outputPath, variant, box) {
|
|
|
439
447
|
stderrTail = (stderrTail + chunk.toString()).slice(-STDERR_TAIL_MAX_CHARS);
|
|
440
448
|
});
|
|
441
449
|
proc.on("error", (err) => {
|
|
442
|
-
reject(new
|
|
450
|
+
reject(new FfmpegUnavailableError(`failed to spawn ffmpeg: ${err.message}`, stderrTail));
|
|
443
451
|
});
|
|
444
452
|
proc.on("close", (code, signal) => {
|
|
445
453
|
if (code === 0) {
|
|
@@ -453,7 +461,13 @@ async function runFfmpeg(sourcePath, outputPath, variant, box) {
|
|
|
453
461
|
)
|
|
454
462
|
);
|
|
455
463
|
} else {
|
|
456
|
-
reject(
|
|
464
|
+
reject(
|
|
465
|
+
new ProxyTranscodeError(
|
|
466
|
+
`ffmpeg exited with code ${code}${stderrReason(stderrTail)}`,
|
|
467
|
+
code,
|
|
468
|
+
stderrTail
|
|
469
|
+
)
|
|
470
|
+
);
|
|
457
471
|
}
|
|
458
472
|
});
|
|
459
473
|
});
|
|
@@ -529,6 +543,25 @@ async function resolveProxy(projectDir, absoluteSourcePath, variant = "h264", bo
|
|
|
529
543
|
if (options.priority) prioritize(entry.job);
|
|
530
544
|
return joinJob(entry.promise, entry.job, options.signal);
|
|
531
545
|
}
|
|
546
|
+
async function resolveProxies(projectDir, sources) {
|
|
547
|
+
const results = [];
|
|
548
|
+
let next = 0;
|
|
549
|
+
const worker = async () => {
|
|
550
|
+
for (let index = next++; index < sources.length; index = next++) {
|
|
551
|
+
const { sourcePath, variant } = sources[index];
|
|
552
|
+
results[index] = await waitForProxy(
|
|
553
|
+
resolveProxy(projectDir, sourcePath, variant),
|
|
554
|
+
TRANSCODE_TIMEOUT_MS
|
|
555
|
+
).then(
|
|
556
|
+
(value) => ({ status: "fulfilled", value }),
|
|
557
|
+
(reason) => ({ status: "rejected", reason })
|
|
558
|
+
);
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
const workers = Math.min(MAX_CONCURRENT_TRANSCODES, sources.length);
|
|
562
|
+
await Promise.all(Array.from({ length: workers }, worker));
|
|
563
|
+
return results;
|
|
564
|
+
}
|
|
532
565
|
function joinJob(promise, job, signal) {
|
|
533
566
|
job.callers++;
|
|
534
567
|
if (!signal) return promise;
|
|
@@ -550,6 +583,7 @@ export {
|
|
|
550
583
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
551
584
|
DEFAULT_PROXY_WAIT_TIMEOUT_MS,
|
|
552
585
|
ProxyTranscodeError,
|
|
586
|
+
FfmpegUnavailableError,
|
|
553
587
|
FfmpegMissingFilterError,
|
|
554
588
|
ProxyCapacityError,
|
|
555
589
|
ProxySourceOutsideProjectError,
|
|
@@ -558,6 +592,6 @@ export {
|
|
|
558
592
|
getProxyCachePath,
|
|
559
593
|
clearFailedTranscodesForTest,
|
|
560
594
|
proxyActivityMark,
|
|
561
|
-
resolveProxy
|
|
595
|
+
resolveProxy,
|
|
596
|
+
resolveProxies
|
|
562
597
|
};
|
|
563
|
-
//# sourceMappingURL=chunk-2VZGTTEG.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
isSafePath,
|
|
3
3
|
mkdirWithinProject,
|
|
4
4
|
realFilePath
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-M62HDRLX.js";
|
|
6
6
|
|
|
7
7
|
// src/history/projectHistory.ts
|
|
8
8
|
import { randomUUID as randomUUID6 } from "crypto";
|
|
@@ -293,6 +293,11 @@ import { copyFile, mkdir, readdir, readFile, rename, rm, stat } from "fs/promise
|
|
|
293
293
|
import { dirname, join } from "path";
|
|
294
294
|
import { atomicTempPath } from "@hyperframes/core/atomic-file";
|
|
295
295
|
var BLOB_HASH = /^[0-9a-f]{64}$/;
|
|
296
|
+
function blobPath(dir, hash) {
|
|
297
|
+
if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
|
|
298
|
+
return join(dir, hash.slice(0, 2), hash);
|
|
299
|
+
}
|
|
300
|
+
var readBlob = (dir, hash) => readFile(blobPath(dir, hash));
|
|
296
301
|
async function hashFile(path) {
|
|
297
302
|
const hash = createHash3("sha256");
|
|
298
303
|
for await (const chunk of createReadStream(path)) hash.update(chunk);
|
|
@@ -316,10 +321,7 @@ async function openBlobStore(dir) {
|
|
|
316
321
|
for (const shard of await readdir(dir))
|
|
317
322
|
for (const hash of await readdir(join(dir, shard)).catch(() => []))
|
|
318
323
|
sizes.set(hash, (await stat(join(dir, shard, hash))).size);
|
|
319
|
-
const pathOf = (hash) =>
|
|
320
|
-
if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
|
|
321
|
-
return join(dir, hash.slice(0, 2), hash);
|
|
322
|
-
};
|
|
324
|
+
const pathOf = (hash) => blobPath(dir, hash);
|
|
323
325
|
let total = [...sizes.values()].reduce((sum, size) => sum + size, 0);
|
|
324
326
|
return {
|
|
325
327
|
async put(absPath) {
|
|
@@ -339,7 +341,7 @@ async function openBlobStore(dir) {
|
|
|
339
341
|
return hash;
|
|
340
342
|
},
|
|
341
343
|
has: (hash) => sizes.has(hash),
|
|
342
|
-
read: async (hash) =>
|
|
344
|
+
read: async (hash) => readBlob(dir, hash),
|
|
343
345
|
writeTo: async (hash, absPath, beforeReplace) => cloneOrCopy(pathOf(hash), absPath, beforeReplace),
|
|
344
346
|
bytes: () => total,
|
|
345
347
|
size: (hash) => sizes.get(hash) ?? 0,
|
|
@@ -808,6 +810,19 @@ function isHistoryPath(path) {
|
|
|
808
810
|
if (KEPT_HIDDEN_PATHS.has(path)) return true;
|
|
809
811
|
return !path.split("/").some((segment) => segment.startsWith("."));
|
|
810
812
|
}
|
|
813
|
+
var logFileIn = (home) => join5(home, "log.jsonl");
|
|
814
|
+
function listOf(log) {
|
|
815
|
+
const undone = undoneIds(log.entries);
|
|
816
|
+
return log.entries.map((entry) => ({
|
|
817
|
+
...entry,
|
|
818
|
+
pinned: log.pins.has(entry.id),
|
|
819
|
+
undone: undone.has(entry.id)
|
|
820
|
+
}));
|
|
821
|
+
}
|
|
822
|
+
function peekOf(log, point) {
|
|
823
|
+
const files = manifestAt(log, point);
|
|
824
|
+
return files && Object.fromEntries(files);
|
|
825
|
+
}
|
|
811
826
|
function withoutHiddenPaths(log) {
|
|
812
827
|
for (const path of log.baseline.keys()) if (!isHistoryPath(path)) log.baseline.delete(path);
|
|
813
828
|
for (const entry of log.entries)
|
|
@@ -914,7 +929,7 @@ var Engine = class {
|
|
|
914
929
|
return this.foldsCase ? path.toLowerCase() : path;
|
|
915
930
|
}
|
|
916
931
|
get logFile() {
|
|
917
|
-
return
|
|
932
|
+
return logFileIn(this.home);
|
|
918
933
|
}
|
|
919
934
|
now() {
|
|
920
935
|
return (this.options.now ?? Date.now)();
|
|
@@ -1584,12 +1599,7 @@ var Engine = class {
|
|
|
1584
1599
|
},
|
|
1585
1600
|
list: () => {
|
|
1586
1601
|
this.assertOpen();
|
|
1587
|
-
|
|
1588
|
-
return this.log.entries.map((entry) => ({
|
|
1589
|
-
...entry,
|
|
1590
|
-
pinned: this.log.pins.has(entry.id),
|
|
1591
|
-
undone: undone.has(entry.id)
|
|
1592
|
-
}));
|
|
1602
|
+
return listOf(this.log);
|
|
1593
1603
|
},
|
|
1594
1604
|
step: (direction, who, { writeToken } = {}) => this.operation(writeToken, async () => {
|
|
1595
1605
|
const target = this.next(direction, who);
|
|
@@ -1602,8 +1612,7 @@ var Engine = class {
|
|
|
1602
1612
|
),
|
|
1603
1613
|
peek: (point) => {
|
|
1604
1614
|
this.assertOpen();
|
|
1605
|
-
|
|
1606
|
-
return files && Object.fromEntries(files);
|
|
1615
|
+
return peekOf(this.log, point);
|
|
1607
1616
|
},
|
|
1608
1617
|
checkout: (entryId, side, emptyDir) => this.queue(async () => {
|
|
1609
1618
|
this.entry(entryId);
|
|
@@ -1699,6 +1708,22 @@ async function openProjectHistory(options) {
|
|
|
1699
1708
|
throw error;
|
|
1700
1709
|
}
|
|
1701
1710
|
}
|
|
1711
|
+
function readProjectHistory(options) {
|
|
1712
|
+
const dir = resolve3(options.projectDir);
|
|
1713
|
+
const id = readId(dir);
|
|
1714
|
+
const home = id && isRecordedFolder(join5(options.historyRoot, id), statSync3(dir)) ? join5(options.historyRoot, id) : null;
|
|
1715
|
+
const read = home && readLog(logFileIn(home), () => {
|
|
1716
|
+
});
|
|
1717
|
+
const log = withoutHiddenPaths(read || { baseline: /* @__PURE__ */ new Map(), entries: [], pins: /* @__PURE__ */ new Set() });
|
|
1718
|
+
return {
|
|
1719
|
+
list: () => listOf(log),
|
|
1720
|
+
peek: (point) => peekOf(log, point),
|
|
1721
|
+
readBlob: async (hash) => {
|
|
1722
|
+
if (!home) throw new Error("That is not a history blob.");
|
|
1723
|
+
return readBlob(join5(home, "blobs"), hash);
|
|
1724
|
+
}
|
|
1725
|
+
};
|
|
1726
|
+
}
|
|
1702
1727
|
|
|
1703
1728
|
// src/history/historyCache.ts
|
|
1704
1729
|
function historyCache(open) {
|
|
@@ -1748,6 +1773,6 @@ export {
|
|
|
1748
1773
|
UNDO_MODES,
|
|
1749
1774
|
HistoryClosedError,
|
|
1750
1775
|
openProjectHistory,
|
|
1776
|
+
readProjectHistory,
|
|
1751
1777
|
historyCache
|
|
1752
1778
|
};
|
|
1753
|
-
//# sourceMappingURL=chunk-K3H6HTVC.js.map
|
|
@@ -330,7 +330,7 @@ function splitElementInHtml(source, target, splitTime, newId, fallbackTiming) {
|
|
|
330
330
|
clone.removeAttribute("data-hf-id");
|
|
331
331
|
for (const node of clone.querySelectorAll("[data-hf-id]")) node.removeAttribute("data-hf-id");
|
|
332
332
|
setElementDuration(clone, splitTime, secondDuration, fallbackTiming?.track);
|
|
333
|
-
const playbackStartAttr = el.hasAttribute("data-playback-start") ? "data-playback-start" : el.hasAttribute("data-media-start") ? "data-media-start" :
|
|
333
|
+
const playbackStartAttr = el.hasAttribute("data-playback-start") ? "data-playback-start" : el.hasAttribute("data-media-start") ? "data-media-start" : el.matches("[data-composition-src], [data-composition-id]") ? "data-playback-start" : el.matches("audio, video") ? "data-media-start" : null;
|
|
334
334
|
if (playbackStartAttr) {
|
|
335
335
|
const readAttr = (name) => el.getAttribute(name);
|
|
336
336
|
const authoredTrim = el.getAttribute(playbackStartAttr);
|
|
@@ -522,4 +522,3 @@ export {
|
|
|
522
522
|
unwrapElementsFromHtml,
|
|
523
523
|
relinkSplitHalvesInHtml
|
|
524
524
|
};
|
|
525
|
-
//# sourceMappingURL=chunk-JJ4N3PXT.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PROXY_PARAMS_VERSION,
|
|
3
3
|
resolveProxy
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XKBQOQFZ.js";
|
|
5
5
|
import {
|
|
6
6
|
createMediaCodecProbeCache,
|
|
7
7
|
proxyVariantFor,
|
|
8
8
|
recordProxyPrewarm,
|
|
9
9
|
scanProjectMediaCodecMap,
|
|
10
10
|
shouldPrewarmProxy
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-EJC7TX3O.js";
|
|
12
12
|
|
|
13
13
|
// src/helpers/mediaProxyPreview.ts
|
|
14
14
|
import { resolve } from "path";
|
|
@@ -64,4 +64,3 @@ export {
|
|
|
64
64
|
injectMediaCodecMapIntoHtml,
|
|
65
65
|
injectMediaCodecMap
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-WE5JQ6V7.js.map
|
|
@@ -2,13 +2,12 @@ import {
|
|
|
2
2
|
isCompositionSource,
|
|
3
3
|
stampFileHfIds,
|
|
4
4
|
stampProjectHfIds
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-3RUFN2CK.js";
|
|
6
|
+
import "../chunk-M62HDRLX.js";
|
|
7
|
+
import "../chunk-SVQFE44C.js";
|
|
8
|
+
import "../chunk-L3HJVTQE.js";
|
|
9
9
|
export {
|
|
10
10
|
isCompositionSource,
|
|
11
11
|
stampFileHfIds,
|
|
12
12
|
stampProjectHfIds
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=hfIdPersist.js.map
|
package/dist/helpers/loudness.js
CHANGED
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
requiredFfmpeg,
|
|
12
12
|
resolveLocalAudioPath,
|
|
13
13
|
updateAudioVolume
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
14
|
+
} from "../chunk-VMT4OC5B.js";
|
|
15
|
+
import "../chunk-M62HDRLX.js";
|
|
16
|
+
import "../chunk-SVQFE44C.js";
|
|
17
|
+
import "../chunk-L3HJVTQE.js";
|
|
18
18
|
export {
|
|
19
19
|
DEFAULT_TARGET_LUFS,
|
|
20
20
|
NORMALIZE_TRUE_PEAK_CEILING_DBFS,
|
|
@@ -29,4 +29,3 @@ export {
|
|
|
29
29
|
resolveLocalAudioPath,
|
|
30
30
|
updateAudioVolume
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=loudness.js.map
|
|
@@ -2,10 +2,9 @@ import {
|
|
|
2
2
|
STUDIO_MANUAL_EDITS_PATH,
|
|
3
3
|
createStudioManualEditsRenderBodyScript,
|
|
4
4
|
createStudioPositionSeekReapplyScript
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-SVQFE44C.js";
|
|
6
6
|
export {
|
|
7
7
|
STUDIO_MANUAL_EDITS_PATH,
|
|
8
8
|
createStudioManualEditsRenderBodyScript,
|
|
9
9
|
createStudioPositionSeekReapplyScript
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=manualEditsRenderScript.js.map
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
resolveProxyVariantRequest,
|
|
14
14
|
scanProjectMediaCodecMap,
|
|
15
15
|
shouldPrewarmProxy
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-EJC7TX3O.js";
|
|
17
|
+
import "../chunk-M62HDRLX.js";
|
|
18
|
+
import "../chunk-SVQFE44C.js";
|
|
19
|
+
import "../chunk-L3HJVTQE.js";
|
|
20
20
|
export {
|
|
21
21
|
BROWSER_HOSTILE_CODECS,
|
|
22
22
|
PROXY_VARIANT_CONFIG,
|
|
@@ -33,4 +33,3 @@ export {
|
|
|
33
33
|
scanProjectMediaCodecMap,
|
|
34
34
|
shouldPrewarmProxy
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=mediaCodecMap.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@hyperframes/core';
|
|
2
|
-
export { a as PreviewApiAdapter, P as PreviewDocumentStore, i as injectMediaCodecMap, f as injectMediaCodecMapIntoHtml, g as isAutoProxyEnabled, p as proxyEtagSalt, r as resolvePreviewMediaCodecProbeCache } from '../mediaProxyPreview-
|
|
2
|
+
export { a as PreviewApiAdapter, P as PreviewDocumentStore, i as injectMediaCodecMap, f as injectMediaCodecMapIntoHtml, g as isAutoProxyEnabled, p as proxyEtagSalt, r as resolvePreviewMediaCodecProbeCache } from '../mediaProxyPreview-BR7yXz2M.js';
|
|
3
3
|
import './mediaCodecMap.js';
|
|
4
4
|
import '@hyperframes/parsers';
|
|
5
5
|
import '@hyperframes/core/compiler';
|
|
6
|
-
import '../projectHistory-
|
|
6
|
+
import '../projectHistory-CyTVYz2y.js';
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
isAutoProxyEnabled,
|
|
5
5
|
proxyEtagSalt,
|
|
6
6
|
resolvePreviewMediaCodecProbeCache
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-ZNRTEXK2.js";
|
|
8
|
+
import "../chunk-XKBQOQFZ.js";
|
|
9
|
+
import "../chunk-EJC7TX3O.js";
|
|
10
|
+
import "../chunk-M62HDRLX.js";
|
|
11
|
+
import "../chunk-SVQFE44C.js";
|
|
12
|
+
import "../chunk-L3HJVTQE.js";
|
|
13
13
|
export {
|
|
14
14
|
injectMediaCodecMap,
|
|
15
15
|
injectMediaCodecMapIntoHtml,
|
|
@@ -17,4 +17,3 @@ export {
|
|
|
17
17
|
proxyEtagSalt,
|
|
18
18
|
resolvePreviewMediaCodecProbeCache
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=mediaProxyPreview.js.map
|
|
@@ -21,6 +21,12 @@ declare class ProxyTranscodeError extends Error {
|
|
|
21
21
|
readonly stderrTail: string;
|
|
22
22
|
constructor(message: string, exitCode: number | null, stderrTail: string);
|
|
23
23
|
}
|
|
24
|
+
/** ffmpeg is missing or cannot start — an environment condition, not a per-source
|
|
25
|
+
* failure, so the negative cache below keeps it only briefly
|
|
26
|
+
* (installing ffmpeg mid-session must recover without a server restart). */
|
|
27
|
+
declare class FfmpegUnavailableError extends ProxyTranscodeError {
|
|
28
|
+
constructor(message?: string, stderrTail?: string);
|
|
29
|
+
}
|
|
24
30
|
declare class FfmpegMissingFilterError extends ProxyTranscodeError {
|
|
25
31
|
constructor();
|
|
26
32
|
}
|
|
@@ -60,9 +66,15 @@ declare function proxyActivityMark(projectDir: string): string | null;
|
|
|
60
66
|
* lets this caller leave (see the detachment note at the top of this file).
|
|
61
67
|
*/
|
|
62
68
|
declare function resolveProxy(projectDir: string, absoluteSourcePath: string, variant?: ProxyVariant, box?: PreviewProxyBox, options?: ResolveProxyOptions): Promise<string>;
|
|
69
|
+
/** Batch resolve for check and publish: at most MAX_CONCURRENT_TRANSCODES of its own requests in
|
|
70
|
+
* flight (other callers can still fill the queue); each waits at most TRANSCODE_TIMEOUT_MS. */
|
|
71
|
+
declare function resolveProxies(projectDir: string, sources: ReadonlyArray<{
|
|
72
|
+
sourcePath: string;
|
|
73
|
+
variant: ProxyVariant;
|
|
74
|
+
}>): Promise<PromiseSettledResult<string>[]>;
|
|
63
75
|
interface ResolveProxyOptions {
|
|
64
76
|
priority?: boolean;
|
|
65
77
|
signal?: AbortSignal;
|
|
66
78
|
}
|
|
67
79
|
|
|
68
|
-
export { CACHE_DIR_NAME, DEFAULT_PROXY_WAIT_TIMEOUT_MS, FfmpegMissingFilterError, PROXY_PARAMS_VERSION, PROXY_PENDING_RETRY_AFTER_SECONDS, ProxyCapacityError, ProxySourceOutsideProjectError, ProxyTranscodeError, ProxyWaitTimeoutError, type ResolveProxyOptions, TRANSCODE_TIMEOUT_MS, clearFailedTranscodesForTest, getProxyCachePath, proxyActivityMark, resolveProxy, waitForProxy };
|
|
80
|
+
export { CACHE_DIR_NAME, DEFAULT_PROXY_WAIT_TIMEOUT_MS, FfmpegMissingFilterError, FfmpegUnavailableError, PROXY_PARAMS_VERSION, PROXY_PENDING_RETRY_AFTER_SECONDS, ProxyCapacityError, ProxySourceOutsideProjectError, ProxyTranscodeError, ProxyWaitTimeoutError, type ResolveProxyOptions, TRANSCODE_TIMEOUT_MS, clearFailedTranscodesForTest, getProxyCachePath, proxyActivityMark, resolveProxies, resolveProxy, waitForProxy };
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
CACHE_DIR_NAME,
|
|
3
3
|
DEFAULT_PROXY_WAIT_TIMEOUT_MS,
|
|
4
4
|
FfmpegMissingFilterError,
|
|
5
|
+
FfmpegUnavailableError,
|
|
5
6
|
PROXY_PARAMS_VERSION,
|
|
6
7
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
7
8
|
ProxyCapacityError,
|
|
@@ -12,17 +13,19 @@ import {
|
|
|
12
13
|
clearFailedTranscodesForTest,
|
|
13
14
|
getProxyCachePath,
|
|
14
15
|
proxyActivityMark,
|
|
16
|
+
resolveProxies,
|
|
15
17
|
resolveProxy,
|
|
16
18
|
waitForProxy
|
|
17
|
-
} from "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
19
|
+
} from "../chunk-XKBQOQFZ.js";
|
|
20
|
+
import "../chunk-EJC7TX3O.js";
|
|
21
|
+
import "../chunk-M62HDRLX.js";
|
|
22
|
+
import "../chunk-SVQFE44C.js";
|
|
23
|
+
import "../chunk-L3HJVTQE.js";
|
|
22
24
|
export {
|
|
23
25
|
CACHE_DIR_NAME,
|
|
24
26
|
DEFAULT_PROXY_WAIT_TIMEOUT_MS,
|
|
25
27
|
FfmpegMissingFilterError,
|
|
28
|
+
FfmpegUnavailableError,
|
|
26
29
|
PROXY_PARAMS_VERSION,
|
|
27
30
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
28
31
|
ProxyCapacityError,
|
|
@@ -33,7 +36,7 @@ export {
|
|
|
33
36
|
clearFailedTranscodesForTest,
|
|
34
37
|
getProxyCachePath,
|
|
35
38
|
proxyActivityMark,
|
|
39
|
+
resolveProxies,
|
|
36
40
|
resolveProxy,
|
|
37
41
|
waitForProxy
|
|
38
42
|
};
|
|
39
|
-
//# sourceMappingURL=proxyTranscoder.js.map
|
package/dist/helpers/safePath.js
CHANGED
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
realpath,
|
|
13
13
|
resolveWithinProject,
|
|
14
14
|
walkDir
|
|
15
|
-
} from "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
15
|
+
} from "../chunk-M62HDRLX.js";
|
|
16
|
+
import "../chunk-SVQFE44C.js";
|
|
17
|
+
import "../chunk-L3HJVTQE.js";
|
|
18
18
|
export {
|
|
19
19
|
folderGone,
|
|
20
20
|
isInHiddenOrVendorDir,
|
|
@@ -30,4 +30,3 @@ export {
|
|
|
30
30
|
resolveWithinProject,
|
|
31
31
|
walkDir
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=safePath.js.map
|
|
@@ -44,7 +44,6 @@ declare function splitElementInHtml(source: string, target: SourceMutationTarget
|
|
|
44
44
|
duration: number;
|
|
45
45
|
playbackStart?: number;
|
|
46
46
|
playbackRate?: number;
|
|
47
|
-
stampPlaybackStart?: boolean;
|
|
48
47
|
track?: number;
|
|
49
48
|
}): SplitElementResult;
|
|
50
49
|
interface WrapElementsResult {
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
splitElementInHtml,
|
|
14
14
|
unwrapElementsFromHtml,
|
|
15
15
|
wrapElementsInHtml
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-Z5UJMFO4.js";
|
|
17
17
|
export {
|
|
18
18
|
dedupeClonedCompositionId,
|
|
19
19
|
findTargetElement,
|
|
@@ -30,4 +30,3 @@ export {
|
|
|
30
30
|
unwrapElementsFromHtml,
|
|
31
31
|
wrapElementsInHtml
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=sourceMutation.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
STUDIO_MOTION_PATH,
|
|
3
3
|
createStudioMotionRenderBodyScript
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-L3HJVTQE.js";
|
|
5
5
|
export {
|
|
6
6
|
STUDIO_MOTION_PATH,
|
|
7
7
|
createStudioMotionRenderBodyScript
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=studioMotionRenderScript.js.map
|
package/dist/history/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as ProjectHistory } from '../projectHistory-
|
|
2
|
-
export { C as ClosedWindow, D as DEFAULT_HISTORY_ROOT, S as HISTORY_START, H as HistoryClosedError, a as HistoryEntry, b as HistoryEntrySide, c as HistoryFileChange, d as HistoryListItem, e as HistoryResult, f as HistoryWho, g as HistoryWindow, M as MAX_WINDOW_IDLE_MS, h as ProjectHistoryOptions, U as UNDO_MODES,
|
|
1
|
+
import { P as ProjectHistory } from '../projectHistory-CyTVYz2y.js';
|
|
2
|
+
export { C as ClosedWindow, D as DEFAULT_HISTORY_ROOT, S as HISTORY_START, H as HistoryClosedError, a as HistoryEntry, b as HistoryEntrySide, c as HistoryFileChange, d as HistoryListItem, e as HistoryResult, f as HistoryWho, g as HistoryWindow, M as MAX_WINDOW_IDLE_MS, h as ProjectHistoryOptions, i as ProjectHistoryView, U as UNDO_MODES, j as UndoMode, o as openProjectHistory, r as readProjectHistory } from '../projectHistory-CyTVYz2y.js';
|
|
3
3
|
|
|
4
4
|
declare class HistoryBusyError extends Error {
|
|
5
5
|
readonly pid: number;
|
package/dist/history/index.js
CHANGED
|
@@ -9,11 +9,12 @@ import {
|
|
|
9
9
|
historyCache,
|
|
10
10
|
listProjectHistories,
|
|
11
11
|
openProjectHistory,
|
|
12
|
-
pruneGoneProjectHistories
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
12
|
+
pruneGoneProjectHistories,
|
|
13
|
+
readProjectHistory
|
|
14
|
+
} from "../chunk-Y7V6FJHS.js";
|
|
15
|
+
import "../chunk-M62HDRLX.js";
|
|
16
|
+
import "../chunk-SVQFE44C.js";
|
|
17
|
+
import "../chunk-L3HJVTQE.js";
|
|
17
18
|
export {
|
|
18
19
|
DEFAULT_HISTORY_ROOT,
|
|
19
20
|
START as HISTORY_START,
|
|
@@ -25,6 +26,6 @@ export {
|
|
|
25
26
|
historyCache,
|
|
26
27
|
listProjectHistories,
|
|
27
28
|
openProjectHistory,
|
|
28
|
-
pruneGoneProjectHistories
|
|
29
|
+
pruneGoneProjectHistories,
|
|
30
|
+
readProjectHistory
|
|
29
31
|
};
|
|
30
|
-
//# sourceMappingURL=index.js.map
|