mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
* bugfixes * update fe types * implement new registry types in marketplace and ui * fix marketplace types to have default params * add alt implementation toggle * merge cleanup * more cleanup and notes * fix build * cleanup sync with next/minor * add exver JS parser * parse ValidExVer to string * update types to interface * add VersionRange and comparative functions * Parse ExtendedVersion from string * add conjunction, disjunction, and inversion logic * consider flavor in satisfiedBy fn * consider prerelease for ordering * add compare fn for sorting * rename fns for consistency * refactoring * update compare fn to return null if flavors don't match * begin simplifying dependencies * under construction * wip * add dependency metadata to CurrentDependencyInfo * ditch inheritance for recursive VersionRange constructor. Recursive 'satisfiedBy' fn wip * preprocess manifest * misc fixes * use sdk version as osVersion in manifest * chore: Change the type to just validate and not generate all solutions. * add publishedAt * fix pegjs exports * integrate exver into sdk * misc fixes * complete satisfiedBy fn * refactor - use greaterThanOrEqual and lessThanOrEqual fns * fix tests * update dependency details * update types * remove interim types * rename alt implementation to flavor * cleanup os update * format exver.ts * add s9pk parsing endpoints * fix build * update to exver * exver and bug fixes * update static endpoints + cleanup * cleanup * update static proxy verification * make mocks more robust; fix dep icon fallback; cleanup * refactor alert versions and update fixtures * registry bugfixes * misc fixes * cleanup unused * convert patchdb ui seed to camelCase * update otherVersions type * change otherVersions: null to 'none' * refactor and complete feature * improve static endpoints * fix install params * mask systemd-networkd-wait-online * fix static file fetching * include non-matching versions in otherVersions * convert release notes to modal and clean up displayExver * alert for no other versions * Fix ack-instructions casing * fix indeterminate loader on service install --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me> Co-authored-by: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Co-authored-by: J H <dragondef@gmail.com> Co-authored-by: Matt Hill <mattnine@protonmail.com>
99 lines
2.0 KiB
JavaScript
99 lines
2.0 KiB
JavaScript
// #flavor:0.1.2-beta.1:0
|
|
// !( >=1:1 && <= 2:2)
|
|
|
|
VersionRange
|
|
= first:VersionRangeAtom rest:(_ ((Or / And) _)? VersionRangeAtom)*
|
|
|
|
Or = "||"
|
|
|
|
And = "&&"
|
|
|
|
VersionRangeAtom
|
|
= Parens
|
|
/ Anchor
|
|
/ Not
|
|
/ Any
|
|
/ None
|
|
|
|
Parens
|
|
= "(" _ expr:VersionRange _ ")" { return { type: "Parens", expr } }
|
|
|
|
Anchor
|
|
= operator:CmpOp? _ version:VersionSpec { return { type: "Anchor", operator, version } }
|
|
|
|
VersionSpec
|
|
= flavor:Flavor? upstream:Version downstream:( ":" Version )? { return { flavor: flavor || null, upstream, downstream: downstream ? downstream[1] : { number: [0], prerelease: [] } } }
|
|
|
|
Not = "!" _ value:VersionRangeAtom { return { type: "Not", value: value }}
|
|
|
|
Any = "*" { return { type: "Any" } }
|
|
|
|
None = "!" { return { type: "None" } }
|
|
|
|
CmpOp
|
|
= ">=" { return ">="; }
|
|
/ "<=" { return "<="; }
|
|
/ ">" { return ">"; }
|
|
/ "<" { return "<"; }
|
|
/ "=" { return "="; }
|
|
/ "!=" { return "!="; }
|
|
/ "^" { return "^"; }
|
|
/ "~" { return "~"; }
|
|
|
|
ExtendedVersion
|
|
= flavor:Flavor? upstream:Version ":" downstream:Version {
|
|
return { flavor: flavor || null, upstream, downstream }
|
|
}
|
|
|
|
EmVer
|
|
= major:Digit "." minor:Digit "." patch:Digit ("." revision:Digit)? {
|
|
return {
|
|
flavor: null,
|
|
upstream: {
|
|
number: [major, minor, patch],
|
|
prerelease: [],
|
|
},
|
|
downstream: {
|
|
number: [revision || 0],
|
|
prerelease: [],
|
|
},
|
|
}
|
|
}
|
|
|
|
Flavor
|
|
= "#" flavor:Lowercase ":" { return flavor }
|
|
|
|
Lowercase
|
|
= [a-z]+ { return text() }
|
|
|
|
String
|
|
= [a-zA-Z]+ { return text(); }
|
|
|
|
Version
|
|
= number:VersionNumber prerelease: PreRelease? {
|
|
return {
|
|
number,
|
|
prerelease: prerelease || []
|
|
};
|
|
}
|
|
|
|
PreRelease
|
|
= "-" first:PreReleaseSegment rest:("." PreReleaseSegment)* {
|
|
return [first].concat(rest.map(r => r[1]));
|
|
}
|
|
|
|
PreReleaseSegment
|
|
= "."? segment:(Digit / String) {
|
|
return segment;
|
|
}
|
|
|
|
VersionNumber
|
|
= first:Digit rest:("." Digit)* {
|
|
return [first].concat(rest.map(r => r[1]));
|
|
}
|
|
|
|
Digit
|
|
= [0-9]+ { return parseInt(text(), 10); }
|
|
|
|
_ "whitespace"
|
|
= [ \t\n\r]* |