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
@@ -13,15 +13,15 @@ import Internal.ApiRoute
13
13
  import Json.Decode as Decode
14
14
  import Json.Encode as Encode
15
15
  import Pages.ProgramConfig exposing (ProgramConfig)
16
- import Path exposing (Path)
17
16
  import Regex
18
17
  import Url exposing (Url)
18
+ import UrlPath exposing (UrlPath)
19
19
 
20
20
 
21
21
  type RequestPayload route
22
- = Page { path : Path, frontmatter : route }
22
+ = Page { path : UrlPath, frontmatter : route }
23
23
  | Api ( String, ApiRoute.ApiRoute ApiRoute.Response )
24
- | NotFound Path
24
+ | NotFound UrlPath
25
25
 
26
26
 
27
27
  type RenderRequest route
@@ -32,7 +32,7 @@ default : RenderRequest route
32
32
  default =
33
33
  SinglePage
34
34
  HtmlAndJson
35
- (NotFound (Path.fromString "/error"))
35
+ (NotFound (UrlPath.fromString "/error"))
36
36
  Encode.null
37
37
 
38
38
 
@@ -119,12 +119,12 @@ requestPayloadDecoder config =
119
119
  ( path, justApi ) |> Api
120
120
 
121
121
  Nothing ->
122
- NotFound (Path.fromString path)
122
+ NotFound (UrlPath.fromString path)
123
123
 
124
124
  else
125
125
  Page
126
126
  { frontmatter = route
127
- , path = config.routeToPath route |> Path.join
127
+ , path = config.routeToPath route |> UrlPath.join
128
128
  }
129
129
 
130
130
  Nothing ->
@@ -133,7 +133,7 @@ requestPayloadDecoder config =
133
133
  ( path, justApi ) |> Api
134
134
 
135
135
  Nothing ->
136
- NotFound (Path.fromString path)
136
+ NotFound (UrlPath.fromString path)
137
137
  )
138
138
  )
139
139
  |> Decode.field "path"
@@ -1,16 +1,14 @@
1
- module RequestsAndPending exposing (RequestsAndPending, Response(..), ResponseBody(..), batchDecoder, bodyEncoder, decoder, get)
1
+ module RequestsAndPending exposing (HttpError(..), RawResponse, RequestsAndPending, Response(..), ResponseBody(..), bodyEncoder, get)
2
2
 
3
3
  import Base64
4
4
  import Bytes exposing (Bytes)
5
- import Codec
6
5
  import Dict exposing (Dict)
7
6
  import Json.Decode as Decode exposing (Decoder)
8
7
  import Json.Encode as Encode
9
- import Pages.StaticHttp.Request
10
8
 
11
9
 
12
10
  type alias RequestsAndPending =
13
- Dict String (Maybe Response)
11
+ Decode.Value
14
12
 
15
13
 
16
14
  type ResponseBody
@@ -20,18 +18,6 @@ type ResponseBody
20
18
  | WhateverBody
21
19
 
22
20
 
23
- batchDecoder : Decoder (List { request : Pages.StaticHttp.Request.Request, response : Response })
24
- batchDecoder =
25
- Decode.map2 (\request response -> { request = request, response = response })
26
- (Decode.field "request"
27
- (Pages.StaticHttp.Request.codec
28
- |> Codec.decoder
29
- )
30
- )
31
- (Decode.field "response" decoder)
32
- |> Decode.list
33
-
34
-
35
21
  decoder : Decoder Response
36
22
  decoder =
37
23
  Decode.map2 Response
@@ -115,8 +101,39 @@ responseDecoder =
115
101
  (Decode.field "url" Decode.string)
116
102
 
117
103
 
118
- get : String -> RequestsAndPending -> Maybe Response
104
+ get : String -> RequestsAndPending -> Maybe (Result HttpError Response)
119
105
  get key requestsAndPending =
120
- requestsAndPending
121
- |> Dict.get key
122
- |> Maybe.andThen identity
106
+ Decode.decodeValue
107
+ (Decode.field key
108
+ (Decode.field "response"
109
+ (Decode.oneOf
110
+ [ Decode.field "elm-pages-internal-error" errorDecoder |> Decode.map Err
111
+ , decoder |> Decode.map Ok
112
+ ]
113
+ )
114
+ )
115
+ )
116
+ requestsAndPending
117
+ |> Result.toMaybe
118
+
119
+
120
+ type HttpError
121
+ = NetworkError
122
+ | Timeout
123
+
124
+
125
+ errorDecoder : Decoder HttpError
126
+ errorDecoder =
127
+ Decode.string
128
+ |> Decode.andThen
129
+ (\errorCode ->
130
+ case errorCode of
131
+ "NetworkError" ->
132
+ Decode.succeed NetworkError
133
+
134
+ "Timeout" ->
135
+ Decode.succeed Timeout
136
+
137
+ _ ->
138
+ Decode.fail "Unhandled error code."
139
+ )
@@ -0,0 +1,26 @@
1
+ module Result.Extra exposing (combine, isOk, merge)
2
+
3
+
4
+ isOk : Result x a -> Bool
5
+ isOk result =
6
+ case result of
7
+ Ok _ ->
8
+ True
9
+
10
+ Err _ ->
11
+ False
12
+
13
+
14
+ merge : Result a a -> a
15
+ merge r =
16
+ case r of
17
+ Ok rr ->
18
+ rr
19
+
20
+ Err rr ->
21
+ rr
22
+
23
+
24
+ combine : List (Result x a) -> Result x (List a)
25
+ combine =
26
+ List.foldr (Result.map2 (::)) (Ok [])