/
githubmirror
/
next.js
Обзор
Документация
Войти
/
githubmirror
/
next.js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
canary
apps/bundle-analyzer/lib/utils.ts
69 строк
2 KB
Will Binns-Smith
bundle-analyzer: Add sizes to treemap, status bar (#86966)
10 дек 2025, 02:02
Не верифицирован
10 дек 2025, 02:02
585126e
Код
Авторство
О чём код?
import { type ClassValue, clsx } from 'clsx' import { twMerge } from 'tailwind-merge' import { SpecialModule } from './types' import { NetworkError } from './errors' import { AnalyzeData, SourceIndex } from './analyze-data' export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } export async function fetchStrict(url: string): Promise<Response> { let res: Response try { res = await fetch(url) } catch (err) { throw new NetworkError(`Failed to fetch ${url}`, { cause: err }) } if (!res.ok) { throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`) } return res } export async function jsonFetcher<T>(url: string): Promise<T> { const res = await fetchStrict(url) return res.json() as Promise<T> } export function getSpecialModuleType( analyzeData: AnalyzeData | undefined, sourceIndex: SourceIndex | null ): SpecialModule | null { if (!analyzeData || sourceIndex == null) return null const path = analyzeData.source(sourceIndex)?.path || '' if (path.endsWith('polyfill-module.js')) { return SpecialModule.POLYFILL_MODULE } else if (path.endsWith('polyfill-nomodule.js')) { return SpecialModule.POLYFILL_NOMODULE } return null } export function formatBytes(bytes: number): string { if (bytes === 0) return '0 B' if (bytes < 1024) return `${bytes} B` if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB` if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(2)} MB` return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB` } let IDENT_ATTRIBUTES_REGEXP = /^(.+?)(?: \{(.*)\})?(?: \[(.*)\])?(?: \((.*?)\))?(?: <(.*?)>)?$/ export function splitIdent(ident: string): { fullPath: string templateArgs: string layer: string moduleType: string treeShaking: string } { let [match, fullPath, templateArgs, layer, moduleType, treeShaking] = IDENT_ATTRIBUTES_REGEXP.exec(ident) || [''] ident = ident.substring(0, ident.length - match.length) return { fullPath, templateArgs, layer, moduleType, treeShaking } }