úÎÔõo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnSafe) %Constrains allowable version numbers.Use # to create constraints and 14 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 o 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: 2: The major version number.3: The minor version number.4: The patch version number.5$: A list of pre-release identifiers.6: 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 = []} 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 p 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 p 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 p 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 p 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.(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"+Renders 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",Returns q& if the major version number is zero, r otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False-Returns q* if the major version number is not zero, r otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False.$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 2t if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change./$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 3t if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.0Increments 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 4t if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.1Returns q* if the version satisfies the constraint, r otherwise.?satisfies <$> parseVersion "1.2.3" <*> parseConstraint ">1.2.0" Just True2$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 = []})3$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 = []})4$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 = []})5'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 = []})6Focuses 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 = []})7AMakes 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 = []}))8NMakes 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 = []}))9@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 = []}))a?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 LTb 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 Falsec  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aba  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`cba  !"#$%&'()*+,-./0123456 789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`K   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abSafe  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456s      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstupvwpvxy"salve-0.0.4-DT7MrXMyM6K5nuLi7saPoPSalve.InternalSalveWildcard WildcardMajor WildcardMinor WildcardPatchOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT OperatorTilde OperatorCaret ConstraintConstraintOperatorConstraintHyphenConstraintWildcard ConstraintAnd ConstraintOrBuild PreReleasePreReleaseNumericPreReleaseTextualVersion versionMajor versionMinor versionPatchversionPreReleases versionBuilds makeVersioninitialVersion parseVersionparsePreRelease parseBuildparseConstraintunsafeParseVersionunsafeParsePreReleaseunsafeParseBuildunsafeParseConstraint renderVersionrenderPreRelease renderBuildrenderConstraint isUnstableisStable bumpMajor bumpMinor bumpPatch satisfies majorLens minorLens patchLenspreReleasesLens buildsLens constraintLT constraintLE constraintEQ constraintGE constraintGT constraintAnd constraintOrconstraintHyphenconstraintTildeconstraintCaretversionP preReleasesP preReleasePpreReleaseNumberPpreReleaseStringPbuildsPbuildPnumberPzeroPnonZeroP constraintsP constraintP hyphenatedPsimplePwildcardConstraintP wildcardPwildcardPatchPwildcardMinorPwildcardMajorP primitiveP operatorPhyphenPorPspaces1PspacesPparserenderPreReleases renderBuildsbothisAsciiDigitNonZero isIdentifier isWildcard$fOrdPreRelease $fOrdVersion$fEqPreRelease$fShowPreRelease $fEqBuild $fShowBuild $fEqVersion $fShowVersion $fEqOperator$fShowOperator $fEqWildcard$fShowWildcard$fEqConstraint$fShowConstraintghc-prim GHC.ClassesOrdbaseGHC.BaseNothing GHC.TypesTrueFalse