Jane Doe
Pro Plan
// 1. Use Hashing(ensures same url gets same shortened URL)const crypto = require("crypto"); function hashUrl(url, length = 7) { const hash = crypto.createHash("sha256").update(url).digest("base64url"); return hash.slice(0, length);} // 2. Use Idconst urlToId = new Map();const idToUrl = new Map();let counter = 1000; const BASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function toBase62(num) { let str = ""; while (num > 0) { str = BASE62[num % 62] + str; num = Math.floor(num / 62); } return str || "0";} function shortenUrl(url) { if (urlToId.has(url)) { return toBase62(urlToId.get(url)); } const id = counter++; urlToId.set(url, id); idToUrl.set(id, url); return toBase62(id);} function expandShortCode(shortCode) { const id = parseInt(shortCode, 62); return idToUrl.get(id);}function flipSelective(obj) { const flipped = {}; for (const [key, value] of Object.entries(obj)) { if (typeof value === "number" || typeof value === "string") { flipped[value] = key; } else { flipped[key] = value; } } return flipped;}const express = require("express");const app = express(); const urlMap = { "uid-123": "https://example.com/some-long-url", "uid-456": "https://google.com",}; app.get("/:uid", (req, res) => { const { uid } = req.params; const redirectUrl = urlMap[uid]; if (redirectUrl) { return res.redirect(302, redirectUrl); } res.status(404).send("URL not found");}); const PORT = process.env.PORT || 3000;app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});