import { ThreadId } from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import { resolveMediaSource } from "./mediaSource.ts"; const threadId = ThreadId.make("thread-1");const attachmentId = "11111111-1111-4111-8111-111111111111-22222222-2222-4222-8222-222222222222-mp4"; describe("resolveMediaSource", () => { describe("direct URLs", () => { it("keeps the authored URL and decodes the display name once", () => { const href = "https://cdn.example.com/clip%20one%2520%2Emp4?signature=a%2fb#t=2"; expect(resolveMediaSource(href, { threadId })).toEqual({ kind: "video", mimeType: "video/mp4", name: "clip one%20.mp4", reference: { kind: "url", url: href }, srcFragment: "#t=2", access: "direct", uri: href, }); }); it("keeps protocol-relative URLs as authored; clients add the scheme", () => { const href = "//cdn.example.com/clip.mp4?sig=1#t=2"; expect(resolveMediaSource(href, { threadId })).toMatchObject({ access: "direct", uri: href, reference: { kind: "url", url: href }, }); }); it("accepts extensionless image embeds only when asked", () => { const href = "https://cdn.example.com/render?id=42"; expect(resolveMediaSource(href, { threadId })).toBeNull(); expect(resolveMediaSource(href, { threadId, imageEmbed: true })).toMatchObject({ kind: "image", mimeType: "image/*", name: "render", }); }); it.each(["data:image/png;base64,AAAA", "blob:https://app.t3.codes/id"])( "loads %s directly", (href) => { expect(resolveMediaSource(href, { threadId, imageEmbed: true })).toMatchObject({ access: "direct", uri: href, }); }, ); }); describe("host paths", () => { // POSIX, Windows, UNC, and file URLs must all reach the same media-file resource. it.each([ ["/tmp/frame%23one.png:12", "/tmp/frame#one.png"], ["/tmp/frame%3Fone.png:12:3", "/tmp/frame?one.png"], ["/tmp/frame%2523one.png:12", "/tmp/frame%23one.png"], ["C:\\Users\\demo\\frame.png", "C:\\Users\\demo\\frame.png"], ["/C:/Users/demo/frame.png", "C:/Users/demo/frame.png"], ["file:///C:/Users/demo/frame.png", "C:/Users/demo/frame.png"], ["file://server/share/frame.png", "\\\\server\\share\\frame.png"], ["\\\\server\\share\\frame.png", "\\\\server\\share\\frame.png"], ])("resolves %s through the environment", (href, path) => { expect(resolveMediaSource(href, { threadId, workspaceRoot: "/repo" })).toEqual({ kind: "image", mimeType: "image/png", name: path.split(/[\\/]/).at(-1), reference: { kind: "file", path }, srcFragment: "", access: "environment", resource: { _tag: "media-file", threadId, path }, }); }); it("joins relative paths to the workspace and records the relative reference", () => { expect( resolveMediaSource("screens/logo.svg?v=2#mark", { threadId, workspaceRoot: "/repo" }), ).toEqual({ kind: "image", mimeType: "image/svg+xml", name: "logo.svg", reference: { kind: "file", path: "/repo/screens/logo.svg", relativePath: "screens/logo.svg", }, srcFragment: "#mark", access: "environment", resource: { _tag: "media-file", threadId, path: "/repo/screens/logo.svg" }, }); }); it("prefers a caller-resolved path over classifying the source", () => { expect( resolveMediaSource("logo.svg", { threadId, workspaceRoot: "/repo", resolvedFilePath: "/repo/docs/logo.svg", }), ).toMatchObject({ access: "environment", resource: { _tag: "media-file", path: "/repo/docs/logo.svg" }, reference: { relativePath: "docs/logo.svg" }, }); }); it("separates a playback fragment from literal filename characters", () => { expect(resolveMediaSource("/tmp/clip%23one.mp4#t=2", { threadId })).toMatchObject({ kind: "video", srcFragment: "#t=2", resource: { path: "/tmp/clip#one.mp4" }, }); }); it("cannot be loaded without a thread to mint through", () => { expect(resolveMediaSource("/tmp/clip.mp4", { threadId: undefined })).toMatchObject({ kind: "video", access: "unavailable", }); }); it.each(["notes.txt", "/repo/README", "/repo/archive.zip"])( "returns null for the non-media path %s", (href) => { expect(resolveMediaSource(href, { threadId, workspaceRoot: "/repo" })).toBeNull(); }, ); }); it("serves T3 attachment files in place like any other host path", () => { const path = `/home/demo/.t3/userdata/attachments/${attachmentId}.mp4`; expect(resolveMediaSource(path, { threadId, workspaceRoot: "/repo" })).toMatchObject({ kind: "video", access: "environment", resource: { _tag: "media-file", threadId, path }, }); });});
import { ThreadId } from "@t3tools/contracts";
import { describe, expect, it } from "vite-plus/test";
import { resolveMediaSource } from "./mediaSource.ts";
const threadId = ThreadId.make("thread-1");
const attachmentId =
"11111111-1111-4111-8111-111111111111-22222222-2222-4222-8222-222222222222-mp4";
describe("resolveMediaSource", () => {
describe("direct URLs", () => {
it("keeps the authored URL and decodes the display name once", () => {
const href = "https://cdn.example.com/clip%20one%2520%2Emp4?signature=a%2fb#t=2";
expect(resolveMediaSource(href, { threadId })).toEqual({
kind: "video",
mimeType: "video/mp4",
name: "clip one%20.mp4",
reference: { kind: "url", url: href },
srcFragment: "#t=2",
access: "direct",
uri: href,
});
});
it("keeps protocol-relative URLs as authored; clients add the scheme", () => {
const href = "//cdn.example.com/clip.mp4?sig=1#t=2";
expect(resolveMediaSource(href, { threadId })).toMatchObject({
access: "direct",
uri: href,
reference: { kind: "url", url: href },
});
});
it("accepts extensionless image embeds only when asked", () => {
const href = "https://cdn.example.com/render?id=42";
expect(resolveMediaSource(href, { threadId })).toBeNull();
expect(resolveMediaSource(href, { threadId, imageEmbed: true })).toMatchObject({
kind: "image",
mimeType: "image/*",
name: "render",
});
});
it.each(["data:image/png;base64,AAAA", "blob:https://app.t3.codes/id"])(
"loads %s directly",
(href) => {
expect(resolveMediaSource(href, { threadId, imageEmbed: true })).toMatchObject({
access: "direct",
uri: href,
});
},
);
});
describe("host paths", () => {
// POSIX, Windows, UNC, and file URLs must all reach the same media-file resource.
it.each([
["/tmp/frame%23one.png:12", "/tmp/frame#one.png"],
["/tmp/frame%3Fone.png:12:3", "/tmp/frame?one.png"],
["/tmp/frame%2523one.png:12", "/tmp/frame%23one.png"],
["C:\\Users\\demo\\frame.png", "C:\\Users\\demo\\frame.png"],
["/C:/Users/demo/frame.png", "C:/Users/demo/frame.png"],
["file:///C:/Users/demo/frame.png", "C:/Users/demo/frame.png"],
["file://server/share/frame.png", "\\\\server\\share\\frame.png"],
["\\\\server\\share\\frame.png", "\\\\server\\share\\frame.png"],
])("resolves %s through the environment", (href, path) => {
expect(resolveMediaSource(href, { threadId, workspaceRoot: "/repo" })).toEqual({
kind: "image",
mimeType: "image/png",
name: path.split(/[\\/]/).at(-1),
reference: { kind: "file", path },
srcFragment: "",
access: "environment",
resource: { _tag: "media-file", threadId, path },
});
});
it("joins relative paths to the workspace and records the relative reference", () => {
expect(
resolveMediaSource("screens/logo.svg?v=2#mark", { threadId, workspaceRoot: "/repo" }),
).toEqual({
kind: "image",
mimeType: "image/svg+xml",
name: "logo.svg",
reference: {
kind: "file",
path: "/repo/screens/logo.svg",
relativePath: "screens/logo.svg",
},
srcFragment: "#mark",
access: "environment",
resource: { _tag: "media-file", threadId, path: "/repo/screens/logo.svg" },
});
});
it("prefers a caller-resolved path over classifying the source", () => {
expect(
resolveMediaSource("logo.svg", {
threadId,
workspaceRoot: "/repo",
resolvedFilePath: "/repo/docs/logo.svg",
}),
).toMatchObject({
access: "environment",
resource: { _tag: "media-file", path: "/repo/docs/logo.svg" },
reference: { relativePath: "docs/logo.svg" },
});
});
it("separates a playback fragment from literal filename characters", () => {
expect(resolveMediaSource("/tmp/clip%23one.mp4#t=2", { threadId })).toMatchObject({
kind: "video",
srcFragment: "#t=2",
resource: { path: "/tmp/clip#one.mp4" },
});
});
it("cannot be loaded without a thread to mint through", () => {
expect(resolveMediaSource("/tmp/clip.mp4", { threadId: undefined })).toMatchObject({
kind: "video",
access: "unavailable",
});
});
it.each(["notes.txt", "/repo/README", "/repo/archive.zip"])(
"returns null for the non-media path %s",
(href) => {
expect(resolveMediaSource(href, { threadId, workspaceRoot: "/repo" })).toBeNull();
},
);
});
it("serves T3 attachment files in place like any other host path", () => {
const path = `/home/demo/.t3/userdata/attachments/${attachmentId}.mp4`;
expect(resolveMediaSource(path, { threadId, workspaceRoot: "/repo" })).toMatchObject({
kind: "video",
access: "environment",
resource: { _tag: "media-file", threadId, path },
});
});
});