L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe) %Constrains allowable version numbers.Use ( to create constraints and 64 to see if a version number satisfies a constraint. <Build metadata attached to a version. These are similar to s with some key differences: oThere is no such thing as numeric builds. Even though builds can look like numbers, all builds are textual.HAs a result, builds that look numeric are allowed to have leading zeros.8Builds cannot be compared. That is, they do not have an  instance.Use ' to create builds.oPre-release information attached to a version. These can either be numeric or textual. They must not be empty.DNumeric: Can be any non-negative integer. Cannot have leading zeros.sTextual: Can be any string of ASCII digits, letters, or hyphens. Cannot be all digits, as that would be numeric.<In general, pre-releases must match the regular expression /^[-0-9A-Za-z]+$/.Use & to create pre-releases.4A semantic version number. Versions have five parts: 7: The major version number.8: The minor version number.9: The patch version number.:$: A list of pre-release identifiers.;: A list of build metadata.Use % to create versions.Makes a new version number.makeVersion 0 0 0 [] []kVersion {versionMajor = 0, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}$This can be a useful alternative to %. if you want a total way to create a version.+The initial version number for development.initialVersionkVersion {versionMajor = 0, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}AMakes a new constraint that must be less than the version number.%constraintLT <$> parseVersion "1.2.3"Just (ConstraintCompare OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<1.2.3"Just (ConstraintCompare OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))NMakes a new constraint that must be less than or euqal to the version number.%constraintLE <$> parseVersion "1.2.3"Just (ConstraintCompare OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<=1.2.3"Just (ConstraintCompare OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))@Makes a new constraint that must be equal to the version number.%constraintEQ <$> parseVersion "1.2.3"Just (ConstraintCompare OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "=1.2.3"Just (ConstraintCompare OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))QMakes a new constraint that must be greater than or equal to the version number.%constraintGE <$> parseVersion "1.2.3"Just (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">=1.2.3"Just (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))DMakes a new constraint that must be greater than the version number.%constraintGT <$> parseVersion "1.2.3"Just (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">1.2.3"Just (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) :Makes a new constraint that must satisfy both constraints.econstraintAnd <$> (constraintGE <$> parseVersion "1.2.3") <*> (constraintLT <$> parseVersion "2.0.0").Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}))) parseConstraint ">=1.2.3 <2.0.0".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))!;Makes a new constraint that must satisfy either constraint.dconstraintOr <$> (constraintEQ <$> parseVersion "1.2.3") <*> (constraintGT <$> parseVersion "1.2.3")-Just (ConstraintOr (ConstraintCompare OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))"parseConstraint "=1.2.3 || >1.2.3"-Just (ConstraintOr (ConstraintCompare OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))"DMakes a new constraint that must be between the versions, inclusive.BconstraintHyphen <$> parseVersion "1.2.3" <*> parseVersion "2.3.4".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLE (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []})))parseConstraint "1.2.3 - 2.3.4".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLE (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []})))#GMakes a new constraint that allows changes to the patch version number.(constraintTilde <$> parseVersion "1.2.3".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))parseConstraint "~1.2.3".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))$eMakes a new constraint that allows changes that do not modify the left-most non-zero version number.(constraintCaret <$> parseVersion "1.2.3".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))parseConstraint "^1.2.3".Just (ConstraintAnd (ConstraintCompare OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintCompare OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))%1Attempts to parse a version. This parser follows  jhttps://github.com/mojombo/semver/blob/eb9aac5/semver.md#backusnaur-form-grammar-for-valid-semver-versions SemVer's BNF.parseVersion "1.2.3-p.4+b.5"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]})Returns  if the parse fails.parseVersion "wrong"Nothing<Whitespace is not allowed and will cause the parser to fail.parseVersion " 1.2.3 "Nothing& Attempts to parse a pre-release.parsePreRelease "pre"Just (PreReleaseTextual "pre")parsePreRelease "1"Just (PreReleaseNumeric 1)Returns  if the parse fails.parsePreRelease "wrong!"Nothing2Numeric pre-releases cannot contain leading zeros.parsePreRelease "01"Nothing'Attempts to parse a build.parseBuild "build"Just (Build "build")parseBuild "1"Just (Build "1")Returns  if the parse fails.parseBuild "wrong!"Nothing;Unlike pre-releases, numeric builds can have leading zeros.parseBuild "01"Just (Build "01")(4Attempts to parse a constraint. This parser follows  Hhttps://github.com/npm/npm/blob/d081cc6/doc/misc/semver.md#range-grammar npm's BNFr, except that neither the so-called "x-ranges" nor partial version numbers are not supported. So you cannot use 1.2.x or >1.2 as version constraints.parseConstraint ">1.2.3"Just (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))Returns  if the parse fails.parseConstraint "wrong"Nothing)Parses 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.*Parses a pre-release.unsafeParsePreRelease "pre"PreReleaseTextual "pre"'Raises an exception if the parse fails.unsafeParsePreRelease "wrong!"C*** Exception: unsafeParsePreRelease: invalid pre-release: "wrong!"...See &% for a safe version of this function.+Parses 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.,Parses a constraint.unsafeParseConstraint ">1.2.3"ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})'Raises an exception if the parse fails.unsafeParseConstraint "wrong"A*** Exception: unsafeParseConstraint: invalid constraint: "wrong"...See (% for a safe version of this function.-Renders a version..renderVersion <$> parseVersion "1.2.3-p.4+b.5"Just "1.2.3-p.4+b.5".Renders a pre-release.*renderPreRelease <$> parsePreRelease "pre" Just "pre"(renderPreRelease <$> parsePreRelease "1"Just "1"/Renders a build."renderBuild <$> parseBuild "build" Just "build"renderBuild <$> parseBuild "1"Just "1"0Renders a constraint.-renderConstraint <$> parseConstraint ">1.2.3" Just ">1.2.3"PParsing and rendering a constraint doesn't always return what you started with.-renderConstraint <$> parseConstraint "=1.2.3" Just "1.2.3"1Returns & if the major version number is zero,  otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False2Returns * if the major version number is not zero,  otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False3$Increments the major version number."bumpMajor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}).The minor and patch numbers are reset to zero."bumpMajor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMajor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 7t if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change.4$Increments the minor version number."bumpMinor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})"The patch number is reset to zero."bumpMinor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMinor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 8t if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.5Increments the patch number."bumpPatch <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []}),The major and minor numbers are not changed."bumpPatch <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpPatch <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []})Consider using 9t if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.6Returns * if the version satisfies the constraint,  otherwise.?satisfies <$> parseVersion "1.2.3" <*> parseConstraint ">1.2.0" Just True7$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"rJust (Version {versionMajor = 4, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})8$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"rJust (Version {versionMajor = 1, versionMinor = 4, versionPatch = 3, versionPreReleases = [], versionBuilds = []})9$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"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []}):'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"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []});Focuses 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"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})t?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 LTu In general, }s 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 LTpA 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 Falsev  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopvut   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXsrqYZ[\]^_`abcdefghijklmnopc   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuSafe'  !"#$%&'()*+,-./0123456789:;'  !"#$%&'()*+,-./0123456789:;      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"salve-0.0.1-4daI6i6JPhN9jfGEdOXNgpSalve.InternalSalveParser runParserOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT ConstraintConstraintCompare ConstraintAnd ConstraintOrBuild PreReleasePreReleaseNumericPreReleaseTextualVersion versionMajor versionMinor versionPatchversionPreReleases versionBuilds makeVersioninitialVersion constraintLT constraintLE constraintEQ constraintGE constraintGT constraintAnd constraintOrconstraintHyphenconstraintTildeconstraintCaret parseVersionparsePreRelease parseBuildparseConstraintunsafeParseVersionunsafeParsePreReleaseunsafeParseBuildunsafeParseConstraint renderVersionrenderPreRelease renderBuildrenderConstraint isUnstableisStable bumpMajor bumpMinor bumpPatch satisfies majorLens minorLens patchLenspreReleasesLens buildsLensversionP preReleasesP preReleasePpreReleaseNumberPpreReleaseStringPbuildsPbuildPnumberPzeroPnonZeroP constraintsP constraintP hyphenatedPsimplesPsimplePcaretPtildeP primitiveP operatorPlePgePltPgtPeqPhyphenPorPspacesPspacePparsecharPchoicePfailPgetPmanyPoneOfPoptionPsatisfyPsepByPsepBy1PsomePstringPrenderPreReleases renderBuildsboth comparing isAsciiAlphaisAsciiAlphaLowerisAsciiAlphaUpper isAsciiDigitisAsciiDigitNonZero isIdentifierjoinsafeHead $fMonadParser$fApplicativeParser$fFunctorParser$fOrdPreRelease $fOrdVersion$fEqPreRelease$fShowPreRelease $fEqBuild $fShowBuild $fEqVersion $fShowVersion $fEqOperator$fShowOperator$fEqConstraint$fShowConstraintghc-prim GHC.ClassesOrdbaseGHC.BaseNothing GHC.TypesTrueFalse