From eb5200ae418b31c1a5abbb745b72b180d84a13b4 Mon Sep 17 00:00:00 2001 From: Martin Janiczek Date: Wed, 12 Oct 2022 13:30:15 +0200 Subject: [PATCH 1/4] Upgrade to elm-explorations/test 2.0.0 --- elm.json | 2 +- examples/elm.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 16 +- src/ProgramTest/Failure.elm | 9 +- src/Vendored/Diff.elm | 321 ++++++++++++++++++ src/Vendored/Failure.elm | 217 ++++++++++++ src/Vendored/FormatMonochrome.elm | 44 +++ src/Vendored/Highlightable.elm | 53 +++ tests/ProgramTestHttpTests.elm | 6 +- .../SimulatedEffects/PortsTest.elm | 6 +- tests/Test/Expect.elm | 15 +- 12 files changed, 671 insertions(+), 24 deletions(-) create mode 100644 src/Vendored/Diff.elm create mode 100644 src/Vendored/Failure.elm create mode 100644 src/Vendored/FormatMonochrome.elm create mode 100644 src/Vendored/Highlightable.elm diff --git a/elm.json b/elm.json index 28354ce..a96767c 100644 --- a/elm.json +++ b/elm.json @@ -28,7 +28,7 @@ "elm/time": "1.0.0 <= v < 2.0.0", "elm/url": "1.0.0 <= v < 2.0.0", "elm-community/list-extra": "8.0.0 <= v < 9.0.0", - "elm-explorations/test": "1.2.1 <= v < 2.0.0", + "elm-explorations/test": "2.0.0 <= v < 3.0.0", "hecrj/html-parser": "2.3.3 <= v < 3.0.0", "mgold/elm-nonempty-list": "4.0.0 <= v < 5.0.0" }, diff --git a/examples/elm.json b/examples/elm.json index e18ef63..f44f395 100644 --- a/examples/elm.json +++ b/examples/elm.json @@ -30,7 +30,7 @@ }, "test-dependencies": { "direct": { - "elm-explorations/test": "1.2.2" + "elm-explorations/test": "2.0.1" }, "indirect": {} } diff --git a/package.json b/package.json index 1d7d063..ba5b817 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "chokidar-cli": "^3.0.0", "concurrently": "^7.3.0", "elm-doc-preview": "^5.0.5", - "elm-test": "^0.19.1-revision9", - "elm-tooling": "^1.8.0", + "elm-test": "^0.19.1-revision10", + "elm-tooling": "^1.9.0", "vuepress": "^1.9.7" }, "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 019c9e4..65c6148 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,8 +5,8 @@ specifiers: chokidar-cli: ^3.0.0 concurrently: ^7.3.0 elm-doc-preview: ^5.0.5 - elm-test: ^0.19.1-revision9 - elm-tooling: ^1.8.0 + elm-test: ^0.19.1-revision10 + elm-tooling: ^1.9.0 vuepress: ^1.9.7 devDependencies: @@ -14,8 +14,8 @@ devDependencies: chokidar-cli: 3.0.0 concurrently: 7.3.0 elm-doc-preview: 5.0.5 - elm-test: 0.19.1-revision9 - elm-tooling: 1.8.0 + elm-test: 0.19.1-revision10 + elm-tooling: 1.9.0 vuepress: 1.9.7 packages: @@ -3644,8 +3644,8 @@ packages: resolution: {integrity: sha512-A05XKZKhzM8vWTo8KvNR4g1ICt9iMPOAMfo79OK25c+tQaLSfQ8iMYvW6XgSEd+SgRfM5VSKX4hKEiH6iTiWsg==} dev: true - /elm-test/0.19.1-revision9: - resolution: {integrity: sha512-lvHJbh16sy7oUBBPIEMN+0v6dGDZFmfvwq+V+TnGPk5ZlI64vcykx8E8+zLt/E+Ja42UKMMXXgN1ZHQ1V6Ic2Q==} + /elm-test/0.19.1-revision10: + resolution: {integrity: sha512-33jXpA15alVcYjX+UJOkiOmQIQxjd3c0eeg3960VyhEf8tG8O4g4B5ipMmu6KAllncrSxSQrYzKJnNJM/8ZiCg==} engines: {node: '>=12.20.0'} hasBin: true dependencies: @@ -3661,8 +3661,8 @@ packages: xmlbuilder: 15.1.1 dev: true - /elm-tooling/1.8.0: - resolution: {integrity: sha512-IjMvW/VHqxLidlJSAocBGDBmqiZ1NS0lK/UCMRU4ULEEaTVjpSd/9Dv0mH2ok0H0egSTYx19GnrdL4Lq9h+z+A==} + /elm-tooling/1.9.0: + resolution: {integrity: sha512-FuMsshhsnjAizktA/j5JWLHLHZDt6CSmXbGQZtgOTNz86Z9eUxTupoZZ8czpW2aRWBUiD6IhJNWDQjJsgNuEIg==} hasBin: true dev: true diff --git a/src/ProgramTest/Failure.elm b/src/ProgramTest/Failure.elm index c9aa838..e6a8b4f 100644 --- a/src/ProgramTest/Failure.elm +++ b/src/ProgramTest/Failure.elm @@ -8,6 +8,8 @@ import String.Extra import Test.Html.Query as Query import Test.Runner.Failure import Url exposing (Url) +import Vendored.Failure +import Vendored.FormatMonochrome type Failure @@ -35,7 +37,12 @@ toString failure = cause ++ " caused the program to end by navigating to " ++ String.Extra.escape (Url.toString finalLocation) ++ ". NOTE: If this is what you intended, use ProgramTest.expectPageChange to end your test." ExpectFailed expectationName description reason -> - expectationName ++ ":\n" ++ Test.Runner.Failure.format description reason + expectationName + ++ ":\n" + ++ Vendored.Failure.format + Vendored.FormatMonochrome.formatEquality + description + reason SimulateFailed functionName message -> functionName ++ ":\n" ++ message diff --git a/src/Vendored/Diff.elm b/src/Vendored/Diff.elm new file mode 100644 index 0000000..50269f8 --- /dev/null +++ b/src/Vendored/Diff.elm @@ -0,0 +1,321 @@ +-- NOTE: This is copy/pasted from https://github.com/jinjor/elm-diff +-- License: +{- + Copyright (c) 2016, Yosuke Torii + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of elm-diff nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-} + + +module Vendored.Diff exposing + ( Change(..) + , diff + ) + +{-| Compares two list and returns how they have changed. +Each function internally uses Wu's [O(NP) algorithm](http://myerslab.mpi-cbg.de/wp-content/uploads/2014/06/np_diff.pdf). + + +# Types + +@docs Change + + +# Diffing + +@docs diff, diffLines + +-} + +import Array exposing (Array) + + +{-| This describes how each line has changed and also contains its value. +-} +type Change a + = Added a + | Removed a + | NoChange a + + +type StepResult + = Continue (Array (List ( Int, Int ))) + | Found (List ( Int, Int )) + + +type BugReport + = CannotGetA Int + | CannotGetB Int + | UnexpectedPath ( Int, Int ) (List ( Int, Int )) + + +{-| Compares general lists. + + diff [ 1, 3 ] [ 2, 3 ] == [ Removed 1, Added 2, NoChange 3 ] -- True + +-} +diff : List a -> List a -> List (Change a) +diff a b = + case testDiff a b of + Ok changes -> + changes + + Err _ -> + [] + + +{-| Test the algolithm itself. +If it returns Err, it should be a bug. +-} +testDiff : List a -> List a -> Result BugReport (List (Change a)) +testDiff a b = + let + arrA = + Array.fromList a + + arrB = + Array.fromList b + + m = + Array.length arrA + + n = + Array.length arrB + + -- Elm's Array doesn't allow null element, + -- so we'll use shifted index to access source. + getA = + \x -> Array.get (x - 1) arrA + + getB = + \y -> Array.get (y - 1) arrB + + path = + -- Is there any case ond is needed? + -- ond getA getB m n + onp getA getB m n + in + makeChanges getA getB path + + +makeChanges : + (Int -> Maybe a) + -> (Int -> Maybe a) + -> List ( Int, Int ) + -> Result BugReport (List (Change a)) +makeChanges getA getB path = + case path of + [] -> + Ok [] + + latest :: tail -> + makeChangesHelp [] getA getB latest tail + + +makeChangesHelp : + List (Change a) + -> (Int -> Maybe a) + -> (Int -> Maybe a) + -> ( Int, Int ) + -> List ( Int, Int ) + -> Result BugReport (List (Change a)) +makeChangesHelp changes getA getB ( x, y ) path = + case path of + [] -> + Ok changes + + ( prevX, prevY ) :: tail -> + let + change = + if x - 1 == prevX && y - 1 == prevY then + case getA x of + Just a -> + Ok (NoChange a) + + Nothing -> + Err (CannotGetA x) + + else if x == prevX then + case getB y of + Just b -> + Ok (Added b) + + Nothing -> + Err (CannotGetB y) + + else if y == prevY then + case getA x of + Just a -> + Ok (Removed a) + + Nothing -> + Err (CannotGetA x) + + else + Err (UnexpectedPath ( x, y ) path) + in + case change of + Err err -> + Err err + + Ok c -> + makeChangesHelp (c :: changes) getA getB ( prevX, prevY ) tail + + + +-- Wu's O(NP) algorithm (http://myerslab.mpi-cbg.de/wp-content/uploads/2014/06/np_diff.pdf) + + +onp : (Int -> Maybe a) -> (Int -> Maybe a) -> Int -> Int -> List ( Int, Int ) +onp getA getB m n = + let + v = + Array.initialize (m + n + 1) (always []) + + delta = + n - m + in + onpLoopP (snake getA getB) delta m 0 v + + +onpLoopP : + (Int -> Int -> List ( Int, Int ) -> ( List ( Int, Int ), Bool )) + -> Int + -> Int + -> Int + -> Array (List ( Int, Int )) + -> List ( Int, Int ) +onpLoopP snake_ delta offset p v = + let + ks = + if delta > 0 then + List.reverse (List.range (delta + 1) (delta + p)) + ++ List.range -p delta + + else + List.reverse (List.range (delta + 1) p) + ++ List.range (-p + delta) delta + in + case onpLoopK snake_ offset ks v of + Found path -> + path + + Continue v_ -> + onpLoopP snake_ delta offset (p + 1) v_ + + +onpLoopK : + (Int -> Int -> List ( Int, Int ) -> ( List ( Int, Int ), Bool )) + -> Int + -> List Int + -> Array (List ( Int, Int )) + -> StepResult +onpLoopK snake_ offset ks v = + case ks of + [] -> + Continue v + + k :: ks_ -> + case step snake_ offset k v of + Found path -> + Found path + + Continue v_ -> + onpLoopK snake_ offset ks_ v_ + + +step : + (Int -> Int -> List ( Int, Int ) -> ( List ( Int, Int ), Bool )) + -> Int + -> Int + -> Array (List ( Int, Int )) + -> StepResult +step snake_ offset k v = + let + fromLeft = + Maybe.withDefault [] (Array.get (k - 1 + offset) v) + + fromTop = + Maybe.withDefault [] (Array.get (k + 1 + offset) v) + + ( path, ( x, y ) ) = + case ( fromLeft, fromTop ) of + ( [], [] ) -> + ( [], ( 0, 0 ) ) + + ( [], ( topX, topY ) :: _ ) -> + ( fromTop, ( topX + 1, topY ) ) + + ( ( leftX, leftY ) :: _, [] ) -> + ( fromLeft, ( leftX, leftY + 1 ) ) + + ( ( leftX, leftY ) :: _, ( topX, topY ) :: _ ) -> + -- this implies "remove" comes always earlier than "add" + if leftY + 1 >= topY then + ( fromLeft, ( leftX, leftY + 1 ) ) + + else + ( fromTop, ( topX + 1, topY ) ) + + ( newPath, goal ) = + snake_ (x + 1) (y + 1) (( x, y ) :: path) + in + if goal then + Found newPath + + else + Continue (Array.set (k + offset) newPath v) + + +snake : + (Int -> Maybe a) + -> (Int -> Maybe a) + -> Int + -> Int + -> List ( Int, Int ) + -> ( List ( Int, Int ), Bool ) +snake getA getB nextX nextY path = + case ( getA nextX, getB nextY ) of + ( Just a, Just b ) -> + if a == b then + snake + getA + getB + (nextX + 1) + (nextY + 1) + (( nextX, nextY ) :: path) + + else + ( path, False ) + + -- reached bottom-right corner + ( Nothing, Nothing ) -> + ( path, True ) + + _ -> + ( path, False ) diff --git a/src/Vendored/Failure.elm b/src/Vendored/Failure.elm new file mode 100644 index 0000000..c558f55 --- /dev/null +++ b/src/Vendored/Failure.elm @@ -0,0 +1,217 @@ +-- Copied from rtfeldman/node-test-runner : elm/src/Test/Reporter/Console/Format.elm +-- https://github.com/rtfeldman/node-test-runner/blob/master/elm/src/Test/Reporter/Console/Format.elm +-- Published under BSD-3-Clause license, see LICENSE_node-test-runner + + +module Vendored.Failure exposing (format) + +import Test.Runner.Failure exposing (InvalidReason(..), Reason(..)) +import Vendored.Highlightable as Highlightable exposing (Highlightable) + + +format : + (List (Highlightable String) -> List (Highlightable String) -> ( String, String )) + -> String + -> Reason + -> String +format formatEquality description reason = + case reason of + Custom -> + description + + Equality expected actual -> + case highlightEqual expected actual of + Nothing -> + verticalBar description expected actual + + Just ( highlightedExpected, highlightedActual ) -> + let + ( formattedExpected, formattedActual ) = + formatEquality highlightedExpected highlightedActual + in + verticalBar description formattedExpected formattedActual + + Comparison first second -> + verticalBar description first second + + TODO -> + description + + Invalid BadDescription -> + if description == "" then + "The empty string is not a valid test description." + + else + "This is an invalid test description: " ++ description + + Invalid _ -> + description + + ListDiff expected actual -> + listDiffToString 0 + description + { expected = expected + , actual = actual + } + { originalExpected = expected + , originalActual = actual + } + + CollectionDiff { expected, actual, extra, missing } -> + let + extraStr = + if List.isEmpty extra then + "" + + else + "\nThese keys are extra: " + ++ (extra |> String.join ", " |> (\d -> "[ " ++ d ++ " ]")) + + missingStr = + if List.isEmpty missing then + "" + + else + "\nThese keys are missing: " + ++ (missing |> String.join ", " |> (\d -> "[ " ++ d ++ " ]")) + in + String.join "" + [ verticalBar description expected actual + , "\n" + , extraStr + , missingStr + ] + + +highlightEqual : String -> String -> Maybe ( List (Highlightable String), List (Highlightable String) ) +highlightEqual expected actual = + if expected == "\"\"" || actual == "\"\"" then + -- Diffing when one is the empty string looks silly. Don't bother. + Nothing + + else if isFloat expected && isFloat actual then + -- Diffing numbers looks silly. Don't bother. + Nothing + + else + let + isHighlighted = + Highlightable.resolve + { fromHighlighted = always True + , fromPlain = always False + } + + edgeCount highlightedString = + let + highlights = + List.map isHighlighted highlightedString + in + highlights + |> List.map2 Tuple.pair (List.drop 1 highlights) + |> List.filter (\( lhs, rhs ) -> lhs /= rhs) + |> List.length + + expectedChars = + String.toList expected + + actualChars = + String.toList actual + + highlightedExpected = + Highlightable.diffLists expectedChars actualChars + |> List.map (Highlightable.map String.fromChar) + + highlightedActual = + Highlightable.diffLists actualChars expectedChars + |> List.map (Highlightable.map String.fromChar) + + plainCharCount = + highlightedExpected + |> List.filter (not << isHighlighted) + |> List.length + in + if edgeCount highlightedActual > plainCharCount || edgeCount highlightedExpected > plainCharCount then + -- Large number of small highlighted blocks. Diff is too messy to be useful. + Nothing + + else + Just + ( highlightedExpected + , highlightedActual + ) + + +isFloat : String -> Bool +isFloat str = + case String.toFloat str of + Just _ -> + True + + Nothing -> + False + + +listDiffToString : + Int + -> String + -> { expected : List String, actual : List String } + -> { originalExpected : List String, originalActual : List String } + -> String +listDiffToString index description { expected, actual } originals = + case ( expected, actual ) of + ( [], [] ) -> + [ "Two lists were unequal previously, yet ended up equal later." + , "This should never happen!" + , "Please report this bug to https://github.com/elm-community/elm-test/issues - and include these lists: " + , "\n" + , String.join ", " originals.originalExpected + , "\n" + , String.join ", " originals.originalActual + ] + |> String.join "" + + ( _ :: _, [] ) -> + verticalBar (description ++ " was shorter than") + (String.join ", " originals.originalExpected) + (String.join ", " originals.originalActual) + + ( [], _ :: _ ) -> + verticalBar (description ++ " was longer than") + (String.join ", " originals.originalExpected) + (String.join ", " originals.originalActual) + + ( firstExpected :: restExpected, firstActual :: restActual ) -> + if firstExpected == firstActual then + -- They're still the same so far; keep going. + listDiffToString (index + 1) + description + { expected = restExpected + , actual = restActual + } + originals + + else + -- We found elements that differ; fail! + String.join "" + [ verticalBar description + (String.join ", " originals.originalExpected) + (String.join ", " originals.originalActual) + , "\n\nThe first diff is at index " + , String.fromInt index + , ": it was `" + , firstActual + , "`, but `" + , firstExpected + , "` was expected." + ] + + +verticalBar : String -> String -> String -> String +verticalBar comparison expected actual = + [ actual + , "╷" + , "│ " ++ comparison + , "╵" + , expected + ] + |> String.join "\n" diff --git a/src/Vendored/FormatMonochrome.elm b/src/Vendored/FormatMonochrome.elm new file mode 100644 index 0000000..33ec50a --- /dev/null +++ b/src/Vendored/FormatMonochrome.elm @@ -0,0 +1,44 @@ +-- Copied from rtfeldman/node-test-runner : elm/src/Test/Reporter/Console/Format/Monochrome.elm +-- https://github.com/rtfeldman/node-test-runner/blob/master/elm/src/Test/Reporter/Console/Format/Monochrome.elm +-- Published under BSD-3-Clause license, see LICENSE_node-test-runner + + +module Vendored.FormatMonochrome exposing (formatEquality) + +import Vendored.Highlightable as Highlightable exposing (Highlightable(..)) + + +formatEquality : List (Highlightable String) -> List (Highlightable String) -> ( String, String ) +formatEquality highlightedExpected highlightedActual = + let + ( formattedExpected, expectedIndicators ) = + highlightedExpected + |> List.map (fromHighlightable "▲") + |> List.unzip + + ( formattedActual, actualIndicators ) = + highlightedActual + |> List.map (fromHighlightable "▼") + |> List.unzip + + combinedExpected = + String.join "\n" + [ String.join "" formattedExpected + , String.join "" expectedIndicators + ] + + combinedActual = + String.join "\n" + [ String.join "" actualIndicators + , String.join "" formattedActual + ] + in + ( combinedExpected, combinedActual ) + + +fromHighlightable : String -> Highlightable String -> ( String, String ) +fromHighlightable indicator = + Highlightable.resolve + { fromHighlighted = \char -> ( char, indicator ) + , fromPlain = \char -> ( char, " " ) + } diff --git a/src/Vendored/Highlightable.elm b/src/Vendored/Highlightable.elm new file mode 100644 index 0000000..f50336a --- /dev/null +++ b/src/Vendored/Highlightable.elm @@ -0,0 +1,53 @@ +-- Copied from rtfeldman/node-test-runner : elm/src/Test/Reporter/Highlightable.elm +-- https://github.com/rtfeldman/node-test-runner/blob/master/elm/src/Test/Reporter/Highlightable.elm +-- Published under BSD-3-Clause license, see LICENSE_node-test-runner + + +module Vendored.Highlightable exposing (Highlightable, diffLists, map, resolve) + +import Vendored.Diff as Diff exposing (Change(..)) + + +type Highlightable a + = Highlighted a + | Plain a + + +resolve : { fromHighlighted : a -> b, fromPlain : a -> b } -> Highlightable a -> b +resolve { fromHighlighted, fromPlain } highlightable = + case highlightable of + Highlighted val -> + fromHighlighted val + + Plain val -> + fromPlain val + + +diffLists : List a -> List a -> List (Highlightable a) +diffLists expected actual = + -- TODO make sure this looks reasonable for multiline strings + Diff.diff expected actual + |> List.concatMap fromDiff + + +map : (a -> b) -> Highlightable a -> Highlightable b +map transform highlightable = + case highlightable of + Highlighted val -> + Highlighted (transform val) + + Plain val -> + Plain (transform val) + + +fromDiff : Change a -> List (Highlightable a) +fromDiff diff = + case diff of + Added _ -> + [] + + Removed char -> + [ Highlighted char ] + + NoChange char -> + [ Plain char ] diff --git a/tests/ProgramTestHttpTests.elm b/tests/ProgramTestHttpTests.elm index 0506b7e..3e67160 100644 --- a/tests/ProgramTestHttpTests.elm +++ b/tests/ProgramTestHttpTests.elm @@ -160,11 +160,13 @@ all = (.body >> Expect.equal """{"ok":900}""") |> expectFailure [ expect ++ "HttpRequest:" + , " ▼▼▼▼ " , """"{\\"ok\\":true}\"""" - , "╵" - , "│ Expect.equal" , "╷" + , "│ Expect.equal" + , "╵" , """"{\\"ok\\":900}\"""" + , " ▲▲▲ " ] , testRequest "can assert on request headers" <| \expect assertHttpRequest -> diff --git a/tests/ProgramTestTests/SimulatedEffects/PortsTest.elm b/tests/ProgramTestTests/SimulatedEffects/PortsTest.elm index bd975d3..d072bd2 100644 --- a/tests/ProgramTestTests/SimulatedEffects/PortsTest.elm +++ b/tests/ProgramTestTests/SimulatedEffects/PortsTest.elm @@ -38,11 +38,13 @@ all = |> assertOutgoingPortValues "other" (Decode.null ()) (Expect.equal [ () ]) |> expectFailure [ assert ++ "OutgoingPortValues: values sent to port \"other\" did not match:" + , " " , "[]" - , "╵" - , "│ Expect.equal" , "╷" + , "│ Expect.equal" + , "╵" , "[()]" + , " ▲▲ " ] , testOutgoingPortValues "clears values after checking" <| \_ assertOutgoingPortValues -> diff --git a/tests/Test/Expect.elm b/tests/Test/Expect.elm index 3a119d6..b59f7d6 100644 --- a/tests/Test/Expect.elm +++ b/tests/Test/Expect.elm @@ -59,10 +59,11 @@ expectFailureContaining expectedSubstring actualResult = Expect.fail "Expected a failure, but got a pass" Just actualInfo -> - Expect.true - ("Expected failure message to contain: " - ++ expectedSubstring - ++ "but got\n\n" - ++ actualInfo.description - ) - (String.contains expectedSubstring actualInfo.description) + String.contains expectedSubstring actualInfo.description + |> Expect.equal True + |> Expect.onFail + ("Expected failure message to contain: " + ++ expectedSubstring + ++ "but got\n\n" + ++ actualInfo.description + ) From dc1ecbb5ddc4d2071b6203dee41bb72776bb760c Mon Sep 17 00:00:00 2001 From: Aaron VonderHaar Date: Sat, 3 Dec 2022 19:58:31 -0800 Subject: [PATCH 2/4] Prepare 3.8.0 release --- CHANGELOG.md | 5 +++++ elm.json | 2 +- src/ProgramTest.elm | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddb3e5a..5f0972e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 3.8.0 + +- Added an unused definition to workaround issues with `elm publish` + + ## 3.7.0 New features: diff --git a/elm.json b/elm.json index 28354ce..c5aca2b 100644 --- a/elm.json +++ b/elm.json @@ -3,7 +3,7 @@ "name": "avh4/elm-program-test", "summary": "Test Elm programs", "license": "MIT", - "version": "3.7.0", + "version": "3.8.0", "exposed-modules": [ "ProgramTest", "SimulatedEffect.Cmd", diff --git a/src/ProgramTest.elm b/src/ProgramTest.elm index 69ae2c8..8192b4b 100644 --- a/src/ProgramTest.elm +++ b/src/ProgramTest.elm @@ -28,6 +28,7 @@ module ProgramTest exposing , simulateLastEffect , fail, createFailed , getOutgoingPortValues + , elmMajorVersionHack_3 ) {-| A `ProgramTest` simulates the execution of an Elm program @@ -194,6 +195,11 @@ These functions may be useful if you are writing your own custom assertion funct @docs fail, createFailed @docs getOutgoingPortValues + +# Elm language workaround + +@docs elmMajorVersionHack_3 + -} import Browser @@ -2337,3 +2343,16 @@ getOutgoingPortValues portName programTest = Dict.get portName effects.outgoingPortValues |> Maybe.withDefault [] |> Ok + + +{-| Unused. This is a workaround for issues with publishing this package. + +Until [Allow package authors to request major versions if API is the same, but behavior is not · Issue #2099 · elm/compiler](https://github.com/elm/compiler/issues/2099), +[Inaccuracy: Elm does not enforce semantic versioning · Issue #868 · elm/elm-lang.org](https://github.com/elm/elm-lang.org/issues/868), +and [elm diff / publish is unaware of breaking visual changes · Issue #2145 · elm/compiler](https://github.com/elm/compiler/issues/2145) +are addressed, this is required to allow the major version of this package to be updated. + +-} +elmMajorVersionHack_3 : () +elmMajorVersionHack_3 = + () From b6e26beb59eab888365d916595aa4eac6dcf66f7 Mon Sep 17 00:00:00 2001 From: Aaron VonderHaar Date: Sat, 3 Dec 2022 20:05:27 -0800 Subject: [PATCH 3/4] Update dependencies --- package.json | 4 +- pnpm-lock.yaml | 892 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 859 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index ba5b817..66bcf35 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,10 @@ "devDependencies": { "@vue/babel-preset-app": "^5.0.8", "chokidar-cli": "^3.0.0", - "concurrently": "^7.3.0", + "concurrently": "^7.6.0", "elm-doc-preview": "^5.0.5", "elm-test": "^0.19.1-revision10", - "elm-tooling": "^1.9.0", + "elm-tooling": "^1.10.0", "vuepress": "^1.9.7" }, "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65c6148..b715841 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,21 +1,21 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@vue/babel-preset-app': ^5.0.8 chokidar-cli: ^3.0.0 - concurrently: ^7.3.0 + concurrently: ^7.6.0 elm-doc-preview: ^5.0.5 elm-test: ^0.19.1-revision10 - elm-tooling: ^1.9.0 + elm-tooling: ^1.10.0 vuepress: ^1.9.7 devDependencies: '@vue/babel-preset-app': 5.0.8 chokidar-cli: 3.0.0 - concurrently: 7.3.0 + concurrently: 7.6.0 elm-doc-preview: 5.0.5 elm-test: 0.19.1-revision10 - elm-tooling: 1.9.0 + elm-tooling: 1.10.0 vuepress: 1.9.7 packages: @@ -316,6 +316,8 @@ packages: resolution: {integrity: sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.0 dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.2: @@ -1304,6 +1306,12 @@ packages: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} dev: true + /@types/keyv/3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 17.0.16 + dev: true + /@types/linkify-it/3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true @@ -1345,6 +1353,12 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true + /@types/responselike/1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 17.0.16 + dev: true + /@types/serve-static/1.13.10: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: @@ -1587,6 +1601,60 @@ packages: vue-template-es2015-compiler: 1.9.1 optionalDependencies: prettier: 2.5.1 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers dev: true /@vuepress/core/1.9.7: @@ -1602,7 +1670,7 @@ packages: '@vuepress/shared-utils': 1.9.7 '@vuepress/types': 1.9.7 autoprefixer: 9.8.8 - babel-loader: 8.2.3_60b7ed408fec1293d95f86d9ceaa88ca + babel-loader: 8.2.3_mc362qep5qjjhwk7q3m45kuizi bundle-require: 2.1.8_esbuild@0.14.7 cache-loader: 3.0.1_webpack@4.46.0 chokidar: 2.1.8 @@ -1623,8 +1691,8 @@ packages: toml: 3.0.0 url-loader: 1.1.2_webpack@4.46.0 vue: 2.6.14 - vue-loader: 15.9.8_a021309c4954b2e3e3b6c3a6e1323de2 - vue-router: 3.5.3 + vue-loader: 15.9.8_uaqtbhcjkszohy5wyotocmr54i + vue-router: 3.5.3_vue@2.6.14 vue-server-renderer: 2.6.14 vue-template-compiler: 2.6.14 vuepress-html-webpack-plugin: 3.2.0_webpack@4.46.0 @@ -1635,10 +1703,66 @@ packages: webpack-merge: 4.2.2 webpackbar: 3.2.0_webpack@4.46.0 transitivePeerDependencies: + - '@vue/compiler-sfc' + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - coffee-script - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus - webpack-cli - webpack-command + - whiskers dev: true /@vuepress/markdown-loader/1.9.7: @@ -1647,6 +1771,8 @@ packages: '@vuepress/markdown': 1.9.7 loader-utils: 1.4.0 lru-cache: 5.1.1 + transitivePeerDependencies: + - supports-color dev: true /@vuepress/markdown/1.9.7: @@ -1659,6 +1785,8 @@ packages: markdown-it-emoji: 1.4.0 markdown-it-table-of-contents: 0.4.4 prismjs: 1.26.0 + transitivePeerDependencies: + - supports-color dev: true /@vuepress/plugin-active-header-links/1.9.7: @@ -1695,6 +1823,7 @@ packages: '@vuepress/types': 1.9.7 transitivePeerDependencies: - debug + - supports-color dev: true /@vuepress/plugin-search/1.9.7: @@ -1717,6 +1846,8 @@ packages: semver: 6.3.0 toml: 3.0.0 upath: 1.2.0 + transitivePeerDependencies: + - supports-color dev: true /@vuepress/theme-default/1.9.7: @@ -1734,6 +1865,7 @@ packages: vuepress-plugin-smooth-scroll: 0.0.3 transitivePeerDependencies: - debug + - supports-color dev: true /@vuepress/types/1.9.7: @@ -1899,6 +2031,12 @@ packages: hasBin: true dev: true + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agentkeepalive/2.2.0: resolution: {integrity: sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==} engines: {node: '>= 0.10.0'} @@ -1948,6 +2086,8 @@ packages: reduce: 1.0.2 semver: 5.7.1 tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color dev: true /alphanum-sort/1.0.2: @@ -2017,6 +2157,17 @@ packages: dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch/2.0.0_supports-color@6.1.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10_supports-color@6.1.0 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color dev: true /anymatch/3.1.2: @@ -2160,7 +2311,7 @@ packages: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} dev: true - /babel-loader/8.2.3_60b7ed408fec1293d95f86d9ceaa88ca: + /babel-loader/8.2.3_mc362qep5qjjhwk7q3m45kuizi: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} peerDependencies: @@ -2268,6 +2419,7 @@ packages: /bindings/1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + requiresBuild: true dependencies: file-uri-to-path: 1.0.0 dev: true @@ -2299,6 +2451,26 @@ packages: qs: 6.9.6 raw-body: 2.4.2 type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser/1.19.1_supports-color@6.1.0: + resolution: {integrity: sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.1 + content-type: 1.0.4 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + http-errors: 1.8.1 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.9.6 + raw-body: 2.4.2 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color dev: true /bonjour/3.5.0: @@ -2357,6 +2529,26 @@ packages: snapdragon-node: 2.1.1 split-string: 3.1.0 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/2.3.2_supports-color@6.1.0: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: true /braces/3.0.2: @@ -2501,7 +2693,7 @@ packages: mississippi: 3.0.0 mkdirp: 0.5.5 move-concurrently: 1.0.1 - promise-inflight: 1.0.1 + promise-inflight: 1.0.1_bluebird@3.7.2 rimraf: 2.7.1 ssri: 6.0.2 unique-filename: 1.1.1 @@ -2684,6 +2876,29 @@ packages: upath: 1.2.0 optionalDependencies: fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + + /chokidar/2.1.8_supports-color@6.1.0: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0_supports-color@6.1.0 + async-each: 1.0.3 + braces: 2.3.2_supports-color@6.1.0 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1_supports-color@6.1.0 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color dev: true /chokidar/3.5.3: @@ -2865,17 +3080,19 @@ packages: mime-db: 1.51.0 dev: true - /compression/1.7.4: + /compression/1.7.4_supports-color@6.1.0: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 compressible: 2.0.18 - debug: 2.6.9 + debug: 2.6.9_supports-color@6.1.0 on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: true /concat-map/0.0.1: @@ -2892,13 +3109,13 @@ packages: typedarray: 0.0.6 dev: true - /concurrently/7.3.0: - resolution: {integrity: sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==} + /concurrently/7.6.0: + resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} hasBin: true dependencies: chalk: 4.1.2 - date-fns: 2.28.0 + date-fns: 2.29.3 lodash: 4.17.21 rxjs: 7.5.6 shell-quote: 1.7.3 @@ -2936,6 +3153,167 @@ packages: /consolidate/0.15.1: resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} engines: {node: '>= 0.10.0'} + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true dependencies: bluebird: 3.7.2 dev: true @@ -3296,8 +3674,8 @@ packages: assert-plus: 1.0.0 dev: true - /date-fns/2.28.0: - resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==} + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: true @@ -3307,20 +3685,59 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/2.6.9_supports-color@6.1.0: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + supports-color: 6.1.0 dev: true /debug/3.1.0: resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/3.2.7_supports-color@6.1.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + supports-color: 6.1.0 dev: true /debug/4.3.3: @@ -3508,6 +3925,8 @@ packages: stack-utils: 1.0.5 to-factory: 1.0.0 zepto: 1.2.0 + transitivePeerDependencies: + - supports-color dev: true /dom-converter/0.2.0: @@ -3637,6 +4056,7 @@ packages: ws: 7.5.7 transitivePeerDependencies: - bufferutil + - supports-color - utf-8-validate dev: true @@ -3661,8 +4081,8 @@ packages: xmlbuilder: 15.1.1 dev: true - /elm-tooling/1.9.0: - resolution: {integrity: sha512-FuMsshhsnjAizktA/j5JWLHLHZDt6CSmXbGQZtgOTNz86Z9eUxTupoZZ8czpW2aRWBUiD6IhJNWDQjJsgNuEIg==} + /elm-tooling/1.10.0: + resolution: {integrity: sha512-fMLXs7xHpr6LodtmvVJKepYC6chgSOfe5Hgv8GcFO+Id7O/CuT9+CAfrlzYxvBn91cm6ekWwHFDjPD765v5iBA==} hasBin: true dev: true @@ -4055,6 +4475,23 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expand-brackets/2.1.4_supports-color@6.1.0: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: true /express-ws/4.0.0_express@4.17.2: @@ -4065,6 +4502,9 @@ packages: dependencies: express: 4.17.2 ws: 5.2.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate dev: true /express/4.17.2: @@ -4101,6 +4541,46 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.17.2_supports-color@6.1.0: + resolution: {integrity: sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.19.1_supports-color@6.1.0 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.4.1 + cookie-signature: 1.0.6 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2_supports-color@6.1.0 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.9.6 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.17.2_supports-color@6.1.0 + serve-static: 1.14.2_supports-color@6.1.0 + setprototypeof: 1.2.0 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: true /extend-shallow/2.0.1: @@ -4134,6 +4614,24 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extglob/2.0.4_supports-color@6.1.0: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4_supports-color@6.1.0 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: true /extsprintf/1.3.0: @@ -4155,6 +4653,8 @@ packages: is-glob: 4.0.3 merge2: 1.4.1 micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color dev: true /fast-json-stable-stringify/2.1.0: @@ -4192,6 +4692,7 @@ packages: /file-uri-to-path/1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + requiresBuild: true dev: true optional: true @@ -4223,6 +4724,23 @@ packages: parseurl: 1.3.3 statuses: 1.5.0 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler/1.1.2_supports-color@6.1.0: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: true /find-cache-dir/2.1.0: @@ -4524,6 +5042,8 @@ packages: ignore: 4.0.6 pify: 4.0.1 slash: 2.0.0 + transitivePeerDependencies: + - supports-color dev: true /got/9.6.0: @@ -4532,6 +5052,8 @@ packages: dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 cacheable-request: 6.1.0 decompress-response: 3.3.0 duplexer3: 0.1.4 @@ -4789,16 +5311,17 @@ packages: resolution: {integrity: sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==} dev: true - /http-proxy-middleware/0.19.1_debug@4.3.3: + /http-proxy-middleware/0.19.1_ww346azdyxua6tt4dpauz7tfuu: resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} engines: {node: '>=4.0.0'} dependencies: http-proxy: 1.18.1_debug@4.3.3 is-glob: 4.0.3 lodash: 4.17.21 - micromatch: 3.1.10 + micromatch: 3.1.10_supports-color@6.1.0 transitivePeerDependencies: - debug + - supports-color dev: true /http-proxy-middleware/1.3.1: @@ -5785,6 +6308,29 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10_supports-color@6.1.0: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2_supports-color@6.1.0 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4_supports-color@6.1.0 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13_supports-color@6.1.0 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: true /micromatch/4.0.4: @@ -5955,6 +6501,7 @@ packages: /nan/2.15.0: resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} + requiresBuild: true dev: true optional: true @@ -5973,6 +6520,27 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /nanomatch/1.2.13_supports-color@6.1.0: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: true /negotiator/0.6.3: @@ -6472,6 +7040,19 @@ packages: async: 2.6.3 debug: 3.2.7 mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /portfinder/1.0.28_supports-color@6.1.0: + resolution: {integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.3 + debug: 3.2.7_supports-color@6.1.0 + mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color dev: true /posix-character-classes/0.1.1: @@ -6852,8 +7433,15 @@ packages: engines: {node: '>= 0.6.0'} dev: true - /promise-inflight/1.0.1: + /promise-inflight/1.0.1_bluebird@3.7.2: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 dev: true /proxy-addr/2.0.7: @@ -7034,6 +7622,19 @@ packages: graceful-fs: 4.2.10 micromatch: 3.1.10 readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /readdirp/2.2.1_supports-color@6.1.0: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.10 + micromatch: 3.1.10_supports-color@6.1.0 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color dev: true /readdirp/3.6.0: @@ -7373,6 +7974,29 @@ packages: on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /send/0.17.2_supports-color@6.1.0: + resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.8.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color dev: true /serialize-javascript/3.1.0: @@ -7398,6 +8022,23 @@ packages: http-errors: 1.6.3 mime-types: 2.1.34 parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-index/1.9.1_supports-color@6.1.0: + resolution: {integrity: sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9_supports-color@6.1.0 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.34 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color dev: true /serve-static/1.14.2: @@ -7408,6 +8049,20 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.2 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.14.2_supports-color@6.1.0: + resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.2_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color dev: true /set-blocking/2.0.0: @@ -7532,17 +8187,37 @@ packages: source-map: 0.5.7 source-map-resolve: 0.5.3 use: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - /sockjs-client/1.5.2: + /snapdragon/0.8.2_supports-color@6.1.0: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs-client/1.5.2_supports-color@6.1.0: resolution: {integrity: sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==} dependencies: - debug: 3.2.7 + debug: 3.2.7_supports-color@6.1.0 eventsource: 1.1.0 faye-websocket: 0.11.4 inherits: 2.0.4 json3: 3.3.3 url-parse: 1.5.4 + transitivePeerDependencies: + - supports-color dev: true /sockjs/0.3.24: @@ -7852,6 +8527,8 @@ packages: sax: 1.2.4 semver: 6.3.0 source-map: 0.7.3 + transitivePeerDependencies: + - supports-color dev: true /supports-color/2.0.0: @@ -7950,6 +8627,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: + acorn: 8.8.1 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.21 @@ -8373,14 +9051,17 @@ packages: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: true - /vue-loader/15.9.8_a021309c4954b2e3e3b6c3a6e1323de2: + /vue-loader/15.9.8_uaqtbhcjkszohy5wyotocmr54i: resolution: {integrity: sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==} peerDependencies: + '@vue/compiler-sfc': ^3.0.8 cache-loader: '*' css-loader: '*' vue-template-compiler: '*' webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true cache-loader: optional: true vue-template-compiler: @@ -8395,10 +9076,68 @@ packages: vue-style-loader: 4.1.3 vue-template-compiler: 2.6.14 webpack: 4.46.0 - dev: true - - /vue-router/3.5.3: + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /vue-router/3.5.3_vue@2.6.14: resolution: {integrity: sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==} + peerDependencies: + vue: ^2 + dependencies: + vue: 2.6.14 dev: true /vue-server-renderer/2.6.14: @@ -8457,6 +9196,8 @@ packages: dependencies: '@vuepress/shared-utils': 1.9.7 markdown-it-container: 2.0.0 + transitivePeerDependencies: + - supports-color dev: true /vuepress-plugin-smooth-scroll/0.0.3: @@ -8479,10 +9220,66 @@ packages: opencollective-postinstall: 2.0.3 update-notifier: 4.1.3 transitivePeerDependencies: + - '@vue/compiler-sfc' + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - coffee-script - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus - webpack-cli - webpack-command + - whiskers dev: true /watchpack-chokidar2/2.0.1: @@ -8490,6 +9287,8 @@ packages: requiresBuild: true dependencies: chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color dev: true optional: true @@ -8501,6 +9300,8 @@ packages: optionalDependencies: chokidar: 3.5.3 watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color dev: true /wbuf/1.7.3: @@ -8551,14 +9352,14 @@ packages: dependencies: ansi-html-community: 0.0.8 bonjour: 3.5.0 - chokidar: 2.1.8 - compression: 1.7.4 + chokidar: 2.1.8_supports-color@6.1.0 + compression: 1.7.4_supports-color@6.1.0 connect-history-api-fallback: 1.6.0 debug: 4.3.3_supports-color@6.1.0 del: 4.1.1 - express: 4.17.2 + express: 4.17.2_supports-color@6.1.0 html-entities: 1.4.0 - http-proxy-middleware: 0.19.1_debug@4.3.3 + http-proxy-middleware: 0.19.1_ww346azdyxua6tt4dpauz7tfuu import-local: 2.0.0 internal-ip: 4.3.0 ip: 1.1.5 @@ -8567,13 +9368,13 @@ packages: loglevel: 1.8.0 opn: 5.5.0 p-retry: 3.0.1 - portfinder: 1.0.28 + portfinder: 1.0.28_supports-color@6.1.0 schema-utils: 1.0.0 selfsigned: 1.10.14 semver: 6.3.0 - serve-index: 1.9.1 + serve-index: 1.9.1_supports-color@6.1.0 sockjs: 0.3.24 - sockjs-client: 1.5.2 + sockjs-client: 1.5.2_supports-color@6.1.0 spdy: 4.0.2_supports-color@6.1.0 strip-ansi: 3.0.1 supports-color: 6.1.0 @@ -8583,6 +9384,9 @@ packages: webpack-log: 2.0.0 ws: 6.2.2 yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate dev: true /webpack-log/2.0.0: @@ -8642,6 +9446,8 @@ packages: terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color dev: true /webpackbar/3.2.0_webpack@4.46.0: @@ -8754,12 +9560,28 @@ packages: /ws/5.2.3: resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 dev: true /ws/6.2.2: resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 dev: true From 3eb957c84e8c035f2ba5214421697a9bd05a8564 Mon Sep 17 00:00:00 2001 From: Aaron VonderHaar Date: Sat, 3 Dec 2022 20:09:20 -0800 Subject: [PATCH 4/4] Prepare 4.0.0 release --- CHANGELOG.md | 5 +++++ elm.json | 2 +- src/ProgramTest.elm | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f0972e..92ae989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 4.0.0 + +- Upgrade to elm-explorations/test 2.0.0 + + ## 3.8.0 - Added an unused definition to workaround issues with `elm publish` diff --git a/elm.json b/elm.json index 3de49cb..ddf2725 100644 --- a/elm.json +++ b/elm.json @@ -3,7 +3,7 @@ "name": "avh4/elm-program-test", "summary": "Test Elm programs", "license": "MIT", - "version": "3.8.0", + "version": "4.0.0", "exposed-modules": [ "ProgramTest", "SimulatedEffect.Cmd", diff --git a/src/ProgramTest.elm b/src/ProgramTest.elm index 8192b4b..92d8d19 100644 --- a/src/ProgramTest.elm +++ b/src/ProgramTest.elm @@ -28,7 +28,7 @@ module ProgramTest exposing , simulateLastEffect , fail, createFailed , getOutgoingPortValues - , elmMajorVersionHack_3 + , elmMajorVersionHack_4 ) {-| A `ProgramTest` simulates the execution of an Elm program @@ -198,7 +198,7 @@ These functions may be useful if you are writing your own custom assertion funct # Elm language workaround -@docs elmMajorVersionHack_3 +@docs elmMajorVersionHack_4 -} @@ -2353,6 +2353,6 @@ and [elm diff / publish is unaware of breaking visual changes · Issue #2145 · are addressed, this is required to allow the major version of this package to be updated. -} -elmMajorVersionHack_3 : () -elmMajorVersionHack_3 = +elmMajorVersionHack_4 : () +elmMajorVersionHack_4 = ()