elm-pages 3.0.9 → 3.0.11
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 +2 -2
- package/codegen/elm-pages-codegen.cjs +732 -350
- 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 +2 -2
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +7328 -7699
- 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 +2 -2
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +1 -1
- package/generator/dead-code-review/src/ReviewConfig.elm +3 -1
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +63 -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 +2 -2
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +2768 -3160
- 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 +7 -8
- package/generator/src/build.js +3 -3
- package/generator/src/cli.js +1 -1
- package/generator/src/codegen.js +1 -1
- package/generator/src/compatibility-key.js +2 -2
- package/generator/src/render.js +1 -6
- package/generator/template/app/ErrorPage.elm +15 -12
- package/generator/template/codegen/elm.codegen.json +2 -2
- package/generator/template/elm-tooling.json +1 -1
- package/generator/template/elm.json +9 -9
- package/generator/template/gitignore +2 -1
- package/generator/template/netlify.toml +1 -1
- package/generator/template/package.json +6 -5
- package/generator/template/script/elm.json +3 -3
- package/generator/template/script/src/AddStaticRoute.elm +87 -0
- package/package.json +25 -24
- package/src/ApiRoute.elm +45 -34
- package/src/BackendTask/File.elm +2 -1
- package/src/BackendTask.elm +28 -40
- package/src/FatalError.elm +2 -2
- package/src/Head/Seo.elm +3 -3
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
- package/src/Pages/Manifest.elm +2 -2
- package/src/Scaffold/Route.elm +95 -49
package/src/BackendTask.elm
CHANGED
|
@@ -199,27 +199,28 @@ combineHelp items =
|
|
|
199
199
|
List.foldl (map2 (::)) (succeed []) items |> map List.reverse
|
|
200
200
|
|
|
201
201
|
|
|
202
|
-
{-| Like map, but it takes in two `
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
202
|
+
{-| Like map, but it takes in two `BackendTask`s.
|
|
203
|
+
|
|
204
|
+
import BackendTask exposing (BackendTask)
|
|
205
|
+
import BackendTask.Env as Env
|
|
206
|
+
import BackendTask.Http
|
|
207
|
+
import FatalError exposing (FatalError)
|
|
208
|
+
import Json.Decode as Decode
|
|
209
|
+
|
|
210
|
+
type alias Data =
|
|
211
|
+
{ pokemon : List String, envValue : Maybe String }
|
|
212
|
+
|
|
213
|
+
data : BackendTask FatalError Data
|
|
214
|
+
data =
|
|
215
|
+
BackendTask.map2 Data
|
|
216
|
+
(BackendTask.Http.getJson
|
|
217
|
+
"https://pokeapi.co/api/v2/pokemon/?limit=100&offset=0"
|
|
218
|
+
(Decode.field "results"
|
|
219
|
+
(Decode.list (Decode.field "name" Decode.string))
|
|
220
|
+
)
|
|
221
|
+
|> BackendTask.allowFatal
|
|
222
222
|
)
|
|
223
|
+
(Env.get "HELLO")
|
|
223
224
|
|
|
224
225
|
-}
|
|
225
226
|
map2 : (a -> b -> c) -> BackendTask error a -> BackendTask error b -> BackendTask error c
|
|
@@ -334,28 +335,15 @@ andMap =
|
|
|
334
335
|
map2 (|>)
|
|
335
336
|
|
|
336
337
|
|
|
337
|
-
{-| This is useful for prototyping with some hardcoded data, or for having a view that doesn't have any
|
|
338
|
+
{-| This is useful for prototyping with some hardcoded data, or for having a view that doesn't have any BackendTask data.
|
|
338
339
|
|
|
339
|
-
import BackendTask
|
|
340
|
+
import BackendTask exposing (BackendTask)
|
|
341
|
+
|
|
342
|
+
type alias RouteParams = { name : String }
|
|
340
343
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
{ path : PagePath
|
|
345
|
-
, frontmatter : Metadata
|
|
346
|
-
}
|
|
347
|
-
->
|
|
348
|
-
StaticHttp.Request
|
|
349
|
-
{ view : Model -> View -> { title : String, body : Html Msg }
|
|
350
|
-
, head : List (Head.Tag Pages.PathKey)
|
|
351
|
-
}
|
|
352
|
-
view siteMetadata page =
|
|
353
|
-
StaticHttp.succeed
|
|
354
|
-
{ view =
|
|
355
|
-
\model viewForPage ->
|
|
356
|
-
mainView model viewForPage
|
|
357
|
-
, head = head page.frontmatter
|
|
358
|
-
}
|
|
344
|
+
pages : BackendTask error (List RouteParams)
|
|
345
|
+
pages =
|
|
346
|
+
BackendTask.succeed [ { name = "elm-pages" } ]
|
|
359
347
|
|
|
360
348
|
-}
|
|
361
349
|
succeed : a -> BackendTask error a
|
package/src/FatalError.elm
CHANGED
|
@@ -20,8 +20,8 @@ For example, if you wanted to handle possible errors to present them to the user
|
|
|
20
20
|
BackendTask.Http.getJson "https://api.github.com/repos/dillonkearns/elm-pages"
|
|
21
21
|
(Decode.field "description" Decode.string)
|
|
22
22
|
|> BackendTask.onError
|
|
23
|
-
(\
|
|
24
|
-
case
|
|
23
|
+
(\{ recoverable } ->
|
|
24
|
+
case recoverable of
|
|
25
25
|
BackendTask.Http.BadStatus metadata string ->
|
|
26
26
|
if metadata.statusCode == 401 || metadata.statusCode == 403 || metadata.statusCode == 404 then
|
|
27
27
|
BackendTask.succeed "Either this repo doesn't exist or you don't have access to it."
|
package/src/Head/Seo.elm
CHANGED
|
@@ -52,8 +52,8 @@ includes common meta tags used for rich link previews, namely [OpenGraph tags](h
|
|
|
52
52
|
import DateOrDateTime exposing (DateOrDateTime)
|
|
53
53
|
import Head
|
|
54
54
|
import Head.Twitter as Twitter
|
|
55
|
-
import LanguageTag.Country
|
|
56
55
|
import LanguageTag.Language
|
|
56
|
+
import LanguageTag.Region
|
|
57
57
|
import MimeType exposing (MimeType)
|
|
58
58
|
import Pages.Url
|
|
59
59
|
|
|
@@ -315,7 +315,7 @@ localeToString : Locale -> String
|
|
|
315
315
|
localeToString ( language, territory ) =
|
|
316
316
|
LanguageTag.Language.toCodeString language
|
|
317
317
|
++ "_"
|
|
318
|
-
++ LanguageTag.
|
|
318
|
+
++ LanguageTag.Region.toCodeString territory
|
|
319
319
|
|
|
320
320
|
|
|
321
321
|
tagsForCommon : Common -> List ( String, Maybe Head.AttributeValue )
|
|
@@ -361,7 +361,7 @@ tagsForAudio audio =
|
|
|
361
361
|
|
|
362
362
|
|
|
363
363
|
type alias Locale =
|
|
364
|
-
( LanguageTag.Language.Language, LanguageTag.
|
|
364
|
+
( LanguageTag.Language.Language, LanguageTag.Region.Region )
|
|
365
365
|
|
|
366
366
|
|
|
367
367
|
type Content
|
package/src/Pages/Manifest.elm
CHANGED
|
@@ -72,8 +72,8 @@ import FatalError exposing (FatalError)
|
|
|
72
72
|
import Head
|
|
73
73
|
import Json.Encode as Encode
|
|
74
74
|
import LanguageTag exposing (LanguageTag, emptySubtags)
|
|
75
|
-
import LanguageTag.Country as Country
|
|
76
75
|
import LanguageTag.Language
|
|
76
|
+
import LanguageTag.Region as Region
|
|
77
77
|
import MimeType
|
|
78
78
|
import Pages.Manifest.Category as Category exposing (Category)
|
|
79
79
|
import Pages.Url
|
|
@@ -140,7 +140,7 @@ usEnglish =
|
|
|
140
140
|
LanguageTag.Language.en
|
|
141
141
|
|> LanguageTag.build
|
|
142
142
|
{ emptySubtags
|
|
143
|
-
| region = Just
|
|
143
|
+
| region = Just Region.us
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
|
package/src/Scaffold/Route.elm
CHANGED
|
@@ -118,7 +118,15 @@ serverRender =
|
|
|
118
118
|
ServerRender []
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
{-|
|
|
121
|
+
{-| Will scaffold using `RouteBuilder.preRender` if there are any dynamic segments (as in `Company.Team.Name_`),
|
|
122
|
+
or using `RouteBuilder.single` if there are no dynamic segments (as in `Company.AboutUs`).
|
|
123
|
+
|
|
124
|
+
When there are no dynamic segments, the `pages` field will be ignored as it is only relevant for Routes with dynamic segments.
|
|
125
|
+
|
|
126
|
+
For dynamic segments, the `routeParams` parameter in the `data` function will be an `Elm.Expression` with the `RouteParams` parameter in the `data` function.
|
|
127
|
+
For static segments, it will be a hardcoded empty record (`{}`).
|
|
128
|
+
|
|
129
|
+
-}
|
|
122
130
|
preRender :
|
|
123
131
|
{ data : ( Type, Elm.Expression -> Elm.Expression )
|
|
124
132
|
, pages : Elm.Expression
|
|
@@ -127,29 +135,41 @@ preRender :
|
|
|
127
135
|
}
|
|
128
136
|
-> Builder
|
|
129
137
|
preRender input =
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
138
|
+
let
|
|
139
|
+
hasDynamicRouteSegments : Bool
|
|
140
|
+
hasDynamicRouteSegments =
|
|
141
|
+
RoutePattern.fromModuleName input.moduleName
|
|
142
|
+
|> Maybe.map RoutePattern.hasRouteParams
|
|
143
|
+
|> Maybe.withDefault False
|
|
144
|
+
in
|
|
145
|
+
if hasDynamicRouteSegments then
|
|
146
|
+
PreRender []
|
|
147
|
+
{ data = input.data
|
|
148
|
+
, pages =
|
|
149
|
+
input.pages
|
|
150
|
+
|> Elm.withType
|
|
151
|
+
(throwableTask
|
|
152
|
+
(Elm.Annotation.list <| Elm.Annotation.named [] "RouteParams")
|
|
153
|
+
)
|
|
154
|
+
|> Just
|
|
155
|
+
, head = input.head
|
|
156
|
+
, moduleName = input.moduleName
|
|
157
|
+
}
|
|
150
158
|
|
|
159
|
+
else
|
|
160
|
+
PreRender []
|
|
161
|
+
{ data = input.data
|
|
162
|
+
, pages = Nothing
|
|
163
|
+
, head = input.head
|
|
164
|
+
, moduleName = input.moduleName
|
|
165
|
+
}
|
|
151
166
|
|
|
152
|
-
|
|
167
|
+
|
|
168
|
+
{-| @depreacted. This is obsolete and will be removed in a future release. Use [`preRender`](#preRender) instead.
|
|
169
|
+
|
|
170
|
+
If you pass in only static route segments as the `moduleName` to `preRender` it will yield the same result as `single`.
|
|
171
|
+
|
|
172
|
+
-}
|
|
153
173
|
single :
|
|
154
174
|
{ data : ( Type, Elm.Expression )
|
|
155
175
|
, head : Elm.Expression -> Elm.Expression
|
|
@@ -656,7 +676,7 @@ userFunction moduleName definitions =
|
|
|
656
676
|
Elm.Declare.function "data"
|
|
657
677
|
[]
|
|
658
678
|
(\_ ->
|
|
659
|
-
definitions.data Elm.unit Elm.
|
|
679
|
+
definitions.data Elm.unit (Elm.record [])
|
|
660
680
|
|> Elm.withType
|
|
661
681
|
(case definitions.action of
|
|
662
682
|
Pages _ ->
|
|
@@ -668,34 +688,60 @@ userFunction moduleName definitions =
|
|
|
668
688
|
)
|
|
669
689
|
|
|
670
690
|
_ ->
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
+
case definitions.action of
|
|
692
|
+
Pages _ ->
|
|
693
|
+
Elm.Declare.function "data"
|
|
694
|
+
[ ( "routeParams"
|
|
695
|
+
, "RouteParams"
|
|
696
|
+
|> Elm.Annotation.named []
|
|
697
|
+
|> Just
|
|
698
|
+
)
|
|
699
|
+
]
|
|
700
|
+
(\args ->
|
|
701
|
+
case args of
|
|
702
|
+
[ arg ] ->
|
|
703
|
+
definitions.data
|
|
704
|
+
(arg
|
|
705
|
+
|> Elm.withType
|
|
706
|
+
(throwableTask
|
|
707
|
+
(Elm.Annotation.named [] "Data")
|
|
708
|
+
)
|
|
709
|
+
)
|
|
710
|
+
Elm.unit
|
|
691
711
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
712
|
+
_ ->
|
|
713
|
+
Elm.unit
|
|
714
|
+
)
|
|
695
715
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
716
|
+
Action _ ->
|
|
717
|
+
Elm.Declare.function "data"
|
|
718
|
+
[ ( "routeParams"
|
|
719
|
+
, "RouteParams"
|
|
720
|
+
|> Elm.Annotation.named []
|
|
721
|
+
|> Just
|
|
722
|
+
)
|
|
723
|
+
, ( "request"
|
|
724
|
+
, "Request"
|
|
725
|
+
|> Elm.Annotation.named [ "Server", "Request" ]
|
|
726
|
+
|> Just
|
|
727
|
+
)
|
|
728
|
+
]
|
|
729
|
+
(\args ->
|
|
730
|
+
case args of
|
|
731
|
+
[ arg, arg2 ] ->
|
|
732
|
+
definitions.data arg arg2
|
|
733
|
+
|> Elm.withType
|
|
734
|
+
(case definitions.action of
|
|
735
|
+
Pages _ ->
|
|
736
|
+
throwableTask (Elm.Annotation.named [] "Data")
|
|
737
|
+
|
|
738
|
+
Action _ ->
|
|
739
|
+
myType "Data"
|
|
740
|
+
)
|
|
741
|
+
|
|
742
|
+
_ ->
|
|
743
|
+
Elm.unit
|
|
744
|
+
)
|
|
699
745
|
|
|
700
746
|
actionFn : Maybe { declaration : Elm.Declaration, call : List Elm.Expression -> Elm.Expression, callFrom : List String -> List Elm.Expression -> Elm.Expression, value : List String -> Elm.Expression }
|
|
701
747
|
actionFn =
|