* @returns {Promise }
()
| 130 | * @returns {Promise<GithubRelease>} |
| 131 | */ |
| 132 | function fetchLatestRelease() { |
| 133 | return new Promise((resolve, reject) => { |
| 134 | const options = { |
| 135 | hostname: "api.github.com", |
| 136 | path: `/repos/${REPO}/releases/latest`, |
| 137 | headers: { |
| 138 | "User-Agent": "csskit-vscode", |
| 139 | Accept: "application/vnd.github.v3+json", |
| 140 | }, |
| 141 | }; |
| 142 | |
| 143 | https |
| 144 | .get(options, (res) => { |
| 145 | if (res.statusCode !== 200) { |
| 146 | reject(new Error(`GitHub API returned ${res.statusCode}`)); |
| 147 | res.resume(); |
| 148 | return; |
| 149 | } |
| 150 | let data = ""; |
| 151 | res.on("data", (chunk) => (data += chunk)); |
| 152 | res.on("end", () => { |
| 153 | try { |
| 154 | resolve(JSON.parse(data)); |
| 155 | } catch (e) { |
| 156 | reject(e); |
| 157 | } |
| 158 | }); |
| 159 | }) |
| 160 | .on("error", reject); |
| 161 | }); |
| 162 | } |
| 163 | |
| 164 | /** |
| 165 | * @param {string} url |
no test coverage detected