Socket
Socket
Sign inDemoInstall

gh-release-fetch

Package Overview
Dependencies
Maintainers
16
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gh-release-fetch - npm Package Compare versions

Comparing version 2.0.6 to 3.0.0

69

dist/index.js
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -16,47 +7,37 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.newerVersion = exports.updateAvailable = exports.fetchVersion = exports.fetchLatest = void 0;
const fs_1 = require("fs");
const download_1 = __importDefault(require("download"));
const make_dir_1 = __importDefault(require("make-dir"));
const node_fetch_1 = __importDefault(require("node-fetch"));
const semver_1 = require("semver");
function fetchLatest(release, fetchOptions) {
return __awaiter(this, void 0, void 0, function* () {
// eslint-disable-next-line no-param-reassign
release.version = yield resolveRelease(release.repository, fetchOptions);
const agent = fetchOptions && fetchOptions.agent;
return fetchVersion(release, { agent });
});
async function fetchLatest(release, fetchOptions) {
// eslint-disable-next-line no-param-reassign
release.version = await resolveRelease(release.repository, fetchOptions);
const agent = fetchOptions && fetchOptions.agent;
return fetchVersion(release, { agent });
}
exports.fetchLatest = fetchLatest;
function fetchVersion(release, { agent } = {}) {
return __awaiter(this, void 0, void 0, function* () {
validateRelease(release);
yield downloadFile(release, { agent });
});
async function fetchVersion(release, { agent } = {}) {
validateRelease(release);
await downloadFile(release, { agent });
}
exports.fetchVersion = fetchVersion;
function updateAvailable(repository, currentVersion, fetchOptions) {
return __awaiter(this, void 0, void 0, function* () {
const latestVersion = yield resolveRelease(repository, fetchOptions);
return newerVersion(latestVersion, currentVersion);
});
async function updateAvailable(repository, currentVersion, fetchOptions) {
const latestVersion = await resolveRelease(repository, fetchOptions);
return newerVersion(latestVersion, currentVersion);
}
exports.updateAvailable = updateAvailable;
function resolveRelease(repository, fetchOptions) {
return __awaiter(this, void 0, void 0, function* () {
const res = yield (0, node_fetch_1.default)(`https://api.github.com/repos/${repository}/releases/latest`, fetchOptions);
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;
});
async function resolveRelease(repository, fetchOptions) {
const res = await (0, node_fetch_1.default)(`https://api.github.com/repos/${repository}/releases/latest`, fetchOptions);
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;
}
function downloadFile(release, { agent }) {
return __awaiter(this, void 0, void 0, function* () {
const url = `https://github.com/${release.repository}/releases/download/${release.version}/${release.package}`;
yield (0, make_dir_1.default)(release.destination);
yield (0, download_1.default)(url, release.destination, {
extract: release.extract,
agent: agent,
});
async function downloadFile(release, { agent }) {
const url = `https://github.com/${release.repository}/releases/download/${release.version}/${release.package}`;
await fs_1.promises.mkdir(release.destination, { recursive: true });
await (0, download_1.default)(url, release.destination, {
extract: release.extract,
agent: agent,
});

@@ -63,0 +44,0 @@ }

{
"name": "gh-release-fetch",
"version": "2.0.6",
"version": "3.0.0",
"description": "A library to fetch release binaries from GitHub Releases",

@@ -39,3 +39,3 @@ "main": "dist/index.js",

"engines": {
"node": ">=10"
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
},

@@ -45,3 +45,3 @@ "author": "David Calavera",

"devDependencies": {
"@netlify/eslint-config-node": "^4.0.5",
"@netlify/eslint-config-node": "^4.0.6",
"@types/jest": "^27.0.0",

@@ -61,3 +61,2 @@ "@types/node": "^16.0.0",

"download": "^8.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.3.0",

@@ -64,0 +63,0 @@ "semver": "^7.0.0"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc