D{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe) %Constrains allowable version numbers.Use + to create constraints and 94 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: :: The major version number.;: The minor version number.<: 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 (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 = []}))NMakes 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 = []})) @Makes 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 = []}))!QMakes 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 = []}))"DMakes 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 = []}))#:Makes a new constraint that must satisfy both constraints.econstraintAnd <$> (constraintGE <$> parseVersion "1.2.3") <*> (constraintLT <$> parseVersion "2.0.0")0Just (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"0Just (ConstraintAnd (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator 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 (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 = []})))%DMakes a new constraint that must be between the versions, inclusive.BconstraintHyphen <$> 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 = []}))&GMakes 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 = []}))'eMakes 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 = []}))(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 (ConstraintOperator 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"ConstraintOperator 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.0Renders a version..renderVersion <$> parseVersion "1.2.3-p.4+b.5"Just "1.2.3-p.4+b.5"1Renders a pre-release.*renderPreRelease <$> parsePreRelease "pre" Just "pre"(renderPreRelease <$> parsePreRelease "1"Just "1"2Renders a build."renderBuild <$> parseBuild "build" Just "build"renderBuild <$> parseBuild "1"Just "1"3Renders 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"4Returns & if the major version number is zero,  otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False5Returns * if the major version number is not zero,  otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False6$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 :t if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change.7$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 ;t if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.8Increments 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 <t if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.9Returns * if the version satisfies the constraint,  otherwise.?satisfies <$> parseVersion "1.2.3" <*> parseConstraint ">1.2.0" Just True:$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 = []});$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 = []})<$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 = []})u?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 LTv 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 Falsew  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvr  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqwvu  !"#$%&'()*+,-./0123456789:;<=> ?@ABCDEFGHIJKLMNOPQRSTUVWXYtsrZ[\]^_`abcdefghijklmnopqa   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvSafe'  !"#$%&'()*+,-./0123456789:;<=>'  !"#$%&'()*+,-./0123456789:;<=>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!salve-0.0.2-1ceBocoGubSUJRj3T6xPnSalve.InternalSalveParser runParserOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT OperatorTilde OperatorCaret ConstraintConstraintOperatorConstraintHyphen 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 hyphenatedPsimplePcaretPtildeP primitiveP operatorPlePgePltPgtPeqPhyphenPorPspacePparsecharPchoicePfailPgetPmanyPoneOfPoptionPsatisfyPsepByPsepBy1PsomePstringPrenderPreReleases 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