mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
Feature/fe new registry (#2647)
* 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>
This commit is contained in:
99
sdk/lib/exver/exver.pegjs
Normal file
99
sdk/lib/exver/exver.pegjs
Normal file
@@ -0,0 +1,99 @@
|
||||
// #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]*
|
||||
Reference in New Issue
Block a user