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

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 (140) 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} +2678 -2725
  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 +115 -109
  32. package/generator/src/SharedTemplate.elm +3 -2
  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 +537 -0
  86. package/src/FatalError.elm +90 -0
  87. package/src/Head.elm +237 -7
  88. package/src/HtmlPrinter.elm +7 -3
  89. package/src/Internal/ApiRoute.elm +7 -5
  90. package/src/PageServerResponse.elm +6 -1
  91. package/src/Pages/Form.elm +229 -0
  92. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  93. package/src/Pages/Internal/FatalError.elm +5 -0
  94. package/src/Pages/Internal/Msg.elm +93 -0
  95. package/src/Pages/Internal/Platform/Cli.elm +612 -763
  96. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  97. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  98. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  99. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  100. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  101. package/src/Pages/Internal/Platform.elm +327 -194
  102. package/src/Pages/Internal/Script.elm +17 -0
  103. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  104. package/src/Pages/Manifest.elm +29 -4
  105. package/src/Pages/PageUrl.elm +23 -9
  106. package/src/Pages/ProgramConfig.elm +26 -15
  107. package/src/Pages/Script.elm +109 -0
  108. package/src/Pages/SiteConfig.elm +3 -2
  109. package/src/Pages/StaticHttp/Request.elm +2 -2
  110. package/src/Pages/StaticHttpRequest.elm +23 -99
  111. package/src/Pages/Transition.elm +12 -3
  112. package/src/PagesMsg.elm +82 -0
  113. package/src/Path.elm +16 -19
  114. package/src/QueryParams.elm +21 -172
  115. package/src/RequestsAndPending.elm +37 -20
  116. package/src/Result/Extra.elm +26 -0
  117. package/src/Scaffold/Form.elm +546 -0
  118. package/src/Scaffold/Route.elm +1402 -0
  119. package/src/Server/Request.elm +73 -72
  120. package/src/Server/Session.elm +62 -42
  121. package/src/Server/SetCookie.elm +12 -4
  122. package/src/Stub.elm +53 -0
  123. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  124. package/src/DataSource/Env.elm +0 -38
  125. package/src/DataSource/Http.elm +0 -446
  126. package/src/DataSource/Internal/Request.elm +0 -20
  127. package/src/DataSource/Port.elm +0 -90
  128. package/src/DataSource.elm +0 -538
  129. package/src/Form/Field.elm +0 -717
  130. package/src/Form/FieldStatus.elm +0 -36
  131. package/src/Form/FieldView.elm +0 -417
  132. package/src/Form/FormData.elm +0 -22
  133. package/src/Form/Validation.elm +0 -391
  134. package/src/Form/Value.elm +0 -118
  135. package/src/Form.elm +0 -1683
  136. package/src/FormDecoder.elm +0 -102
  137. package/src/Pages/FormState.elm +0 -256
  138. package/src/Pages/Generate.elm +0 -800
  139. package/src/Pages/Internal/Form.elm +0 -17
  140. package/src/Pages/Msg.elm +0 -79
@@ -1,36 +0,0 @@
1
- module Form.FieldStatus exposing (FieldStatus(..), fieldStatusToString)
2
-
3
- {-| elm-pages manages the client-side state of fields, including Status which you can use to determine when
4
- in the user's workflow to show validation errors.
5
-
6
-
7
- ## Field Status
8
-
9
- @docs FieldStatus, fieldStatusToString
10
-
11
- -}
12
-
13
-
14
- {-| -}
15
- type FieldStatus
16
- = NotVisited
17
- | Focused
18
- | Changed
19
- | Blurred
20
-
21
-
22
- {-| -}
23
- fieldStatusToString : FieldStatus -> String
24
- fieldStatusToString fieldStatus =
25
- case fieldStatus of
26
- NotVisited ->
27
- "NotVisited"
28
-
29
- Focused ->
30
- "Focused"
31
-
32
- Changed ->
33
- "Changed"
34
-
35
- Blurred ->
36
- "Blurred"
@@ -1,417 +0,0 @@
1
- module Form.FieldView exposing
2
- ( Input(..), InputType(..), Options(..), input, inputTypeToString, radio, toHtmlProperties, Hidden(..), select
3
- , radioStyled, inputStyled
4
- )
5
-
6
- {-|
7
-
8
- @docs Input, InputType, Options, input, inputTypeToString, radio, toHtmlProperties, Hidden, select
9
-
10
-
11
- ## Html.Styled Helpers
12
-
13
- @docs radioStyled, inputStyled
14
-
15
- -}
16
-
17
- import Form.Validation
18
- import Html exposing (Html)
19
- import Html.Attributes as Attr
20
- import Html.Styled
21
- import Html.Styled.Attributes as StyledAttr
22
- import Json.Encode as Encode
23
- import Pages.Internal.Form exposing (Validation(..), ViewField)
24
-
25
-
26
- {-| -}
27
- type InputType
28
- = Text
29
- | Number
30
- -- TODO should range have arguments for initial, min, and max?
31
- | Range
32
- | Radio
33
- -- TODO should submit be a special type, or an Input type?
34
- -- TODO have an option for a submit with a name/value?
35
- | Date
36
- | Time
37
- | Checkbox
38
- | Tel
39
- | Search
40
- | Password
41
- | Email
42
- | Url
43
- | Textarea
44
-
45
-
46
- {-| -}
47
- inputTypeToString : InputType -> String
48
- inputTypeToString inputType =
49
- case inputType of
50
- Text ->
51
- "text"
52
-
53
- Textarea ->
54
- "text"
55
-
56
- Number ->
57
- "number"
58
-
59
- Range ->
60
- "range"
61
-
62
- Radio ->
63
- "radio"
64
-
65
- Date ->
66
- "date"
67
-
68
- Time ->
69
- "time"
70
-
71
- Checkbox ->
72
- "checkbox"
73
-
74
- Tel ->
75
- "tel"
76
-
77
- Search ->
78
- "search"
79
-
80
- Password ->
81
- "password"
82
-
83
- Email ->
84
- "email"
85
-
86
- Url ->
87
- "url"
88
-
89
-
90
- {-| -}
91
- type Input
92
- = Input InputType
93
-
94
-
95
- {-| There are no render helpers for hidden fields because the `Form.renderHtml` helper functions automatically render hidden fields for you.
96
- -}
97
- type Hidden
98
- = Hidden
99
-
100
-
101
- {-| -}
102
- type Options a
103
- = Options (String -> Maybe a) (List String)
104
-
105
-
106
- {-| -}
107
- input :
108
- List (Html.Attribute msg)
109
- -> Form.Validation.Field error parsed Input
110
- -> Html msg
111
- input attrs (Validation viewField fieldName _) =
112
- let
113
- justViewField : ViewField Input
114
- justViewField =
115
- expectViewField viewField
116
-
117
- rawField : { name : String, value : Maybe String, kind : ( Input, List ( String, Encode.Value ) ) }
118
- rawField =
119
- { name = fieldName |> Maybe.withDefault ""
120
- , value = justViewField.value
121
- , kind = justViewField.kind
122
- }
123
- in
124
- case rawField.kind of
125
- ( Input Textarea, properties ) ->
126
- Html.textarea
127
- (attrs
128
- ++ toHtmlProperties properties
129
- ++ [ Attr.value (rawField.value |> Maybe.withDefault "")
130
- , Attr.name rawField.name
131
- ]
132
- )
133
- []
134
-
135
- ( Input inputType, properties ) ->
136
- Html.input
137
- (attrs
138
- ++ toHtmlProperties properties
139
- ++ [ (case inputType of
140
- Checkbox ->
141
- Attr.checked ((rawField.value |> Maybe.withDefault "") == "on")
142
-
143
- _ ->
144
- Attr.value (rawField.value |> Maybe.withDefault "")
145
- -- TODO is this an okay default?
146
- )
147
- , Attr.name rawField.name
148
- , inputType |> inputTypeToString |> Attr.type_
149
- ]
150
- )
151
- []
152
-
153
-
154
- {-| -}
155
- inputStyled :
156
- List (Html.Styled.Attribute msg)
157
- -> Form.Validation.Field error parsed Input
158
- -> Html.Styled.Html msg
159
- inputStyled attrs (Validation viewField fieldName _) =
160
- let
161
- justViewField : ViewField Input
162
- justViewField =
163
- expectViewField viewField
164
-
165
- rawField : { name : String, value : Maybe String, kind : ( Input, List ( String, Encode.Value ) ) }
166
- rawField =
167
- { name = fieldName |> Maybe.withDefault ""
168
- , value = justViewField.value
169
- , kind = justViewField.kind
170
- }
171
- in
172
- case rawField.kind of
173
- ( Input Textarea, properties ) ->
174
- Html.Styled.textarea
175
- (attrs
176
- ++ (toHtmlProperties properties |> List.map StyledAttr.fromUnstyled)
177
- ++ ([ Attr.value (rawField.value |> Maybe.withDefault "")
178
- , Attr.name rawField.name
179
- ]
180
- |> List.map StyledAttr.fromUnstyled
181
- )
182
- )
183
- []
184
-
185
- ( Input inputType, properties ) ->
186
- Html.Styled.input
187
- (attrs
188
- ++ (toHtmlProperties properties |> List.map StyledAttr.fromUnstyled)
189
- ++ ([ (case inputType of
190
- Checkbox ->
191
- Attr.checked ((rawField.value |> Maybe.withDefault "") == "on")
192
-
193
- _ ->
194
- Attr.value (rawField.value |> Maybe.withDefault "")
195
- -- TODO is this an okay default?
196
- )
197
- , Attr.name rawField.name
198
- , inputType |> inputTypeToString |> Attr.type_
199
- ]
200
- |> List.map StyledAttr.fromUnstyled
201
- )
202
- )
203
- []
204
-
205
-
206
- {-| -}
207
- select :
208
- List (Html.Attribute msg)
209
- ->
210
- (parsed
211
- ->
212
- ( List (Html.Attribute msg)
213
- , String
214
- )
215
- )
216
- -> Form.Validation.Field error parsed2 (Options parsed)
217
- -> Html msg
218
- select selectAttrs enumToOption (Validation viewField fieldName _) =
219
- let
220
- justViewField : ViewField (Options parsed)
221
- justViewField =
222
- viewField |> expectViewField
223
-
224
- rawField : { name : String, value : Maybe String, kind : ( Options parsed, List ( String, Encode.Value ) ) }
225
- rawField =
226
- { name = fieldName |> Maybe.withDefault ""
227
- , value = justViewField.value
228
- , kind = justViewField.kind
229
- }
230
-
231
- (Options parseValue possibleValues) =
232
- rawField.kind |> Tuple.first
233
- in
234
- Html.select
235
- (selectAttrs
236
- ++ [ Attr.value (rawField.value |> Maybe.withDefault "")
237
- , Attr.name rawField.name
238
- ]
239
- )
240
- (possibleValues
241
- |> List.filterMap
242
- (\possibleValue ->
243
- let
244
- parsed : Maybe parsed
245
- parsed =
246
- possibleValue
247
- |> parseValue
248
- in
249
- case parsed of
250
- Just justParsed ->
251
- let
252
- ( optionAttrs, content ) =
253
- enumToOption justParsed
254
- in
255
- Html.option (Attr.value possibleValue :: optionAttrs) [ Html.text content ]
256
- |> Just
257
-
258
- Nothing ->
259
- Nothing
260
- )
261
- )
262
-
263
-
264
- {-| -}
265
- radio :
266
- List (Html.Attribute msg)
267
- ->
268
- (parsed
269
- -> (List (Html.Attribute msg) -> Html msg)
270
- -> Html msg
271
- )
272
- -> Form.Validation.Field error parsed2 (Options parsed)
273
- -> Html msg
274
- radio selectAttrs enumToOption (Validation viewField fieldName _) =
275
- let
276
- justViewField : ViewField (Options parsed)
277
- justViewField =
278
- viewField |> expectViewField
279
-
280
- rawField : { name : String, value : Maybe String, kind : ( Options parsed, List ( String, Encode.Value ) ) }
281
- rawField =
282
- { name = fieldName |> Maybe.withDefault ""
283
- , value = justViewField.value
284
- , kind = justViewField.kind
285
- }
286
-
287
- (Options parseValue possibleValues) =
288
- rawField.kind |> Tuple.first
289
- in
290
- Html.fieldset
291
- (selectAttrs
292
- ++ [ Attr.value (rawField.value |> Maybe.withDefault "")
293
- , Attr.name rawField.name
294
- ]
295
- )
296
- (possibleValues
297
- |> List.filterMap
298
- (\possibleValue ->
299
- let
300
- parsed : Maybe parsed
301
- parsed =
302
- possibleValue
303
- |> parseValue
304
- in
305
- case parsed of
306
- Just justParsed ->
307
- let
308
- renderedElement : Html msg
309
- renderedElement =
310
- enumToOption justParsed
311
- (\userHtmlAttrs ->
312
- Html.input
313
- ([ Attr.type_ "radio"
314
- , Attr.value possibleValue
315
- , Attr.name rawField.name
316
- , Attr.checked (rawField.value == Just possibleValue)
317
- ]
318
- ++ userHtmlAttrs
319
- )
320
- []
321
- )
322
- in
323
- Just renderedElement
324
-
325
- Nothing ->
326
- Nothing
327
- )
328
- )
329
-
330
-
331
- expectViewField : Maybe (ViewField kind) -> ViewField kind
332
- expectViewField viewField =
333
- case viewField of
334
- Just justViewField ->
335
- justViewField
336
-
337
- Nothing ->
338
- expectViewField viewField
339
-
340
-
341
- {-| -}
342
- radioStyled :
343
- List (Html.Styled.Attribute msg)
344
- ->
345
- (parsed
346
- -> (List (Html.Styled.Attribute msg) -> Html.Styled.Html msg)
347
- -> Html.Styled.Html msg
348
- )
349
- -> Form.Validation.Field error parsed2 (Options parsed)
350
- -> Html.Styled.Html msg
351
- radioStyled selectAttrs enumToOption (Validation viewField fieldName _) =
352
- let
353
- justViewField : ViewField (Options parsed)
354
- justViewField =
355
- viewField |> expectViewField
356
-
357
- rawField : { name : String, value : Maybe String, kind : ( Options parsed, List ( String, Encode.Value ) ) }
358
- rawField =
359
- { name = fieldName |> Maybe.withDefault ""
360
- , value = justViewField.value
361
- , kind = justViewField.kind
362
- }
363
-
364
- (Options parseValue possibleValues) =
365
- rawField.kind |> Tuple.first
366
- in
367
- Html.Styled.fieldset
368
- (selectAttrs
369
- ++ [ StyledAttr.value (rawField.value |> Maybe.withDefault "")
370
- , StyledAttr.name rawField.name
371
- ]
372
- )
373
- (possibleValues
374
- |> List.filterMap
375
- (\possibleValue ->
376
- let
377
- parsed : Maybe parsed
378
- parsed =
379
- possibleValue
380
- |> parseValue
381
- in
382
- case parsed of
383
- Just justParsed ->
384
- let
385
- renderedElement : Html.Styled.Html msg
386
- renderedElement =
387
- enumToOption justParsed
388
- (\userHtmlAttrs ->
389
- Html.Styled.input
390
- (([ Attr.type_ "radio"
391
- , Attr.value possibleValue
392
- , Attr.name rawField.name
393
- , Attr.checked (rawField.value == Just possibleValue)
394
- ]
395
- |> List.map StyledAttr.fromUnstyled
396
- )
397
- ++ userHtmlAttrs
398
- )
399
- []
400
- )
401
- in
402
- Just renderedElement
403
-
404
- Nothing ->
405
- Nothing
406
- )
407
- )
408
-
409
-
410
- {-| -}
411
- toHtmlProperties : List ( String, Encode.Value ) -> List (Html.Attribute msg)
412
- toHtmlProperties properties =
413
- properties
414
- |> List.map
415
- (\( key, value ) ->
416
- Attr.property key value
417
- )
@@ -1,22 +0,0 @@
1
- module Form.FormData exposing (FormData, Method(..))
2
-
3
- {-|
4
-
5
- @docs FormData, Method
6
-
7
- -}
8
-
9
-
10
- {-| -}
11
- type alias FormData =
12
- { fields : List ( String, String )
13
- , method : Method
14
- , action : String
15
- , id : Maybe String
16
- }
17
-
18
-
19
- {-| -}
20
- type Method
21
- = Get
22
- | Post