gh-release-fetch
Advanced tools
Comparing version 1.0.3 to 1.0.4
@@ -11,1 +11,2 @@ export interface Release { | ||
export declare function updateAvailable(repository: string, currentVersion: string): Promise<boolean>; | ||
export declare function newerVersion(latestVersion: string, currentVersion: string): boolean; |
@@ -32,3 +32,3 @@ "use strict"; | ||
const latestVersion = yield resolveRelease(repository); | ||
return semver_1.gt(latestVersion, currentVersion); | ||
return newerVersion(latestVersion, currentVersion); | ||
}); | ||
@@ -41,2 +41,7 @@ } | ||
const json = yield res.json(); | ||
if (res.status === 403 && | ||
typeof json.message === 'string' && | ||
json.message.includes('API rate limit exceeded')) { | ||
throw new Error('API rate limit exceeded, please try again later'); | ||
} | ||
return json.tag_name; | ||
@@ -66,1 +71,13 @@ }); | ||
} | ||
function newerVersion(latestVersion, currentVersion) { | ||
if (!latestVersion) { | ||
return false; | ||
} | ||
if (!currentVersion) { | ||
return true; | ||
} | ||
const l = latestVersion.replace(/^v/, ''); | ||
const c = currentVersion.replace(/^v/, ''); | ||
return semver_1.gt(l, c); | ||
} | ||
exports.newerVersion = newerVersion; |
{ | ||
"name": "gh-release-fetch", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "A library to fetch release binaries from GitHub Releases", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -1,2 +0,2 @@ | ||
import { newerVersion } from './index' | ||
import { newerVersion, fetchLatest } from "./index"; | ||
@@ -12,1 +12,29 @@ test('compare versions', () => { | ||
}) | ||
jest.mock('node-fetch'); | ||
describe('fetchLatest', () => { | ||
test('should throw error when api limit is reached', async () => { | ||
const fetch = require("node-fetch"); | ||
const response = { | ||
status: 403, | ||
json: () => | ||
Promise.resolve({ | ||
message: 'API rate limit exceeded for ', | ||
}), | ||
}; | ||
fetch.mockResolvedValue(response) | ||
await expect( | ||
fetchLatest({ | ||
repository: 'netlify/test', | ||
package: 'test', | ||
destination: 'bin/test', | ||
version: '1.0.0', | ||
extract: true, | ||
}) | ||
).rejects.toEqual( | ||
new Error('API rate limit exceeded, please try again later') | ||
); | ||
}); | ||
}); |
@@ -30,4 +30,13 @@ import * as download from 'download'; | ||
async function resolveRelease(repository: string): Promise<string> { | ||
const res = await fetch(`https://api.github.com/repos/${repository}/releases/latest`); | ||
const res = await fetch( | ||
`https://api.github.com/repos/${repository}/releases/latest` | ||
); | ||
const json = await res.json(); | ||
if ( | ||
res.status === 403 && | ||
typeof json.message === 'string' && | ||
json.message.includes('API rate limit exceeded') | ||
) { | ||
throw new Error('API rate limit exceeded, please try again later'); | ||
} | ||
return json.tag_name; | ||
@@ -34,0 +43,0 @@ } |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10888
11
250
1