UNPKG

pixel-serve-server

Version:

A robust Node.js utility for handling and processing images. This package provides features like resizing, format conversion and etc.

1 lines 146 kB
{"version":3,"sources":["../src/variables.ts","../src/functions.ts","../src/schema.ts","../src/renders.ts","../src/pixel.ts"],"names":["moduleDir","path","fileURLToPath","getAssetPath","filename","NOT_FOUND_IMAGE","NOT_FOUND_AVATAR","FALLBACKIMAGES","readFile","API_REGEX","allowedFormats","mimeTypes","safeOnError","hook","err","phase","src","MAX_SPECIFIED_PATH_LEN","isValidPath","basePath","specifiedPath","resolvedBase","resolvedPath","realBase","realPath","normalizedBase","isInside","relative","expandIPv6Hextets","ip","body","lastColon","tail","isIP","octets","hi","lo","halves","parseGroup","s","out","h","hextets","only","left","right","missing","isPrivateIp","family","parts","p","a","b","h0","h1","h2","h3","h4","h5","h6","h7","embeddedV4","highBitsZero","isPublicHost","hostname","stripped","addresses","resolvePinnedAddresses","resolvePinnedAddress","buildPinnedLookup","_hostname","options","callback","first","buildPinnedAgents","addressOrList","lookup","hostMatchesEntry","host","entry","suffix","isHostAllowed","allowedNetworkList","requestNoRedirect","timeoutMs","maxBytes","agents","axios","status","aerr","fetchFromNetwork","type","maxRedirects","onError","onFallback","fallback","currentUrl","hop","parsed","pinned","response","location","contentType","allowedMimeTypes","readLocalImage","filePath","baseDir","resolvedFile","stats","stripApiPrefix","pathname","apiRegex","apiPrefix","normalizeWebsiteHost","websiteURL","resolveInternalLocalPath","url","configuredHost","fetchImage","internalLocalPath","imageFormatEnum","z","imageTypeEnum","userDataSchema","value","ctx","got","val","lower","optionsSchema","arr","data","renderOptions","renderUserData","userData","bounds","clamp","min","max","reportError","context","safeOnComplete","elapsedMs","start","diff","whole","remainder","FILENAME_MAX_LEN","ASCII_FALLBACK_DEFAULT","DEFAULT_CACHE_CONTROL","FALLBACK_CACHE_CONTROL","buildFilename","rawSrc","outputFormat","ext","baseWithExt","baseNoExt","asciiBase","safeAsciiBase","maxBase","asciiFilename","utfBase","truncatedEncoded","c","lastPercent","byte","encodedFilename","buildSourceIdentifier","statLocalFile","localPath","resolved","C","buildDeterministicEtag","fields","sourceIdentifier","key","createHash","raceWithTimeout","promise","ms","label","timer","_","reject","isInsideRoot","rootDir","candidate","preResolvedRoot","realRoot","lexicalCandidate","realCandidate","resolveRootDir","DOCTYPE_SVG_ROOT","skipXmlProlog","i","skipWs","end","headLooksLikeSvg","head","looksLikeSvg","buf","isLe","sliceEnd","head16","beSrc","swapped","trimmed","serveImage","req","res","next","parsedOptions","cachedRealRoot","startedAt","requestedType","onComplete","observedSrc","observedUserId","parsedUserId","rawUserId","idTimeoutMs","handlerResult","folderPromise","dir","etag","servedSoftFallback","markSoftFallback","imageBuffer","processedImage","image","sharp","meta","resizeOptions","flushedError","fallbackType","fallbackFormat","fallbackError","registerServe","cacheResolved","pendingResolution","ensureCachedRealRoot","rootForRequest","pixel_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ImageFormat } from \"./types\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/**\n * Get the directory path for the current module.\n * Uses import.meta.url for ESM (tsup provides shims for CJS compatibility).\n */\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url));\n\nconst getAssetPath = (filename: string): string => {\n return path.join(moduleDir, \"assets\", filename);\n};\n\nconst NOT_FOUND_IMAGE = getAssetPath(\"noimage.jpg\");\nconst NOT_FOUND_AVATAR = getAssetPath(\"noavatar.png\");\n\nexport const FALLBACKIMAGES: Record<\n \"normal\" | \"avatar\",\n () => Promise<Buffer>\n> = {\n normal: async (): Promise<Buffer> => readFile(NOT_FOUND_IMAGE),\n avatar: async (): Promise<Buffer> => readFile(NOT_FOUND_AVATAR),\n};\n\nexport const API_REGEX: RegExp = /^\\/api\\/v1\\//;\n\nexport const allowedFormats: ImageFormat[] = [\n \"jpeg\",\n \"jpg\",\n \"png\",\n \"webp\",\n \"gif\",\n \"tiff\",\n \"avif\",\n];\n\nexport const mimeTypes: Readonly<Record<string, string>> = {\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n png: \"image/png\",\n webp: \"image/webp\",\n gif: \"image/gif\",\n tiff: \"image/tiff\",\n avif: \"image/avif\",\n};\n","import path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport * as dns from \"node:dns/promises\";\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport { isIP, type LookupFunction } from \"node:net\";\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { FALLBACKIMAGES, mimeTypes } from \"./variables\";\nimport type { ImageType, PixelServeOnError } from \"./types\";\n\n/**\n * Internal helper that fires the user-supplied `onError` hook without ever\n * propagating a hook error back into the request pipeline. Mirrors the\n * dispatcher in `pixel.ts`; duplicated to avoid a circular import.\n */\nconst safeOnError = (\n hook: PixelServeOnError | undefined,\n err: unknown,\n phase: string,\n src?: string,\n): void => {\n if (!hook) return;\n try {\n hook(err, { phase, src });\n } catch {\n // intentionally suppressed\n }\n};\n\n/**\n * @typedef {(\"avatar\" | \"normal\")} ImageType\n * @description Defines the type of image being processed.\n */\n\n/**\n * Maximum length accepted for `specifiedPath`. Both Windows (260 by default,\n * 32767 with `\\\\?\\` LFN prefix) and POSIX (`PATH_MAX` is typically 4096) cap\n * absolute path lengths, but the input here is a relative segment joined to\n * `basePath`, so we cap defensively below the POSIX limit to avoid pathological\n * inputs forcing megabyte string allocations through `path.resolve`.\n */\nconst MAX_SPECIFIED_PATH_LEN = 4096;\n\n/**\n * Checks if a specified path is valid within a base path.\n *\n * Performs shape validation first (no null bytes, no control characters\n * including `DEL`/`\\x7F`, no backslashes on any platform, no absolute paths,\n * length cap), then resolves both `basePath` and the joined path via\n * `fs.realpath`, then asserts containment via `path.relative` plus a\n * prefix check.\n *\n * Cross-platform notes:\n *\n * - Backslashes are rejected on **all** platforms (not just Windows). On\n * POSIX, literal `\\\\` is a valid filename byte; on Windows it is a\n * directory separator. Allowing the divergence silently is a security\n * smell, so this guard rejects backslash universally to keep behavior\n * consistent.\n * - UNC paths (`\\\\server\\share\\...`) are caught by both the backslash\n * check and `path.isAbsolute` on Windows.\n * - `\\x7F` (DEL) is part of the control-character regex so request paths\n * containing it are rejected (the `Content-Disposition` sanitizer in\n * `pixel.ts` also strips `\\x7F`; keeping the two consistent here matters).\n *\n * TOCTOU caveat: this function calls `fs.realpath` to validate containment,\n * but `pixel.ts` later re-resolves the path and calls `fs.readFile`\n * independently. Between those two calls the filesystem could change (for\n * example, a symlink target could be swapped). For an image-serving pipeline\n * the resulting worst case is a fallback image being returned; for higher\n * security workloads, callers should mount images on a read-only filesystem\n * or run the process with `fs.open` + atime-checked file handles. This is\n * accepted risk for the default deployment model.\n *\n * @param {string} basePath - The base directory to resolve paths.\n * @param {string} specifiedPath - The path to check.\n * @returns {Promise<boolean>} True if the path is valid, false otherwise.\n */\nexport const isValidPath = async (\n basePath: string,\n specifiedPath: string,\n): Promise<boolean> => {\n try {\n if (!basePath || !specifiedPath) return false;\n if (typeof specifiedPath !== \"string\") return false;\n if (specifiedPath.length > MAX_SPECIFIED_PATH_LEN) return false;\n if (specifiedPath.includes(\"\\0\")) return false;\n // Reject backslash on ALL platforms. On POSIX this is technically a\n // legal filename byte, but on Windows it is a path separator that can\n // be used for traversal. Rejecting unconditionally keeps cross-platform\n // behavior identical and removes a silent divergence.\n if (specifiedPath.includes(\"\\\\\")) return false;\n if (path.isAbsolute(specifiedPath)) return false;\n // Reject every control character (`\\x00`–`\\x1F`) and `\\x7F` (DEL).\n // eslint-disable-next-line no-control-regex\n if (!/^[^\\x00-\\x1F\\x7F]+$/.test(specifiedPath)) return false;\n\n const resolvedBase = path.resolve(basePath);\n const resolvedPath = path.resolve(resolvedBase, specifiedPath);\n\n const [realBase, realPath] = await Promise.all([\n fs.realpath(resolvedBase),\n fs.realpath(resolvedPath),\n ]);\n\n const baseStats = await fs.stat(realBase);\n if (!baseStats.isDirectory()) return false;\n\n // The resolved path must be a regular file (or symlink to one), not a\n // directory. Image serving never returns directory listings, and\n // rejecting directories prevents callers from accidentally short-\n // circuiting fallback logic when an attacker references the root.\n const pathStats = await fs.stat(realPath);\n if (!pathStats.isFile()) return false;\n\n const normalizedBase = realBase + path.sep;\n const normalizedPath = realPath + path.sep;\n\n const isInside =\n normalizedPath.startsWith(normalizedBase) || realPath === realBase;\n\n const relative = path.relative(realBase, realPath);\n return !relative.startsWith(\"..\") && !path.isAbsolute(relative) && isInside;\n } catch {\n return false;\n }\n};\n\n/**\n * A fully-expanded IPv6 address: its 8 constituent 16-bit hextets, in order.\n */\ntype Hextets = [number, number, number, number, number, number, number, number];\n\n/**\n * Expands any syntactically valid IPv6 literal (already confirmed via\n * `isIP(ip) === 6`) into its 8 constituent hextets. Handles `::` zero-run\n * compression at any position and the optional trailing IPv4 dotted-quad\n * tail (RFC 4291 §2.2 item 3, e.g. `\"64:ff9b::192.0.2.1\"`).\n *\n * Used so NAT64 prefix detection below is a numeric comparison rather than\n * a `startsWith(\"64:ff9b::\")` string match, which would miss a fully\n * expanded or partially compressed equivalent representing the exact same\n * address — a real bypass vector for an attacker-supplied IP literal that\n * never goes through DNS. Returns `null` if the (already-validated) string\n * does not decompose into exactly 8 hextets, which should not happen in\n * practice given the `isIP` precondition.\n */\nconst expandIPv6Hextets = (ip: string): Hextets | null => {\n let body = ip;\n const lastColon = body.lastIndexOf(\":\");\n const tail = lastColon >= 0 ? body.slice(lastColon + 1) : body;\n if (isIP(tail) === 4) {\n const octets = tail.split(\".\").map(Number);\n const hi = ((octets[0]! << 8) | octets[1]!).toString(16);\n const lo = ((octets[2]! << 8) | octets[3]!).toString(16);\n body = body.slice(0, lastColon + 1) + hi + \":\" + lo;\n }\n\n const halves = body.split(\"::\");\n if (halves.length > 2) return null;\n\n // Parse a colon-separated run of hextets, failing closed (returning null) on\n // any group that is not a clean 1-4 digit hex value. Without this validation\n // `parseInt` would silently truncate a malformed group — e.g. an RFC 4007\n // zone-id suffix leaves the tail \"127.0.0.1%eth0\", which `parseInt(_, 16)`\n // collapses to `0x127` — producing a plausible-but-wrong tuple that shifts\n // the classifier's markers out of position and could report a private\n // address as public. `net.isIP` accepts a zone-id'd literal as valid IPv6,\n // so this parser must reject anything that is not a bare address explicitly.\n const parseGroup = (s: string): number[] | null => {\n if (s === \"\") return [];\n const out: number[] = [];\n for (const h of s.split(\":\")) {\n if (!/^[0-9a-f]{1,4}$/i.test(h)) return null;\n out.push(parseInt(h, 16));\n }\n return out;\n };\n\n let hextets: number[];\n if (halves.length === 1) {\n const only = parseGroup(halves[0]!);\n if (only === null) return null;\n hextets = only;\n } else {\n const left = parseGroup(halves[0]!);\n const right = parseGroup(halves[1]!);\n if (left === null || right === null) return null;\n const missing = 8 - left.length - right.length;\n if (missing < 0) return null;\n hextets = [...left, ...Array<number>(missing).fill(0), ...right];\n }\n\n return hextets.length === 8 ? (hextets as Hextets) : null;\n};\n\n/**\n * Determines if an IP address (v4 or v6) is private, loopback, link-local,\n * unique-local, multicast, broadcast, or otherwise unsafe to issue requests to.\n *\n * @param {string} ip - The IP address to check.\n * @returns {boolean} True if the IP is considered private/internal.\n */\nexport const isPrivateIp = (ip: string): boolean => {\n const family = isIP(ip);\n if (family === 0) return true; // not a valid IP — treat as unsafe\n\n if (family === 4) {\n const parts = ip.split(\".\").map((p) => Number(p));\n if (parts.length !== 4 || parts.some((p) => Number.isNaN(p))) return true;\n const [a, b] = parts;\n // 0.0.0.0/8\n if (a === 0) return true;\n // 10.0.0.0/8\n if (a === 10) return true;\n // 100.64.0.0/10 RFC 6598 shared address space (CGNAT, cloud-internal)\n if (a === 100 && b >= 64 && b <= 127) return true;\n // 127.0.0.0/8 (loopback)\n if (a === 127) return true;\n // 169.254.0.0/16 (link-local, AWS IMDS)\n if (a === 169 && b === 254) return true;\n // 172.16.0.0/12\n if (a === 172 && b >= 16 && b <= 31) return true;\n // 192.168.0.0/16\n if (a === 192 && b === 168) return true;\n // 192.0.0.0/24 (IETF Protocol Assignmen