elm-pages 2.1.10 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/{template/public/style.css → review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/lock} +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 -0
- package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +6795 -0
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +27617 -0
- package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +110 -0
- package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +187 -0
- package/generator/review/elm-stuff/tests-0.19.1/js/package.json +1 -0
- package/generator/review/elm-stuff/tests-0.19.1/src/Reporter.elm +26 -0
- package/generator/review/elm-stuff/tests-0.19.1/src/Runner.elm +62 -0
- package/generator/review/elm.json +13 -4
- package/{src → generator/review/src}/Pages/Review/NoContractViolations.elm +148 -148
- package/generator/review/tests/Pages/Review/NoContractViolationsTest.elm +331 -0
- package/generator/src/RouteBuilder.elm +420 -0
- package/generator/src/SharedTemplate.elm +4 -5
- package/generator/src/SiteConfig.elm +3 -9
- package/generator/src/build.js +308 -95
- package/generator/src/cli.js +103 -8
- package/generator/src/codegen.js +192 -35
- package/generator/src/compile-elm.js +183 -31
- package/generator/src/dev-server.js +353 -96
- package/generator/src/elm-application.json +3 -1
- package/generator/src/elm-codegen.js +34 -0
- package/generator/src/elm-file-constants.js +2 -0
- package/generator/src/error-formatter.js +20 -1
- package/generator/src/generate-template-module-connector.js +120 -924
- package/generator/src/hello.ts +5 -0
- package/generator/src/pre-render-html.js +58 -104
- package/generator/src/render-worker.js +27 -13
- package/generator/src/render.js +252 -197
- package/generator/src/request-cache-fs.js +18 -0
- package/generator/src/request-cache.js +128 -56
- package/generator/src/rewrite-client-elm-json.js +49 -0
- package/generator/src/route-codegen-helpers.js +62 -1
- package/generator/static-code/dev-style.css +22 -0
- package/generator/static-code/elm-pages.js +43 -39
- package/generator/static-code/hmr.js +98 -88
- package/generator/template/app/Api.elm +25 -0
- package/generator/template/app/ErrorPage.elm +38 -0
- package/generator/template/app/Route/Index.elm +87 -0
- package/generator/template/{src → app}/Shared.elm +34 -13
- package/generator/template/app/Site.elm +19 -0
- package/generator/template/{src → app}/View.elm +0 -0
- package/generator/template/elm-pages.config.mjs +5 -0
- package/generator/template/elm.json +14 -5
- package/generator/template/{public/index.js → index.ts} +7 -3
- package/generator/template/package.json +5 -5
- package/generator/template/public/favicon.ico +0 -0
- package/generator/template/public/images/icon-png.png +0 -0
- package/generator/template/src/.gitkeep +0 -0
- package/generator/template/style.css +4 -0
- package/package.json +30 -23
- package/src/ApiRoute.elm +176 -43
- package/src/BuildError.elm +10 -1
- package/src/CookieParser.elm +84 -0
- package/src/DataSource/Env.elm +38 -0
- package/src/DataSource/File.elm +27 -16
- package/src/DataSource/Glob.elm +126 -80
- package/src/DataSource/Http.elm +283 -304
- package/src/DataSource/Internal/Glob.elm +5 -21
- package/src/DataSource/Internal/Request.elm +25 -0
- package/src/DataSource/Port.elm +17 -14
- package/src/DataSource.elm +55 -318
- package/src/Form/Field.elm +717 -0
- package/src/Form/FieldStatus.elm +36 -0
- package/src/Form/FieldView.elm +417 -0
- package/src/Form/FormData.elm +22 -0
- package/src/Form/Validation.elm +391 -0
- package/src/Form/Value.elm +118 -0
- package/src/Form.elm +1683 -0
- package/src/FormData.elm +58 -0
- package/src/FormDecoder.elm +102 -0
- package/src/Head/Seo.elm +12 -4
- package/src/Head.elm +12 -2
- package/src/HtmlPrinter.elm +1 -1
- package/src/Internal/ApiRoute.elm +17 -4
- package/src/Internal/Request.elm +7 -0
- package/src/PageServerResponse.elm +68 -0
- package/src/Pages/ContentCache.elm +1 -229
- package/src/Pages/Fetcher.elm +58 -0
- package/src/Pages/FormState.elm +256 -0
- package/src/Pages/Generate.elm +800 -0
- package/src/Pages/Internal/Form.elm +17 -0
- package/src/Pages/Internal/NotFoundReason.elm +3 -55
- package/src/Pages/Internal/Platform/Cli.elm +777 -579
- package/src/Pages/Internal/Platform/Effect.elm +5 -5
- package/src/Pages/Internal/Platform/StaticResponses.elm +178 -394
- package/src/Pages/Internal/Platform/ToJsPayload.elm +24 -23
- package/src/Pages/Internal/Platform.elm +1244 -504
- package/src/Pages/Internal/ResponseSketch.elm +19 -0
- package/src/Pages/Internal/RoutePattern.elm +596 -45
- package/src/Pages/Manifest.elm +26 -0
- package/src/Pages/Msg.elm +79 -0
- package/src/Pages/ProgramConfig.elm +67 -14
- package/src/Pages/SiteConfig.elm +3 -6
- package/src/Pages/StaticHttp/Request.elm +4 -2
- package/src/Pages/StaticHttpRequest.elm +50 -215
- package/src/Pages/Transition.elm +70 -0
- package/src/Path.elm +1 -0
- package/src/Pattern.elm +98 -0
- package/src/RenderRequest.elm +2 -2
- package/src/RequestsAndPending.elm +111 -9
- package/src/Server/Request.elm +1253 -0
- package/src/Server/Response.elm +292 -0
- package/src/Server/Session.elm +316 -0
- package/src/Server/SetCookie.elm +169 -0
- package/src/TerminalText.elm +1 -1
- package/src/Test/Html/Internal/ElmHtml/Markdown.elm +0 -1
- package/src/Test/Html/Internal/ElmHtml/ToString.elm +1 -1
- package/generator/src/Page.elm +0 -359
- package/generator/src/codegen-template-module.js +0 -183
- package/generator/src/elm-pages-js-minified.js +0 -1
- package/generator/template/src/Api.elm +0 -14
- package/generator/template/src/Page/Index.elm +0 -69
- package/generator/template/src/Site.elm +0 -41
- package/src/DataSource/ServerRequest.elm +0 -60
- package/src/Internal/OptimizedDecoder.elm +0 -18
- package/src/KeepOrDiscard.elm +0 -6
- package/src/OptimizedDecoder/Pipeline.elm +0 -335
- package/src/OptimizedDecoder.elm +0 -818
- package/src/Pages/Internal/ApplicationType.elm +0 -6
- package/src/Pages/Secrets.elm +0 -83
- package/src/Secrets.elm +0 -111
- package/src/SecretsDict.elm +0 -45
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
module Pages.Transition exposing
|
|
2
|
+
( Transition(..), LoadingState(..), map
|
|
3
|
+
, FetcherState, FetcherSubmitStatus(..)
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
{-|
|
|
7
|
+
|
|
8
|
+
@docs Transition, LoadingState, map
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Fetchers
|
|
12
|
+
|
|
13
|
+
@docs FetcherState, FetcherSubmitStatus
|
|
14
|
+
|
|
15
|
+
-}
|
|
16
|
+
|
|
17
|
+
import Form.FormData exposing (FormData)
|
|
18
|
+
import Path exposing (Path)
|
|
19
|
+
import Time
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
{-| -}
|
|
23
|
+
type Transition
|
|
24
|
+
= Submitting FormData
|
|
25
|
+
| LoadAfterSubmit FormData Path LoadingState
|
|
26
|
+
| Loading Path LoadingState
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
{-| -}
|
|
30
|
+
type LoadingState
|
|
31
|
+
= Redirecting
|
|
32
|
+
| Load
|
|
33
|
+
| ActionRedirect
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
{-| -}
|
|
37
|
+
type alias FetcherState actionData =
|
|
38
|
+
{ status : FetcherSubmitStatus actionData
|
|
39
|
+
, payload : FormData
|
|
40
|
+
, initiatedAt : Time.Posix
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
{-| -}
|
|
45
|
+
type FetcherSubmitStatus actionData
|
|
46
|
+
= FetcherSubmitting
|
|
47
|
+
| FetcherReloading actionData
|
|
48
|
+
| FetcherComplete actionData
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
{-| -}
|
|
52
|
+
map : (a -> b) -> FetcherState a -> FetcherState b
|
|
53
|
+
map mapFn fetcherState =
|
|
54
|
+
{ status = mapStatus mapFn fetcherState.status
|
|
55
|
+
, payload = fetcherState.payload
|
|
56
|
+
, initiatedAt = fetcherState.initiatedAt
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
mapStatus : (a -> b) -> FetcherSubmitStatus a -> FetcherSubmitStatus b
|
|
61
|
+
mapStatus mapFn fetcherSubmitStatus =
|
|
62
|
+
case fetcherSubmitStatus of
|
|
63
|
+
FetcherSubmitting ->
|
|
64
|
+
FetcherSubmitting
|
|
65
|
+
|
|
66
|
+
FetcherReloading value ->
|
|
67
|
+
FetcherReloading (mapFn value)
|
|
68
|
+
|
|
69
|
+
FetcherComplete value ->
|
|
70
|
+
FetcherComplete (mapFn value)
|
package/src/Path.elm
CHANGED
package/src/Pattern.elm
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Pattern exposing (Pattern(..), Segment(..), State(..), addCapture, addLiteral, addSlash, empty, toJson)
|
|
2
|
+
|
|
3
|
+
import Json.Encode
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
toJson : Pattern -> Json.Encode.Value
|
|
7
|
+
toJson (Pattern segments _) =
|
|
8
|
+
Json.Encode.list segmentToJson segments
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
segmentToJson : Segment -> Json.Encode.Value
|
|
12
|
+
segmentToJson segment =
|
|
13
|
+
-- elm-review: known-unoptimized-recursion
|
|
14
|
+
case segment of
|
|
15
|
+
Literal literalString ->
|
|
16
|
+
Json.Encode.object
|
|
17
|
+
[ ( "kind", Json.Encode.string "literal" )
|
|
18
|
+
, ( "value", Json.Encode.string literalString )
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
Dynamic ->
|
|
22
|
+
Json.Encode.object
|
|
23
|
+
[ ( "kind", Json.Encode.string "dynamic" )
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
HybridSegment ( first, second, rest ) ->
|
|
27
|
+
Json.Encode.object
|
|
28
|
+
[ ( "kind", Json.Encode.string "hybrid" )
|
|
29
|
+
, ( "value", Json.Encode.list segmentToJson (first :: second :: rest) )
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
empty : Pattern
|
|
34
|
+
empty =
|
|
35
|
+
Pattern [] NoPendingSlash
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
addSlash : Pattern -> Pattern
|
|
39
|
+
addSlash (Pattern segments _) =
|
|
40
|
+
Pattern segments PendingSlash
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
addCapture : Pattern -> Pattern
|
|
44
|
+
addCapture (Pattern segments state) =
|
|
45
|
+
case state of
|
|
46
|
+
PendingSlash ->
|
|
47
|
+
Pattern (segments ++ [ Dynamic ]) NoPendingSlash
|
|
48
|
+
|
|
49
|
+
NoPendingSlash ->
|
|
50
|
+
case segments |> List.reverse of
|
|
51
|
+
[] ->
|
|
52
|
+
Pattern [ Dynamic ] NoPendingSlash
|
|
53
|
+
|
|
54
|
+
last :: rest ->
|
|
55
|
+
Pattern (List.reverse rest ++ [ HybridSegment ( last, Dynamic, [] ) ]) NoPendingSlash
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
addLiteral : String -> Pattern -> Pattern
|
|
59
|
+
addLiteral newLiteral (Pattern segments state) =
|
|
60
|
+
case state of
|
|
61
|
+
PendingSlash ->
|
|
62
|
+
Pattern
|
|
63
|
+
(segments ++ [ Literal newLiteral ])
|
|
64
|
+
NoPendingSlash
|
|
65
|
+
|
|
66
|
+
NoPendingSlash ->
|
|
67
|
+
case segments |> List.reverse of
|
|
68
|
+
(Literal literalSegment) :: rest ->
|
|
69
|
+
Pattern
|
|
70
|
+
(List.reverse rest ++ [ Literal (literalSegment ++ newLiteral) ])
|
|
71
|
+
NoPendingSlash
|
|
72
|
+
|
|
73
|
+
last :: rest ->
|
|
74
|
+
Pattern (List.reverse rest ++ [ HybridSegment ( last, Literal newLiteral, [] ) ]) NoPendingSlash
|
|
75
|
+
|
|
76
|
+
_ ->
|
|
77
|
+
Pattern
|
|
78
|
+
(segments ++ [ Literal newLiteral ])
|
|
79
|
+
state
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
--Pattern segments state
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
type Pattern
|
|
87
|
+
= Pattern (List Segment) State
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
type State
|
|
91
|
+
= PendingSlash
|
|
92
|
+
| NoPendingSlash
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
type Segment
|
|
96
|
+
= Literal String
|
|
97
|
+
| Dynamic
|
|
98
|
+
| HybridSegment ( Segment, Segment, List Segment )
|
package/src/RenderRequest.elm
CHANGED
|
@@ -49,7 +49,7 @@ type IncludeHtml
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
decoder :
|
|
52
|
-
ProgramConfig userMsg userModel (Maybe route)
|
|
52
|
+
ProgramConfig userMsg userModel (Maybe route) pageData actionData sharedData effect mappedMsg errorPage
|
|
53
53
|
-> Decode.Decoder (RenderRequest (Maybe route))
|
|
54
54
|
decoder config =
|
|
55
55
|
Decode.field "request"
|
|
@@ -90,7 +90,7 @@ decoder config =
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
requestPayloadDecoder :
|
|
93
|
-
ProgramConfig userMsg userModel (Maybe route)
|
|
93
|
+
ProgramConfig userMsg userModel (Maybe route) pageData actionData sharedData effect mappedMsg errorPage
|
|
94
94
|
-> Decode.Decoder (RequestPayload (Maybe route))
|
|
95
95
|
requestPayloadDecoder config =
|
|
96
96
|
(Decode.string
|
|
@@ -1,20 +1,122 @@
|
|
|
1
|
-
module RequestsAndPending exposing (RequestsAndPending, decoder, get)
|
|
1
|
+
module RequestsAndPending exposing (RequestsAndPending, Response(..), ResponseBody(..), batchDecoder, bodyEncoder, decoder, get)
|
|
2
2
|
|
|
3
|
+
import Base64
|
|
4
|
+
import Bytes exposing (Bytes)
|
|
5
|
+
import Codec
|
|
3
6
|
import Dict exposing (Dict)
|
|
4
|
-
import Json.Decode as Decode
|
|
7
|
+
import Json.Decode as Decode exposing (Decoder)
|
|
8
|
+
import Json.Encode as Encode
|
|
9
|
+
import Pages.StaticHttp.Request
|
|
5
10
|
|
|
6
11
|
|
|
7
12
|
type alias RequestsAndPending =
|
|
8
|
-
Dict String (Maybe
|
|
13
|
+
Dict String (Maybe Response)
|
|
9
14
|
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
type ResponseBody
|
|
17
|
+
= BytesBody Bytes
|
|
18
|
+
| StringBody String
|
|
19
|
+
| JsonBody Decode.Value
|
|
20
|
+
| WhateverBody
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
batchDecoder : Decoder (List { request : Pages.StaticHttp.Request.Request, response : Response })
|
|
24
|
+
batchDecoder =
|
|
25
|
+
Decode.map2 (\request response -> { request = request, response = response })
|
|
26
|
+
(Decode.field "request"
|
|
27
|
+
(Pages.StaticHttp.Request.codec
|
|
28
|
+
|> Codec.decoder
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
(Decode.field "response" decoder)
|
|
32
|
+
|> Decode.list
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
decoder : Decoder Response
|
|
36
|
+
decoder =
|
|
37
|
+
Decode.map2 Response
|
|
38
|
+
(Decode.maybe responseDecoder)
|
|
39
|
+
bodyDecoder
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
bodyDecoder : Decoder ResponseBody
|
|
43
|
+
bodyDecoder =
|
|
44
|
+
Decode.field "bodyKind" Decode.string
|
|
45
|
+
|> Decode.andThen
|
|
46
|
+
(\bodyKind ->
|
|
47
|
+
Decode.field "body"
|
|
48
|
+
(case bodyKind of
|
|
49
|
+
"bytes" ->
|
|
50
|
+
Decode.string
|
|
51
|
+
|> Decode.andThen
|
|
52
|
+
(\base64String ->
|
|
53
|
+
base64String
|
|
54
|
+
|> Base64.toBytes
|
|
55
|
+
|> Maybe.map (BytesBody >> Decode.succeed)
|
|
56
|
+
|> Maybe.withDefault (Decode.fail "Couldn't parse base64 string into Bytes.")
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
"string" ->
|
|
60
|
+
Decode.string |> Decode.map StringBody
|
|
61
|
+
|
|
62
|
+
"json" ->
|
|
63
|
+
Decode.value |> Decode.map JsonBody
|
|
64
|
+
|
|
65
|
+
"whatever" ->
|
|
66
|
+
Decode.succeed WhateverBody
|
|
67
|
+
|
|
68
|
+
_ ->
|
|
69
|
+
Decode.fail "Unexpected bodyKind."
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
bodyEncoder : ResponseBody -> Encode.Value
|
|
75
|
+
bodyEncoder body =
|
|
76
|
+
(case body of
|
|
77
|
+
JsonBody jsonValue ->
|
|
78
|
+
( "json", jsonValue )
|
|
79
|
+
|
|
80
|
+
StringBody string ->
|
|
81
|
+
( "string", Encode.string string )
|
|
82
|
+
|
|
83
|
+
BytesBody _ ->
|
|
84
|
+
( "Unhandled", Encode.null )
|
|
85
|
+
|
|
86
|
+
WhateverBody ->
|
|
87
|
+
( "whatever", Encode.null )
|
|
88
|
+
)
|
|
89
|
+
|> (\( bodyKind, encodedBody ) ->
|
|
90
|
+
Encode.object
|
|
91
|
+
[ ( "bodyKind", Encode.string bodyKind )
|
|
92
|
+
, ( "body", encodedBody )
|
|
93
|
+
]
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
type alias RawResponse =
|
|
98
|
+
{ statusCode : Int
|
|
99
|
+
, statusText : String
|
|
100
|
+
, headers : Dict String String
|
|
101
|
+
, url : String
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
type Response
|
|
106
|
+
= Response (Maybe RawResponse) ResponseBody
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
responseDecoder : Decoder RawResponse
|
|
110
|
+
responseDecoder =
|
|
111
|
+
Decode.map4 RawResponse
|
|
112
|
+
(Decode.field "statusCode" Decode.int)
|
|
113
|
+
(Decode.field "statusText" Decode.string)
|
|
114
|
+
(Decode.field "headers" (Decode.dict Decode.string))
|
|
115
|
+
(Decode.field "url" Decode.string)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
get : String -> RequestsAndPending -> Maybe Response
|
|
12
119
|
get key requestsAndPending =
|
|
13
120
|
requestsAndPending
|
|
14
121
|
|> Dict.get key
|
|
15
122
|
|> Maybe.andThen identity
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
decoder : Decode.Decoder RequestsAndPending
|
|
19
|
-
decoder =
|
|
20
|
-
Decode.dict (Decode.string |> Decode.map Just)
|