| 143 | } |
| 144 | |
| 145 | async function fetchPackageInfo({ packageName, version }: ParsedPackageSpec): Promise<PackageInfo> { |
| 146 | try { |
| 147 | const response = await fetch(`https://registry.npmjs.org/${packageName}/${version || "latest"}`); |
| 148 | if (!response.ok) { |
| 149 | throw new Error("Failed to get package info"); |
| 150 | } |
| 151 | const data = await response.json(); |
| 152 | return { |
| 153 | size: data.dist.unpackedSize, |
| 154 | version: data.version, |
| 155 | }; |
| 156 | } catch (error) { |
| 157 | throw new Error("Failed to get package info"); |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | function debounce<T>(fn: (value: T) => void, delay: number) { |
| 162 | let timeout: number | undefined; |