elm-pages 3.0.0-beta.12 → 3.0.0-beta.14

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 (77) hide show
  1. package/README.md +1 -1
  2. package/codegen/elm-pages-codegen.js +1496 -1126
  3. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +151 -39
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +1 -1
  13. package/generator/dead-code-review/elm.json +3 -2
  14. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +58 -10
  15. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +45 -29
  16. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  17. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  18. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  20. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +45 -4
  21. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  22. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +1 -1
  23. package/generator/review/elm.json +3 -3
  24. package/generator/src/RouteBuilder.elm +66 -52
  25. package/generator/src/SharedTemplate.elm +3 -2
  26. package/generator/src/SiteConfig.elm +3 -2
  27. package/generator/src/build.js +6 -6
  28. package/generator/src/cli.js +12 -7
  29. package/generator/src/compatibility-key.js +1 -1
  30. package/generator/src/dev-server.js +7 -7
  31. package/generator/src/render-test.js +109 -0
  32. package/generator/src/render.js +77 -51
  33. package/generator/src/request-cache.js +149 -158
  34. package/generator/template/app/Api.elm +2 -2
  35. package/generator/template/app/Route/Index.elm +3 -3
  36. package/generator/template/app/Shared.elm +3 -3
  37. package/generator/template/app/Site.elm +3 -3
  38. package/package.json +11 -11
  39. package/src/ApiRoute.elm +63 -57
  40. package/src/BackendTask/Env.elm +87 -0
  41. package/src/{DataSource → BackendTask}/File.elm +89 -43
  42. package/src/{DataSource → BackendTask}/Glob.elm +134 -125
  43. package/src/BackendTask/Http.elm +637 -0
  44. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  45. package/src/BackendTask/Internal/Request.elm +28 -0
  46. package/src/BackendTask/Port.elm +202 -0
  47. package/src/{DataSource.elm → BackendTask.elm} +223 -207
  48. package/src/Exception.elm +37 -0
  49. package/src/Form.elm +20 -20
  50. package/src/Head.elm +7 -7
  51. package/src/Internal/ApiRoute.elm +7 -5
  52. package/src/PageServerResponse.elm +6 -1
  53. package/src/Pages/Generate.elm +35 -63
  54. package/src/Pages/Internal/Platform/Cli.elm +422 -731
  55. package/src/Pages/Internal/Platform/Cli.elm.bak +22 -22
  56. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  57. package/src/Pages/Internal/Platform/Effect.elm +0 -1
  58. package/src/Pages/Internal/Platform/GeneratorApplication.elm +53 -113
  59. package/src/Pages/Internal/Platform/StaticResponses.elm +72 -256
  60. package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -4
  61. package/src/Pages/Internal/Platform.elm +25 -31
  62. package/src/Pages/Internal/Script.elm +17 -0
  63. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  64. package/src/Pages/Manifest.elm +5 -4
  65. package/src/Pages/ProgramConfig.elm +8 -7
  66. package/src/Pages/Script.elm +34 -25
  67. package/src/Pages/SiteConfig.elm +3 -2
  68. package/src/Pages/StaticHttp/Request.elm +2 -2
  69. package/src/Pages/StaticHttpRequest.elm +37 -90
  70. package/src/RequestsAndPending.elm +8 -19
  71. package/src/Server/Request.elm +14 -14
  72. package/src/Server/Session.elm +34 -34
  73. package/src/Server/SetCookie.elm +1 -1
  74. package/src/DataSource/Env.elm +0 -62
  75. package/src/DataSource/Http.elm +0 -446
  76. package/src/DataSource/Internal/Request.elm +0 -20
  77. package/src/DataSource/Port.elm +0 -90
@@ -0,0 +1,37 @@
1
+ module Exception exposing (Throwable, Catchable(..), fromString, fromStringWithValue, throw)
2
+
3
+ {-|
4
+
5
+ @docs Throwable, Catchable, fromString, fromStringWithValue, throw
6
+
7
+ -}
8
+
9
+
10
+ {-| -}
11
+ type alias Throwable =
12
+ Catchable ()
13
+
14
+
15
+ {-| -}
16
+ type Catchable error
17
+ = Catchable error { title : String, body : String }
18
+
19
+
20
+ {-| -}
21
+ fromString : String -> Catchable ()
22
+ fromString string =
23
+ fromStringWithValue string ()
24
+
25
+
26
+ {-| -}
27
+ fromStringWithValue : String -> value -> Catchable value
28
+ fromStringWithValue string value =
29
+ Catchable value { title = "Custom Error", body = string }
30
+
31
+
32
+ {-| -}
33
+ throw : Catchable error -> Catchable ()
34
+ throw exception =
35
+ case exception of
36
+ Catchable _ string ->
37
+ Catchable () string
package/src/Form.elm CHANGED
@@ -23,7 +23,7 @@ module Form exposing
23
23
  - Showing validation errors on the client-side
24
24
  - Receiving a form submission on the server-side
25
25
  - Using the exact same client-side validations on the server-side
26
- - Letting you run server-only Validations with DataSource's (things like checking for a unique username)
26
+ - Letting you run server-only Validations with BackendTask's (things like checking for a unique username)
27
27
 
28
28
  Because elm-pages is a framework, it has its own internal Model and Msg's. That means you, the user,
29
29
  can offload some of the responsibility to elm-pages and build an interactive form with real-time
@@ -64,7 +64,7 @@ them into a type and/or errors.
64
64
 
65
65
  Totally customizable. Uses [`Form.FieldView`](Form-FieldView) to render all of the fields declared.
66
66
 
67
- import DataSource exposing (DataSource)
67
+ import BackendTask exposing (BackendTask)
68
68
  import ErrorPage exposing (ErrorPage)
69
69
  import Form
70
70
  import Form.Field as Field
@@ -184,7 +184,7 @@ Totally customizable. Uses [`Form.FieldView`](Form-FieldView) to render all of t
184
184
 
185
185
  ### Step 3 - Handle Server-Side Form Submissions
186
186
 
187
- action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
187
+ action : RouteParams -> Request.Parser (BackendTask (Response ActionData ErrorPage))
188
188
  action routeParams =
189
189
  Request.formData [ signupForm ]
190
190
  |> Request.map
@@ -192,8 +192,8 @@ Totally customizable. Uses [`Form.FieldView`](Form-FieldView) to render all of t
192
192
  case signupResult of
193
193
  Ok newUser ->
194
194
  newUser
195
- |> myCreateUserDataSource
196
- |> DataSource.map
195
+ |> myCreateUserBackendTask
196
+ |> BackendTask.map
197
197
  (\() ->
198
198
  -- redirect to the home page
199
199
  -- after successful sign-up
@@ -202,12 +202,12 @@ Totally customizable. Uses [`Form.FieldView`](Form-FieldView) to render all of t
202
202
 
203
203
  Err _ ->
204
204
  Route.redirectTo Route.Login
205
- |> DataSource.succeed
205
+ |> BackendTask.succeed
206
206
  )
207
207
 
208
- myCreateUserDataSource : DataSource ()
209
- myCreateUserDataSource =
210
- DataSource.fail
208
+ myCreateUserBackendTask : BackendTask ()
209
+ myCreateUserBackendTask =
210
+ BackendTask.fail
211
211
  "TODO - make a database call to create a new user"
212
212
 
213
213
 
@@ -267,7 +267,7 @@ Totally customizable. Uses [`Form.FieldView`](Form-FieldView) to render all of t
267
267
 
268
268
  -}
269
269
 
270
- import DataSource exposing (DataSource)
270
+ import BackendTask exposing (BackendTask)
271
271
  import Dict exposing (Dict)
272
272
  import Form.Field as Field exposing (Field(..))
273
273
  import Form.FieldStatus as FieldStatus exposing (FieldStatus)
@@ -681,7 +681,7 @@ toServerForm :
681
681
  ->
682
682
  Form
683
683
  error
684
- { combine : Validation.Validation error (DataSource (Validation.Validation error combined kind constraints)) kind constraints
684
+ { combine : Validation.Validation error (BackendTask backendTaskError (Validation.Validation error combined kind constraints)) kind constraints
685
685
  , view : viewFn
686
686
  }
687
687
  data
@@ -694,7 +694,7 @@ toServerForm (Form a b c) =
694
694
  { result : Dict String (List error)
695
695
  , isMatchCandidate : Bool
696
696
  , combineAndView :
697
- { combine : Validation.Validation error (DataSource (Validation.Validation error combined kind constraints)) kind constraints
697
+ { combine : Validation.Validation error (BackendTask backendTaskError (Validation.Validation error combined kind constraints)) kind constraints
698
698
  , view : viewFn
699
699
  }
700
700
  }
@@ -705,7 +705,7 @@ toServerForm (Form a b c) =
705
705
  , combineAndView =
706
706
  { combine =
707
707
  thing.combineAndView.combine
708
- |> DataSource.succeed
708
+ |> BackendTask.succeed
709
709
  |> Validation.succeed2
710
710
  , view = thing.combineAndView.view
711
711
  }
@@ -1568,12 +1568,12 @@ initCombinedServer :
1568
1568
  Form
1569
1569
  error
1570
1570
  { combineAndView
1571
- | combine : Combined error (DataSource (Validation.Validation error parsed kind constraints))
1571
+ | combine : Combined error (BackendTask backendTaskError (Validation.Validation error parsed kind constraints))
1572
1572
  }
1573
1573
  input
1574
- -> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
1574
+ -> ServerForms error (BackendTask backendTaskError (Validation.Validation error combined kind constraints))
1575
1575
  initCombinedServer mapFn serverForms =
1576
- initCombined (DataSource.map (Validation.map mapFn)) serverForms
1576
+ initCombined (BackendTask.map (Validation.map mapFn)) serverForms
1577
1577
 
1578
1578
 
1579
1579
  {-| -}
@@ -1584,13 +1584,13 @@ combineServer :
1584
1584
  error
1585
1585
  { combineAndView
1586
1586
  | combine :
1587
- Combined error (DataSource (Validation.Validation error parsed kind constraints))
1587
+ Combined error (BackendTask backendTaskError (Validation.Validation error parsed kind constraints))
1588
1588
  }
1589
1589
  input
1590
- -> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
1591
- -> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
1590
+ -> ServerForms error (BackendTask backendTaskError (Validation.Validation error combined kind constraints))
1591
+ -> ServerForms error (BackendTask backendTaskError (Validation.Validation error combined kind constraints))
1592
1592
  combineServer mapFn a b =
1593
- combine (DataSource.map (Validation.map mapFn)) a b
1593
+ combine (BackendTask.map (Validation.map mapFn)) a b
1594
1594
 
1595
1595
 
1596
1596
  {-| -}
package/src/Head.elm CHANGED
@@ -15,18 +15,18 @@ when your page is pre-rendered (or server-rendered, in the case of your server-r
15
15
  which has some helper functions for defining OpenGraph and Twitter tags.
16
16
 
17
17
  One of the unique benefits of using `elm-pages` is that all of your routes (both pre-rendered and server-rendered) fully
18
- render the HTML of your page. That includes the full initial `view` (with the DataSource resolved, and the `Model` from `init`).
18
+ render the HTML of your page. That includes the full initial `view` (with the BackendTask resolved, and the `Model` from `init`).
19
19
  The HTML response also includes all of the `Head` tags, which are defined in two places:
20
20
 
21
21
  1. `app/Site.elm` - there is a `head` definition in `Site.elm` where you define global head tags that will be included on every rendered page.
22
22
 
23
- 2. In each Route Module - there is a `head` function where you have access to both the resolved `DataSource` and the `RouteParams` for the page and can return head tags based on that.
23
+ 2. In each Route Module - there is a `head` function where you have access to both the resolved `BackendTask` and the `RouteParams` for the page and can return head tags based on that.
24
24
 
25
25
  Here is a common set of global head tags that we can define in `Site.elm`:
26
26
 
27
27
  module Site exposing (canonicalUrl, config)
28
28
 
29
- import DataSource exposing (DataSource)
29
+ import BackendTask exposing (BackendTask)
30
30
  import Head
31
31
  import MimeType
32
32
  import SiteConfig exposing (SiteConfig)
@@ -37,7 +37,7 @@ Here is a common set of global head tags that we can define in `Site.elm`:
37
37
  , head = head
38
38
  }
39
39
 
40
- head : DataSource (List Head.Tag)
40
+ head : BackendTask (List Head.Tag)
41
41
  head =
42
42
  [ Head.metaName "viewport" (Head.raw "width=device-width,initial-scale=1")
43
43
  , Head.metaName "mobile-web-app-capable" (Head.raw "yes")
@@ -49,13 +49,13 @@ Here is a common set of global head tags that we can define in `Site.elm`:
49
49
  , Head.appleTouchIcon (Just 180) (cloudinaryIcon MimeType.Png 180)
50
50
  , Head.appleTouchIcon (Just 192) (cloudinaryIcon MimeType.Png 192)
51
51
  ]
52
- |> DataSource.succeed
52
+ |> BackendTask.succeed
53
53
 
54
- And here is a `head` function for a Route Module for a blog post. Note that we have access to our `DataSource` Data and
54
+ And here is a `head` function for a Route Module for a blog post. Note that we have access to our `BackendTask` Data and
55
55
  are using it to populate article metadata like the article's image, publish date, etc.
56
56
 
57
57
  import Article
58
- import DataSource
58
+ import BackendTask
59
59
  import Date
60
60
  import Head
61
61
  import Head.Seo
@@ -8,8 +8,10 @@ module Internal.ApiRoute exposing
8
8
  , withRoutes
9
9
  )
10
10
 
11
- import DataSource exposing (DataSource)
11
+ import BackendTask exposing (BackendTask)
12
+ import Exception exposing (Throwable)
12
13
  import Head
14
+ import Json.Decode
13
15
  import Pattern exposing (Pattern)
14
16
  import Regex exposing (Regex)
15
17
 
@@ -44,12 +46,12 @@ tryMatchDone path (ApiRoute handler) =
44
46
  type ApiRoute response
45
47
  = ApiRoute
46
48
  { regex : Regex
47
- , matchesToResponse : String -> DataSource (Maybe response)
48
- , buildTimeRoutes : DataSource (List String)
49
- , handleRoute : String -> DataSource Bool
49
+ , matchesToResponse : Json.Decode.Value -> String -> BackendTask Throwable (Maybe response)
50
+ , buildTimeRoutes : BackendTask Throwable (List String)
51
+ , handleRoute : String -> BackendTask Throwable Bool
50
52
  , pattern : Pattern
51
53
  , kind : String
52
- , globalHeadTags : Maybe (DataSource (List Head.Tag))
54
+ , globalHeadTags : Maybe (BackendTask Throwable (List Head.Tag))
53
55
  }
54
56
 
55
57
 
@@ -15,7 +15,12 @@ type PageServerResponse data error
15
15
  | ErrorPage error { headers : List ( String, String ) }
16
16
 
17
17
 
18
- toRedirect : Response -> Maybe { statusCode : Int, location : String }
18
+ toRedirect :
19
+ { response
20
+ | statusCode : Int
21
+ , headers : List ( String, String )
22
+ }
23
+ -> Maybe { statusCode : Int, location : String }
19
24
  toRedirect response =
20
25
  response.headers
21
26
  |> Dict.fromList
@@ -101,10 +101,8 @@ preRender input =
101
101
  , pages =
102
102
  input.pages
103
103
  |> Elm.withType
104
- (Elm.Annotation.namedWith [ "DataSource" ]
105
- "DataSource"
106
- [ Elm.Annotation.list <| Elm.Annotation.named [] "RouteParams"
107
- ]
104
+ (throwableTask
105
+ (Elm.Annotation.list <| Elm.Annotation.named [] "RouteParams")
108
106
  )
109
107
  |> Just
110
108
  , head = input.head
@@ -163,10 +161,8 @@ buildNoState definitions builder_ =
163
161
  , msg = Alias Elm.Annotation.unit
164
162
  , data = builder.data |> Tuple.first
165
163
  , actionData =
166
- Elm.Annotation.namedWith [ "DataSource" ]
167
- "DataSource"
168
- [ Elm.Annotation.list (Elm.Annotation.named [] "RouteParams")
169
- ]
164
+ throwableTask
165
+ (Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
170
166
  |> Alias
171
167
  }
172
168
  }
@@ -224,10 +220,8 @@ buildWithLocalState definitions builder_ =
224
220
  , msg = definitions.msg
225
221
  , data = builder.data |> Tuple.first
226
222
  , actionData =
227
- Elm.Annotation.namedWith [ "DataSource" ]
228
- "DataSource"
229
- [ Elm.Annotation.list (Elm.Annotation.named [] "RouteParams")
230
- ]
223
+ throwableTask
224
+ (Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
231
225
  |> Alias
232
226
  }
233
227
  }
@@ -285,10 +279,8 @@ buildWithSharedState definitions builder_ =
285
279
  , msg = definitions.msg
286
280
  , data = builder.data |> Tuple.first
287
281
  , actionData =
288
- Elm.Annotation.namedWith [ "DataSource" ]
289
- "DataSource"
290
- [ Elm.Annotation.list (Elm.Annotation.named [] "RouteParams")
291
- ]
282
+ throwableTask
283
+ (Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
292
284
  |> Alias
293
285
  }
294
286
  }
@@ -439,10 +431,7 @@ userFunction moduleName definitions =
439
431
  |> Elm.withType
440
432
  (case definitions.action of
441
433
  Pages _ ->
442
- Elm.Annotation.namedWith [ "DataSource" ]
443
- "DataSource"
444
- [ Elm.Annotation.named [] "Data"
445
- ]
434
+ throwableTask (Elm.Annotation.named [] "Data")
446
435
 
447
436
  Action _ ->
448
437
  myType "Data"
@@ -464,10 +453,7 @@ userFunction moduleName definitions =
464
453
  |> Elm.withType
465
454
  (case definitions.action of
466
455
  Pages _ ->
467
- Elm.Annotation.namedWith [ "DataSource" ]
468
- "DataSource"
469
- [ Elm.Annotation.named [] "Data"
470
- ]
456
+ throwableTask (Elm.Annotation.named [] "Data")
471
457
 
472
458
  Action _ ->
473
459
  myType "Data"
@@ -556,10 +542,8 @@ userFunction moduleName definitions =
556
542
  { data =
557
543
  dataFn.call []
558
544
  |> Elm.withType
559
- (Elm.Annotation.namedWith [ "DataSource" ]
560
- "DataSource"
561
- [ Elm.Annotation.named [] "Data"
562
- ]
545
+ (throwableTask
546
+ (Elm.Annotation.named [] "Data")
563
547
  )
564
548
  , head = headFn.call
565
549
  }
@@ -571,11 +555,7 @@ userFunction moduleName definitions =
571
555
  \routeParams ->
572
556
  dataFn.call [ routeParams ]
573
557
  |> Elm.withType
574
- (Elm.Annotation.namedWith [ "DataSource" ]
575
- "DataSource"
576
- [ Elm.Annotation.named [] "Data"
577
- ]
578
- )
558
+ (throwableTask (Elm.Annotation.named [] "Data"))
579
559
  , head = headFn.call
580
560
  }
581
561
  )
@@ -646,14 +626,13 @@ myType : String -> Elm.Annotation.Annotation
646
626
  myType dataType =
647
627
  Elm.Annotation.namedWith [ "Server", "Request" ]
648
628
  "Parser"
649
- [ Elm.Annotation.namedWith [ "DataSource" ]
650
- "DataSource"
651
- [ Elm.Annotation.namedWith [ "Server", "Response" ]
629
+ [ throwableTask
630
+ (Elm.Annotation.namedWith [ "Server", "Response" ]
652
631
  "Response"
653
632
  [ Elm.Annotation.named [] dataType
654
633
  , Elm.Annotation.named [ "ErrorPage" ] "ErrorPage"
655
634
  ]
656
- ]
635
+ )
657
636
  ]
658
637
 
659
638
 
@@ -688,10 +667,8 @@ serverRender_ serverRenderArg =
688
667
  (Elm.Annotation.namedWith
689
668
  [ "Server", "Request" ]
690
669
  "Parser"
691
- [ Elm.Annotation.namedWith
692
- [ "DataSource" ]
693
- "DataSource"
694
- [ Elm.Annotation.namedWith
670
+ [ throwableTask
671
+ (Elm.Annotation.namedWith
695
672
  [ "Server", "Response" ]
696
673
  "Response"
697
674
  [ Elm.Annotation.var "data"
@@ -700,7 +677,7 @@ serverRender_ serverRenderArg =
700
677
  "ErrorPage"
701
678
  []
702
679
  ]
703
- ]
680
+ )
704
681
  ]
705
682
  )
706
683
  )
@@ -710,10 +687,8 @@ serverRender_ serverRenderArg =
710
687
  (Elm.Annotation.namedWith
711
688
  [ "Server", "Request" ]
712
689
  "Parser"
713
- [ Elm.Annotation.namedWith
714
- [ "DataSource" ]
715
- "DataSource"
716
- [ Elm.Annotation.namedWith
690
+ [ throwableTask
691
+ (Elm.Annotation.namedWith
717
692
  [ "Server", "Response" ]
718
693
  "Response"
719
694
  [ Elm.Annotation.var "action"
@@ -722,7 +697,7 @@ serverRender_ serverRenderArg =
722
697
  "ErrorPage"
723
698
  []
724
699
  ]
725
- ]
700
+ )
726
701
  ]
727
702
  )
728
703
  )
@@ -785,19 +760,11 @@ preRender_ serverRenderArg =
785
760
  [ ( "data"
786
761
  , Elm.Annotation.function
787
762
  [ Elm.Annotation.var "routeParams" ]
788
- (Elm.Annotation.namedWith
789
- [ "DataSource" ]
790
- "DataSource"
791
- [ Elm.Annotation.var "data"
792
- ]
793
- )
763
+ (throwableTask (Elm.Annotation.var "data"))
794
764
  )
795
765
  , ( "pages"
796
- , Elm.Annotation.namedWith
797
- [ "DataSource" ]
798
- "DataSource"
799
- [ Elm.Annotation.list (Elm.Annotation.named [] "RouteParams")
800
- ]
766
+ , throwableTask
767
+ (Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
801
768
  )
802
769
  , ( "head"
803
770
  , Elm.Annotation.function
@@ -849,11 +816,7 @@ single_ serverRenderArg =
849
816
  (Elm.Annotation.function
850
817
  [ Elm.Annotation.record
851
818
  [ ( "data"
852
- , Elm.Annotation.namedWith
853
- [ "DataSource" ]
854
- "DataSource"
855
- [ Elm.Annotation.var "data"
856
- ]
819
+ , throwableTask (Elm.Annotation.var "data")
857
820
  )
858
821
  , ( "head"
859
822
  , Elm.Annotation.function
@@ -1243,3 +1206,12 @@ buildNoState_ buildNoStateArg buildNoStateArg0 =
1243
1206
  ]
1244
1207
  , buildNoStateArg0
1245
1208
  ]
1209
+
1210
+
1211
+ throwableTask : Elm.Annotation.Annotation -> Elm.Annotation.Annotation
1212
+ throwableTask dataType =
1213
+ Elm.Annotation.namedWith [ "BackendTask" ]
1214
+ "BackendTask"
1215
+ [ Elm.Annotation.named [ "Exception" ] "Throwable"
1216
+ , dataType
1217
+ ]