@stryke/fs
Version:
A package containing various file system utilities that expand the functionality of NodeJs's built-in `fs` module.
141 lines (139 loc) • 5.13 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
let _stryke_type_checks_is_string = require("@stryke/type-checks/is-string");
let semver = require("semver");
let _stryke_type_checks_is_object = require("@stryke/type-checks/is-object");
//#region src/semver-fns.ts
const RELEASE_TYPES = [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease",
"release"
];
/**
* Parse a semver string into a SemVer object
*
* @param semver - The semver string to parse
* @param loose - Whether to use loose parsing
* @returns The parsed SemVer object
*/
const parseVersion = (semver$1, loose = true) => (0, semver.parse)(semver$1, loose);
/**
* Coerce a version string into a valid SemVer string
*
* @param version - The version string or number or {@link SemVer} to coerce
* @param options - Options to use when coercing the version
* @returns The coerced SemVer string or null if invalid
*/
const coerceVersion = (version, options) => {
return (0, semver.coerce)(version, options);
};
/**
* Type check for {@link SemVer}
*
* @param val - The value to check
* @returns Whether the value is a valid {@link SemVer}
*/
const isSemver = (val) => {
return (0, _stryke_type_checks_is_object.isObject)(val) && "version" in val;
};
/**
* Type check for {@link Range}
*
* @param val - The value to check
* @returns Whether the value is a valid {@link Range}
*/
const isRange = (val) => {
return (0, _stryke_type_checks_is_object.isObject)(val) && "range" in val;
};
/**
* Check if a {@link SemVer} string is valid
*
* @remarks
* If you're looking for type checking, please use the {@link isSemver} function.
*
* @param semver - The semver string to check
* @param loose - Whether to use loose parsing
* @returns Whether the semver string is valid
*/
const isValidSemver = (semver$2, loose = true) => {
return ((0, _stryke_type_checks_is_string.isString)(semver$2) || isSemver(semver$2)) && (0, semver.valid)(semver$2, loose) !== null;
};
/**
* Check if a {@link Range} string is valid
*
* @remarks
* If you're looking for type checking, please use the {@link isRange} function.
*
* @param range - The range string to check
* @param loose - Whether to use loose parsing
* @returns Whether the range string is valid
*/
const isValidRange = (range, loose = true) => {
return ((0, _stryke_type_checks_is_string.isString)(range) || isRange(range)) && (0, semver.validRange)(range, loose) !== null;
};
/**
* Check if a {@link SemVer} or {@link Range} string is valid
*
* @param version - The semver string to check
* @param loose - Whether to use loose parsing
* @returns Whether the semver string is valid
*/
const isValidVersion = (version, loose = true) => {
return isValidSemver(version, loose) || isValidRange(version, loose);
};
/**
* Check if a semver string satisfies a range
*
* @param version - The semver string to check
* @param range - The range to check against
* @param loose - Whether to use loose parsing
* @returns Whether the semver string satisfies the range
*/
const satisfiesVersion = (version, range, loose = true) => {
if (!version || !range || !isValidSemver(version, loose) || !isValidRange(range, loose)) return false;
return (0, semver.satisfies)(version, range, { loose });
};
/**
* Check if a string is a valid relative version keyword
*
* @param val - The string to check
* @returns Whether the string is a valid relative version keyword
*/
const isRelativeVersionKeyword = (val) => {
return RELEASE_TYPES.includes(val);
};
/**
* Derive a new semver version from the current version and a version specifier
*
* @param currentSemverVersion - The current semver version
* @param semverSpecifier - The semver specifier to use
* @param preid - The pre-release identifier to use
* @returns The derived new semver version
*/
const deriveNewSemverVersion = (currentSemverVersion, semverSpecifier, preid) => {
if (!(0, semver.valid)(currentSemverVersion)) throw new Error(`Invalid semver version "${currentSemverVersion}" provided.`);
let newVersion = semverSpecifier;
if (isRelativeVersionKeyword(semverSpecifier)) {
const derivedVersion = (0, semver.inc)(currentSemverVersion, semverSpecifier, preid);
if (!derivedVersion) throw new Error(`Unable to derive new version from current version "${currentSemverVersion}" and version specifier "${semverSpecifier}"`);
newVersion = derivedVersion;
} else if (!(0, semver.valid)(semverSpecifier)) throw new Error(`Invalid semver version specifier "${semverSpecifier}" provided. Please provide either a valid semver version or a valid semver version keyword.`);
return newVersion;
};
//#endregion
exports.RELEASE_TYPES = RELEASE_TYPES;
exports.coerceVersion = coerceVersion;
exports.deriveNewSemverVersion = deriveNewSemverVersion;
exports.isRange = isRange;
exports.isRelativeVersionKeyword = isRelativeVersionKeyword;
exports.isSemver = isSemver;
exports.isValidRange = isValidRange;
exports.isValidSemver = isValidSemver;
exports.isValidVersion = isValidVersion;
exports.parseVersion = parseVersion;
exports.satisfiesVersion = satisfiesVersion;