elm-pages 3.0.0-beta.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +2 -2
  2. package/adapter/netlify.js +207 -0
  3. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2731 -2939
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +16840 -13653
  13. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  14. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  15. package/generator/dead-code-review/elm.json +9 -7
  16. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +59 -10
  17. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +52 -36
  18. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  20. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  21. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  22. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  23. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  24. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  25. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  26. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  27. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
  28. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  29. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  30. package/generator/review/elm.json +10 -10
  31. package/generator/src/RouteBuilder.elm +93 -128
  32. package/generator/src/SharedTemplate.elm +8 -7
  33. package/generator/src/SiteConfig.elm +3 -2
  34. package/generator/src/basepath-middleware.js +3 -3
  35. package/generator/src/build.js +143 -59
  36. package/generator/src/cli.js +292 -88
  37. package/generator/src/codegen.js +29 -27
  38. package/generator/src/compatibility-key.js +3 -0
  39. package/generator/src/compile-elm.js +43 -26
  40. package/generator/src/config.js +2 -4
  41. package/generator/src/copy-dir.js +2 -2
  42. package/generator/src/dev-server.js +160 -102
  43. package/generator/src/dir-helpers.js +9 -26
  44. package/generator/src/elm-codegen.js +5 -4
  45. package/generator/src/elm-file-constants.js +2 -3
  46. package/generator/src/error-formatter.js +12 -11
  47. package/generator/src/file-helpers.js +3 -4
  48. package/generator/src/generate-template-module-connector.js +23 -23
  49. package/generator/src/init.js +9 -8
  50. package/generator/src/pre-render-html.js +10 -13
  51. package/generator/src/render-test.js +109 -0
  52. package/generator/src/render-worker.js +25 -28
  53. package/generator/src/render.js +320 -143
  54. package/generator/src/request-cache.js +265 -162
  55. package/generator/src/resolve-elm-module.js +64 -0
  56. package/generator/src/rewrite-client-elm-json.js +6 -5
  57. package/generator/src/rewrite-elm-json-help.js +56 -0
  58. package/generator/src/rewrite-elm-json.js +17 -7
  59. package/generator/src/route-codegen-helpers.js +16 -31
  60. package/generator/src/seo-renderer.js +1 -3
  61. package/generator/src/vite-utils.js +1 -2
  62. package/generator/static-code/elm-pages.js +10 -0
  63. package/generator/static-code/hmr.js +79 -13
  64. package/generator/template/app/Api.elm +3 -2
  65. package/generator/template/app/Effect.elm +155 -0
  66. package/generator/template/app/ErrorPage.elm +49 -6
  67. package/generator/template/app/Route/Blog/Slug_.elm +86 -0
  68. package/generator/template/app/Route/Greet.elm +107 -0
  69. package/generator/template/app/Route/Hello.elm +119 -0
  70. package/generator/template/app/Route/Index.elm +26 -25
  71. package/generator/template/app/Shared.elm +38 -39
  72. package/generator/template/app/Site.elm +4 -7
  73. package/generator/template/app/View.elm +9 -8
  74. package/generator/template/codegen/elm.codegen.json +18 -0
  75. package/generator/template/custom-backend-task.ts +3 -0
  76. package/generator/template/elm-pages.config.mjs +13 -0
  77. package/generator/template/elm-tooling.json +0 -3
  78. package/generator/template/elm.json +25 -20
  79. package/generator/template/index.ts +1 -2
  80. package/generator/template/netlify.toml +4 -1
  81. package/generator/template/package.json +10 -4
  82. package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
  83. package/generator/template/script/custom-backend-task.ts +3 -0
  84. package/generator/template/script/elm.json +61 -0
  85. package/generator/template/script/src/AddRoute.elm +312 -0
  86. package/generator/template/script/src/Stars.elm +42 -0
  87. package/package.json +30 -27
  88. package/src/ApiRoute.elm +249 -82
  89. package/src/BackendTask/Custom.elm +325 -0
  90. package/src/BackendTask/Env.elm +90 -0
  91. package/src/{DataSource → BackendTask}/File.elm +171 -56
  92. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  93. package/src/BackendTask/Http.elm +679 -0
  94. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  95. package/src/BackendTask/Internal/Request.elm +69 -0
  96. package/src/BackendTask/Random.elm +79 -0
  97. package/src/BackendTask/Time.elm +47 -0
  98. package/src/BackendTask.elm +531 -0
  99. package/src/FatalError.elm +90 -0
  100. package/src/FormData.elm +21 -18
  101. package/src/Head/Seo.elm +4 -4
  102. package/src/Head.elm +112 -8
  103. package/src/Internal/ApiRoute.elm +7 -5
  104. package/src/Internal/Request.elm +84 -4
  105. package/src/PageServerResponse.elm +6 -1
  106. package/src/Pages/ConcurrentSubmission.elm +127 -0
  107. package/src/Pages/Form.elm +340 -0
  108. package/src/Pages/FormData.elm +19 -0
  109. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  110. package/src/Pages/Internal/FatalError.elm +5 -0
  111. package/src/Pages/Internal/Msg.elm +93 -0
  112. package/src/Pages/Internal/NotFoundReason.elm +4 -4
  113. package/src/Pages/Internal/Platform/Cli.elm +586 -768
  114. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  115. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  116. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  117. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  118. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  119. package/src/Pages/Internal/Platform.elm +330 -203
  120. package/src/Pages/Internal/ResponseSketch.elm +2 -2
  121. package/src/Pages/Internal/Script.elm +17 -0
  122. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  123. package/src/Pages/Manifest.elm +52 -11
  124. package/src/Pages/Navigation.elm +85 -0
  125. package/src/Pages/PageUrl.elm +26 -12
  126. package/src/Pages/ProgramConfig.elm +32 -22
  127. package/src/Pages/Script.elm +166 -0
  128. package/src/Pages/SiteConfig.elm +3 -2
  129. package/src/Pages/StaticHttp/Request.elm +2 -2
  130. package/src/Pages/StaticHttpRequest.elm +23 -99
  131. package/src/Pages/Url.elm +3 -3
  132. package/src/PagesMsg.elm +88 -0
  133. package/src/QueryParams.elm +21 -172
  134. package/src/RenderRequest.elm +7 -7
  135. package/src/RequestsAndPending.elm +37 -20
  136. package/src/Result/Extra.elm +26 -0
  137. package/src/Scaffold/Form.elm +569 -0
  138. package/src/Scaffold/Route.elm +1431 -0
  139. package/src/Server/Request.elm +476 -1001
  140. package/src/Server/Response.elm +130 -36
  141. package/src/Server/Session.elm +181 -111
  142. package/src/Server/SetCookie.elm +80 -32
  143. package/src/Stub.elm +53 -0
  144. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  145. package/src/{Path.elm → UrlPath.elm} +33 -36
  146. package/generator/template/public/images/icon-png.png +0 -0
  147. package/src/DataSource/Env.elm +0 -38
  148. package/src/DataSource/Http.elm +0 -446
  149. package/src/DataSource/Internal/Request.elm +0 -20
  150. package/src/DataSource/Port.elm +0 -90
  151. package/src/DataSource.elm +0 -546
  152. package/src/Form/Field.elm +0 -717
  153. package/src/Form/FieldStatus.elm +0 -36
  154. package/src/Form/FieldView.elm +0 -417
  155. package/src/Form/FormData.elm +0 -22
  156. package/src/Form/Validation.elm +0 -391
  157. package/src/Form/Value.elm +0 -118
  158. package/src/Form.elm +0 -1683
  159. package/src/FormDecoder.elm +0 -102
  160. package/src/Pages/FormState.elm +0 -256
  161. package/src/Pages/Generate.elm +0 -1242
  162. package/src/Pages/Internal/Form.elm +0 -17
  163. package/src/Pages/Internal/Platform/Cli.elm.bak +0 -1276
  164. package/src/Pages/Msg.elm +0 -79
  165. package/src/Pages/Transition.elm +0 -70
@@ -0,0 +1,107 @@
1
+ module Route.Greet exposing (ActionData, Data, Model, Msg, route)
2
+
3
+ import BackendTask exposing (BackendTask)
4
+ import BackendTask.Http
5
+ import ErrorPage exposing (ErrorPage)
6
+ import FatalError exposing (FatalError)
7
+ import Head
8
+ import Head.Seo as Seo
9
+ import Html
10
+ import Json.Decode as Decode
11
+ import Pages.Url
12
+ import PagesMsg exposing (PagesMsg)
13
+ import RouteBuilder exposing (App, StatefulRoute, StatelessRoute)
14
+ import Server.Request as Request exposing (Request)
15
+ import Server.Response as Response exposing (Response)
16
+ import Shared
17
+ import View exposing (View)
18
+
19
+
20
+ type alias Model =
21
+ {}
22
+
23
+
24
+ type alias Msg =
25
+ ()
26
+
27
+
28
+ type alias RouteParams =
29
+ {}
30
+
31
+
32
+ route : StatelessRoute RouteParams Data ActionData
33
+ route =
34
+ RouteBuilder.serverRender
35
+ { head = head
36
+ , data = data
37
+ , action = \_ _ -> BackendTask.fail (FatalError.fromString "No action.")
38
+ }
39
+ |> RouteBuilder.buildNoState { view = view }
40
+
41
+
42
+ type alias Data =
43
+ { name : Maybe String
44
+ }
45
+
46
+
47
+ type alias ActionData =
48
+ {}
49
+
50
+
51
+ data : RouteParams -> Request -> BackendTask FatalError (Response Data ErrorPage)
52
+ data routeParams request =
53
+ case request |> Request.queryParam "name" of
54
+ Just name ->
55
+ BackendTask.Http.getJson "http://worldtimeapi.org/api/timezone/America/Los_Angeles"
56
+ (Decode.field "utc_datetime" Decode.string)
57
+ |> BackendTask.allowFatal
58
+ |> BackendTask.map
59
+ (\dateTimeString ->
60
+ Response.render
61
+ { name = Just dateTimeString }
62
+ )
63
+
64
+ Nothing ->
65
+ BackendTask.succeed
66
+ (Response.render
67
+ { name = Nothing }
68
+ )
69
+
70
+
71
+ head :
72
+ App Data ActionData RouteParams
73
+ -> List Head.Tag
74
+ head app =
75
+ Seo.summary
76
+ { canonicalUrlOverride = Nothing
77
+ , siteName = "elm-pages"
78
+ , image =
79
+ { url = Pages.Url.external "TODO"
80
+ , alt = "elm-pages logo"
81
+ , dimensions = Nothing
82
+ , mimeType = Nothing
83
+ }
84
+ , description = "TODO"
85
+ , locale = Nothing
86
+ , title = "TODO title" -- metadata.title -- TODO
87
+ }
88
+ |> Seo.website
89
+
90
+
91
+ view :
92
+ App Data ActionData RouteParams
93
+ -> Shared.Model
94
+ -> View (PagesMsg Msg)
95
+ view app shared =
96
+ { title = "Greetings"
97
+ , body =
98
+ [ Html.div []
99
+ [ case app.data.name of
100
+ Just name ->
101
+ Html.text ("Hello " ++ name)
102
+
103
+ Nothing ->
104
+ Html.text "Hello, I didn't find your name"
105
+ ]
106
+ ]
107
+ }
@@ -0,0 +1,119 @@
1
+ module Route.Hello exposing (ActionData, Data, Model, Msg(..), RouteParams, action, data, route)
2
+
3
+ import BackendTask exposing (BackendTask)
4
+ import BackendTask.Http
5
+ import Effect exposing (Effect)
6
+ import ErrorPage exposing (ErrorPage)
7
+ import FatalError exposing (FatalError)
8
+ import Head
9
+ import Html
10
+ import Json.Decode as Decode
11
+ import PagesMsg exposing (PagesMsg)
12
+ import RouteBuilder exposing (App)
13
+ import Server.Request exposing (Request)
14
+ import Server.Response
15
+ import Shared
16
+ import UrlPath exposing (UrlPath)
17
+ import View exposing (View)
18
+
19
+
20
+ type alias Model =
21
+ {}
22
+
23
+
24
+ type Msg
25
+ = NoOp
26
+
27
+
28
+ type alias RouteParams =
29
+ {}
30
+
31
+
32
+ route =
33
+ RouteBuilder.serverRender { data = data, action = action, head = head }
34
+ |> RouteBuilder.buildWithLocalState
35
+ { view = view
36
+ , subscriptions = subscriptions
37
+ , update = update
38
+ , init = init
39
+ }
40
+
41
+
42
+ init :
43
+ App Data ActionData RouteParams
44
+ -> Shared.Model
45
+ -> ( Model, Effect Msg )
46
+ init app shared =
47
+ ( {}, Effect.none )
48
+
49
+
50
+ update :
51
+ App Data ActionData RouteParams
52
+ -> Shared.Model
53
+ -> Msg
54
+ -> Model
55
+ -> ( Model, Effect Msg )
56
+ update app shared msg model =
57
+ case msg of
58
+ NoOp ->
59
+ ( model, Effect.none )
60
+
61
+
62
+ subscriptions :
63
+ RouteParams
64
+ -> UrlPath
65
+ -> Shared.Model
66
+ -> Model
67
+ -> Sub Msg
68
+ subscriptions routeParams path shared model =
69
+ Sub.none
70
+
71
+
72
+ type alias Data =
73
+ { stars : Int
74
+ }
75
+
76
+
77
+ type alias ActionData =
78
+ {}
79
+
80
+
81
+ data :
82
+ RouteParams
83
+ -> Request
84
+ -> BackendTask FatalError (Server.Response.Response Data ErrorPage)
85
+ data routeParams request =
86
+ BackendTask.Http.getWithOptions
87
+ { url = "https://api.github.com/repos/dillonkearns/elm-pages"
88
+ , expect = BackendTask.Http.expectJson (Decode.field "stargazers_count" Decode.int)
89
+ , headers = []
90
+ , cacheStrategy = Just BackendTask.Http.IgnoreCache
91
+ , retries = Nothing
92
+ , timeoutInMs = Nothing
93
+ , cachePath = Nothing
94
+ }
95
+ |> BackendTask.allowFatal
96
+ |> BackendTask.map
97
+ (\stars -> Server.Response.render { stars = stars })
98
+
99
+
100
+ head : App Data ActionData RouteParams -> List Head.Tag
101
+ head app =
102
+ []
103
+
104
+
105
+ view :
106
+ App Data ActionData RouteParams
107
+ -> Shared.Model
108
+ -> Model
109
+ -> View (PagesMsg Msg)
110
+ view app shared model =
111
+ { title = "Hello", body = [ Html.text (String.fromInt app.data.stars) ] }
112
+
113
+
114
+ action :
115
+ RouteParams
116
+ -> Request
117
+ -> BackendTask.BackendTask FatalError.FatalError (Server.Response.Response ActionData ErrorPage.ErrorPage)
118
+ action routeParams request =
119
+ BackendTask.succeed (Server.Response.render {})
@@ -1,14 +1,15 @@
1
- module Route.Index exposing (Data, Model, Msg, route)
1
+ module Route.Index exposing (ActionData, Data, Model, Msg, route)
2
2
 
3
- import DataSource exposing (DataSource)
3
+ import BackendTask exposing (BackendTask)
4
+ import FatalError exposing (FatalError)
4
5
  import Head
5
6
  import Head.Seo as Seo
6
7
  import Html
7
- import Html.Attributes as Attr
8
- import Pages.PageUrl exposing (PageUrl)
9
8
  import Pages.Url
10
- import Path
11
- import RouteBuilder exposing (StatelessRoute, StaticPayload)
9
+ import PagesMsg exposing (PagesMsg)
10
+ import UrlPath
11
+ import Route
12
+ import RouteBuilder exposing (App, StatelessRoute)
12
13
  import Shared
13
14
  import View exposing (View)
14
15
 
@@ -26,6 +27,11 @@ type alias RouteParams =
26
27
 
27
28
 
28
29
  type alias Data =
30
+ { message : String
31
+ }
32
+
33
+
34
+ type alias ActionData =
29
35
  {}
30
36
 
31
37
 
@@ -38,20 +44,22 @@ route =
38
44
  |> RouteBuilder.buildNoState { view = view }
39
45
 
40
46
 
41
- data : DataSource Data
47
+ data : BackendTask FatalError Data
42
48
  data =
43
- DataSource.succeed Data
49
+ BackendTask.succeed Data
50
+ |> BackendTask.andMap
51
+ (BackendTask.succeed "Hello!")
44
52
 
45
53
 
46
54
  head :
47
- StaticPayload Data ActionData RouteParams
55
+ App Data ActionData RouteParams
48
56
  -> List Head.Tag
49
- head static =
57
+ head app =
50
58
  Seo.summary
51
59
  { canonicalUrlOverride = Nothing
52
60
  , siteName = "elm-pages"
53
61
  , image =
54
- { url = [ "images", "icon-png.png" ] |> Path.join |> Pages.Url.fromPath
62
+ { url = [ "images", "icon-png.png" ] |> UrlPath.join |> Pages.Url.fromPath
55
63
  , alt = "elm-pages logo"
56
64
  , dimensions = Nothing
57
65
  , mimeType = Nothing
@@ -64,24 +72,17 @@ head static =
64
72
 
65
73
 
66
74
  view :
67
- Maybe PageUrl
75
+ App Data ActionData RouteParams
68
76
  -> Shared.Model
69
- -> StaticPayload Data ActionData RouteParams
70
- -> View Msg
71
- view maybeUrl sharedModel static =
77
+ -> View (PagesMsg Msg)
78
+ view app shared =
72
79
  { title = "elm-pages is running"
73
80
  , body =
74
81
  [ Html.h1 [] [ Html.text "elm-pages is up and running!" ]
75
- , Html.h2 [] [ Html.text "Learn more" ]
76
- , Html.ul
77
- []
78
- [ Html.li []
79
- [ Html.a [ Attr.href "https://elm-pages.com/docs/" ] [ Html.text "Framework documentation" ]
80
- ]
81
- , Html.li
82
- []
83
- [ Html.a [ Attr.href "https://package.elm-lang.org/packages/dillonkearns/elm-pages/latest/" ] [ Html.text "Elm package documentation" ]
84
- ]
82
+ , Html.p []
83
+ [ Html.text <| "The message is: " ++ app.data.message
85
84
  ]
85
+ , Route.Blog__Slug_ { slug = "hello" }
86
+ |> Route.link [] [ Html.text "My blog post" ]
86
87
  ]
87
88
  }
@@ -1,12 +1,13 @@
1
1
  module Shared exposing (Data, Model, Msg(..), SharedMsg(..), template)
2
2
 
3
- import Browser.Navigation
4
- import DataSource
3
+ import BackendTask exposing (BackendTask)
4
+ import Effect exposing (Effect)
5
+ import FatalError exposing (FatalError)
5
6
  import Html exposing (Html)
6
7
  import Html.Events
7
8
  import Pages.Flags
8
9
  import Pages.PageUrl exposing (PageUrl)
9
- import Path exposing (Path)
10
+ import UrlPath exposing (UrlPath)
10
11
  import Route exposing (Route)
11
12
  import SharedTemplate exposing (SharedTemplate)
12
13
  import View exposing (View)
@@ -42,80 +43,78 @@ type alias Model =
42
43
 
43
44
 
44
45
  init :
45
- Maybe Browser.Navigation.Key
46
- -> Pages.Flags.Flags
46
+ Pages.Flags.Flags
47
47
  ->
48
48
  Maybe
49
49
  { path :
50
- { path : Path
50
+ { path : UrlPath
51
51
  , query : Maybe String
52
52
  , fragment : Maybe String
53
53
  }
54
54
  , metadata : route
55
55
  , pageUrl : Maybe PageUrl
56
56
  }
57
- -> ( Model, Cmd Msg )
58
- init navigationKey flags maybePagePath =
57
+ -> ( Model, Effect Msg )
58
+ init flags maybePagePath =
59
59
  ( { showMenu = False }
60
- , Cmd.none
60
+ , Effect.none
61
61
  )
62
62
 
63
63
 
64
- update : Msg -> Model -> ( Model, Cmd Msg )
64
+ update : Msg -> Model -> ( Model, Effect Msg )
65
65
  update msg model =
66
66
  case msg of
67
67
  SharedMsg globalMsg ->
68
- ( model, Cmd.none )
68
+ ( model, Effect.none )
69
69
 
70
70
  MenuClicked ->
71
- ( { model | showMenu = not model.showMenu }, Cmd.none )
71
+ ( { model | showMenu = not model.showMenu }, Effect.none )
72
72
 
73
73
 
74
- subscriptions : Path -> Model -> Sub Msg
74
+ subscriptions : UrlPath -> Model -> Sub Msg
75
75
  subscriptions _ _ =
76
76
  Sub.none
77
77
 
78
78
 
79
- data : DataSource.DataSource Data
79
+ data : BackendTask FatalError Data
80
80
  data =
81
- DataSource.succeed ()
81
+ BackendTask.succeed ()
82
82
 
83
83
 
84
84
  view :
85
85
  Data
86
86
  ->
87
- { path : Path
87
+ { path : UrlPath
88
88
  , route : Maybe Route
89
89
  }
90
90
  -> Model
91
91
  -> (Msg -> msg)
92
92
  -> View msg
93
- -> { body : Html msg, title : String }
93
+ -> { body : List (Html msg), title : String }
94
94
  view sharedData page model toMsg pageView =
95
95
  { body =
96
- Html.div []
97
- [ Html.nav []
98
- [ Html.button
99
- [ Html.Events.onClick MenuClicked ]
100
- [ Html.text
101
- (if model.showMenu then
102
- "Close Menu"
103
-
104
- else
105
- "Open Menu"
106
- )
107
- ]
108
- , if model.showMenu then
109
- Html.ul []
110
- [ Html.li [] [ Html.text "Menu item 1" ]
111
- , Html.li [] [ Html.text "Menu item 2" ]
112
- ]
113
-
114
- else
115
- Html.text ""
96
+ [ Html.nav []
97
+ [ Html.button
98
+ [ Html.Events.onClick MenuClicked ]
99
+ [ Html.text
100
+ (if model.showMenu then
101
+ "Close Menu"
102
+
103
+ else
104
+ "Open Menu"
105
+ )
116
106
  ]
117
- |> Html.map toMsg
118
- , Html.main_ [] pageView.body
107
+ , if model.showMenu then
108
+ Html.ul []
109
+ [ Html.li [] [ Html.text "Menu item 1" ]
110
+ , Html.li [] [ Html.text "Menu item 2" ]
111
+ ]
112
+
113
+ else
114
+ Html.text ""
119
115
  ]
116
+ |> Html.map toMsg
117
+ , Html.main_ [] pageView.body
118
+ ]
120
119
  , title = pageView.title
121
120
  }
@@ -1,6 +1,7 @@
1
1
  module Site exposing (config)
2
2
 
3
- import DataSource exposing (DataSource)
3
+ import BackendTask exposing (BackendTask)
4
+ import FatalError exposing (FatalError)
4
5
  import Head
5
6
  import SiteConfig exposing (SiteConfig)
6
7
 
@@ -12,13 +13,9 @@ config =
12
13
  }
13
14
 
14
15
 
15
- head : DataSource (List Head.Tag)
16
+ head : BackendTask FatalError (List Head.Tag)
16
17
  head =
17
18
  [ Head.metaName "viewport" (Head.raw "width=device-width,initial-scale=1")
18
- , Head.metaName "mobile-web-app-capable" (Head.raw "yes")
19
- , Head.metaName "theme-color" (Head.raw "#ffffff")
20
- , Head.metaName "apple-mobile-web-app-capable" (Head.raw "yes")
21
- , Head.metaName "apple-mobile-web-app-status-bar-style" (Head.raw "black-translucent")
22
19
  , Head.sitemapLink "/sitemap.xml"
23
20
  ]
24
- |> DataSource.succeed
21
+ |> BackendTask.succeed
@@ -1,23 +1,24 @@
1
- module View exposing (View, map, placeholder)
1
+ module View exposing (View, map)
2
+
3
+ {-|
4
+
5
+ @docs View, map
6
+
7
+ -}
2
8
 
3
9
  import Html exposing (Html)
4
10
 
5
11
 
12
+ {-| -}
6
13
  type alias View msg =
7
14
  { title : String
8
15
  , body : List (Html msg)
9
16
  }
10
17
 
11
18
 
19
+ {-| -}
12
20
  map : (msg1 -> msg2) -> View msg1 -> View msg2
13
21
  map fn doc =
14
22
  { title = doc.title
15
23
  , body = List.map (Html.map fn) doc.body
16
24
  }
17
-
18
-
19
- placeholder : String -> View msg
20
- placeholder moduleName =
21
- { title = "Placeholder - " ++ moduleName
22
- , body = [ Html.text moduleName ]
23
- }
@@ -0,0 +1,18 @@
1
+ {
2
+ "elm-codegen-version": "0.2.0",
3
+ "codegen-helpers": {
4
+ "packages": {
5
+ "elm/core": "1.0.5",
6
+ "dillonkearns/elm-form": "3.0.0",
7
+ "elm/html": "1.0.0",
8
+ "rtfeldman/elm-css": "18.0.0",
9
+ "dillonkearns/elm-pages": "10.0.0",
10
+ "elm/json": "1.1.3"
11
+ },
12
+ "local": [
13
+ ".elm-pages/",
14
+ "app/",
15
+ "src/"
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,3 @@
1
+ export async function hello(name) {
2
+ return `Hello ${name}!`;
3
+ }
@@ -1,5 +1,18 @@
1
1
  import { defineConfig } from "vite";
2
+ import adapter from "elm-pages/adapter/netlify.js";
2
3
 
3
4
  export default {
4
5
  vite: defineConfig({}),
6
+ adapter,
7
+ headTagsTemplate(context) {
8
+ return `
9
+ <link rel="stylesheet" href="/style.css" />
10
+ <meta name="generator" content="elm-pages v${context.cliVersion}" />
11
+ `;
12
+ },
13
+ preloadTagForFile(file) {
14
+ // add preload directives for JS assets and font assets, etc., skip for CSS files
15
+ // this function will be called with each file that is procesed by Vite, including any files in your headTagsTemplate in your config
16
+ return !file.endsWith(".css");
17
+ },
5
18
  };
@@ -1,7 +1,4 @@
1
1
  {
2
- "entrypoints": [
3
- "./src/Main.elm"
4
- ],
5
2
  "tools": {
6
3
  "elm": "0.19.1",
7
4
  "elm-format": "0.8.5"
@@ -1,52 +1,57 @@
1
1
  {
2
2
  "type": "application",
3
3
  "source-directories": [
4
- "app",
5
4
  "src",
6
- ".elm-pages"
5
+ "../codegen"
7
6
  ],
8
7
  "elm-version": "0.19.1",
9
8
  "dependencies": {
10
9
  "direct": {
11
- "dillonkearns/elm-pages": "9.0.0",
12
- "elm/browser": "1.0.2",
10
+ "dillonkearns/elm-cli-options-parser": "3.2.0",
11
+ "dillonkearns/elm-pages": "10.0.0",
12
+ "elm/bytes": "1.0.8",
13
13
  "elm/core": "1.0.5",
14
14
  "elm/html": "1.0.0",
15
15
  "elm/json": "1.1.3",
16
- "elm/url": "1.0.0"
16
+ "mdgriffith/elm-codegen": "3.0.0"
17
17
  },
18
18
  "indirect": {
19
- "MartinSStewart/elm-serialize": "1.2.6",
19
+ "Chadtech/elm-bool-extra": "2.4.2",
20
20
  "avh4/elm-color": "1.0.0",
21
- "bburdette/toop": "1.2.0",
22
21
  "danfishgold/base64-bytes": "1.1.0",
23
22
  "danyx23/elm-mimetype": "4.0.1",
24
23
  "dillonkearns/elm-bcp47-language-tag": "1.0.1",
25
- "elm/bytes": "1.0.8",
24
+ "dillonkearns/elm-date-or-date-time": "2.0.0",
25
+ "dillonkearns/elm-form": "3.0.0",
26
+ "elm/browser": "1.0.2",
26
27
  "elm/file": "1.0.5",
27
28
  "elm/http": "2.0.0",
28
29
  "elm/parser": "1.1.0",
29
- "elm/project-metadata-utils": "1.0.2",
30
30
  "elm/random": "1.0.0",
31
31
  "elm/regex": "1.0.0",
32
32
  "elm/time": "1.0.0",
33
- "elm/virtual-dom": "1.0.2",
34
- "elm-community/dict-extra": "2.4.0",
35
- "elm-community/list-extra": "8.5.1",
36
- "elm-explorations/test": "1.2.2",
33
+ "elm/url": "1.0.0",
34
+ "elm/virtual-dom": "1.0.3",
35
+ "elm-community/basics-extra": "4.1.0",
36
+ "elm-community/list-extra": "8.7.0",
37
+ "elm-community/maybe-extra": "5.3.0",
37
38
  "fredcy/elm-parseint": "2.0.1",
38
- "jfmengels/elm-review": "2.6.1",
39
- "mgold/elm-nonempty-list": "4.2.0",
39
+ "jluckyiv/elm-utc-date-strings": "1.0.0",
40
+ "justinmimbs/date": "4.0.1",
40
41
  "miniBill/elm-codec": "2.0.0",
41
- "miniBill/elm-unicode": "1.0.2",
42
+ "miniBill/elm-unicode": "1.0.3",
42
43
  "noahzgordon/elm-color-extra": "1.0.2",
44
+ "robinheghan/fnv1a": "1.0.0",
43
45
  "robinheghan/murmur3": "1.0.0",
46
+ "rtfeldman/elm-css": "18.0.0",
44
47
  "rtfeldman/elm-hex": "1.0.0",
45
- "stil4m/elm-syntax": "7.2.8",
48
+ "rtfeldman/elm-iso8601-date-strings": "1.1.4",
49
+ "stil4m/elm-syntax": "7.2.9",
46
50
  "stil4m/structured-writer": "1.0.3",
47
- "tripokey/elm-fuzzy": "5.2.1",
48
- "vito/elm-ansi": "10.0.1",
49
- "zwilias/json-decode-exploration": "6.0.0"
51
+ "the-sett/elm-pretty-printer": "3.0.0",
52
+ "the-sett/elm-syntax-dsl": "6.0.2",
53
+ "turboMaCk/non-empty-list-alias": "1.3.1",
54
+ "vito/elm-ansi": "10.0.1"
50
55
  }
51
56
  },
52
57
  "test-dependencies": {
@@ -5,8 +5,7 @@ type ElmPagesInit = {
5
5
 
6
6
  const config: ElmPagesInit = {
7
7
  load: async function (elmLoaded) {
8
- const app = await elmLoaded;
9
- console.log("App loaded", app);
8
+ await elmLoaded;
10
9
  },
11
10
  flags: function () {
12
11
  return "You can decode this in Shared.elm using Json.Decode.string!";
@@ -1,10 +1,13 @@
1
1
  [build]
2
2
  functions = "functions/"
3
3
  publish = "dist/"
4
- command = "export ELM_HOME=\"$NETLIFY_BUILD_BASE/cache/elm\" && npm install --no-optional && npm run build"
4
+ command = "mkdir bin && export PATH=\"/opt/build/repo/bin:$PATH\" && echo $PATH && curl https://static.lamdera.com/bin/linux/lamdera -o bin/lamdera && chmod a+x bin/lamdera && export ELM_HOME=\"$NETLIFY_BUILD_BASE/cache/elm\" && npm install && npm run build"
5
5
 
6
6
  [dev]
7
7
  command = "npm start"
8
8
  targetPort = 1234
9
9
  autoLaunch = true
10
10
  framework = "#custom"
11
+
12
+ [functions]
13
+ node_bundler = "esbuild"