elm-pages 3.0.0-beta.2 → 3.0.0-beta.20
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 +10 -1
- package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2420 -1592
- 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 +1326 -121
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +15215 -13007
- 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 +1 -1
- package/generator/dead-code-review/elm.json +8 -6
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +189 -17
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +255 -21
- 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 +1326 -121
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +14620 -12636
- 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 +1 -1
- package/generator/review/elm.json +8 -8
- package/generator/src/RouteBuilder.elm +66 -52
- package/generator/src/SharedTemplate.elm +3 -2
- package/generator/src/SiteConfig.elm +3 -2
- package/generator/src/basepath-middleware.js +3 -3
- package/generator/src/build.js +122 -86
- package/generator/src/cli.js +247 -51
- package/generator/src/codegen.js +29 -27
- package/generator/src/compatibility-key.js +1 -0
- package/generator/src/compile-elm.js +20 -22
- package/generator/src/config.js +39 -0
- package/generator/src/copy-dir.js +2 -2
- package/generator/src/dev-server.js +119 -110
- 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 +14 -21
- package/generator/src/init.js +8 -7
- package/generator/src/pre-render-html.js +41 -28
- package/generator/src/render-test.js +109 -0
- package/generator/src/render-worker.js +26 -28
- package/generator/src/render.js +322 -142
- package/generator/src/request-cache.js +200 -162
- package/generator/src/rewrite-client-elm-json.js +5 -5
- package/generator/src/rewrite-elm-json.js +7 -7
- package/generator/src/route-codegen-helpers.js +16 -31
- package/generator/src/seo-renderer.js +12 -7
- package/generator/src/vite-utils.js +77 -0
- package/generator/static-code/hmr.js +16 -2
- package/generator/template/app/Api.elm +3 -3
- package/generator/template/app/Route/Index.elm +3 -3
- package/generator/template/app/Shared.elm +3 -3
- package/generator/template/app/Site.elm +9 -4
- package/package.json +21 -21
- package/src/ApiRoute.elm +199 -61
- package/src/BackendTask/Custom.elm +214 -0
- package/src/BackendTask/Env.elm +90 -0
- package/src/{DataSource → BackendTask}/File.elm +128 -43
- package/src/{DataSource → BackendTask}/Glob.elm +136 -125
- package/src/BackendTask/Http.elm +673 -0
- package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
- package/src/BackendTask/Internal/Request.elm +28 -0
- package/src/BackendTask/Random.elm +79 -0
- package/src/BackendTask/Time.elm +47 -0
- package/src/BackendTask.elm +537 -0
- package/src/FatalError.elm +89 -0
- package/src/Form/Field.elm +1 -1
- package/src/Form.elm +72 -92
- package/src/Head/Seo.elm +4 -4
- package/src/Head.elm +237 -7
- package/src/HtmlPrinter.elm +7 -3
- package/src/Internal/ApiRoute.elm +7 -5
- package/src/PageServerResponse.elm +6 -1
- package/src/Pages/Generate.elm +775 -132
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/FatalError.elm +5 -0
- package/src/Pages/Internal/Form.elm +21 -1
- package/src/Pages/Internal/Platform/Cli.elm +479 -747
- package/src/Pages/Internal/Platform/Cli.elm.bak +1276 -0
- 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 +373 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +73 -270
- package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -7
- package/src/Pages/Internal/Platform.elm +54 -53
- package/src/Pages/Internal/Script.elm +17 -0
- package/src/Pages/Internal/StaticHttpBody.elm +35 -1
- package/src/Pages/Manifest.elm +29 -4
- package/src/Pages/ProgramConfig.elm +12 -8
- package/src/Pages/Script.elm +109 -0
- package/src/Pages/SiteConfig.elm +3 -2
- package/src/Pages/StaticHttp/Request.elm +2 -2
- package/src/Pages/StaticHttpRequest.elm +23 -98
- package/src/RequestsAndPending.elm +8 -19
- package/src/Result/Extra.elm +21 -0
- package/src/Server/Request.elm +43 -34
- package/src/Server/Session.elm +166 -100
- package/src/Server/SetCookie.elm +89 -31
- 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/Pages/Generate.elm
CHANGED
|
@@ -1,8 +1,37 @@
|
|
|
1
|
-
module Pages.Generate exposing
|
|
1
|
+
module Pages.Generate exposing
|
|
2
|
+
( buildWithLocalState, buildWithSharedState, buildNoState, Builder
|
|
3
|
+
, Type(..)
|
|
4
|
+
, serverRender
|
|
5
|
+
, preRender, single
|
|
6
|
+
, addDeclarations
|
|
7
|
+
)
|
|
2
8
|
|
|
3
|
-
{-|
|
|
9
|
+
{-| This module provides some functions for scaffolding code for a new Route Module. It uses [`elm-codegen`'s API](https://package.elm-lang.org/packages/mdgriffith/elm-codegen/latest/) for generating code.
|
|
4
10
|
|
|
5
|
-
|
|
11
|
+
Typically you'll want to use this via the `elm-pages codegen` CLI command. The default starter template includes a file that uses these functions, which you can tweak to customize your scaffolding commands.
|
|
12
|
+
Learn more about [the `elm-pages run` CLI command in its docs page](https://elm-pages.com/docs/run-command).
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Initializing the Generator Builder
|
|
16
|
+
|
|
17
|
+
@docs buildWithLocalState, buildWithSharedState, buildNoState, Builder
|
|
18
|
+
|
|
19
|
+
@docs Type
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## Generating Server-Rendered Pages
|
|
23
|
+
|
|
24
|
+
@docs serverRender
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Generating pre-rendered pages
|
|
28
|
+
|
|
29
|
+
@docs preRender, single
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
## Including Additional elm-codegen Declarations
|
|
33
|
+
|
|
34
|
+
@docs addDeclarations
|
|
6
35
|
|
|
7
36
|
-}
|
|
8
37
|
|
|
@@ -30,12 +59,20 @@ typeToDeclaration name type_ =
|
|
|
30
59
|
|
|
31
60
|
{-| -}
|
|
32
61
|
type Builder
|
|
33
|
-
=
|
|
62
|
+
= ServerRender
|
|
63
|
+
(List Elm.Declaration)
|
|
34
64
|
{ data : ( Type, Elm.Expression -> Elm.Expression )
|
|
35
65
|
, action : ( Type, Elm.Expression -> Elm.Expression )
|
|
36
66
|
, head : Elm.Expression -> Elm.Expression
|
|
37
67
|
, moduleName : List String
|
|
38
68
|
}
|
|
69
|
+
| PreRender
|
|
70
|
+
(List Elm.Declaration)
|
|
71
|
+
{ data : ( Type, Elm.Expression -> Elm.Expression )
|
|
72
|
+
, pages : Maybe Elm.Expression
|
|
73
|
+
, head : Elm.Expression -> Elm.Expression
|
|
74
|
+
, moduleName : List String
|
|
75
|
+
}
|
|
39
76
|
|
|
40
77
|
|
|
41
78
|
{-| -}
|
|
@@ -47,61 +84,409 @@ serverRender :
|
|
|
47
84
|
}
|
|
48
85
|
-> Builder
|
|
49
86
|
serverRender =
|
|
50
|
-
|
|
87
|
+
ServerRender []
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
{-| -}
|
|
91
|
+
preRender :
|
|
92
|
+
{ data : ( Type, Elm.Expression -> Elm.Expression )
|
|
93
|
+
, pages : Elm.Expression
|
|
94
|
+
, head : Elm.Expression -> Elm.Expression
|
|
95
|
+
, moduleName : List String
|
|
96
|
+
}
|
|
97
|
+
-> Builder
|
|
98
|
+
preRender input =
|
|
99
|
+
--let
|
|
100
|
+
-- hasDynamicRouteSegments : Bool
|
|
101
|
+
-- hasDynamicRouteSegments =
|
|
102
|
+
-- RoutePattern.fromModuleName input.moduleName
|
|
103
|
+
-- -- TODO give error if not parseable here
|
|
104
|
+
-- |> Maybe.map RoutePattern.hasRouteParams
|
|
105
|
+
-- |> Maybe.withDefault False
|
|
106
|
+
--in
|
|
107
|
+
PreRender []
|
|
108
|
+
{ data = input.data
|
|
109
|
+
, pages =
|
|
110
|
+
input.pages
|
|
111
|
+
|> Elm.withType
|
|
112
|
+
(throwableTask
|
|
113
|
+
(Elm.Annotation.list <| Elm.Annotation.named [] "RouteParams")
|
|
114
|
+
)
|
|
115
|
+
|> Just
|
|
116
|
+
, head = input.head
|
|
117
|
+
, moduleName = input.moduleName
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
{-| -}
|
|
122
|
+
single :
|
|
123
|
+
{ data : ( Type, Elm.Expression )
|
|
124
|
+
, head : Elm.Expression -> Elm.Expression
|
|
125
|
+
, moduleName : List String
|
|
126
|
+
}
|
|
127
|
+
-> Builder
|
|
128
|
+
single input =
|
|
129
|
+
PreRender []
|
|
130
|
+
{ data = ( Tuple.first input.data, \_ -> Tuple.second input.data )
|
|
131
|
+
, pages = Nothing
|
|
132
|
+
, head = input.head
|
|
133
|
+
, moduleName = input.moduleName
|
|
134
|
+
}
|
|
51
135
|
|
|
52
136
|
|
|
53
137
|
{-| -}
|
|
54
138
|
buildNoState :
|
|
55
|
-
{ view : Elm.Expression
|
|
139
|
+
{ view : { maybeUrl : Elm.Expression, sharedModel : Elm.Expression, app : Elm.Expression } -> Elm.Expression
|
|
56
140
|
}
|
|
57
141
|
-> Builder
|
|
58
142
|
-> Elm.File
|
|
59
|
-
buildNoState definitions
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
143
|
+
buildNoState definitions builder_ =
|
|
144
|
+
case builder_ of
|
|
145
|
+
ServerRender declarations builder ->
|
|
146
|
+
userFunction builder.moduleName
|
|
147
|
+
{ view =
|
|
148
|
+
\maybeUrl sharedModel _ app ->
|
|
149
|
+
definitions.view
|
|
150
|
+
{ maybeUrl = maybeUrl
|
|
151
|
+
, sharedModel = sharedModel
|
|
152
|
+
, app = app
|
|
153
|
+
}
|
|
154
|
+
, localState = Nothing
|
|
155
|
+
, data = builder.data |> Tuple.second
|
|
156
|
+
, action = builder.action |> Tuple.second |> Action
|
|
157
|
+
, head = builder.head
|
|
158
|
+
, types =
|
|
159
|
+
{ model = Alias (Elm.Annotation.record [])
|
|
160
|
+
, msg = Alias Elm.Annotation.unit
|
|
161
|
+
, data = builder.data |> Tuple.first
|
|
162
|
+
, actionData = builder.action |> Tuple.first
|
|
163
|
+
}
|
|
164
|
+
, declarations = declarations
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
PreRender declarations builder ->
|
|
168
|
+
userFunction builder.moduleName
|
|
169
|
+
{ view =
|
|
170
|
+
\maybeUrl sharedModel _ app ->
|
|
171
|
+
definitions.view
|
|
172
|
+
{ maybeUrl = maybeUrl
|
|
173
|
+
, sharedModel = sharedModel
|
|
174
|
+
, app = app
|
|
175
|
+
}
|
|
176
|
+
, localState = Nothing
|
|
177
|
+
, data = builder.data |> Tuple.second
|
|
178
|
+
, action = builder.pages |> Pages
|
|
179
|
+
, head = builder.head
|
|
180
|
+
, types =
|
|
181
|
+
{ model = Alias (Elm.Annotation.record [])
|
|
182
|
+
, msg = Alias Elm.Annotation.unit
|
|
183
|
+
, data = builder.data |> Tuple.first
|
|
184
|
+
, actionData =
|
|
185
|
+
throwableTask
|
|
186
|
+
(Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
|
|
187
|
+
|> Alias
|
|
188
|
+
}
|
|
189
|
+
, declarations = declarations
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
{-| -}
|
|
194
|
+
addDeclarations : List Elm.Declaration -> Builder -> Builder
|
|
195
|
+
addDeclarations declarations builder =
|
|
196
|
+
case builder of
|
|
197
|
+
ServerRender existingDeclarations record ->
|
|
198
|
+
ServerRender (existingDeclarations ++ declarations) record
|
|
199
|
+
|
|
200
|
+
PreRender existingDeclarations record ->
|
|
201
|
+
PreRender (existingDeclarations ++ declarations) record
|
|
73
202
|
|
|
74
203
|
|
|
75
204
|
{-| -}
|
|
76
205
|
buildWithLocalState :
|
|
77
|
-
{ view :
|
|
78
|
-
|
|
79
|
-
,
|
|
80
|
-
|
|
206
|
+
{ view :
|
|
207
|
+
{ maybeUrl : Elm.Expression, sharedModel : Elm.Expression, model : Elm.Expression, app : Elm.Expression } -> Elm.Expression
|
|
208
|
+
, update :
|
|
209
|
+
{ pageUrl : Elm.Expression
|
|
210
|
+
, sharedModel : Elm.Expression
|
|
211
|
+
, app : Elm.Expression
|
|
212
|
+
, msg : Elm.Expression
|
|
213
|
+
, model : Elm.Expression
|
|
214
|
+
}
|
|
215
|
+
-> Elm.Expression
|
|
216
|
+
, init :
|
|
217
|
+
{ pageUrl : Elm.Expression
|
|
218
|
+
, sharedModel : Elm.Expression
|
|
219
|
+
, app : Elm.Expression
|
|
220
|
+
}
|
|
221
|
+
-> Elm.Expression
|
|
222
|
+
, subscriptions :
|
|
223
|
+
{ maybePageUrl : Elm.Expression
|
|
224
|
+
, routeParams : Elm.Expression
|
|
225
|
+
, path : Elm.Expression
|
|
226
|
+
, sharedModel : Elm.Expression
|
|
227
|
+
, model : Elm.Expression
|
|
228
|
+
}
|
|
229
|
+
-> Elm.Expression
|
|
81
230
|
, msg : Type
|
|
82
231
|
, model : Type
|
|
83
232
|
}
|
|
84
233
|
-> Builder
|
|
85
234
|
-> Elm.File
|
|
86
|
-
buildWithLocalState definitions
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
235
|
+
buildWithLocalState definitions builder_ =
|
|
236
|
+
case builder_ of
|
|
237
|
+
ServerRender declarations builder ->
|
|
238
|
+
userFunction builder.moduleName
|
|
239
|
+
{ view =
|
|
240
|
+
\maybeUrl sharedModel model app ->
|
|
241
|
+
definitions.view
|
|
242
|
+
{ maybeUrl = maybeUrl
|
|
243
|
+
, sharedModel = sharedModel
|
|
244
|
+
, model = model
|
|
245
|
+
, app = app
|
|
246
|
+
}
|
|
247
|
+
, localState =
|
|
248
|
+
Just
|
|
249
|
+
{ update =
|
|
250
|
+
\pageUrl sharedModel app msg model ->
|
|
251
|
+
definitions.update
|
|
252
|
+
{ pageUrl = pageUrl
|
|
253
|
+
, sharedModel = sharedModel
|
|
254
|
+
, app = app
|
|
255
|
+
, msg = msg
|
|
256
|
+
, model = model
|
|
257
|
+
}
|
|
258
|
+
, init =
|
|
259
|
+
\pageUrl sharedModel app ->
|
|
260
|
+
definitions.init
|
|
261
|
+
{ pageUrl = pageUrl
|
|
262
|
+
, sharedModel = sharedModel
|
|
263
|
+
, app = app
|
|
264
|
+
}
|
|
265
|
+
, subscriptions =
|
|
266
|
+
\maybePageUrl routeParams path sharedModel model ->
|
|
267
|
+
definitions.subscriptions
|
|
268
|
+
{ maybePageUrl = maybePageUrl
|
|
269
|
+
, routeParams = routeParams
|
|
270
|
+
, path = path
|
|
271
|
+
, sharedModel = sharedModel
|
|
272
|
+
, model = model
|
|
273
|
+
}
|
|
274
|
+
, state = LocalState
|
|
275
|
+
}
|
|
276
|
+
, data = builder.data |> Tuple.second
|
|
277
|
+
, action = builder.action |> Tuple.second |> Action
|
|
278
|
+
, head = builder.head
|
|
279
|
+
, types =
|
|
280
|
+
{ model = definitions.model
|
|
281
|
+
, msg = definitions.msg
|
|
282
|
+
, data = builder.data |> Tuple.first
|
|
283
|
+
, actionData = builder.action |> Tuple.first
|
|
284
|
+
}
|
|
285
|
+
, declarations = declarations
|
|
94
286
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
287
|
+
|
|
288
|
+
PreRender declarations builder ->
|
|
289
|
+
userFunction builder.moduleName
|
|
290
|
+
{ view =
|
|
291
|
+
\maybeUrl sharedModel model app ->
|
|
292
|
+
definitions.view
|
|
293
|
+
{ maybeUrl = maybeUrl
|
|
294
|
+
, sharedModel = sharedModel
|
|
295
|
+
, model = model
|
|
296
|
+
, app = app
|
|
297
|
+
}
|
|
298
|
+
, localState =
|
|
299
|
+
Just
|
|
300
|
+
{ update =
|
|
301
|
+
\pageUrl sharedModel app msg model ->
|
|
302
|
+
definitions.update
|
|
303
|
+
{ pageUrl = pageUrl
|
|
304
|
+
, sharedModel = sharedModel
|
|
305
|
+
, app = app
|
|
306
|
+
, msg = msg
|
|
307
|
+
, model = model
|
|
308
|
+
}
|
|
309
|
+
, init =
|
|
310
|
+
\pageUrl sharedModel app ->
|
|
311
|
+
definitions.init
|
|
312
|
+
{ pageUrl = pageUrl
|
|
313
|
+
, sharedModel = sharedModel
|
|
314
|
+
, app = app
|
|
315
|
+
}
|
|
316
|
+
, subscriptions =
|
|
317
|
+
\maybePageUrl routeParams path sharedModel model ->
|
|
318
|
+
definitions.subscriptions
|
|
319
|
+
{ maybePageUrl = maybePageUrl
|
|
320
|
+
, routeParams = routeParams
|
|
321
|
+
, path = path
|
|
322
|
+
, sharedModel = sharedModel
|
|
323
|
+
, model = model
|
|
324
|
+
}
|
|
325
|
+
, state = LocalState
|
|
326
|
+
}
|
|
327
|
+
, data = builder.data |> Tuple.second
|
|
328
|
+
, action = builder.pages |> Pages
|
|
329
|
+
, head = builder.head
|
|
330
|
+
, types =
|
|
331
|
+
{ model = definitions.model
|
|
332
|
+
, msg = definitions.msg
|
|
333
|
+
, data = builder.data |> Tuple.first
|
|
334
|
+
, actionData =
|
|
335
|
+
throwableTask
|
|
336
|
+
(Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
|
|
337
|
+
|> Alias
|
|
338
|
+
}
|
|
339
|
+
, declarations = declarations
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
{-| -}
|
|
344
|
+
buildWithSharedState :
|
|
345
|
+
{ view :
|
|
346
|
+
{ maybeUrl : Elm.Expression, sharedModel : Elm.Expression, model : Elm.Expression, app : Elm.Expression } -> Elm.Expression
|
|
347
|
+
, update :
|
|
348
|
+
{ pageUrl : Elm.Expression
|
|
349
|
+
, sharedModel : Elm.Expression
|
|
350
|
+
, app : Elm.Expression
|
|
351
|
+
, msg : Elm.Expression
|
|
352
|
+
, model : Elm.Expression
|
|
104
353
|
}
|
|
354
|
+
-> Elm.Expression
|
|
355
|
+
, init :
|
|
356
|
+
{ pageUrl : Elm.Expression
|
|
357
|
+
, sharedModel : Elm.Expression
|
|
358
|
+
, app : Elm.Expression
|
|
359
|
+
}
|
|
360
|
+
-> Elm.Expression
|
|
361
|
+
, subscriptions :
|
|
362
|
+
{ maybePageUrl : Elm.Expression
|
|
363
|
+
, routeParams : Elm.Expression
|
|
364
|
+
, path : Elm.Expression
|
|
365
|
+
, sharedModel : Elm.Expression
|
|
366
|
+
, model : Elm.Expression
|
|
367
|
+
}
|
|
368
|
+
-> Elm.Expression
|
|
369
|
+
, msg : Type
|
|
370
|
+
, model : Type
|
|
371
|
+
}
|
|
372
|
+
-> Builder
|
|
373
|
+
-> Elm.File
|
|
374
|
+
buildWithSharedState definitions builder_ =
|
|
375
|
+
case builder_ of
|
|
376
|
+
ServerRender declarations builder ->
|
|
377
|
+
userFunction builder.moduleName
|
|
378
|
+
{ view =
|
|
379
|
+
\maybeUrl sharedModel model app ->
|
|
380
|
+
definitions.view
|
|
381
|
+
{ maybeUrl = maybeUrl
|
|
382
|
+
, sharedModel = sharedModel
|
|
383
|
+
, model = model
|
|
384
|
+
, app = app
|
|
385
|
+
}
|
|
386
|
+
, localState =
|
|
387
|
+
Just
|
|
388
|
+
{ update =
|
|
389
|
+
\pageUrl sharedModel app msg model ->
|
|
390
|
+
definitions.update
|
|
391
|
+
{ pageUrl = pageUrl
|
|
392
|
+
, sharedModel = sharedModel
|
|
393
|
+
, app = app
|
|
394
|
+
, msg = msg
|
|
395
|
+
, model = model
|
|
396
|
+
}
|
|
397
|
+
, init =
|
|
398
|
+
\pageUrl sharedModel app ->
|
|
399
|
+
definitions.init
|
|
400
|
+
{ pageUrl = pageUrl
|
|
401
|
+
, sharedModel = sharedModel
|
|
402
|
+
, app = app
|
|
403
|
+
}
|
|
404
|
+
, subscriptions =
|
|
405
|
+
\maybePageUrl routeParams path sharedModel model ->
|
|
406
|
+
definitions.subscriptions
|
|
407
|
+
{ maybePageUrl = maybePageUrl
|
|
408
|
+
, routeParams = routeParams
|
|
409
|
+
, path = path
|
|
410
|
+
, sharedModel = sharedModel
|
|
411
|
+
, model = model
|
|
412
|
+
}
|
|
413
|
+
, state = SharedState
|
|
414
|
+
}
|
|
415
|
+
, data = builder.data |> Tuple.second
|
|
416
|
+
, action = builder.action |> Tuple.second |> Action
|
|
417
|
+
, head = builder.head
|
|
418
|
+
, types =
|
|
419
|
+
{ model = definitions.model
|
|
420
|
+
, msg = definitions.msg
|
|
421
|
+
, data = builder.data |> Tuple.first
|
|
422
|
+
, actionData = builder.action |> Tuple.first
|
|
423
|
+
}
|
|
424
|
+
, declarations = declarations
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
PreRender declarations builder ->
|
|
428
|
+
userFunction builder.moduleName
|
|
429
|
+
{ view =
|
|
430
|
+
\maybeUrl sharedModel model app ->
|
|
431
|
+
definitions.view
|
|
432
|
+
{ maybeUrl = maybeUrl
|
|
433
|
+
, sharedModel = sharedModel
|
|
434
|
+
, model = model
|
|
435
|
+
, app = app
|
|
436
|
+
}
|
|
437
|
+
, localState =
|
|
438
|
+
Just
|
|
439
|
+
{ update =
|
|
440
|
+
\pageUrl sharedModel app msg model ->
|
|
441
|
+
definitions.update
|
|
442
|
+
{ pageUrl = pageUrl
|
|
443
|
+
, sharedModel = sharedModel
|
|
444
|
+
, app = app
|
|
445
|
+
, msg = msg
|
|
446
|
+
, model = model
|
|
447
|
+
}
|
|
448
|
+
, init =
|
|
449
|
+
\pageUrl sharedModel app ->
|
|
450
|
+
definitions.init
|
|
451
|
+
{ pageUrl = pageUrl
|
|
452
|
+
, sharedModel = sharedModel
|
|
453
|
+
, app = app
|
|
454
|
+
}
|
|
455
|
+
, subscriptions =
|
|
456
|
+
\maybePageUrl routeParams path sharedModel model ->
|
|
457
|
+
definitions.subscriptions
|
|
458
|
+
{ maybePageUrl = maybePageUrl
|
|
459
|
+
, routeParams = routeParams
|
|
460
|
+
, path = path
|
|
461
|
+
, sharedModel = sharedModel
|
|
462
|
+
, model = model
|
|
463
|
+
}
|
|
464
|
+
, state = SharedState
|
|
465
|
+
}
|
|
466
|
+
, data = builder.data |> Tuple.second
|
|
467
|
+
, action = builder.pages |> Pages
|
|
468
|
+
, head = builder.head
|
|
469
|
+
, types =
|
|
470
|
+
{ model = definitions.model
|
|
471
|
+
, msg = definitions.msg
|
|
472
|
+
, data = builder.data |> Tuple.first
|
|
473
|
+
, actionData =
|
|
474
|
+
throwableTask
|
|
475
|
+
(Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
|
|
476
|
+
|> Alias
|
|
477
|
+
}
|
|
478
|
+
, declarations = declarations
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
type State
|
|
483
|
+
= SharedState
|
|
484
|
+
| LocalState
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
type ActionOrPages
|
|
488
|
+
= Action (Elm.Expression -> Elm.Expression)
|
|
489
|
+
| Pages (Maybe Elm.Expression)
|
|
105
490
|
|
|
106
491
|
|
|
107
492
|
{-| -}
|
|
@@ -114,11 +499,13 @@ userFunction :
|
|
|
114
499
|
{ update : Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression
|
|
115
500
|
, init : Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression
|
|
116
501
|
, subscriptions : Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression
|
|
502
|
+
, state : State
|
|
117
503
|
}
|
|
118
504
|
, data : Elm.Expression -> Elm.Expression
|
|
119
|
-
, action :
|
|
505
|
+
, action : ActionOrPages
|
|
120
506
|
, head : Elm.Expression -> Elm.Expression
|
|
121
507
|
, types : { model : Type, msg : Type, data : Type, actionData : Type }
|
|
508
|
+
, declarations : List Elm.Declaration
|
|
122
509
|
}
|
|
123
510
|
-> Elm.File
|
|
124
511
|
userFunction moduleName definitions =
|
|
@@ -139,11 +526,22 @@ userFunction moduleName definitions =
|
|
|
139
526
|
|> Just
|
|
140
527
|
)
|
|
141
528
|
( "sharedModel"
|
|
142
|
-
,
|
|
529
|
+
, Just (Elm.Annotation.named [ "Shared" ] "Model")
|
|
143
530
|
)
|
|
144
531
|
( "model", Just (Elm.Annotation.named [] "Model") )
|
|
145
532
|
( "app", Just appType )
|
|
146
|
-
|
|
533
|
+
(\maybeUrl sharedModel model app ->
|
|
534
|
+
definitions.view maybeUrl sharedModel model app
|
|
535
|
+
|> Elm.withType
|
|
536
|
+
(Elm.Annotation.namedWith [ "View" ]
|
|
537
|
+
"View"
|
|
538
|
+
[ Elm.Annotation.namedWith [ "Pages", "Msg" ]
|
|
539
|
+
"Msg"
|
|
540
|
+
[ localType "Msg"
|
|
541
|
+
]
|
|
542
|
+
]
|
|
543
|
+
)
|
|
544
|
+
)
|
|
147
545
|
|
|
148
546
|
Nothing ->
|
|
149
547
|
let
|
|
@@ -161,7 +559,7 @@ userFunction moduleName definitions =
|
|
|
161
559
|
|> Just
|
|
162
560
|
)
|
|
163
561
|
( "sharedModel"
|
|
164
|
-
,
|
|
562
|
+
, Just (Elm.Annotation.named [ "Shared" ] "Model")
|
|
165
563
|
)
|
|
166
564
|
( "app", Just appType )
|
|
167
565
|
(definitions.view Elm.unit)
|
|
@@ -180,6 +578,7 @@ userFunction moduleName definitions =
|
|
|
180
578
|
}
|
|
181
579
|
, initFn : { declaration : Elm.Declaration, call : Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression, callFrom : List String -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression }
|
|
182
580
|
, subscriptionsFn : { declaration : Elm.Declaration, call : Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression, callFrom : List String -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression }
|
|
581
|
+
, state : State
|
|
183
582
|
}
|
|
184
583
|
localDefinitions =
|
|
185
584
|
definitions.localState
|
|
@@ -192,7 +591,7 @@ userFunction moduleName definitions =
|
|
|
192
591
|
|> Elm.Annotation.named [ "Pages", "PageUrl" ]
|
|
193
592
|
|> Just
|
|
194
593
|
)
|
|
195
|
-
( "sharedModel",
|
|
594
|
+
( "sharedModel", Just (Elm.Annotation.named [ "Shared" ] "Model") )
|
|
196
595
|
( "app", Just appType )
|
|
197
596
|
( "msg", Just (Elm.Annotation.named [] "Msg") )
|
|
198
597
|
( "model", Just (Elm.Annotation.named [] "Model") )
|
|
@@ -205,9 +604,16 @@ userFunction moduleName definitions =
|
|
|
205
604
|
|> Elm.Annotation.maybe
|
|
206
605
|
|> Just
|
|
207
606
|
)
|
|
208
|
-
( "sharedModel",
|
|
607
|
+
( "sharedModel", Just (Elm.Annotation.named [ "Shared" ] "Model") )
|
|
209
608
|
( "app", Just appType )
|
|
210
|
-
|
|
609
|
+
(\pageUrl sharedModel app ->
|
|
610
|
+
localState.init pageUrl sharedModel app
|
|
611
|
+
|> Elm.withType
|
|
612
|
+
(Elm.Annotation.tuple
|
|
613
|
+
(localType "Model")
|
|
614
|
+
effectType
|
|
615
|
+
)
|
|
616
|
+
)
|
|
211
617
|
, subscriptionsFn =
|
|
212
618
|
Elm.Declare.fn5
|
|
213
619
|
"subscriptions"
|
|
@@ -217,33 +623,90 @@ userFunction moduleName definitions =
|
|
|
217
623
|
|> Elm.Annotation.maybe
|
|
218
624
|
|> Just
|
|
219
625
|
)
|
|
220
|
-
( "routeParams",
|
|
221
|
-
( "path",
|
|
222
|
-
( "sharedModel",
|
|
223
|
-
( "model",
|
|
224
|
-
|
|
626
|
+
( "routeParams", "RouteParams" |> Elm.Annotation.named [] |> Just )
|
|
627
|
+
( "path", Elm.Annotation.namedWith [ "Path" ] "Path" [] |> Just )
|
|
628
|
+
( "sharedModel", Just (Elm.Annotation.named [ "Shared" ] "Model") )
|
|
629
|
+
( "model", localType "Model" |> Just )
|
|
630
|
+
(\maybePageUrl routeParams path sharedModel model ->
|
|
631
|
+
localState.subscriptions maybePageUrl routeParams path sharedModel model
|
|
632
|
+
|> Elm.withType (Elm.Annotation.namedWith [] "Sub" [ localType "Msg" ])
|
|
633
|
+
)
|
|
634
|
+
, state = localState.state
|
|
225
635
|
}
|
|
226
636
|
)
|
|
227
637
|
|
|
228
|
-
dataFn : { declaration : Elm.Declaration, call : Elm.Expression -> Elm.Expression, callFrom : List String -> Elm.Expression -> Elm.Expression }
|
|
638
|
+
dataFn : { declaration : Elm.Declaration, call : List Elm.Expression -> Elm.Expression, callFrom : List String -> List Elm.Expression -> Elm.Expression }
|
|
229
639
|
dataFn =
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
640
|
+
case definitions.action of
|
|
641
|
+
Pages Nothing ->
|
|
642
|
+
Elm.Declare.function "data"
|
|
643
|
+
[]
|
|
644
|
+
(\_ ->
|
|
645
|
+
definitions.data Elm.unit
|
|
646
|
+
|> Elm.withType
|
|
647
|
+
(case definitions.action of
|
|
648
|
+
Pages _ ->
|
|
649
|
+
throwableTask (Elm.Annotation.named [] "Data")
|
|
237
650
|
|
|
238
|
-
|
|
651
|
+
Action _ ->
|
|
652
|
+
myType "Data"
|
|
653
|
+
)
|
|
654
|
+
)
|
|
655
|
+
|
|
656
|
+
_ ->
|
|
657
|
+
Elm.Declare.function "data"
|
|
658
|
+
[ ( "routeParams"
|
|
659
|
+
, "RouteParams"
|
|
660
|
+
|> Elm.Annotation.named []
|
|
661
|
+
|> Just
|
|
662
|
+
)
|
|
663
|
+
]
|
|
664
|
+
(\args ->
|
|
665
|
+
case args of
|
|
666
|
+
[ arg ] ->
|
|
667
|
+
definitions.data arg
|
|
668
|
+
|> Elm.withType
|
|
669
|
+
(case definitions.action of
|
|
670
|
+
Pages _ ->
|
|
671
|
+
throwableTask (Elm.Annotation.named [] "Data")
|
|
672
|
+
|
|
673
|
+
Action _ ->
|
|
674
|
+
myType "Data"
|
|
675
|
+
)
|
|
676
|
+
|
|
677
|
+
_ ->
|
|
678
|
+
Elm.unit
|
|
679
|
+
)
|
|
680
|
+
|
|
681
|
+
actionFn : Maybe { declaration : Elm.Declaration, call : List Elm.Expression -> Elm.Expression, callFrom : List String -> List Elm.Expression -> Elm.Expression }
|
|
239
682
|
actionFn =
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
683
|
+
case definitions.action of
|
|
684
|
+
Action action_ ->
|
|
685
|
+
Elm.Declare.function "action"
|
|
686
|
+
[ ( "routeParams"
|
|
687
|
+
, "RouteParams"
|
|
688
|
+
|> Elm.Annotation.named []
|
|
689
|
+
|> Just
|
|
690
|
+
)
|
|
691
|
+
]
|
|
692
|
+
(\args ->
|
|
693
|
+
case args of
|
|
694
|
+
[ arg ] ->
|
|
695
|
+
action_ arg |> Elm.withType (myType "ActionData")
|
|
696
|
+
|
|
697
|
+
_ ->
|
|
698
|
+
Elm.unit
|
|
699
|
+
)
|
|
700
|
+
|> Just
|
|
701
|
+
|
|
702
|
+
Pages pages_ ->
|
|
703
|
+
pages_
|
|
704
|
+
|> Maybe.map
|
|
705
|
+
(\justPagesExpression ->
|
|
706
|
+
Elm.Declare.function "pages"
|
|
707
|
+
[]
|
|
708
|
+
(\_ -> justPagesExpression)
|
|
709
|
+
)
|
|
247
710
|
|
|
248
711
|
headFn : { declaration : Elm.Declaration, call : Elm.Expression -> Elm.Expression, callFrom : List String -> Elm.Expression -> Elm.Expression }
|
|
249
712
|
headFn =
|
|
@@ -257,8 +720,8 @@ userFunction moduleName definitions =
|
|
|
257
720
|
)
|
|
258
721
|
in
|
|
259
722
|
Elm.file ("Route" :: moduleName)
|
|
260
|
-
([ definitions.types.model |> typeToDeclaration "Model"
|
|
261
|
-
, definitions.types.msg |> typeToDeclaration "Msg"
|
|
723
|
+
([ definitions.types.model |> typeToDeclaration "Model" |> Elm.expose
|
|
724
|
+
, definitions.types.msg |> typeToDeclaration "Msg" |> Elm.expose
|
|
262
725
|
, Elm.alias "RouteParams"
|
|
263
726
|
(Elm.Annotation.record
|
|
264
727
|
(RoutePattern.fromModuleName moduleName
|
|
@@ -267,18 +730,51 @@ userFunction moduleName definitions =
|
|
|
267
730
|
|> Maybe.withDefault []
|
|
268
731
|
)
|
|
269
732
|
)
|
|
733
|
+
|> Elm.expose
|
|
270
734
|
, Elm.declaration "route"
|
|
271
|
-
(
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
735
|
+
((case definitions.action of
|
|
736
|
+
Action _ ->
|
|
737
|
+
serverRender_
|
|
738
|
+
{ action =
|
|
739
|
+
\routeParams ->
|
|
740
|
+
actionFn
|
|
741
|
+
|> Maybe.map
|
|
742
|
+
(\justActionFn ->
|
|
743
|
+
justActionFn.call [ routeParams ]
|
|
744
|
+
|> Elm.withType (myType "ActionData")
|
|
745
|
+
)
|
|
746
|
+
|> Maybe.withDefault Elm.unit
|
|
747
|
+
, data =
|
|
748
|
+
\routeParams ->
|
|
749
|
+
dataFn.call [ routeParams ]
|
|
750
|
+
|> Elm.withType (myType "Data")
|
|
751
|
+
, head = headFn.call
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
Pages _ ->
|
|
755
|
+
case actionFn of
|
|
756
|
+
Nothing ->
|
|
757
|
+
single_
|
|
758
|
+
{ data =
|
|
759
|
+
dataFn.call []
|
|
760
|
+
|> Elm.withType
|
|
761
|
+
(throwableTask
|
|
762
|
+
(Elm.Annotation.named [] "Data")
|
|
763
|
+
)
|
|
764
|
+
, head = headFn.call
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
Just justActionFn ->
|
|
768
|
+
preRender_
|
|
769
|
+
{ pages = justActionFn.call []
|
|
770
|
+
, data =
|
|
771
|
+
\routeParams ->
|
|
772
|
+
dataFn.call [ routeParams ]
|
|
773
|
+
|> Elm.withType
|
|
774
|
+
(throwableTask (Elm.Annotation.named [] "Data"))
|
|
775
|
+
, head = headFn.call
|
|
776
|
+
}
|
|
777
|
+
)
|
|
282
778
|
|> (case localDefinitions of
|
|
283
779
|
Just local ->
|
|
284
780
|
buildWithLocalState_
|
|
@@ -286,6 +782,7 @@ userFunction moduleName definitions =
|
|
|
286
782
|
, update = local.updateFn.call
|
|
287
783
|
, init = local.initFn.call
|
|
288
784
|
, subscriptions = local.subscriptionsFn.call
|
|
785
|
+
, state = local.state
|
|
289
786
|
}
|
|
290
787
|
>> Elm.withType
|
|
291
788
|
(Elm.Annotation.namedWith [ "RouteBuilder" ]
|
|
@@ -312,6 +809,7 @@ userFunction moduleName definitions =
|
|
|
312
809
|
)
|
|
313
810
|
)
|
|
314
811
|
)
|
|
812
|
+
|> Elm.expose
|
|
315
813
|
]
|
|
316
814
|
++ (case localDefinitions of
|
|
317
815
|
Just local ->
|
|
@@ -323,13 +821,17 @@ userFunction moduleName definitions =
|
|
|
323
821
|
Nothing ->
|
|
324
822
|
[]
|
|
325
823
|
)
|
|
326
|
-
++ [ definitions.types.data |> typeToDeclaration "Data"
|
|
327
|
-
, definitions.types.actionData |> typeToDeclaration "ActionData"
|
|
824
|
+
++ [ definitions.types.data |> typeToDeclaration "Data" |> Elm.expose
|
|
825
|
+
, definitions.types.actionData |> typeToDeclaration "ActionData" |> Elm.expose
|
|
328
826
|
, dataFn.declaration
|
|
329
|
-
, actionFn.declaration
|
|
330
827
|
, headFn.declaration
|
|
331
828
|
, viewFn.declaration
|
|
332
829
|
]
|
|
830
|
+
++ ([ actionFn |> Maybe.map .declaration
|
|
831
|
+
]
|
|
832
|
+
|> List.filterMap identity
|
|
833
|
+
)
|
|
834
|
+
++ definitions.declarations
|
|
333
835
|
)
|
|
334
836
|
|
|
335
837
|
|
|
@@ -342,14 +844,13 @@ myType : String -> Elm.Annotation.Annotation
|
|
|
342
844
|
myType dataType =
|
|
343
845
|
Elm.Annotation.namedWith [ "Server", "Request" ]
|
|
344
846
|
"Parser"
|
|
345
|
-
[
|
|
346
|
-
"
|
|
347
|
-
[ Elm.Annotation.namedWith [ "Server", "Response" ]
|
|
847
|
+
[ throwableTask
|
|
848
|
+
(Elm.Annotation.namedWith [ "Server", "Response" ]
|
|
348
849
|
"Response"
|
|
349
850
|
[ Elm.Annotation.named [] dataType
|
|
350
851
|
, Elm.Annotation.named [ "ErrorPage" ] "ErrorPage"
|
|
351
852
|
]
|
|
352
|
-
|
|
853
|
+
)
|
|
353
854
|
]
|
|
354
855
|
|
|
355
856
|
|
|
@@ -384,10 +885,8 @@ serverRender_ serverRenderArg =
|
|
|
384
885
|
(Elm.Annotation.namedWith
|
|
385
886
|
[ "Server", "Request" ]
|
|
386
887
|
"Parser"
|
|
387
|
-
[
|
|
388
|
-
|
|
389
|
-
"DataSource"
|
|
390
|
-
[ Elm.Annotation.namedWith
|
|
888
|
+
[ throwableTask
|
|
889
|
+
(Elm.Annotation.namedWith
|
|
391
890
|
[ "Server", "Response" ]
|
|
392
891
|
"Response"
|
|
393
892
|
[ Elm.Annotation.var "data"
|
|
@@ -396,7 +895,7 @@ serverRender_ serverRenderArg =
|
|
|
396
895
|
"ErrorPage"
|
|
397
896
|
[]
|
|
398
897
|
]
|
|
399
|
-
|
|
898
|
+
)
|
|
400
899
|
]
|
|
401
900
|
)
|
|
402
901
|
)
|
|
@@ -406,10 +905,8 @@ serverRender_ serverRenderArg =
|
|
|
406
905
|
(Elm.Annotation.namedWith
|
|
407
906
|
[ "Server", "Request" ]
|
|
408
907
|
"Parser"
|
|
409
|
-
[
|
|
410
|
-
|
|
411
|
-
"DataSource"
|
|
412
|
-
[ Elm.Annotation.namedWith
|
|
908
|
+
[ throwableTask
|
|
909
|
+
(Elm.Annotation.namedWith
|
|
413
910
|
[ "Server", "Response" ]
|
|
414
911
|
"Response"
|
|
415
912
|
[ Elm.Annotation.var "action"
|
|
@@ -418,7 +915,7 @@ serverRender_ serverRenderArg =
|
|
|
418
915
|
"ErrorPage"
|
|
419
916
|
[]
|
|
420
917
|
]
|
|
421
|
-
|
|
918
|
+
)
|
|
422
919
|
]
|
|
423
920
|
)
|
|
424
921
|
)
|
|
@@ -463,6 +960,116 @@ serverRender_ serverRenderArg =
|
|
|
463
960
|
]
|
|
464
961
|
|
|
465
962
|
|
|
963
|
+
preRender_ :
|
|
964
|
+
{ data : Elm.Expression -> Elm.Expression
|
|
965
|
+
, pages : Elm.Expression
|
|
966
|
+
, head : Elm.Expression -> Elm.Expression
|
|
967
|
+
}
|
|
968
|
+
-> Elm.Expression
|
|
969
|
+
preRender_ serverRenderArg =
|
|
970
|
+
Elm.apply
|
|
971
|
+
(Elm.value
|
|
972
|
+
{ importFrom = [ "RouteBuilder" ]
|
|
973
|
+
, name = "preRender"
|
|
974
|
+
, annotation =
|
|
975
|
+
Just
|
|
976
|
+
(Elm.Annotation.function
|
|
977
|
+
[ Elm.Annotation.record
|
|
978
|
+
[ ( "data"
|
|
979
|
+
, Elm.Annotation.function
|
|
980
|
+
[ Elm.Annotation.var "routeParams" ]
|
|
981
|
+
(throwableTask (Elm.Annotation.var "data"))
|
|
982
|
+
)
|
|
983
|
+
, ( "pages"
|
|
984
|
+
, throwableTask
|
|
985
|
+
(Elm.Annotation.list (Elm.Annotation.named [] "RouteParams"))
|
|
986
|
+
)
|
|
987
|
+
, ( "head"
|
|
988
|
+
, Elm.Annotation.function
|
|
989
|
+
[ Elm.Annotation.namedWith
|
|
990
|
+
[ "RouteBuilder" ]
|
|
991
|
+
"StaticPayload"
|
|
992
|
+
[ Elm.Annotation.var "data"
|
|
993
|
+
, Elm.Annotation.var "action"
|
|
994
|
+
, Elm.Annotation.var "routeParams"
|
|
995
|
+
]
|
|
996
|
+
]
|
|
997
|
+
(Elm.Annotation.list
|
|
998
|
+
(Elm.Annotation.namedWith [ "Head" ] "Tag" [])
|
|
999
|
+
)
|
|
1000
|
+
)
|
|
1001
|
+
]
|
|
1002
|
+
]
|
|
1003
|
+
(Elm.Annotation.namedWith
|
|
1004
|
+
[ "RouteBuilder" ]
|
|
1005
|
+
"Builder"
|
|
1006
|
+
[ Elm.Annotation.named [] "RouteParams"
|
|
1007
|
+
, Elm.Annotation.named [] "Data"
|
|
1008
|
+
, Elm.Annotation.named [] "Action"
|
|
1009
|
+
]
|
|
1010
|
+
)
|
|
1011
|
+
)
|
|
1012
|
+
}
|
|
1013
|
+
)
|
|
1014
|
+
[ Elm.record
|
|
1015
|
+
[ Tuple.pair "data" (Elm.functionReduced "serverRenderUnpack" serverRenderArg.data)
|
|
1016
|
+
, Tuple.pair "pages" serverRenderArg.pages
|
|
1017
|
+
, Tuple.pair "head" (Elm.functionReduced "serverRenderUnpack" serverRenderArg.head)
|
|
1018
|
+
]
|
|
1019
|
+
]
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
single_ :
|
|
1023
|
+
{ data : Elm.Expression
|
|
1024
|
+
, head : Elm.Expression -> Elm.Expression
|
|
1025
|
+
}
|
|
1026
|
+
-> Elm.Expression
|
|
1027
|
+
single_ serverRenderArg =
|
|
1028
|
+
Elm.apply
|
|
1029
|
+
(Elm.value
|
|
1030
|
+
{ importFrom = [ "RouteBuilder" ]
|
|
1031
|
+
, name = "single"
|
|
1032
|
+
, annotation =
|
|
1033
|
+
Just
|
|
1034
|
+
(Elm.Annotation.function
|
|
1035
|
+
[ Elm.Annotation.record
|
|
1036
|
+
[ ( "data"
|
|
1037
|
+
, throwableTask (Elm.Annotation.var "data")
|
|
1038
|
+
)
|
|
1039
|
+
, ( "head"
|
|
1040
|
+
, Elm.Annotation.function
|
|
1041
|
+
[ Elm.Annotation.namedWith
|
|
1042
|
+
[ "RouteBuilder" ]
|
|
1043
|
+
"StaticPayload"
|
|
1044
|
+
[ Elm.Annotation.var "data"
|
|
1045
|
+
, Elm.Annotation.var "action"
|
|
1046
|
+
, Elm.Annotation.var "routeParams"
|
|
1047
|
+
]
|
|
1048
|
+
]
|
|
1049
|
+
(Elm.Annotation.list
|
|
1050
|
+
(Elm.Annotation.namedWith [ "Head" ] "Tag" [])
|
|
1051
|
+
)
|
|
1052
|
+
)
|
|
1053
|
+
]
|
|
1054
|
+
]
|
|
1055
|
+
(Elm.Annotation.namedWith
|
|
1056
|
+
[ "RouteBuilder" ]
|
|
1057
|
+
"Builder"
|
|
1058
|
+
[ Elm.Annotation.named [] "RouteParams"
|
|
1059
|
+
, Elm.Annotation.named [] "Data"
|
|
1060
|
+
, Elm.Annotation.named [] "Action"
|
|
1061
|
+
]
|
|
1062
|
+
)
|
|
1063
|
+
)
|
|
1064
|
+
}
|
|
1065
|
+
)
|
|
1066
|
+
[ Elm.record
|
|
1067
|
+
[ Tuple.pair "data" serverRenderArg.data
|
|
1068
|
+
, Tuple.pair "head" (Elm.functionReduced "serverRenderUnpack" serverRenderArg.head)
|
|
1069
|
+
]
|
|
1070
|
+
]
|
|
1071
|
+
|
|
1072
|
+
|
|
466
1073
|
buildWithLocalState_ :
|
|
467
1074
|
{ view :
|
|
468
1075
|
Elm.Expression
|
|
@@ -486,6 +1093,7 @@ buildWithLocalState_ :
|
|
|
486
1093
|
-> Elm.Expression
|
|
487
1094
|
-> Elm.Expression
|
|
488
1095
|
-> Elm.Expression
|
|
1096
|
+
, state : State
|
|
489
1097
|
}
|
|
490
1098
|
-> Elm.Expression
|
|
491
1099
|
-> Elm.Expression
|
|
@@ -493,7 +1101,13 @@ buildWithLocalState_ buildWithLocalStateArg buildWithLocalStateArg0 =
|
|
|
493
1101
|
Elm.apply
|
|
494
1102
|
(Elm.value
|
|
495
1103
|
{ importFrom = [ "RouteBuilder" ]
|
|
496
|
-
, name =
|
|
1104
|
+
, name =
|
|
1105
|
+
case buildWithLocalStateArg.state of
|
|
1106
|
+
LocalState ->
|
|
1107
|
+
"buildWithLocalState"
|
|
1108
|
+
|
|
1109
|
+
SharedState ->
|
|
1110
|
+
"buildWithSharedState"
|
|
497
1111
|
, annotation =
|
|
498
1112
|
Just
|
|
499
1113
|
(Elm.Annotation.function
|
|
@@ -544,11 +1158,11 @@ buildWithLocalState_ buildWithLocalStateArg buildWithLocalStateArg0 =
|
|
|
544
1158
|
]
|
|
545
1159
|
]
|
|
546
1160
|
(Elm.Annotation.tuple
|
|
547
|
-
(Elm.Annotation.
|
|
1161
|
+
(Elm.Annotation.named [] "Model")
|
|
548
1162
|
(Elm.Annotation.namedWith
|
|
549
1163
|
[ "Effect" ]
|
|
550
1164
|
"Effect"
|
|
551
|
-
[ Elm.Annotation.
|
|
1165
|
+
[ Elm.Annotation.named [] "Msg" ]
|
|
552
1166
|
)
|
|
553
1167
|
)
|
|
554
1168
|
)
|
|
@@ -562,20 +1176,32 @@ buildWithLocalState_ buildWithLocalStateArg buildWithLocalStateArg0 =
|
|
|
562
1176
|
, Elm.Annotation.namedWith
|
|
563
1177
|
[ "RouteBuilder" ]
|
|
564
1178
|
"StaticPayload"
|
|
565
|
-
[
|
|
566
|
-
,
|
|
567
|
-
,
|
|
1179
|
+
[ localType "Data"
|
|
1180
|
+
, localType "ActionData"
|
|
1181
|
+
, localType "RouteParams"
|
|
568
1182
|
]
|
|
569
|
-
, Elm.Annotation.
|
|
570
|
-
, Elm.Annotation.
|
|
1183
|
+
, Elm.Annotation.named [] "Msg"
|
|
1184
|
+
, Elm.Annotation.named [] "Model"
|
|
571
1185
|
]
|
|
572
|
-
(
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
1186
|
+
(case buildWithLocalStateArg.state of
|
|
1187
|
+
LocalState ->
|
|
1188
|
+
Elm.Annotation.tuple
|
|
1189
|
+
(localType "Model")
|
|
1190
|
+
(Elm.Annotation.namedWith
|
|
1191
|
+
[ "Effect" ]
|
|
1192
|
+
"Effect"
|
|
1193
|
+
[ localType "Msg" ]
|
|
1194
|
+
)
|
|
1195
|
+
|
|
1196
|
+
SharedState ->
|
|
1197
|
+
Elm.Annotation.triple
|
|
1198
|
+
(localType "Model")
|
|
1199
|
+
(Elm.Annotation.namedWith
|
|
1200
|
+
[ "Effect" ]
|
|
1201
|
+
"Effect"
|
|
1202
|
+
[ localType "Msg" ]
|
|
1203
|
+
)
|
|
1204
|
+
(Elm.Annotation.maybe (Elm.Annotation.named [ "Shared" ] "Msg"))
|
|
579
1205
|
)
|
|
580
1206
|
)
|
|
581
1207
|
, ( "subscriptions"
|
|
@@ -591,25 +1217,25 @@ buildWithLocalState_ buildWithLocalStateArg buildWithLocalStateArg0 =
|
|
|
591
1217
|
, Elm.Annotation.namedWith [ "Shared" ] "Model" []
|
|
592
1218
|
, Elm.Annotation.var "model"
|
|
593
1219
|
]
|
|
594
|
-
(Elm.Annotation.namedWith [] "Sub" [
|
|
1220
|
+
(Elm.Annotation.namedWith [] "Sub" [ localType "Msg" ])
|
|
595
1221
|
)
|
|
596
1222
|
]
|
|
597
1223
|
, Elm.Annotation.namedWith
|
|
598
1224
|
[ "RouteBuilder" ]
|
|
599
1225
|
"Builder"
|
|
600
|
-
[
|
|
601
|
-
,
|
|
602
|
-
,
|
|
1226
|
+
[ localType "RouteParams"
|
|
1227
|
+
, localType "Data"
|
|
1228
|
+
, localType "ActionData"
|
|
603
1229
|
]
|
|
604
1230
|
]
|
|
605
1231
|
(Elm.Annotation.namedWith
|
|
606
1232
|
[ "RouteBuilder" ]
|
|
607
1233
|
"StatefulRoute"
|
|
608
|
-
[
|
|
609
|
-
,
|
|
610
|
-
,
|
|
611
|
-
,
|
|
612
|
-
,
|
|
1234
|
+
[ localType "RouteParams"
|
|
1235
|
+
, localType "Data"
|
|
1236
|
+
, localType "ActionData"
|
|
1237
|
+
, localType "Model"
|
|
1238
|
+
, localType "Msg"
|
|
613
1239
|
]
|
|
614
1240
|
)
|
|
615
1241
|
)
|
|
@@ -741,9 +1367,9 @@ buildNoState_ buildNoStateArg buildNoStateArg0 =
|
|
|
741
1367
|
, Elm.Annotation.namedWith
|
|
742
1368
|
[ "RouteBuilder" ]
|
|
743
1369
|
"StaticPayload"
|
|
744
|
-
[ Elm.Annotation.
|
|
745
|
-
, Elm.Annotation.
|
|
746
|
-
, Elm.Annotation.
|
|
1370
|
+
[ Elm.Annotation.named [] "Data"
|
|
1371
|
+
, Elm.Annotation.named [] "ActionData"
|
|
1372
|
+
, Elm.Annotation.named [] "RouteParams"
|
|
747
1373
|
]
|
|
748
1374
|
]
|
|
749
1375
|
(Elm.Annotation.namedWith
|
|
@@ -760,17 +1386,17 @@ buildNoState_ buildNoStateArg buildNoStateArg0 =
|
|
|
760
1386
|
, Elm.Annotation.namedWith
|
|
761
1387
|
[ "RouteBuilder" ]
|
|
762
1388
|
"Builder"
|
|
763
|
-
[ Elm.Annotation.
|
|
764
|
-
, Elm.Annotation.
|
|
765
|
-
, Elm.Annotation.
|
|
1389
|
+
[ Elm.Annotation.named [] "RouteParams"
|
|
1390
|
+
, Elm.Annotation.named [] "Data"
|
|
1391
|
+
, Elm.Annotation.named [] "ActionData"
|
|
766
1392
|
]
|
|
767
1393
|
]
|
|
768
1394
|
(Elm.Annotation.namedWith
|
|
769
1395
|
[ "RouteBuilder" ]
|
|
770
1396
|
"StatefulRoute"
|
|
771
|
-
[ Elm.Annotation.
|
|
772
|
-
, Elm.Annotation.
|
|
773
|
-
, Elm.Annotation.
|
|
1397
|
+
[ Elm.Annotation.named [] "RouteParams"
|
|
1398
|
+
, Elm.Annotation.named [] "Data"
|
|
1399
|
+
, Elm.Annotation.named [] "ActionData"
|
|
774
1400
|
, Elm.Annotation.record []
|
|
775
1401
|
, Elm.Annotation.unit
|
|
776
1402
|
]
|
|
@@ -798,3 +1424,20 @@ buildNoState_ buildNoStateArg buildNoStateArg0 =
|
|
|
798
1424
|
]
|
|
799
1425
|
, buildNoStateArg0
|
|
800
1426
|
]
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
effectType : Elm.Annotation.Annotation
|
|
1430
|
+
effectType =
|
|
1431
|
+
Elm.Annotation.namedWith
|
|
1432
|
+
[ "Effect" ]
|
|
1433
|
+
"Effect"
|
|
1434
|
+
[ Elm.Annotation.named [] "Msg" ]
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
throwableTask : Elm.Annotation.Annotation -> Elm.Annotation.Annotation
|
|
1438
|
+
throwableTask dataType =
|
|
1439
|
+
Elm.Annotation.namedWith [ "BackendTask" ]
|
|
1440
|
+
"BackendTask"
|
|
1441
|
+
[ Elm.Annotation.named [ "FatalError" ] "FatalError"
|
|
1442
|
+
, dataType
|
|
1443
|
+
]
|