Spaces:
Paused
Paused
| import { WebBlob } from "./WebBlob"; | |
| import { isFrontend } from "./isFrontend"; | |
| /** | |
| * This function allow to retrieve either a FileBlob or a WebBlob from a URL. | |
| * | |
| * From the backend: | |
| * - support local files | |
| * - support http resources with absolute URLs | |
| * | |
| * From the frontend: | |
| * - support http resources with absolute or relative URLs | |
| */ | |
| export async function createBlob(url: URL, opts?: { fetch?: typeof fetch; accessToken?: string }): Promise<Blob> { | |
| if (url.protocol === "http:" || url.protocol === "https:") { | |
| return WebBlob.create(url, { fetch: opts?.fetch, accessToken: opts?.accessToken }); | |
| } | |
| if (isFrontend) { | |
| throw new TypeError(`Unsupported URL protocol "${url.protocol}"`); | |
| } | |
| if (url.protocol === "file:") { | |
| const { FileBlob } = await import("./FileBlob"); | |
| return FileBlob.create(url); | |
| } | |
| throw new TypeError(`Unsupported URL protocol "${url.protocol}"`); | |
| } | |