UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

39 lines (35 loc) 1.02 kB
/** * Returns a blob url from an http: or https: url * * @remarks * It takes 1 argument, a url to an asset online * * `blob(url)` * * - `url` is a string, starting with http:// or https:// * * ## Usage * * - `url('https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/markertracking/marker_tracking1.png')` - return a url like blob:http://localhost:5000/af3f2f10-8de4-463e-9d83-82d24287f071 * */ import {BaseMethod} from './_Base'; async function blobFromUrl(url: string) { const response = await fetch(url); const blob = await response.blob(); const urlCreator = globalThis.URL || globalThis.webkitURL; const blobUrl = urlCreator.createObjectURL(blob); return blobUrl; } export class BlobExpression extends BaseMethod { static override requiredArguments() { return [['string', 'url']]; } override async processArguments(args: any[]): Promise<string> { if (args.length >= 1) { const url = args[0] as string; return await blobFromUrl(url); } return ''; } }