mirror of
https://github.com/calesthio/OpenMontage.git
synced 2026-08-16 13:36:26 +08:00
fix(remotion): correct file:// slash count for POSIX absolute paths
resolveAsset() built `file:///` + a POSIX absolute path (which already starts with /), yielding `file:////Users/...` (four slashes). Split the branch: POSIX paths get `file://` + path (three slashes total), Windows drive paths keep the explicit extra slash. Same fix across the five compositions that share resolveAsset(). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> (cherry picked from commit 226a52d1e9b56b9da8b94e8e95ef6b753666abb0)
This commit is contained in:
@@ -19,7 +19,15 @@ function resolveAsset(src: string): string {
|
||||
}
|
||||
const clean = src.replace(/^file:\/\/\/?/, "");
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[/\\]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,15 @@ function resolveAsset(src: string): string {
|
||||
if (src.startsWith("http://") || src.startsWith("https://") || src.startsWith("data:")) return src;
|
||||
const clean = src.replace(/^file:\/\/\/?/, "");
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[\\/]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,15 @@ function resolveAsset(src: string): string {
|
||||
// Absolute paths (Unix: /foo, Windows: C:\foo or C:/foo) — convert to file:// URI
|
||||
// staticFile() only accepts relative paths within public/, so absolute paths must bypass it
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[\\/]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,15 @@ function resolveAsset(src: string): string {
|
||||
if (src.startsWith("http://") || src.startsWith("https://") || src.startsWith("data:")) return src;
|
||||
const clean = src.replace(/^file:\/\/\/?/, "");
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[\\/]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,15 @@ function resolveAsset(src: string): string {
|
||||
}
|
||||
const clean = src.replace(/^file:\/\/\/?/, "");
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[\\/]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
@@ -90,7 +90,15 @@ function resolveAsset(src: string): string {
|
||||
}
|
||||
const clean = src.replace(/^file:\/\/\/?/, "");
|
||||
if (clean.startsWith("/") || /^[A-Za-z]:[\\/]/.test(clean)) {
|
||||
return `file:///${clean.replace(/\\/g, "/")}`;
|
||||
const posix = clean.replace(/\\/g, "/");
|
||||
// POSIX absolute paths already have a leading "/" — file:// + posix
|
||||
// gives exactly three slashes. Windows drive paths (C:/...) need the
|
||||
// extra slash added explicitly. Do not merge these branches — adding
|
||||
// "file:///" unconditionally double-slashes POSIX paths (file:////...).
|
||||
if (posix.startsWith("/")) {
|
||||
return `file://${posix}`;
|
||||
}
|
||||
return `file:///${posix}`;
|
||||
}
|
||||
return staticFile(clean);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user