New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@darkobits/chex

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@darkobits/chex - npm Package Compare versions

Comparing version 2.0.7 to 2.0.8

dist/index.js.map

10

dist/index.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = void 0;
var chex_1 = require("./lib/chex");
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(chex_1).default; } });
const chex = require("./lib/chex.js");
module.exports = chex;
//# sourceMappingURL=index.js.map
import { type ExecaChildProcess, type ExecaSyncReturnValue, type Options, type SyncOptions } from 'execa';
/**
* Value returned by Chex.
*/
export interface ExecaWrapper {
/**
* Call the bound executable asynchronously.
*/
(command: string | ReadonlyArray<string>, options?: Options): ExecaChildProcess;
/**
* Call the bound executable synchronously.
*/
sync(command: string | ReadonlyArray<string>, options?: SyncOptions): ExecaSyncReturnValue;
/**
* Parsed semver version of the executable.
*/
version: string;
/**
* Raw version reported by the executable.
*/
rawVersion: string;
}
/**
* Asynchronous version of Chex.
*/
declare const chex: {
(dependencyExpression: string, execaOpts?: Options): Promise<ExecaWrapper>;
/**
* Synchronous version of Chex.
*/
sync(dependencyExpression: string, execaOpts?: SyncOptions): ExecaWrapper;
};
export default chex;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const execa_1 = __importDefault(require("execa"));
const semver_1 = __importDefault(require("semver"));
const get_executable_version_1 = __importDefault(require("../lib/get-executable-version"));
const execa = require("execa");
const semver = require("semver");
const getExecutableVersion = require("./get-executable-version.js");
function parseDependencyExpression(versionExpression) {
const [rawName, versionRange] = versionExpression.split(' ');
const name = rawName.toLowerCase();
if (versionRange) {
if (semver_1.default.validRange(versionRange)) {
return { name, versionRange };
}
throw new Error(`Invalid semver range: ${versionRange}`);
const [rawName, versionRange] = versionExpression.split(" ");
const name = rawName.toLowerCase();
if (versionRange) {
if (semver.validRange(versionRange)) {
return { name, versionRange };
}
return { name, versionRange: '' };
throw new Error(`Invalid semver range: ${versionRange}`);
}
return { name, versionRange: "" };
}
function chexCommon(name, versionRange, version, rawVersion) {
if (versionRange && version === 'unknown') {
throw new Error(`Unable to determine version of "${name}"`);
if (versionRange && version === "unknown") {
throw new Error(`Unable to determine version of "${name}"`);
}
if (versionRange && !semver.valid(version)) {
throw new Error(`Version "${version}" of "${name}" is not a valid semver version.`);
}
if (versionRange && !semver.satisfies(version, versionRange)) {
throw new Error(`Version "${version}" of "${name}" does not satisfy criteria "${versionRange}".`);
}
const execaWrapper = (commandStringOrArgumentsArray, execaOpts) => {
if (typeof commandStringOrArgumentsArray === "string") {
return execa.command(`${name} ${commandStringOrArgumentsArray}`, execaOpts);
}
if (versionRange && !semver_1.default.valid(version)) {
throw new Error(`Version "${version}" of "${name}" is not a valid semver version.`);
return execa(name, commandStringOrArgumentsArray, execaOpts);
};
execaWrapper.sync = (commandStringOrArgumentsArray, execaOpts) => {
if (typeof commandStringOrArgumentsArray === "string") {
return execa.commandSync(`${name} ${commandStringOrArgumentsArray}`, execaOpts);
}
if (versionRange && !semver_1.default.satisfies(version, versionRange)) {
throw new Error(`Version "${version}" of "${name}" does not satisfy criteria "${versionRange}".`);
}
const execaWrapper = (commandStringOrArgumentsArray, execaOpts) => {
if (typeof commandStringOrArgumentsArray === 'string') {
return execa_1.default.command(`${name} ${commandStringOrArgumentsArray}`, execaOpts);
}
return (0, execa_1.default)(name, commandStringOrArgumentsArray, execaOpts);
};
execaWrapper.sync = (commandStringOrArgumentsArray, execaOpts) => {
if (typeof commandStringOrArgumentsArray === 'string') {
return execa_1.default.commandSync(`${name} ${commandStringOrArgumentsArray}`, execaOpts);
}
return execa_1.default.sync(name, commandStringOrArgumentsArray, execaOpts);
};
execaWrapper.version = version;
execaWrapper.rawVersion = rawVersion;
return execaWrapper;
return execa.sync(name, commandStringOrArgumentsArray, execaOpts);
};
execaWrapper.version = version;
execaWrapper.rawVersion = rawVersion;
return execaWrapper;
}
const chex = async (dependencyExpression, execaOpts) => {
const { name, versionRange } = parseDependencyExpression(dependencyExpression);
const { version, rawVersion } = await (0, get_executable_version_1.default)(name, execaOpts);
return chexCommon(name, versionRange, version, rawVersion);
const { name, versionRange } = parseDependencyExpression(dependencyExpression);
const { version, rawVersion } = await getExecutableVersion(name, execaOpts);
return chexCommon(name, versionRange, version, rawVersion);
};
chex.sync = (dependencyExpression, execaOpts) => {
const { name, versionRange } = parseDependencyExpression(dependencyExpression);
const { version, rawVersion } = get_executable_version_1.default.sync(name, execaOpts);
return chexCommon(name, versionRange, version, rawVersion);
const { name, versionRange } = parseDependencyExpression(dependencyExpression);
const { version, rawVersion } = getExecutableVersion.sync(name, execaOpts);
return chexCommon(name, versionRange, version, rawVersion);
};
exports.default = chex;
module.exports = chex;
//# sourceMappingURL=chex.js.map
import execa, { type Options } from 'execa';
/**
* Provided an executable name, uses various techniques to determine its
* version. If successful, resolves with the version of the executable. If the
* version could not be determined, resolves with the string 'unknown'. If the
* executable does not exist on the system, an error will be thrown.
*/
declare function getExecutableVersion(name: string, execaOpts?: Options): Promise<{

@@ -3,0 +9,0 @@ version: string;

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const execa_1 = __importDefault(require("execa"));
const find_versions_1 = __importDefault(require("find-versions"));
const semver_1 = __importDefault(require("semver"));
const versionFlags = ['--version', '-v', 'version'];
const unknownVersionResult = { version: 'unknown', rawVersion: 'unknown' };
const execa = require("execa");
const findVersions = require("find-versions");
const semver = require("semver");
const versionFlags = ["--version", "-v", "version"];
const unknownVersionResult = { version: "unknown", rawVersion: "unknown" };
function normalizeName(name) {
return name.toLocaleLowerCase();
return name.toLocaleLowerCase();
}
function parseVersionResult(result) {
for (const stream of ['stdout', 'stderr']) {
const rawVersion = result[stream];
if (!rawVersion) {
continue;
}
const strictVersion = (0, find_versions_1.default)(rawVersion)[0];
if (strictVersion) {
return { version: strictVersion, rawVersion };
}
const looseVersion = semver_1.default.clean((0, find_versions_1.default)(rawVersion, { loose: true })[0], { loose: true });
if (looseVersion) {
return { version: looseVersion, rawVersion };
}
for (const stream of ["stdout", "stderr"]) {
const rawVersion = result[stream];
if (!rawVersion) {
continue;
}
const strictVersion = findVersions(rawVersion)[0];
if (strictVersion) {
return { version: strictVersion, rawVersion };
}
const looseVersion = semver.clean(findVersions(rawVersion, { loose: true })[0], { loose: true });
if (looseVersion) {
return { version: looseVersion, rawVersion };
}
}
}
function handleError(name, err) {
if (err && err.errno === 'ENOENT') {
throw new Error(`Executable "${name}" could not be found.`);
}
if (err && err.errno === "ENOENT") {
throw new Error(`Executable "${name}" could not be found.`);
}
}
async function getExecutableVersion(name, execaOpts) {
for (const flag of versionFlags) {
try {
const version = parseVersionResult(await (0, execa_1.default)(normalizeName(name), [flag], execaOpts));
if (version) {
return version;
}
}
catch (err) {
handleError(name, err);
}
for (const flag of versionFlags) {
try {
const version = parseVersionResult(await execa(normalizeName(name), [flag], execaOpts));
if (version) {
return version;
}
} catch (err) {
handleError(name, err);
}
return unknownVersionResult;
}
return unknownVersionResult;
}
getExecutableVersion.sync = (name, execaOpts) => {
for (const flag of versionFlags) {
try {
const version = parseVersionResult(execa_1.default.sync(normalizeName(name), [flag], execaOpts));
if (version) {
return version;
}
}
catch (err) {
handleError(name, err);
}
for (const flag of versionFlags) {
try {
const version = parseVersionResult(execa.sync(normalizeName(name), [flag], execaOpts));
if (version) {
return version;
}
} catch (err) {
handleError(name, err);
}
return unknownVersionResult;
}
return unknownVersionResult;
};
exports.default = getExecutableVersion;
module.exports = getExecutableVersion;
//# sourceMappingURL=get-executable-version.js.map
{
"name": "@darkobits/chex",
"version": "2.0.7",
"version": "2.0.8",
"description": "Check that an executable is installed and verify its version.",

@@ -24,4 +24,4 @@ "author": "darkobits",

"devDependencies": {
"@darkobits/eslint-plugin": "^0.2.10",
"@darkobits/ts": "^0.13.3",
"@darkobits/eslint-plugin": "^0.3.2",
"@darkobits/ts": "~0.14.0",
"@types/semver": "^7.3.13",

@@ -28,0 +28,0 @@ "@types/uuid": "^9.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