MCPcopy Create free account
hub / github.com/denoland/std / parse

Function parse

semver/parse.ts:29–66  ·  view source on GitHub ↗
(value: string)

Source from the content-addressed store, hash-verified

27 * @returns A valid SemVer
28 */
29export function parse(value: string): SemVer {
30 if (typeof value !== "string") {
31 throw new TypeError(
32 `Cannot parse version as version must be a string: received ${typeof value}`,
33 );
34 }
35
36 if (value.length > MAX_LENGTH) {
37 throw new TypeError(
38 `Cannot parse version as version length is too long: length is ${value.length}, max length is ${MAX_LENGTH}`,
39 );
40 }
41
42 value = value.trim();
43
44 const groups = value.match(FULL_REGEXP)?.groups;
45 if (!groups) throw new TypeError(`Cannot parse version: ${value}`);
46
47 const major = parseNumber(
48 groups.major!,
49 `Cannot parse version ${value}: invalid major version`,
50 );
51 const minor = parseNumber(
52 groups.minor!,
53 `Cannot parse version ${value}: invalid minor version`,
54 );
55 const patch = parseNumber(
56 groups.patch!,
57 `Cannot parse version ${value}: invalid patch version`,
58 );
59
60 const prerelease = groups.prerelease
61 ? parsePrerelease(groups.prerelease)
62 : [];
63 const build = groups.buildmetadata ? parseBuild(groups.buildmetadata) : [];
64
65 return { major, minor, patch, prerelease, build };
66}

Callers 15

satisfies_test.tsFile · 0.90
format_test.tsFile · 0.90
parse_test.tsFile · 0.90
less_than_test.tsFile · 0.90
compare_test.tsFile · 0.90
equals_test.tsFile · 0.90
canParseFunction · 0.90
not_equals_test.tsFile · 0.90

Calls 4

parseNumberFunction · 0.90
parsePrereleaseFunction · 0.90
parseBuildFunction · 0.90
matchMethod · 0.80

Tested by

no test coverage detected