import { expect, test } from "vitest" import { isSeadnURL, type MediaParams, optimize, originalURL } from "./sdk" test.each([ [undefined, {} satisfies MediaParams, undefined], [null, {} satisfies MediaParams, null], ["", {} satisfies MediaParams, ""], ["random", {} satisfies MediaParams, "random"], [[], {} satisfies MediaParams, []], [{}, {} satisfies MediaParams, {}], [ "https://random.io/image.png", { width: 24, height: 24, frameTime: 1 } satisfies MediaParams, "https://random.io/image.png", ], [ "https://i2.seadn.io/bored-ape.png", {} satisfies MediaParams, "https://i2.seadn.io/bored-ape.png", ], [ "https://i2.seadn.io/bored-ape.png", { width: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?w=100", ], [ "https://i2.seadn.io/bored-ape.png", { height: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=100", ], [ "https://i2.seadn.io/bored-ape.png", { width: 100, height: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=100&w=100", ], [ "https://i2.seadn.io/bored-ape.png", { height: 100, width: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=100&w=100", ], [ "https://i2.seadn.io/bored-ape.svg", { height: 100, width: 100 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.svg", ], [ "https://i2.seadn.io/bored-ape.gif", { height: 100, width: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.gif?h=100&w=100", ], [ "https://i2.seadn.io/bored-ape.png.x", { height: 100, width: 100 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.png.x", ], [ "https://i2.seadn.io/bored-ape", { height: 100, width: 100 } satisfies MediaParams, "https://i2.seadn.io/bored-ape?h=100&w=100", ], [ "https://i2.seadn.io/bored-ape", { height: 100, width: 100, format: "avif" } satisfies MediaParams, "https://i2.seadn.io/bored-ape?h=100&w=100&format=avif", ], [ "https://i2.seadn.io/bored-ape", { height: 100, width: 100, format: "avif", quality: 50, } satisfies MediaParams, "https://i2.seadn.io/bored-ape?h=100&w=100&format=avif&q=50", ], [ "https://i2.seadn.io/bored-ape", { height: 100, width: 100, format: "avif", quality: 50, fit: "contain", } satisfies MediaParams, "https://i2.seadn.io/bored-ape?h=100&w=100&format=avif&q=50&fit=contain", ], [ "https://xyz.com/bored-ape.png", { height: 100, width: 100, format: "avif" } satisfies MediaParams, "https://xyz.com/bored-ape.png", ], [ "https://i2.seadn.io/bored-ape", { frameTime: 0.1 } satisfies MediaParams, "https://i2.seadn.io/bored-ape", ], [ "https://i2.seadn.io/bored-ape.mp4", { frameTime: 0.1, height: 50 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.mp4?frame-time=0.1&h=50", ], [ "https://i2.seadn.io/bored-ape.webm", { frameTime: 0.1, height: 50 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.webm?frame-time=0.1&h=50", ], [ "https://i2.seadn.io/bored-ape.gif", { frameTime: 0.1 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.gif?frame-time=0.1", ], [ "https://i2.seadn.io/bored-ape.svg", { frameTime: 0.1, height: 50 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.svg", ], [ "https://i2.seadn.io/bored-ape.gif", { frameTime: 0.1, height: 50 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.gif?frame-time=0.1&h=50", ], [ "https://i2.seadn.io/bored-ape.mp4", { width: 50, height: 50 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.mp4", ], [ "https://i2.seadn.io/bored-ape.html", { width: 50, height: 50 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.html", ], [ "https://i2.seadn.io/bored-ape.png", { width: 24, height: 24, boost: 2 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=250&w=250", ], [ "https://i2.seadn.io/moonbird.bmp", { width: 24, height: 24 } satisfies MediaParams, "https://i2.seadn.io/moonbird.bmp?h=24&w=24", ], [ "https://i2.seadn.io/bored-ape.png", { width: 24, height: 24, boost: 1 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=24&w=24", ], [ "https://i2.seadn.io/bored-ape.png", { width: 24, height: 24, boost: 11 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=500&w=500", ], [ "https://i2.seadn.io/bored-ape.png", { width: 24, height: 24, boost: 1000 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=4000&w=4000", ], [ "https://raw2.seadn.io/bored-ape.png", { width: 24, height: 24 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.png?h=24&w=24", ], [ "https://raw2.seadn.io/bored-ape.mp4", { width: 24, height: 24 } satisfies MediaParams, "https://raw2.seadn.io/bored-ape.mp4", ], [ "https://raw2.seadn.io/bored-ape.mp4", { width: 24, height: 24, frameTime: 1 } satisfies MediaParams, "https://i2.seadn.io/bored-ape.mp4?frame-time=1&h=24&w=24", ], ])("optimize(%o, %o) -> %o", (url, resizeParams, expected) => { expect(optimize(url as string, resizeParams)).toEqual(expected) }) test.each([ [new URL("https://raw2.seadn.io"), true], [new URL("https://i2.seadn.io"), true], [new URL("https://i2c.seadn.io"), true], [new URL("https://random.io"), false], ])("isSeadnURL(%s) -> %o", (url, expected) => { expect(isSeadnURL(url)).toEqual(expected) }) test.each([ ["https://i2.seadn.io/bored-ape.gif", "https://raw2.seadn.io/bored-ape.gif"], ["https://i2c.seadn.io/bored-ape.gif", "https://raw2.seadn.io/bored-ape.gif"], [ new URL("https://i2.seadn.io/bored-ape.gif"), "https://raw2.seadn.io/bored-ape.gif", ], ])("originalURL(%s) -> %o", (url, expected) => { expect(originalURL(url)).toEqual(expected) })