From 2f99d59b15e4b58d8238c8a1bda37ce19bffb8c8 Mon Sep 17 00:00:00 2001 From: rl-king Date: Thu, 7 Jun 2018 17:45:09 +0200 Subject: [PATCH 01/10] Update elm-package --- elm-package.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/elm-package.json b/elm-package.json index 5baf09e..fb0f367 100644 --- a/elm-package.json +++ b/elm-package.json @@ -1,15 +1,18 @@ { - "version": "0.1.0", + "version": "1.0.0", "summary": "helpful summary of your project, less than 80 characters", "repository": "https://github.com/user/project.git", "license": "UNLICENSED", - "source-directories": ["src"], + "source-directories": [ + "src" + ], "exposed-modules": [], - "native-modules": false, "dependencies": { "elm-lang/core": "5.0.0 <= v < 6.0.0", "elm-lang/html": "2.0.0 <= v < 3.0.0", - "elm-lang/navigation": "2.1.0 <= v < 3.0.0" + "elm-lang/http": "1.0.0 <= v < 2.0.0", + "elm-lang/navigation": "2.1.0 <= v < 3.0.0", + "evancz/url-parser": "2.0.1 <= v < 3.0.0" }, "elm-version": "0.18.0 <= v < 0.19.0" } From 8caa49d89cc022208518cafbd8f9ffcd7be9bd91 Mon Sep 17 00:00:00 2001 From: rl-king Date: Thu, 7 Jun 2018 18:24:59 +0200 Subject: [PATCH 02/10] Add Route.elm --- src/Main.elm | 45 +++++++------------- src/Route.elm | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+), 30 deletions(-) create mode 100644 src/Route.elm diff --git a/src/Main.elm b/src/Main.elm index 9a1dc19..a9b377d 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -3,11 +3,15 @@ module Main exposing (main) import Html exposing (..) import Html.Attributes exposing (..) import Navigation +import Route exposing (Route) + + +-- MAIN main : Program Never Model Msg main = - Navigation.program UrlChange + Navigation.program OnNavigation { init = init , view = view , update = update @@ -20,13 +24,12 @@ main = type alias Model = - { history : List Navigation.Location - } + { route : Route } init : Navigation.Location -> ( Model, Cmd Msg ) init location = - ( Model [ location ] + ( { route = Route.fromLocation location } , Cmd.none ) @@ -36,25 +39,21 @@ init location = type Msg - = UrlChange Navigation.Location - - - -{- We are just storing the location in our history in this example, but - normally, you would use a package like evancz/url-parser to parse the path - or hash into nicely structured Elm values. - --} + = OnNavigation Navigation.Location + | PushUrl Route update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of - UrlChange location -> - ( { model | history = location :: model.history } + OnNavigation location -> + ( { model | route = Route.fromLocation location } , Cmd.none ) + PushUrl route -> + ( model, Navigation.newUrl (Route.toUrl route) ) + -- VIEW @@ -63,18 +62,4 @@ update msg model = view : Model -> Html msg view model = div [] - [ h1 [] [ text "Pages" ] - , ul [] (List.map viewLink [ "bears", "cats", "dogs", "elephants", "fish" ]) - , h1 [] [ text "History" ] - , ul [] (List.map viewLocation model.history) - ] - - -viewLink : String -> Html msg -viewLink name = - li [] [ a [ href ("#" ++ name) ] [ text name ] ] - - -viewLocation : Navigation.Location -> Html msg -viewLocation location = - li [] [ text (location.pathname ++ location.hash) ] + [ Route.link Route.Root [] [ h1 [] [ text "Hello" ] ] ] diff --git a/src/Route.elm b/src/Route.elm new file mode 100644 index 0000000..99bd4ae --- /dev/null +++ b/src/Route.elm @@ -0,0 +1,113 @@ +module Route exposing (Route, fromLocation, link, toTitle, toUrl) + +import Html exposing (..) +import Html.Attributes exposing (..) +import Html.Events exposing (defaultOptions, onWithOptions) +import Json.Decode as Decode +import Navigation +import UrlParser as Url exposing (()) + + +type Route + = Root + | Page Id + + +type alias Id = + Int + + + +-- PARSE + + +fromLocation : Navigation.Location -> Route +fromLocation = + Maybe.withDefault Root + << Url.parsePath parser + + +parser : Url.Parser (Route -> a) a +parser = + Url.oneOf + [ Url.map Root Url.top + , Url.map Page (Url.s "page" Url.int) + ] + + + +-- CONVERSIONS + + +type alias RouteData = + { url : String + , title : String + } + + +toRouteData : Route -> RouteData +toRouteData route = + case route of + Root -> + RouteData "/" "Home" + + Page id -> + RouteData ("/page/" ++ toString id) ("Page " ++ toString id) + + +toTitle : Route -> String +toTitle = + .title << toRouteData + + +toUrl : Route -> String +toUrl = + .url << toRouteData + + + +{- + LINK + + Type checked internal links. + + - Each path for each route is defined once + - Easy to change path + - You can't go to non-existing routes + - Prevent page reload + - Enable ctrl-click +-} + + +link : (Route -> msg) -> Route -> List (Attribute msg) -> List (Html msg) -> Html msg +link toMsg route attributes content = + a + ([ href (toUrl route) + , onPreventDefaultClick (toMsg route) + ] + ++ attributes + ) + content + + +onPreventDefaultClick : msg -> Attribute msg +onPreventDefaultClick msg = + onWithOptions "click" + { defaultOptions | preventDefault = True } + (Decode.andThen (eventDecoder msg) eventKeyDecoder) + + +eventKeyDecoder : Decode.Decoder Bool +eventKeyDecoder = + Decode.map2 + (not >> xor) + (Decode.field "ctrlKey" Decode.bool) + (Decode.field "metaKey" Decode.bool) + + +eventDecoder : msg -> Bool -> Decode.Decoder msg +eventDecoder msg preventDefault = + if preventDefault then + Decode.succeed msg + else + Decode.fail "" From 3aaab459d6e98f4fc2d6ff9f746137a1eee1d81c Mon Sep 17 00:00:00 2001 From: rl-king Date: Thu, 7 Jun 2018 18:29:00 +0200 Subject: [PATCH 03/10] Make it compile --- src/Main.elm | 7 +++---- src/Route.elm | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Main.elm b/src/Main.elm index a9b377d..4adb9a6 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -1,7 +1,6 @@ module Main exposing (main) import Html exposing (..) -import Html.Attributes exposing (..) import Navigation import Route exposing (Route) @@ -59,7 +58,7 @@ update msg model = -- VIEW -view : Model -> Html msg +view : Model -> Html Msg view model = - div [] - [ Route.link Route.Root [] [ h1 [] [ text "Hello" ] ] ] + main_ [] + [ Route.link PushUrl Route.Root [] [ h1 [] [ text "Hello" ] ] ] diff --git a/src/Route.elm b/src/Route.elm index 99bd4ae..ee1c591 100644 --- a/src/Route.elm +++ b/src/Route.elm @@ -1,4 +1,4 @@ -module Route exposing (Route, fromLocation, link, toTitle, toUrl) +module Route exposing (Route(..), fromLocation, link, toTitle, toUrl) import Html exposing (..) import Html.Attributes exposing (..) From 7f20c4b973bdcd0594a5f24a0dc82b1a3e5803f2 Mon Sep 17 00:00:00 2001 From: rl-king Date: Fri, 8 Jun 2018 00:24:09 +0200 Subject: [PATCH 04/10] Add Page --- src/Main.elm | 36 +++++++++++++++++++++++++++++++----- src/Route.elm | 11 ++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/Main.elm b/src/Main.elm index 4adb9a6..3d2e2d5 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -23,12 +23,23 @@ main = type alias Model = - { route : Route } + { route : Route + , page : Page + } + + +type Page + = Home + | Article + | Loading + | Unknown init : Navigation.Location -> ( Model, Cmd Msg ) init location = - ( { route = Route.fromLocation location } + ( { route = Route.fromLocation location + , page = Loading + } , Cmd.none ) @@ -46,14 +57,29 @@ update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of OnNavigation location -> - ( { model | route = Route.fromLocation location } - , Cmd.none - ) + check { model | route = Route.fromLocation location } PushUrl route -> ( model, Navigation.newUrl (Route.toUrl route) ) +check : Model -> ( Model, Cmd Msg ) +check model = + let + ( page, cmds ) = + case model.route of + Route.Root -> + ( Home, Cmd.none ) + + Route.Article id -> + ( Article, Cmd.none ) + + Route.NotFound -> + ( Unknown, Cmd.none ) + in + ( { model | page = page }, cmds ) + + -- VIEW diff --git a/src/Route.elm b/src/Route.elm index ee1c591..38d2d1c 100644 --- a/src/Route.elm +++ b/src/Route.elm @@ -10,7 +10,8 @@ import UrlParser as Url exposing (()) type Route = Root - | Page Id + | Article Id + | NotFound type alias Id = @@ -31,7 +32,8 @@ parser : Url.Parser (Route -> a) a parser = Url.oneOf [ Url.map Root Url.top - , Url.map Page (Url.s "page" Url.int) + , Url.map Article (Url.s "page" Url.int) + , Url.map NotFound (Url.s "404") ] @@ -51,9 +53,12 @@ toRouteData route = Root -> RouteData "/" "Home" - Page id -> + Article id -> RouteData ("/page/" ++ toString id) ("Page " ++ toString id) + NotFound -> + RouteData "/404" "Not found" + toTitle : Route -> String toTitle = From 4b58d5844b0a3b101056dec6f635ea819136a657 Mon Sep 17 00:00:00 2001 From: rl-king Date: Fri, 8 Jun 2018 14:24:08 +0200 Subject: [PATCH 05/10] Update test elm-package.json --- tests/elm-package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/elm-package.json b/tests/elm-package.json index 9185a98..1d7669b 100644 --- a/tests/elm-package.json +++ b/tests/elm-package.json @@ -13,7 +13,9 @@ "elm-community/elm-test": "4.0.0 <= v < 5.0.0", "elm-lang/core": "5.0.0 <= v < 6.0.0", "elm-lang/html": "2.0.0 <= v < 3.0.0", - "elm-lang/navigation": "2.1.0 <= v < 3.0.0" + "elm-lang/http": "1.0.0 <= v < 2.0.0", + "elm-lang/navigation": "2.1.0 <= v < 3.0.0", + "evancz/url-parser": "2.0.1 <= v < 3.0.0" }, "elm-version": "0.18.0 <= v < 0.19.0" } From d4efd63d4f1cfe8df30bb6b35c7b0e57e6786310 Mon Sep 17 00:00:00 2001 From: rl-king Date: Mon, 18 Jun 2018 14:57:14 +0200 Subject: [PATCH 06/10] Add readme and licence --- LICENSE | 11 +++++++++++ README.md | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9c248cb --- /dev/null +++ b/LICENSE @@ -0,0 +1,11 @@ +Copyright 2018 Driebit + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. 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. + +3. Neither the name of the copyright holder 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. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea90cd1 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Ginger Elm Skeleton + +## Install +Install Elm, Elm-test, Elm-format and Elm-coverage. +``` +make deps +``` +## Compile + +``` +make (all) +``` + +## Watch +Watch .elm files and compile on change +``` +make watch +``` From 7e4b3c6c781ea2c88b8a8e1d92fc4e48d7929e44 Mon Sep 17 00:00:00 2001 From: rl-king Date: Mon, 18 Jun 2018 15:32:11 +0200 Subject: [PATCH 07/10] Update Make docs --- Makefile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index aaea15d..9e02c1e 100644 --- a/Makefile +++ b/Makefile @@ -38,16 +38,16 @@ format-validate: help: @echo "Run: make where is one of the following:" - @echo " all" - @echo " clean" - @echo " cover" - @echo " deps" - @echo " distclean" - @echo " format" - @echo " format-validate" - @echo " help" - @echo " test" - @echo " watch" + @echo " all Compile all Elm files" + @echo " clean Remove 'dist' folder" + @echo " cover Run Elm coverage" + @echo " deps Install build dependencies" + @echo " distclean Remove build dependencies" + @echo " format Run Elm format" + @echo " format-validate Check if Elm files are formatted" + @echo " help Magic" + @echo " test Run Elm-test" + @echo " watch Run 'make all' on Elm file change" test: @elm-test --compiler ${ROOT_DIR}/node_modules/.bin/elm-make From 9bed982b5d64102d8b41287a0d61d77d7cfab76f Mon Sep 17 00:00:00 2001 From: Michel Rijnders Date: Wed, 20 Jun 2018 16:55:02 +0200 Subject: [PATCH 08/10] =?UTF-8?q?Add=20=E2=80=9Canalyse=E2=80=9D=20target?= =?UTF-8?q?=20to=20Makefile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 3 + elm-analyse.json | 7 + elm-package.json | 1 - package-lock.json | 611 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/Main.elm | 4 +- 6 files changed, 624 insertions(+), 3 deletions(-) create mode 100644 elm-analyse.json diff --git a/Makefile b/Makefile index 9e02c1e..612f19e 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,9 @@ export PATH := $(NPM_PATH):$(PATH) all: $(ELM_FILES) @elm-make --warn --yes src/Main.elm --output dist/main.js +analyse: deps + @elm-analyse --elm-format-path=./node_modules/elm-format/bin/elm-format src + clean: @rm -Rf dist/* diff --git a/elm-analyse.json b/elm-analyse.json new file mode 100644 index 0000000..82c9390 --- /dev/null +++ b/elm-analyse.json @@ -0,0 +1,7 @@ +{ + "checks" : { + "ImportAll": false + }, + "excludedPaths" : [ + ] +} diff --git a/elm-package.json b/elm-package.json index fb0f367..1945c8a 100644 --- a/elm-package.json +++ b/elm-package.json @@ -10,7 +10,6 @@ "dependencies": { "elm-lang/core": "5.0.0 <= v < 6.0.0", "elm-lang/html": "2.0.0 <= v < 3.0.0", - "elm-lang/http": "1.0.0 <= v < 2.0.0", "elm-lang/navigation": "2.1.0 <= v < 3.0.0", "evancz/url-parser": "2.0.1 <= v < 3.0.0" }, diff --git a/package-lock.json b/package-lock.json index d596c19..9881599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,15 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -52,6 +61,11 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -85,6 +99,11 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -100,6 +119,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" }, + "babel-runtime": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.18.0.tgz", + "integrity": "sha1-D0F3/9mEku8Tufgj6ZlKAlhMkHg=", + "requires": { + "core-js": "2.5.7", + "regenerator-runtime": "0.9.6" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -505,6 +533,41 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -543,6 +606,14 @@ } } }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -553,6 +624,16 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -562,6 +643,11 @@ "jsbn": "0.1.1" } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, "elm": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/elm/-/elm-0.18.0.tgz", @@ -573,6 +659,203 @@ "tar": "2.2.1" } }, + "elm-analyse": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/elm-analyse/-/elm-analyse-0.14.2.tgz", + "integrity": "sha512-ZGPOatNYjzSBkKkQscAErodgMkas3xMmkDbbQRN6yTqM6f1YNzPiTPdK+2icGsEuWuC18KCVDI4mBPYVrhx/UA==", + "requires": { + "express": "4.14.1", + "express-ws": "2.0.0", + "find": "0.2.7", + "fs-extra": "2.0.0", + "lodash": "4.17.4", + "minimist": "1.2.0", + "node-watch": "0.5.5", + "normalize-newline": "3.0.0", + "os-homedir": "1.0.2", + "request": "2.83.0", + "sums": "0.2.4", + "ws": "3.3.1" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "find": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/find/-/find-0.2.7.tgz", + "integrity": "sha1-evvQD48IxbYi+Xzab3FBc9VHuz8=", + "requires": { + "traverse-chain": "0.1.0" + } + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.0.0.tgz", + "integrity": "sha1-M3NSve1KC3FPPrhN6M6nZenTdgA=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0" + } + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + } + } + }, "elm-coverage": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/elm-coverage/-/elm-coverage-0.1.7.tgz", @@ -833,11 +1116,26 @@ } } }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=" + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -868,6 +1166,65 @@ "fill-range": "2.2.3" } }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.2.0", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.2.0", + "range-parser": "1.2.0", + "send": "0.14.2", + "serve-static": "1.11.2", + "type-is": "1.6.16", + "utils-merge": "1.0.0", + "vary": "1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" + } + } + }, + "express-ws": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-2.0.0.tgz", + "integrity": "sha1-ltE/pByN6Ppdy/otrKzm9ZQnKIg=", + "requires": { + "ws": "1.1.5" + }, + "dependencies": { + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + } + } + }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -913,6 +1270,18 @@ "repeat-string": "1.6.1" } }, + "finalhandler": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", + "integrity": "sha1-LEANjUUwk1vCMlScX6OF7Afeb80=", + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, "find": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz", @@ -988,6 +1357,16 @@ "mime-types": "2.1.18" } }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" + }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -1917,6 +2296,16 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, + "http-errors": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", + "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", + "requires": { + "inherits": "2.0.3", + "setprototypeof": "1.0.2", + "statuses": "1.3.1" + } + }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", @@ -1946,6 +2335,11 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=" + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -2199,6 +2593,11 @@ } } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -2207,6 +2606,16 @@ "mimic-fn": "1.2.0" } }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", @@ -2227,6 +2636,11 @@ "regex-cache": "0.4.4" } }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", @@ -2271,6 +2685,11 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==" }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, "murmur-hash-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/murmur-hash-js/-/murmur-hash-js-1.0.0.tgz", @@ -2287,6 +2706,11 @@ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==" }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, "node-elm-compiler": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-4.3.3.tgz", @@ -2319,6 +2743,11 @@ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" }, + "node-watch": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.5.5.tgz", + "integrity": "sha512-z9xN2ibI6P0UylFadN7oMcIMsoTeCENC0rZyRM5MVK9AqzSPx+uGqKG6KMPeC/laOV4wOGZq/GH0PTstRNSqOA==" + }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", @@ -2327,6 +2756,11 @@ "abbrev": "1.1.1" } }, + "normalize-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-3.0.0.tgz", + "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=" + }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", @@ -2362,6 +2796,14 @@ "is-extendable": "0.1.1" } }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2378,6 +2820,16 @@ "is-wsl": "1.1.0" } }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -2435,6 +2887,11 @@ "is-glob": "2.0.1" } }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2450,6 +2907,11 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -2486,6 +2948,15 @@ "asap": "2.0.6" } }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.4.0" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -2567,6 +3038,11 @@ } } }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", @@ -2591,6 +3067,11 @@ "set-immediate-shim": "1.0.1" } }, + "regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -2684,6 +3165,44 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, + "send": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", + "integrity": "sha1-ObBDiz9RC+Xcb2Z6EfcWiTaM3u8=", + "requires": { + "debug": "2.2.0", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.7.0", + "fresh": "0.3.0", + "http-errors": "1.5.1", + "mime": "1.3.4", + "ms": "0.7.2", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "serve-static": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.2.tgz", + "integrity": "sha1-LPmIm9RDWjIMw2iVyapXvWYuasc=", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.14.2" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -2699,6 +3218,11 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "setprototypeof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", + "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2781,6 +3305,11 @@ } } }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -2833,6 +3362,28 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "sums": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/sums/-/sums-0.2.4.tgz", + "integrity": "sha1-14wUOYKX1gT+ZYjcOwPeynuRupM=", + "requires": { + "babel-runtime": "6.18.0", + "concat-stream": "1.5.2", + "is-stream": "1.1.0", + "through2": "2.0.1", + "tmp": "0.0.31" + }, + "dependencies": { + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "1.0.2" + } + } + } + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -2869,6 +3420,15 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", + "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", + "requires": { + "readable-stream": "2.0.6", + "xtend": "4.0.1" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -2914,11 +3474,35 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, "unzip": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", @@ -2974,6 +3558,16 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -3038,6 +3632,23 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "ws": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.1.tgz", + "integrity": "sha512-8A/uRMnQy8KCQsmep1m7Bk+z/+LIkeF7w+TDMLtX1iZm5Hq9HsUDmgFGaW1ACW5Cj0b2Qo7wCvRhYN2ErUVp/A==", + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + }, + "dependencies": { + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + } + } + }, "xmlbuilder": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", diff --git a/package.json b/package.json index e5716a5..0e399c2 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "elm": "0.18.x", + "elm-analyse": "^0.14.2", "elm-coverage": "0.1.x", "elm-format": "0.7.0-exp", "elm-test": "0.18.x" diff --git a/src/Main.elm b/src/Main.elm index 3d2e2d5..714dfcc 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -71,7 +71,7 @@ check model = Route.Root -> ( Home, Cmd.none ) - Route.Article id -> + Route.Article _ -> ( Article, Cmd.none ) Route.NotFound -> @@ -85,6 +85,6 @@ check model = view : Model -> Html Msg -view model = +view _ = main_ [] [ Route.link PushUrl Route.Root [] [ h1 [] [ text "Hello" ] ] ] From cdd02609142252c06e2a911bac061fe897c20069 Mon Sep 17 00:00:00 2001 From: rl-king Date: Mon, 25 Jun 2018 11:23:02 +0200 Subject: [PATCH 09/10] Add help descr for elm analyse --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 612f19e..f295d22 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,7 @@ format-validate: help: @echo "Run: make where is one of the following:" @echo " all Compile all Elm files" + @echo " analyse Run Elm analyse" @echo " clean Remove 'dist' folder" @echo " cover Run Elm coverage" @echo " deps Install build dependencies" From ed744873c01e1dd89832f37123ff4dbe41e32bf8 Mon Sep 17 00:00:00 2001 From: rl-king Date: Mon, 25 Jun 2018 11:34:07 +0200 Subject: [PATCH 10/10] check -> updatePage --- src/Main.elm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Main.elm b/src/Main.elm index 714dfcc..2b379a2 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -37,11 +37,10 @@ type Page init : Navigation.Location -> ( Model, Cmd Msg ) init location = - ( { route = Route.fromLocation location - , page = Loading - } - , Cmd.none - ) + updatePage + { route = Route.fromLocation location + , page = Loading + } @@ -57,14 +56,14 @@ update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of OnNavigation location -> - check { model | route = Route.fromLocation location } + updatePage { model | route = Route.fromLocation location } PushUrl route -> ( model, Navigation.newUrl (Route.toUrl route) ) -check : Model -> ( Model, Cmd Msg ) -check model = +updatePage : Model -> ( Model, Cmd Msg ) +updatePage model = let ( page, cmds ) = case model.route of