elm-pages 3.0.0-beta.4 → 3.0.0-beta.41

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 (148) hide show
  1. package/README.md +10 -1
  2. package/adapter/netlify.js +207 -0
  3. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2828 -2933
  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 +1447 -342
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +17004 -13817
  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 +1447 -342
  27. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25025 -21739
  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 +121 -114
  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 +209 -92
  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 +39 -0
  41. package/generator/src/copy-dir.js +2 -2
  42. package/generator/src/dev-server.js +176 -138
  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 +39 -28
  51. package/generator/src/render-test.js +109 -0
  52. package/generator/src/render-worker.js +25 -28
  53. package/generator/src/render.js +321 -142
  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 +12 -7
  61. package/generator/src/vite-utils.js +77 -0
  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 +6 -5
  65. package/generator/template/app/Effect.elm +123 -0
  66. package/generator/template/app/ErrorPage.elm +37 -6
  67. package/generator/template/app/Route/Index.elm +17 -10
  68. package/generator/template/app/Shared.elm +24 -47
  69. package/generator/template/app/Site.elm +19 -6
  70. package/generator/template/app/View.elm +1 -8
  71. package/generator/template/elm-tooling.json +0 -3
  72. package/generator/template/elm.json +32 -24
  73. package/generator/template/package.json +10 -4
  74. package/package.json +30 -27
  75. package/src/ApiRoute.elm +199 -61
  76. package/src/BackendTask/Custom.elm +325 -0
  77. package/src/BackendTask/Env.elm +90 -0
  78. package/src/{DataSource → BackendTask}/File.elm +171 -56
  79. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  80. package/src/BackendTask/Http.elm +679 -0
  81. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  82. package/src/BackendTask/Internal/Request.elm +69 -0
  83. package/src/BackendTask/Random.elm +79 -0
  84. package/src/BackendTask/Time.elm +47 -0
  85. package/src/BackendTask.elm +531 -0
  86. package/src/FatalError.elm +90 -0
  87. package/src/Head/Seo.elm +4 -4
  88. package/src/Head.elm +237 -7
  89. package/src/HtmlPrinter.elm +7 -3
  90. package/src/Internal/ApiRoute.elm +7 -5
  91. package/src/PageServerResponse.elm +6 -1
  92. package/src/Pages/ConcurrentSubmission.elm +127 -0
  93. package/src/Pages/Form.elm +340 -0
  94. package/src/Pages/FormData.elm +18 -0
  95. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  96. package/src/Pages/Internal/FatalError.elm +5 -0
  97. package/src/Pages/Internal/Msg.elm +93 -0
  98. package/src/Pages/Internal/NotFoundReason.elm +4 -4
  99. package/src/Pages/Internal/Platform/Cli.elm +617 -768
  100. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  101. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  102. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  103. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  104. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  105. package/src/Pages/Internal/Platform.elm +359 -225
  106. package/src/Pages/Internal/ResponseSketch.elm +2 -2
  107. package/src/Pages/Internal/Script.elm +17 -0
  108. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  109. package/src/Pages/Manifest.elm +52 -11
  110. package/src/Pages/Navigation.elm +87 -0
  111. package/src/Pages/PageUrl.elm +26 -12
  112. package/src/Pages/ProgramConfig.elm +35 -23
  113. package/src/Pages/Script.elm +166 -0
  114. package/src/Pages/SiteConfig.elm +3 -2
  115. package/src/Pages/StaticHttp/Request.elm +2 -2
  116. package/src/Pages/StaticHttpRequest.elm +23 -99
  117. package/src/Pages/Url.elm +3 -3
  118. package/src/PagesMsg.elm +88 -0
  119. package/src/QueryParams.elm +21 -172
  120. package/src/RenderRequest.elm +7 -7
  121. package/src/RequestsAndPending.elm +37 -20
  122. package/src/Result/Extra.elm +26 -0
  123. package/src/Scaffold/Form.elm +569 -0
  124. package/src/Scaffold/Route.elm +1411 -0
  125. package/src/Server/Request.elm +74 -72
  126. package/src/Server/Session.elm +62 -42
  127. package/src/Server/SetCookie.elm +80 -32
  128. package/src/Stub.elm +53 -0
  129. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  130. package/src/{Path.elm → UrlPath.elm} +33 -36
  131. package/src/DataSource/Env.elm +0 -38
  132. package/src/DataSource/Http.elm +0 -446
  133. package/src/DataSource/Internal/Request.elm +0 -20
  134. package/src/DataSource/Port.elm +0 -90
  135. package/src/DataSource.elm +0 -538
  136. package/src/Form/Field.elm +0 -717
  137. package/src/Form/FieldStatus.elm +0 -36
  138. package/src/Form/FieldView.elm +0 -417
  139. package/src/Form/FormData.elm +0 -22
  140. package/src/Form/Validation.elm +0 -391
  141. package/src/Form/Value.elm +0 -118
  142. package/src/Form.elm +0 -1683
  143. package/src/FormDecoder.elm +0 -102
  144. package/src/Pages/FormState.elm +0 -256
  145. package/src/Pages/Generate.elm +0 -800
  146. package/src/Pages/Internal/Form.elm +0 -17
  147. package/src/Pages/Msg.elm +0 -79
  148. 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 [])