UNPKG

@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
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;