Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@directus/update-check

Package Overview
Dependencies
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@directus/update-check - npm Package Compare versions

Comparing version 11.0.3 to 11.0.4

4

dist/index.d.ts

@@ -1,1 +0,3 @@

export declare function updateCheck(currentVersion: string): Promise<void>;
declare function updateCheck(currentVersion: string): Promise<void>;
export { updateCheck };

@@ -1,66 +0,98 @@

import boxen, {} from 'boxen';
import chalk from 'chalk';
import got from 'got';
import { gte, prerelease } from 'semver';
import { getCache } from './cache.js';
const cache = await getCache();
export async function updateCheck(currentVersion) {
let packageManifest;
try {
packageManifest = await got('https://registry.npmjs.org/directus', {
headers: { accept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*' },
cache,
retry: {
limit: 0,
},
timeout: {
request: 8000,
},
}).json();
// src/index.ts
import Axios from "axios";
import { setupCache } from "axios-cache-interceptor";
import boxen from "boxen";
import chalk from "chalk";
import { gte, prerelease } from "semver";
// src/cache.ts
import { buildStorage } from "axios-cache-interceptor";
import findCacheDirectory from "find-cache-dir";
import fs from "fs/promises";
import path from "path";
async function getCache() {
const dir = findCacheDirectory({ name: "directus" });
if (!dir)
return;
try {
await fs.mkdir(dir, { recursive: true });
} catch {
return;
}
return buildStorage({
async set(key, value) {
const file = path.join(dir, key);
const content = JSON.stringify(value);
return fs.writeFile(file, content).catch(() => {
});
},
async remove(key) {
const file = path.join(dir, key);
return fs.unlink(file).catch(() => {
});
},
async find(key) {
try {
const file = path.join(dir, key);
const content = await fs.readFile(file, { encoding: "utf8" });
const value = JSON.parse(content);
return value;
} catch {
return void 0;
}
}
catch (error) {
// Any errors are intentionally ignored & update message simply not printed
return;
}
if (!packageManifest) {
return;
}
const latestVersion = packageManifest['dist-tags']['latest'];
if (!latestVersion || gte(currentVersion, latestVersion)) {
return;
}
const allVersions = Object.keys(packageManifest.versions).filter((version) => !prerelease(version));
const indexOfCurrent = allVersions.indexOf(currentVersion);
const indexOfLatest = allVersions.indexOf(latestVersion);
const versionDifference = indexOfCurrent !== -1 && indexOfLatest !== -1 ? Math.abs(indexOfLatest - indexOfCurrent) : null;
const message = [
chalk.bold(`Update available!`),
'',
chalk.bold(`${chalk.red(currentVersion)} → ${chalk.green(latestVersion)}`),
...(versionDifference
? [chalk.dim(`${versionDifference} ${versionDifference > 1 ? 'versions' : 'version'} behind`)]
: []),
'',
'More information:',
chalk.blue(`https://github.com/directus/directus/releases`),
];
let borderColor;
if (versionDifference && versionDifference > 5) {
borderColor = 'red';
}
else if (versionDifference && versionDifference > 2) {
borderColor = 'yellow';
}
else {
borderColor = 'magenta';
}
const boxenOptions = {
padding: 1,
margin: 1,
align: 'center',
borderColor,
borderStyle: 'round',
};
// eslint-disable-next-line no-console
console.warn(boxen(message.join('\n'), boxenOptions));
});
}
// src/index.ts
var cache = await getCache();
var instance = Axios.create();
var axios = setupCache(instance, { storage: cache });
async function updateCheck(currentVersion) {
let response;
try {
response = await axios.get("https://registry.npmjs.org/directus", {
headers: { accept: "application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*" },
timeout: 8e3
});
} catch {
return;
}
const packageManifest = response.data;
const latestVersion = packageManifest["dist-tags"]["latest"];
if (!latestVersion || gte(currentVersion, latestVersion)) {
return;
}
const allVersions = Object.keys(packageManifest.versions).filter((version) => !prerelease(version));
const indexOfCurrent = allVersions.indexOf(currentVersion);
const indexOfLatest = allVersions.indexOf(latestVersion);
const versionDifference = indexOfCurrent !== -1 && indexOfLatest !== -1 ? Math.abs(indexOfLatest - indexOfCurrent) : null;
const message = [
chalk.bold(`Update available!`),
"",
chalk.bold(`${chalk.red(currentVersion)} \u2192 ${chalk.green(latestVersion)}`),
...versionDifference ? [chalk.dim(`${versionDifference} ${versionDifference > 1 ? "versions" : "version"} behind`)] : [],
"",
"More information:",
chalk.blue(`https://github.com/directus/directus/releases`)
];
let borderColor;
if (versionDifference && versionDifference > 5) {
borderColor = "red";
} else if (versionDifference && versionDifference > 2) {
borderColor = "yellow";
} else {
borderColor = "magenta";
}
const boxenOptions = {
padding: 1,
margin: 1,
align: "center",
borderColor,
borderStyle: "round"
};
console.warn(boxen(message.join("\n"), boxenOptions));
}
export {
updateCheck
};
{
"name": "@directus/update-check",
"version": "11.0.3",
"version": "11.0.4",
"description": "Check if an update for Directus is available",

@@ -24,7 +24,7 @@ "homepage": "https://directus.io",

"dependencies": {
"axios": "1.6.2",
"axios-cache-interceptor": "1.3.3",
"boxen": "7.1.1",
"chalk": "5.3.0",
"filenamify": "6.0.0",
"find-cache-dir": "5.0.0",
"got": "13.0.0",
"semver": "7.5.4"

@@ -34,16 +34,16 @@ },

"@npm/types": "1.0.2",
"@types/node": "18.16.12",
"@types/semver": "7.5.1",
"@vitest/coverage-c8": "0.31.1",
"keyv": "4.5.2",
"@types/node": "18.19.3",
"@types/semver": "7.5.6",
"@vitest/coverage-v8": "1.1.0",
"strip-ansi": "7.1.0",
"typescript": "5.0.4",
"vitest": "0.31.1",
"@directus/tsconfig": "1.0.0"
"tsup": "8.0.1",
"typescript": "5.3.3",
"vitest": "1.1.0",
"@directus/tsconfig": "1.0.1"
},
"scripts": {
"build": "tsc --project tsconfig.prod.json",
"dev": "tsc --watch",
"build": "tsup src/index.ts --format=esm --dts",
"dev": "tsup src/index.ts --format=esm --dts --watch",
"test": "vitest --watch=false"
}
}
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