UNPKG

next-image-export-optimizer

Version:

Optimizes all static images for Next.js static HTML export functionality

30 lines (29 loc) 1.11 kB
"use strict"; module.exports = function urlToFilename(url) { try { const parsedUrl = new URL(url); const extension = parsedUrl.pathname.split(".").pop(); if (extension) { return hashAlgorithm(url).toString().concat(".", extension); } return hashAlgorithm(url).toString(); } catch (error) { console.error("Error parsing URL", url, error); } }; // Credits to https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js // This is a hash function that is used to generate a hash from the image URL const hashAlgorithm = (str, seed = 0) => { let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; for (let i = 0, ch; i < str.length; i++) { ch = str.charCodeAt(i); h1 = Math.imul(h1 ^ ch, 2654435761); h2 = Math.imul(h2 ^ ch, 1597334677); } h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507); h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909); h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507); h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909); return 4294967296 * (2097151 & h2) + (h1 >>> 0); };