deno.land / std@0.224.0 / semver / is_semver.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.// This module is browser compatible.import { ANY, INVALID } from "./constants.ts";import type { SemVer } from "./types.ts";import { isValidNumber, isValidString } from "./_shared.ts";
/** * Checks to see if value is a valid SemVer object. It does a check * into each field including prerelease and build. * * Some invalid SemVer sentinels can still return true such as ANY and INVALID. * An object which has the same value as a sentinel but isn't reference equal * will still fail. * * Objects which are valid SemVer objects but have _extra_ fields are still * considered SemVer objects and this will return true. * * A type assertion is added to the value. * @param value The value to check to see if its a valid SemVer object * @returns True if value is a valid SemVer otherwise false */export function isSemVer(value: unknown): value is SemVer { if (value === null || value === undefined) return false; if (Array.isArray(value)) return false; if (typeof value !== "object") return false; if (value === INVALID) return true; if (value === ANY) return true;
const { major, minor, patch, build = [], prerelease = [], } = value as Record<string, unknown>; return ( isValidNumber(major) && isValidNumber(minor) && isValidNumber(patch) && Array.isArray(prerelease) && prerelease.every((v) => isValidString(v) || isValidNumber(v)) && Array.isArray(build) && build.every(isValidString) );}
std

Version Info

Tagged at
3 weeks ago