h&KI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk Safe-Inferred6;H,lsalve-Simple constraints are just as expressive as  s, but they are easier to reason about. You can think of them as the desugared version of  s. salve%Constrains allowable version numbers.Use # to create constraints and 34 to see if a version number satisfies a constraint.salve1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))Returns n if the parse fails.parseConstraint "wrong"NothingThe two departures from npm's BNF are that x-ranges cannot be used with other operators and partial version numbers are not allowed.parseConstraint "1.2.x"-Just (ConstraintWildcard (WildcardPatch 1 2))parseConstraint ">=1.2.x"NothingparseConstraint "1.2"NothingparseConstraint ">=1.2"Nothing$salveParses a version."unsafeParseVersion "1.2.3-p.4+b.5"Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]}'Raises an exception if the parse fails.unsafeParseVersion "wrong";*** Exception: unsafeParseVersion: invalid version: "wrong"...See  % for a safe version of this function.%salveParses a pre-release.unsafeParsePreRelease "pre"PreReleaseTextual "pre"'Raises an exception if the parse fails.unsafeParsePreRelease "wrong!"*** Exception: unsafeParsePreRelease: invalid pre-release: "wrong!"...See !% for a safe version of this function.&salveParses a build.unsafeParseBuild "build" Build "build"'Raises an exception if the parse fails.unsafeParseBuild "wrong!"?Build "*** Exception: unsafeParseBuild: invalid build: "wrong!"...See "% for a safe version of this function.'salveParses a constraint.unsafeParseConstraint ">1.2.3"ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})'Raises an exception if the parse fails.unsafeParseConstraint "wrong"*** Exception: unsafeParseConstraint: invalid constraint: "wrong"...See #% for a safe version of this function.(salveRenders a version..renderVersion <$> parseVersion "1.2.3-p.4+b.5"Just "1.2.3-p.4+b.5")salveRenders a pre-release.*renderPreRelease <$> parsePreRelease "pre" Just "pre"(renderPreRelease <$> parsePreRelease "1"Just "1"*salveRenders a build."renderBuild <$> parseBuild "build" Just "build"renderBuild <$> parseBuild "1"Just "1"+salveRenders a constraint.-renderConstraint <$> parseConstraint ">1.2.3" Just ">1.2.3"Parsing and rendering a constraint doesn't always return what you started with.-renderConstraint <$> parseConstraint "=1.2.3" Just "1.2.3",salveReturns o& if the major version number is zero, p otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False-salveReturns o* if the major version number is not zero, p otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False.salveConverts from a q from the base package.?renderVersion . fromBaseVersion $ Version.makeVersion [1, 2, 3]"1.2.3"+Missing version components are set to zero.8renderVersion . fromBaseVersion $ Version.makeVersion []"0.0.0"9renderVersion . fromBaseVersion $ Version.makeVersion [1]"1.0.0" parseVersion "1.2.3":Just (Version {versionBranch = [1,2,3], versionTags = []}).Pre-releases and builds are converted to tags.0toBaseVersion <$> parseVersion "1.2.3-pre+build"Just (Version {versionBranch = [1,2,3], versionTags = ["pre","build"]})0salve$Increments the major version number."bumpMajor <$> parseVersion "0.0.0"Just (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}).The minor and patch numbers are reset to zero."bumpMajor <$> parseVersion "1.2.3"Just (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMajor <$> parseVersion "0.0.0-pre+build"Just (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 4 if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change.1salve$Increments the minor version number."bumpMinor <$> parseVersion "0.0.0"Just (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})"The patch number is reset to zero."bumpMinor <$> parseVersion "1.2.3"Just (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMinor <$> parseVersion "0.0.0-pre+build"Just (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 5 if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.2salveIncrements the patch number."bumpPatch <$> parseVersion "0.0.0"Just (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []}),The major and minor numbers are not changed."bumpPatch <$> parseVersion "1.2.3"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpPatch <$> parseVersion "0.0.0-pre+build"Just (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []})Consider using 6 if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.3salveReturns o* if the version satisfies the constraint, p otherwise.satisfiesConstraint <$> parseConstraint ">1.2.0" <*> parseVersion "1.2.3" Just True4salve$Focuses on the major version number.5view majorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 1(set majorLens 4 <$> parseVersion "1.2.3"Just (Version {versionMajor = 4, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})5salve$Focuses on the minor version number.5view minorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 2(set minorLens 4 <$> parseVersion "1.2.3"Just (Version {versionMajor = 1, versionMinor = 4, versionPatch = 3, versionPreReleases = [], versionBuilds = []})6salve$Focuses on the patch version number.5view patchLens <$> parseVersion "1.2.3-pre.4+build.5"Just 3(set patchLens 4 <$> parseVersion "1.2.3"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})7salve'Focuses on the pre-release identifiers.;view preReleasesLens <$> parseVersion "1.2.3-pre.4+build.5"2Just [PreReleaseTextual "pre",PreReleaseNumeric 4]3set preReleasesLens [] <$> parseVersion "1.2.3-pre"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})8salveFocuses on the build metadata.6view buildsLens <$> parseVersion "1.2.3-pre.4+build.5"Just [Build "build",Build "5"]0set buildsLens [] <$> parseVersion "1.2.3+build"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})9salveMakes a new constraint that must be less than the version number.%constraintLT <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<1.2.3"Just (ConstraintOperator OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})):salveMakes a new constraint that must be less than or euqal to the version number.%constraintLE <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<=1.2.3"Just (ConstraintOperator OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}));salveMakes a new constraint that must be equal to the version number.%constraintEQ <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "=1.2.3"Just (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))<salveMakes a new constraint that must be greater than or equal to the version number.%constraintGE <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">=1.2.3"Just (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))=salveMakes a new constraint that must be greater than the version number.%constraintGT <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))>salve:Makes a new constraint that must satisfy both constraints.constraintAnd <$> (constraintGE <$> parseVersion "1.2.3") <*> (constraintLT <$> parseVersion "2.0.0")Just (ConstraintAnd (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}))) parseConstraint ">=1.2.3 <2.0.0"Just (ConstraintAnd (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))?salve;Makes a new constraint that must satisfy either constraint.constraintOr <$> (constraintEQ <$> parseVersion "1.2.3") <*> (constraintGT <$> parseVersion "1.2.3")Just (ConstraintOr (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))"parseConstraint "=1.2.3 || >1.2.3"Just (ConstraintOr (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))@salveMakes a new constraint that must be between the versions, inclusive.constraintHyphen <$> parseVersion "1.2.3" <*> parseVersion "2.3.4"Just (ConstraintHyphen (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}) (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []}))parseConstraint "1.2.3 - 2.3.4"Just (ConstraintHyphen (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}) (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []}))AsalveMakes a new constraint that allows changes to the patch version number.(constraintTilde <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorTilde (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "~1.2.3"Just (ConstraintOperator OperatorTilde (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))BsalveMakes a new constraint that allows changes that do not modify the left-most non-zero version number.(constraintCaret <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorCaret (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "^1.2.3"Just (ConstraintOperator OperatorCaret (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))Csalve?Numeric pre-releases are always less than textual pre-releases.7compare <$> parsePreRelease "1" <*> parsePreRelease "a"Just LT.Numeric pre-releases are compared numerically.8compare <$> parsePreRelease "9" <*> parsePreRelease "10"Just LT1Textual pre-releases are compared alphabetically.:compare <$> parsePreRelease "p10" <*> parsePreRelease "p9"Just LTDsalveIn general, versions compare in the way that you would expect. First the major version numbers are compared, then the minors, then the patches.9compare <$> parseVersion "1.2.3" <*> parseVersion "2.0.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.3.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.2.4"Just LT5Numbers are compared numerically, not alphabetically.:compare <$> parseVersion "0.0.9" <*> parseVersion "0.0.10"Just LT?If all the numbers are the same, the pre-releases are compared.=compare <$> parseVersion "1.2.3-a" <*> parseVersion "1.2.3-b"Just LTA version with a pre-release is always less than a version without one as long as the other parts are the same.=compare <$> parseVersion "1.2.3-pre" <*> parseVersion "1.2.3"Just LT=compare <$> parseVersion "1.2.4-pre" <*> parseVersion "1.2.3"Just GT2Builds are not considered when comparing versions.=compare <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b"Just EQ:(==) <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b" Just False  !"#$%&'()*+,-./0123456789:;<=>?@AB  !"#$%&'()*+,-./012345678 9:;<=>?@AB Safe-InferredIu  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345678      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsntuntvqw#salve-2.0.0.2-C6IpqylgogY25b02xVnDhSalve.InternalSalveWildcard WildcardMajor WildcardMinor WildcardPatchOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT OperatorTilde OperatorCaret ConstraintConstraintOperatorConstraintHyphenConstraintWildcard ConstraintAnd ConstraintOrBuild PreReleasePreReleaseNumericPreReleaseTextualVersion versionMajor versionMinor versionPatchversionPreReleases versionBuilds makeVersioninitialVersion parseVersionparsePreRelease parseBuildparseConstraintunsafeParseVersionunsafeParsePreReleaseunsafeParseBuildunsafeParseConstraint renderVersionrenderPreRelease renderBuildrenderConstraint isUnstableisStablefromBaseVersion toBaseVersion bumpMajor bumpMinor bumpPatchsatisfiesConstraint majorLens minorLens patchLenspreReleasesLens buildsLens constraintLT constraintLE constraintEQ constraintGE constraintGT constraintAnd constraintOrconstraintHyphenconstraintTildeconstraintCaret$fOrdPreRelease $fOrdVersion$fDataSimpleConstraint$fEqSimpleConstraint$fGenericSimpleConstraint$fOrdSimpleConstraint$fReadSimpleConstraint$fShowSimpleConstraint$fDataConstraint$fEqConstraint$fGenericConstraint$fOrdConstraint$fReadConstraint$fShowConstraint$fDataWildcard $fEqWildcard$fGenericWildcard $fOrdWildcard$fReadWildcard$fShowWildcard$fDataOperator $fEqOperator$fGenericOperator $fOrdOperator$fReadOperator$fShowOperator $fDataVersion $fEqVersion$fGenericVersion $fReadVersion $fShowVersion $fDataBuild $fEqBuild$fGenericBuild $fReadBuild $fShowBuild$fDataPreRelease$fEqPreRelease$fGenericPreRelease$fReadPreRelease$fShowPreReleaseSimpleConstraintghc-prim GHC.ClassesOrdbase GHC.MaybeNothing GHC.TypesTrueFalse Data.Version