elm-pages 3.0.0-beta.8 → 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.
- package/README.md +11 -2
- package/adapter/netlify.js +207 -0
- package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2730 -2938
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +16840 -13653
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
- package/generator/dead-code-review/elm.json +9 -7
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +59 -10
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +52 -36
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
- package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
- package/generator/review/elm.json +10 -10
- package/generator/src/RouteBuilder.elm +93 -128
- package/generator/src/SharedTemplate.elm +8 -7
- package/generator/src/SiteConfig.elm +3 -2
- package/generator/src/basepath-middleware.js +3 -3
- package/generator/src/build.js +147 -63
- package/generator/src/cli.js +292 -88
- package/generator/src/codegen.js +29 -27
- package/generator/src/compatibility-key.js +3 -0
- package/generator/src/compile-elm.js +43 -26
- package/generator/src/config.js +2 -4
- package/generator/src/copy-dir.js +2 -2
- package/generator/src/dev-server.js +159 -92
- package/generator/src/dir-helpers.js +9 -26
- package/generator/src/elm-codegen.js +5 -4
- package/generator/src/elm-file-constants.js +2 -3
- package/generator/src/error-formatter.js +12 -11
- package/generator/src/file-helpers.js +3 -4
- package/generator/src/generate-template-module-connector.js +23 -23
- package/generator/src/init.js +9 -8
- package/generator/src/pre-render-html.js +10 -13
- package/generator/src/render-test.js +109 -0
- package/generator/src/render-worker.js +25 -28
- package/generator/src/render.js +321 -142
- package/generator/src/request-cache.js +265 -162
- package/generator/src/resolve-elm-module.js +64 -0
- package/generator/src/rewrite-client-elm-json.js +6 -5
- package/generator/src/rewrite-elm-json-help.js +56 -0
- package/generator/src/rewrite-elm-json.js +17 -7
- package/generator/src/route-codegen-helpers.js +16 -31
- package/generator/src/seo-renderer.js +12 -7
- package/generator/src/vite-utils.js +1 -2
- package/generator/static-code/elm-pages.js +10 -0
- package/generator/static-code/hmr.js +79 -13
- package/generator/template/app/Api.elm +3 -2
- package/generator/template/app/Effect.elm +155 -0
- package/generator/template/app/ErrorPage.elm +49 -6
- package/generator/template/app/Route/Blog/Slug_.elm +86 -0
- package/generator/template/app/Route/Greet.elm +107 -0
- package/generator/template/app/Route/Hello.elm +119 -0
- package/generator/template/app/Route/Index.elm +26 -25
- package/generator/template/app/Shared.elm +38 -39
- package/generator/template/app/Site.elm +4 -7
- package/generator/template/app/View.elm +9 -8
- package/generator/template/codegen/elm.codegen.json +18 -0
- package/generator/template/custom-backend-task.ts +3 -0
- package/generator/template/elm-pages.config.mjs +13 -0
- package/generator/template/elm-tooling.json +0 -3
- package/generator/template/elm.json +25 -20
- package/generator/template/index.ts +1 -2
- package/generator/template/netlify.toml +4 -1
- package/generator/template/package.json +10 -4
- package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
- package/generator/template/script/custom-backend-task.ts +3 -0
- package/generator/template/script/elm.json +61 -0
- package/generator/template/script/src/AddRoute.elm +312 -0
- package/generator/template/script/src/Stars.elm +42 -0
- package/package.json +30 -27
- package/src/ApiRoute.elm +249 -85
- package/src/BackendTask/Custom.elm +325 -0
- package/src/BackendTask/Env.elm +90 -0
- package/src/{DataSource → BackendTask}/File.elm +171 -56
- package/src/{DataSource → BackendTask}/Glob.elm +136 -125
- package/src/BackendTask/Http.elm +679 -0
- package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
- package/src/BackendTask/Internal/Request.elm +69 -0
- package/src/BackendTask/Random.elm +79 -0
- package/src/BackendTask/Time.elm +47 -0
- package/src/BackendTask.elm +531 -0
- package/src/FatalError.elm +90 -0
- package/src/FormData.elm +21 -18
- package/src/Head/Seo.elm +4 -4
- package/src/Head.elm +237 -7
- package/src/Internal/ApiRoute.elm +7 -5
- package/src/Internal/Request.elm +84 -4
- package/src/PageServerResponse.elm +6 -1
- package/src/Pages/ConcurrentSubmission.elm +127 -0
- package/src/Pages/Form.elm +340 -0
- package/src/Pages/FormData.elm +19 -0
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/FatalError.elm +5 -0
- package/src/Pages/Internal/Msg.elm +93 -0
- package/src/Pages/Internal/NotFoundReason.elm +4 -4
- package/src/Pages/Internal/Platform/Cli.elm +629 -767
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
- package/src/Pages/Internal/Platform/Effect.elm +1 -2
- package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
- package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
- package/src/Pages/Internal/Platform.elm +330 -203
- package/src/Pages/Internal/ResponseSketch.elm +2 -2
- package/src/Pages/Internal/Script.elm +17 -0
- package/src/Pages/Internal/StaticHttpBody.elm +35 -1
- package/src/Pages/Manifest.elm +52 -11
- package/src/Pages/Navigation.elm +85 -0
- package/src/Pages/PageUrl.elm +26 -12
- package/src/Pages/ProgramConfig.elm +32 -22
- package/src/Pages/Script.elm +166 -0
- package/src/Pages/SiteConfig.elm +3 -2
- package/src/Pages/StaticHttp/Request.elm +2 -2
- package/src/Pages/StaticHttpRequest.elm +23 -99
- package/src/Pages/Url.elm +3 -3
- package/src/PagesMsg.elm +88 -0
- package/src/QueryParams.elm +21 -172
- package/src/RenderRequest.elm +7 -7
- package/src/RequestsAndPending.elm +37 -20
- package/src/Result/Extra.elm +26 -0
- package/src/Scaffold/Form.elm +569 -0
- package/src/Scaffold/Route.elm +1431 -0
- package/src/Server/Request.elm +476 -1001
- package/src/Server/Response.elm +130 -36
- package/src/Server/Session.elm +181 -111
- package/src/Server/SetCookie.elm +80 -32
- package/src/Stub.elm +53 -0
- package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
- package/src/{Path.elm → UrlPath.elm} +33 -36
- package/generator/template/public/images/icon-png.png +0 -0
- package/src/DataSource/Env.elm +0 -38
- package/src/DataSource/Http.elm +0 -446
- package/src/DataSource/Internal/Request.elm +0 -20
- package/src/DataSource/Port.elm +0 -90
- package/src/DataSource.elm +0 -538
- package/src/Form/Field.elm +0 -717
- package/src/Form/FieldStatus.elm +0 -36
- package/src/Form/FieldView.elm +0 -417
- package/src/Form/FormData.elm +0 -22
- package/src/Form/Validation.elm +0 -391
- package/src/Form/Value.elm +0 -118
- package/src/Form.elm +0 -1683
- package/src/FormDecoder.elm +0 -102
- package/src/Pages/FormState.elm +0 -256
- package/src/Pages/Generate.elm +0 -1151
- package/src/Pages/Internal/Form.elm +0 -17
- package/src/Pages/Msg.elm +0 -79
- package/src/Pages/Transition.elm +0 -70
package/src/Server/Response.elm
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Server.Response exposing
|
|
2
2
|
( Response
|
|
3
|
-
, json, plainText, temporaryRedirect, permanentRedirect
|
|
4
|
-
, emptyBody, body, bytesBody, base64Body
|
|
5
3
|
, render
|
|
6
|
-
, errorPage, mapError
|
|
7
4
|
, map
|
|
5
|
+
, errorPage, mapError
|
|
6
|
+
, temporaryRedirect, permanentRedirect
|
|
7
|
+
, json, plainText, emptyBody, body, bytesBody, base64Body
|
|
8
8
|
, withHeader, withHeaders, withStatusCode, withSetCookieHeader
|
|
9
9
|
, toJson
|
|
10
10
|
)
|
|
@@ -16,41 +16,72 @@ module Server.Response exposing
|
|
|
16
16
|
|
|
17
17
|
@docs Response
|
|
18
18
|
|
|
19
|
-
There are two top-level response types:
|
|
20
|
-
|
|
21
|
-
1. Server Responses
|
|
22
|
-
2. Render Responses
|
|
23
|
-
|
|
24
|
-
A Server Response is a way to directly send a low-level server response, with no additional magic. You can set a String body,
|
|
25
|
-
a list of headers, the status code, etc. The Server Response helpers like `json` and `temporaryRedirect` are just helpers for
|
|
26
|
-
building up those low-level Server Responses.
|
|
27
|
-
|
|
28
|
-
Render Responses are a little more special in the way they are connected to your elm-pages app. They allow you to render
|
|
29
|
-
the current Route Module. To do that, you'll need to pass along the `data` for your Route Module.
|
|
30
|
-
|
|
31
|
-
You can use `withHeader` and `withStatusCode` to customize either type of Response (Server Responses or Render Responses).
|
|
32
19
|
|
|
20
|
+
## Response's for Route Modules
|
|
33
21
|
|
|
34
|
-
|
|
22
|
+
In a server-rendered Route Module, you return a [`Response`](#Response). You'll typically want to return one of 3 types of Responses
|
|
23
|
+
from your Route Modules:
|
|
35
24
|
|
|
36
|
-
|
|
25
|
+
- [`Server.Response.render`](#render) to render the current Route Module
|
|
26
|
+
- [`Server.Response.errorPage`](#errorPage) to render an ErrorPage
|
|
27
|
+
- [`Server.Response.temporaryRedirect`](#temporaryRedirect) to redirect to another page (the easiest way to build a redirect response is with `Route.redirectTo : Route -> Response data error`).
|
|
37
28
|
|
|
29
|
+
```
|
|
30
|
+
import Server.Response as Response
|
|
31
|
+
import Route
|
|
38
32
|
|
|
39
|
-
|
|
33
|
+
data routeParams request =
|
|
34
|
+
case loggedInUser request of
|
|
35
|
+
Just user ->
|
|
36
|
+
findProjectById routeParams.id user
|
|
37
|
+
|> BackendTask.map
|
|
38
|
+
(\maybeProject ->
|
|
39
|
+
case maybeProject of
|
|
40
|
+
Just project ->
|
|
41
|
+
Response.render project
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
Nothing ->
|
|
44
|
+
Response.errorPage ErrorPage.notFound
|
|
45
|
+
)
|
|
46
|
+
Nothing ->
|
|
47
|
+
-- the generated module `Route` contains a high-level helper for returning a redirect `Response`
|
|
48
|
+
Route.redirectTo Route.Login
|
|
49
|
+
```
|
|
42
50
|
|
|
43
51
|
|
|
44
52
|
## Render Responses
|
|
45
53
|
|
|
46
54
|
@docs render
|
|
47
55
|
|
|
56
|
+
@docs map
|
|
57
|
+
|
|
48
58
|
|
|
49
59
|
## Rendering Error Pages
|
|
50
60
|
|
|
51
61
|
@docs errorPage, mapError
|
|
52
62
|
|
|
53
|
-
|
|
63
|
+
|
|
64
|
+
## Redirects
|
|
65
|
+
|
|
66
|
+
@docs temporaryRedirect, permanentRedirect
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## Response's for Server-Rendered ApiRoutes
|
|
70
|
+
|
|
71
|
+
When defining your [server-rendered `ApiRoute`'s (`ApiRoute.serverRender`)](ApiRoute#serverRender) in your `app/Api.elm` module,
|
|
72
|
+
you can send a low-level server Response. You can set a String body,
|
|
73
|
+
a list of headers, the status code, etc. The Server Response helpers like `json` and `temporaryRedirect` are just helpers for
|
|
74
|
+
building up those low-level Server Responses.
|
|
75
|
+
|
|
76
|
+
Render Responses are a little more special in the way they are connected to your elm-pages app. They allow you to render
|
|
77
|
+
the current Route Module. To do that, you'll need to pass along the `data` for your Route Module.
|
|
78
|
+
|
|
79
|
+
You can use `withHeader` and `withStatusCode` to customize either type of Response (Server Responses or Render Responses).
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Response Body
|
|
83
|
+
|
|
84
|
+
@docs json, plainText, emptyBody, body, bytesBody, base64Body
|
|
54
85
|
|
|
55
86
|
|
|
56
87
|
## Amending Responses
|
|
@@ -76,7 +107,8 @@ type alias Response data error =
|
|
|
76
107
|
PageServerResponse data error
|
|
77
108
|
|
|
78
109
|
|
|
79
|
-
{-|
|
|
110
|
+
{-| Maps the `data` for a Render response. Usually not needed, but always good to have the option.
|
|
111
|
+
-}
|
|
80
112
|
map : (data -> mappedData) -> Response data error -> Response mappedData error
|
|
81
113
|
map mapFn pageServerResponse =
|
|
82
114
|
case pageServerResponse of
|
|
@@ -90,7 +122,8 @@ map mapFn pageServerResponse =
|
|
|
90
122
|
ErrorPage error response
|
|
91
123
|
|
|
92
124
|
|
|
93
|
-
{-|
|
|
125
|
+
{-| Maps the `error` for an ErrorPage response. Usually not needed, but always good to have the option.
|
|
126
|
+
-}
|
|
94
127
|
mapError : (errorPage -> mappedErrorPage) -> Response data errorPage -> Response data mappedErrorPage
|
|
95
128
|
mapError mapFn pageServerResponse =
|
|
96
129
|
case pageServerResponse of
|
|
@@ -104,7 +137,11 @@ mapError mapFn pageServerResponse =
|
|
|
104
137
|
ErrorPage (mapFn error) response
|
|
105
138
|
|
|
106
139
|
|
|
107
|
-
{-| -
|
|
140
|
+
{-| Build a `Response` with a String body. Sets the `Content-Type` to `text/plain`.
|
|
141
|
+
|
|
142
|
+
Response.plainText "Hello"
|
|
143
|
+
|
|
144
|
+
-}
|
|
108
145
|
plainText : String -> Response data error
|
|
109
146
|
plainText string =
|
|
110
147
|
{ statusCode = 200
|
|
@@ -115,7 +152,11 @@ plainText string =
|
|
|
115
152
|
|> ServerResponse
|
|
116
153
|
|
|
117
154
|
|
|
118
|
-
{-| -
|
|
155
|
+
{-| Render the Route Module with the supplied data. Used for both the `data` and `action` functions in a server-rendered Route Module.
|
|
156
|
+
|
|
157
|
+
Response.render project
|
|
158
|
+
|
|
159
|
+
-}
|
|
119
160
|
render : data -> Response data error
|
|
120
161
|
render data =
|
|
121
162
|
RenderPage
|
|
@@ -123,13 +164,19 @@ render data =
|
|
|
123
164
|
data
|
|
124
165
|
|
|
125
166
|
|
|
126
|
-
{-|
|
|
167
|
+
{-| Instead of rendering the current Route Module, you can render an `ErrorPage` such as a 404 page or a 500 error page.
|
|
168
|
+
|
|
169
|
+
[Read more about Error Pages](https://elm-pages.com/docs/error-pages) to learn about
|
|
170
|
+
defining and rendering your custom ErrorPage type.
|
|
171
|
+
|
|
172
|
+
-}
|
|
127
173
|
errorPage : errorPage -> Response data errorPage
|
|
128
174
|
errorPage errorPage_ =
|
|
129
175
|
ErrorPage errorPage_ { headers = [] }
|
|
130
176
|
|
|
131
177
|
|
|
132
|
-
{-|
|
|
178
|
+
{-| Build a `Response` with no HTTP response body.
|
|
179
|
+
-}
|
|
133
180
|
emptyBody : Response data error
|
|
134
181
|
emptyBody =
|
|
135
182
|
{ statusCode = 200
|
|
@@ -140,7 +187,8 @@ emptyBody =
|
|
|
140
187
|
|> ServerResponse
|
|
141
188
|
|
|
142
189
|
|
|
143
|
-
{-| -
|
|
190
|
+
{-| Same as [`plainText`](#plainText), but doesn't set a `Content-Type`.
|
|
191
|
+
-}
|
|
144
192
|
body : String -> Response data error
|
|
145
193
|
body body_ =
|
|
146
194
|
{ statusCode = 200
|
|
@@ -151,7 +199,13 @@ body body_ =
|
|
|
151
199
|
|> ServerResponse
|
|
152
200
|
|
|
153
201
|
|
|
154
|
-
{-|
|
|
202
|
+
{-| Build a `Response` with a String that should represent a base64 encoded value.
|
|
203
|
+
|
|
204
|
+
Your adapter will need to handle `isBase64Encoded` to turn it into the appropriate response.
|
|
205
|
+
|
|
206
|
+
Response.base64Body "SGVsbG8gV29ybGQ="
|
|
207
|
+
|
|
208
|
+
-}
|
|
155
209
|
base64Body : String -> Response data error
|
|
156
210
|
base64Body base64String =
|
|
157
211
|
{ statusCode = 200
|
|
@@ -162,7 +216,12 @@ base64Body base64String =
|
|
|
162
216
|
|> ServerResponse
|
|
163
217
|
|
|
164
218
|
|
|
165
|
-
{-|
|
|
219
|
+
{-| Build a `Response` with a `Bytes`.
|
|
220
|
+
|
|
221
|
+
Under the hood, it will be converted to a base64 encoded String with `isBase64Encoded = True`.
|
|
222
|
+
Your adapter will need to handle `isBase64Encoded` to turn it into the appropriate response.
|
|
223
|
+
|
|
224
|
+
-}
|
|
166
225
|
bytesBody : Bytes -> Response data error
|
|
167
226
|
bytesBody bytes =
|
|
168
227
|
{ statusCode = 200
|
|
@@ -173,7 +232,15 @@ bytesBody bytes =
|
|
|
173
232
|
|> ServerResponse
|
|
174
233
|
|
|
175
234
|
|
|
176
|
-
{-|
|
|
235
|
+
{-| Build a JSON body from a `Json.Encode.Value`.
|
|
236
|
+
|
|
237
|
+
Json.Encode.object
|
|
238
|
+
[ ( "message", Json.Encode.string "Hello" ) ]
|
|
239
|
+
|> Response.json
|
|
240
|
+
|
|
241
|
+
Sets the `Content-Type` to `application/json`.
|
|
242
|
+
|
|
243
|
+
-}
|
|
177
244
|
json : Json.Encode.Value -> Response data error
|
|
178
245
|
json jsonValue =
|
|
179
246
|
{ statusCode = 200
|
|
@@ -226,7 +293,12 @@ temporaryRedirect url =
|
|
|
226
293
|
|> ServerResponse
|
|
227
294
|
|
|
228
295
|
|
|
229
|
-
{-| -
|
|
296
|
+
{-| Set the [HTTP Response status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) for the `Response`.
|
|
297
|
+
|
|
298
|
+
Response.plainText "Not Authorized"
|
|
299
|
+
|> Response.withStatusCode 401
|
|
300
|
+
|
|
301
|
+
-}
|
|
230
302
|
withStatusCode : Int -> Response data Never -> Response data Never
|
|
231
303
|
withStatusCode statusCode serverResponse =
|
|
232
304
|
case serverResponse of
|
|
@@ -240,7 +312,14 @@ withStatusCode statusCode serverResponse =
|
|
|
240
312
|
never error
|
|
241
313
|
|
|
242
314
|
|
|
243
|
-
{-|
|
|
315
|
+
{-| Add a header to the response.
|
|
316
|
+
|
|
317
|
+
Response.plainText "Hello!"
|
|
318
|
+
-- allow CORS requests
|
|
319
|
+
|> Response.withHeader "Access-Control-Allow-Origin" "*"
|
|
320
|
+
|> Response.withHeader "Access-Control-Allow-Methods" "GET, POST, OPTIONS"
|
|
321
|
+
|
|
322
|
+
-}
|
|
244
323
|
withHeader : String -> String -> Response data error -> Response data error
|
|
245
324
|
withHeader name value serverResponse =
|
|
246
325
|
case serverResponse of
|
|
@@ -254,7 +333,16 @@ withHeader name value serverResponse =
|
|
|
254
333
|
ErrorPage error { response | headers = ( name, value ) :: response.headers }
|
|
255
334
|
|
|
256
335
|
|
|
257
|
-
{-|
|
|
336
|
+
{-| Same as [`withHeader`](#withHeader), but allows you to add multiple headers at once.
|
|
337
|
+
|
|
338
|
+
Response.plainText "Hello!"
|
|
339
|
+
-- allow CORS requests
|
|
340
|
+
|> Response.withHeaders
|
|
341
|
+
[ ( "Access-Control-Allow-Origin", "*" )
|
|
342
|
+
, ( "Access-Control-Allow-Methods", "GET, POST, OPTIONS" )
|
|
343
|
+
]
|
|
344
|
+
|
|
345
|
+
-}
|
|
258
346
|
withHeaders : List ( String, String ) -> Response data error -> Response data error
|
|
259
347
|
withHeaders headers serverResponse =
|
|
260
348
|
case serverResponse of
|
|
@@ -268,7 +356,12 @@ withHeaders headers serverResponse =
|
|
|
268
356
|
ErrorPage error { response | headers = headers ++ response.headers }
|
|
269
357
|
|
|
270
358
|
|
|
271
|
-
{-| -
|
|
359
|
+
{-| Set a [`Server.SetCookie`](Server-SetCookie) value on the response.
|
|
360
|
+
|
|
361
|
+
The easiest way to manage cookies in your Routes is through the [`Server.Session`](Server-Session) API, but this
|
|
362
|
+
provides a more granular way to set cookies.
|
|
363
|
+
|
|
364
|
+
-}
|
|
272
365
|
withSetCookieHeader : SetCookie -> Response data error -> Response data error
|
|
273
366
|
withSetCookieHeader cookie response =
|
|
274
367
|
response
|
|
@@ -278,7 +371,8 @@ withSetCookieHeader cookie response =
|
|
|
278
371
|
)
|
|
279
372
|
|
|
280
373
|
|
|
281
|
-
{-|
|
|
374
|
+
{-| For internal use or more advanced use cases for meta frameworks.
|
|
375
|
+
-}
|
|
282
376
|
toJson : Response Never Never -> Json.Encode.Value
|
|
283
377
|
toJson response =
|
|
284
378
|
case response of
|