mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-11-27 11:05:46 +03:00
Run elm-review fixes.
This commit is contained in:
parent
a41b5f5f03
commit
f7e1e8d3cb
820
examples/docs/package-lock.json
generated
820
examples/docs/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -29,7 +29,8 @@ config =
|
|||||||
, NoUnused.Dependencies.rule
|
, NoUnused.Dependencies.rule
|
||||||
, NoUnused.Exports.rule
|
, NoUnused.Exports.rule
|
||||||
, NoUnused.Modules.rule
|
, NoUnused.Modules.rule
|
||||||
, NoUnused.Parameters.rule
|
|
||||||
, NoUnused.Patterns.rule
|
--, NoUnused.Parameters.rule
|
||||||
|
--, NoUnused.Patterns.rule
|
||||||
, NoUnused.Variables.rule
|
, NoUnused.Variables.rule
|
||||||
]
|
]
|
||||||
|
@ -43,7 +43,6 @@ writing a plugin package to extend `elm-pages`.
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Codec exposing (Codec)
|
|
||||||
import Json.Encode
|
import Json.Encode
|
||||||
import MimeType
|
import MimeType
|
||||||
import Pages.ImagePath as ImagePath exposing (ImagePath)
|
import Pages.ImagePath as ImagePath exposing (ImagePath)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
module Head.Seo exposing (Common, Image, article, audioPlayer, profile, song, summary, summaryLarge, videoPlayer, website)
|
module Head.Seo exposing (Common, Image, article, audioPlayer, book, profile, song, summary, summaryLarge, videoPlayer, website)
|
||||||
|
|
||||||
{-| <https://ogp.me/#>
|
{-| <https://ogp.me/#>
|
||||||
<https://developers.facebook.com/docs/sharing/opengraph>
|
<https://developers.facebook.com/docs/sharing/opengraph>
|
||||||
@ -45,14 +45,14 @@ with the `head` function that you pass to your Pages config (`Pages.application`
|
|||||||
, expirationTime = Nothing
|
, expirationTime = Nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@docs Common, Image, article, audioPlayer, profile, song, summary, summaryLarge, videoPlayer, website
|
@docs Common, Image, article, audioPlayer, book, profile, song, summary, summaryLarge, videoPlayer, website
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Head
|
import Head
|
||||||
import Head.Twitter as Twitter
|
import Head.Twitter as Twitter
|
||||||
import Pages.ImagePath as ImagePath exposing (ImagePath)
|
import Pages.ImagePath exposing (ImagePath)
|
||||||
import Pages.PagePath as PagePath exposing (PagePath)
|
import Pages.PagePath exposing (PagePath)
|
||||||
|
|
||||||
|
|
||||||
{-| Will be displayed as a large card in twitter
|
{-| Will be displayed as a large card in twitter
|
||||||
|
@ -1,68 +1,9 @@
|
|||||||
module Head.Twitter exposing (SummarySize(..), TwitterCard(..), rawTags, summaryLarge, summaryRegular)
|
module Head.Twitter exposing (SummarySize(..), TwitterCard(..), rawTags)
|
||||||
|
|
||||||
import Head
|
import Head
|
||||||
import Pages.ImagePath exposing (ImagePath)
|
import Pages.ImagePath exposing (ImagePath)
|
||||||
|
|
||||||
|
|
||||||
{-| <https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/summary>
|
|
||||||
-}
|
|
||||||
summaryRegular details =
|
|
||||||
Summary
|
|
||||||
{ title = details.title
|
|
||||||
, description = details.description
|
|
||||||
, siteUser = details.siteUser
|
|
||||||
, image = details.image
|
|
||||||
, size = Regular
|
|
||||||
}
|
|
||||||
|> tags
|
|
||||||
|
|
||||||
|
|
||||||
{-| <https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/summary-card-with-large-image.html>
|
|
||||||
-}
|
|
||||||
summaryLarge details =
|
|
||||||
Summary
|
|
||||||
{ title = details.title
|
|
||||||
, description = details.description
|
|
||||||
, siteUser = details.siteUser
|
|
||||||
, image = details.image
|
|
||||||
, size = Large
|
|
||||||
}
|
|
||||||
|> tags
|
|
||||||
|
|
||||||
|
|
||||||
{-| <https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/app-card>
|
|
||||||
-}
|
|
||||||
app :
|
|
||||||
{ title : String
|
|
||||||
, description : Maybe String
|
|
||||||
, siteUser : String
|
|
||||||
, image : Maybe (Image pathKey)
|
|
||||||
, appIdIphone : Maybe Int
|
|
||||||
, appIdIpad : Maybe Int
|
|
||||||
, appIdGooglePlay : Maybe String
|
|
||||||
, appUrlIphone : Maybe String
|
|
||||||
, appUrlIpad : Maybe String
|
|
||||||
, appUrlGooglePlay : Maybe String
|
|
||||||
, appCountry : Maybe String
|
|
||||||
, appNameIphone : Maybe String
|
|
||||||
, appNameIpad : Maybe String
|
|
||||||
, appNameGooglePlay : Maybe String
|
|
||||||
}
|
|
||||||
-> List (Head.Tag pathKey)
|
|
||||||
app details =
|
|
||||||
App details
|
|
||||||
|> tags
|
|
||||||
|
|
||||||
|
|
||||||
ensureAtPrefix : String -> String
|
|
||||||
ensureAtPrefix twitterUsername =
|
|
||||||
if twitterUsername |> String.startsWith "@" then
|
|
||||||
twitterUsername
|
|
||||||
|
|
||||||
else
|
|
||||||
"@" ++ twitterUsername
|
|
||||||
|
|
||||||
|
|
||||||
type SummarySize
|
type SummarySize
|
||||||
= Regular
|
= Regular
|
||||||
| Large
|
| Large
|
||||||
@ -150,17 +91,6 @@ rawTags card =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
tags : TwitterCard pathKey -> List (Head.Tag pathKey)
|
|
||||||
tags card =
|
|
||||||
card
|
|
||||||
|> rawTags
|
|
||||||
|> List.filterMap
|
|
||||||
(\( name, maybeContent ) ->
|
|
||||||
maybeContent
|
|
||||||
|> Maybe.map (\content -> Head.metaName name content)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
cardValue : TwitterCard pathKey -> String
|
cardValue : TwitterCard pathKey -> String
|
||||||
cardValue card =
|
cardValue card =
|
||||||
case card of
|
case card of
|
||||||
|
@ -569,39 +569,6 @@ lazy toDecoder =
|
|||||||
jde
|
jde
|
||||||
|
|
||||||
|
|
||||||
{-| Useful for checking a value in the JSON matches the value you expect it to
|
|
||||||
have. If it does, succeeds with the second decoder. If it doesn't it fails.
|
|
||||||
|
|
||||||
This can be used to decode union types:
|
|
||||||
|
|
||||||
type Pet = Cat | Dog | Rabbit
|
|
||||||
|
|
||||||
petDecoder : Decoder Pet
|
|
||||||
petDecoder =
|
|
||||||
oneOf
|
|
||||||
[ check string "cat" <| succeed Cat
|
|
||||||
, check string "dog" <| succeed Dog
|
|
||||||
, check string "rabbit" <| succeed Rabbit
|
|
||||||
]
|
|
||||||
|
|
||||||
""" [ "dog", "rabbit", "cat" ] """
|
|
||||||
|> decodeString (list petDecoder)
|
|
||||||
--> Success [ Dog, Rabbit, Cat ]
|
|
||||||
|
|
||||||
-}
|
|
||||||
check : Decoder a -> a -> Decoder b -> Decoder b
|
|
||||||
check checkDecoder expectedVal actualDecoder =
|
|
||||||
checkDecoder
|
|
||||||
|> andThen
|
|
||||||
(\actual ->
|
|
||||||
if actual == expectedVal then
|
|
||||||
actualDecoder
|
|
||||||
|
|
||||||
else
|
|
||||||
fail "Verification failed"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Mapping and chaining
|
-- Mapping and chaining
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
module Pages.ContentCache exposing
|
module Pages.ContentCache exposing
|
||||||
( ContentCache
|
( ContentCache
|
||||||
, Entry(..)
|
, Entry(..)
|
||||||
, Page
|
|
||||||
, Path
|
, Path
|
||||||
, errorView
|
, errorView
|
||||||
, extractMetadata
|
, extractMetadata
|
||||||
@ -11,7 +10,6 @@ module Pages.ContentCache exposing
|
|||||||
, lookupMetadata
|
, lookupMetadata
|
||||||
, pagesWithErrors
|
, pagesWithErrors
|
||||||
, parseContent
|
, parseContent
|
||||||
, pathForUrl
|
|
||||||
, routesForCache
|
, routesForCache
|
||||||
, update
|
, update
|
||||||
)
|
)
|
||||||
@ -288,13 +286,6 @@ routesForCache cacheResult =
|
|||||||
[]
|
[]
|
||||||
|
|
||||||
|
|
||||||
type alias Page metadata view pathKey =
|
|
||||||
{ metadata : metadata
|
|
||||||
, path : PagePath pathKey
|
|
||||||
, view : view
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
combineTupleResults :
|
combineTupleResults :
|
||||||
List ( List String, Result error success )
|
List ( List String, Result error success )
|
||||||
-> Result (List error) (List ( List String, success ))
|
-> Result (List error) (List ( List String, success ))
|
||||||
|
@ -90,7 +90,6 @@ Hello!!!
|
|||||||
-}
|
-}
|
||||||
|
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import Html exposing (Html)
|
|
||||||
import Json.Decode
|
import Json.Decode
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,51 +1,7 @@
|
|||||||
module Pages.FrontmatterDecoder exposing (FrontmatterDecoder, decodeList, decoder, resolve)
|
module Pages.FrontmatterDecoder exposing (FrontmatterDecoder)
|
||||||
|
|
||||||
import Json.Decode as Decode exposing (Decoder)
|
import Json.Decode as Decode exposing (Decoder)
|
||||||
|
|
||||||
|
|
||||||
type FrontmatterDecoder a
|
type FrontmatterDecoder a
|
||||||
= FrontmatterDecoder (List Decode.Value -> Decoder a)
|
= FrontmatterDecoder (List Decode.Value -> Decoder a)
|
||||||
|
|
||||||
parse : List String -> FrontmatterDecoder a -> Result String a
|
|
||||||
parse (FrontmatterDecoder rawDecoder) =
|
|
||||||
Decode.decodeString rawDecoder
|
|
||||||
|
|
||||||
decoder : Decoder a -> FrontmatterDecoder a
|
|
||||||
decoder rawDecoder =
|
|
||||||
FrontmatterDecoder (\values -> rawDecoder)
|
|
||||||
|
|
||||||
|
|
||||||
resolve : (List a -> Decoder b) -> FrontmatterDecoder a -> FrontmatterDecoder b
|
|
||||||
resolve resolveFn (FrontmatterDecoder rawDecoder) =
|
|
||||||
(\values ->
|
|
||||||
let
|
|
||||||
listDecoder : Decoder (List a)
|
|
||||||
listDecoder =
|
|
||||||
decodeList values (rawDecoder values)
|
|
||||||
in
|
|
||||||
listDecoder
|
|
||||||
|> Decode.andThen
|
|
||||||
(\list ->
|
|
||||||
resolveFn list
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|> FrontmatterDecoder
|
|
||||||
|
|
||||||
|
|
||||||
decodeList : List Decode.Value -> Decoder a -> Decoder (List a)
|
|
||||||
decodeList values rawDecoder =
|
|
||||||
List.foldl
|
|
||||||
(\value soFar ->
|
|
||||||
soFar
|
|
||||||
|> Decode.andThen
|
|
||||||
(\list ->
|
|
||||||
case Decode.decodeValue rawDecoder value of
|
|
||||||
Ok decoded ->
|
|
||||||
Decode.succeed (decoded :: list)
|
|
||||||
|
|
||||||
Err error ->
|
|
||||||
Decode.fail "TODO error message"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(Decode.succeed [])
|
|
||||||
values
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
module Pages.Internal.Platform exposing (Content, Flags, Model, Msg, Page, Program, application, cliApplication)
|
module Pages.Internal.Platform exposing (Content, Flags, Model, Msg, Program, application, cliApplication)
|
||||||
|
|
||||||
import Browser
|
import Browser
|
||||||
import Browser.Dom as Dom
|
import Browser.Dom as Dom
|
||||||
import Browser.Navigation
|
import Browser.Navigation
|
||||||
import Dict exposing (Dict)
|
|
||||||
import Head
|
import Head
|
||||||
import Html exposing (Html)
|
import Html exposing (Html)
|
||||||
import Html.Attributes exposing (style)
|
import Html.Attributes
|
||||||
import Html.Lazy
|
import Html.Lazy
|
||||||
import Http
|
import Http
|
||||||
import Json.Decode as Decode
|
import Json.Decode as Decode
|
||||||
@ -22,18 +21,10 @@ import Pages.PagePath as PagePath exposing (PagePath)
|
|||||||
import Pages.StaticHttp as StaticHttp
|
import Pages.StaticHttp as StaticHttp
|
||||||
import Pages.StaticHttpRequest as StaticHttpRequest
|
import Pages.StaticHttpRequest as StaticHttpRequest
|
||||||
import RequestsAndPending exposing (RequestsAndPending)
|
import RequestsAndPending exposing (RequestsAndPending)
|
||||||
import Result.Extra
|
import Task
|
||||||
import Task exposing (Task)
|
|
||||||
import Url exposing (Url)
|
import Url exposing (Url)
|
||||||
|
|
||||||
|
|
||||||
type alias Page metadata view pathKey =
|
|
||||||
{ metadata : metadata
|
|
||||||
, path : PagePath pathKey
|
|
||||||
, view : view
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
type alias Content =
|
type alias Content =
|
||||||
List ( List String, { extension : String, frontMatter : String, body : Maybe String } )
|
List ( List String, { extension : String, frontMatter : String, body : Maybe String } )
|
||||||
|
|
||||||
|
@ -3,14 +3,13 @@ module Pages.Internal.Platform.Cli exposing
|
|||||||
, Flags
|
, Flags
|
||||||
, Model
|
, Model
|
||||||
, Msg(..)
|
, Msg(..)
|
||||||
, Page
|
|
||||||
, cliApplication
|
, cliApplication
|
||||||
, init
|
, init
|
||||||
, update
|
, update
|
||||||
)
|
)
|
||||||
|
|
||||||
import BuildError exposing (BuildError)
|
import BuildError exposing (BuildError)
|
||||||
import Codec exposing (Codec)
|
import Codec
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import ElmHtml.InternalTypes exposing (decodeElmHtml)
|
import ElmHtml.InternalTypes exposing (decodeElmHtml)
|
||||||
import ElmHtml.ToString exposing (FormatOptions, defaultFormatOptions, nodeToStringWithOptions)
|
import ElmHtml.ToString exposing (FormatOptions, defaultFormatOptions, nodeToStringWithOptions)
|
||||||
@ -26,7 +25,7 @@ import Pages.Internal.ApplicationType as ApplicationType
|
|||||||
import Pages.Internal.Platform.Effect as Effect exposing (Effect)
|
import Pages.Internal.Platform.Effect as Effect exposing (Effect)
|
||||||
import Pages.Internal.Platform.Mode as Mode exposing (Mode)
|
import Pages.Internal.Platform.Mode as Mode exposing (Mode)
|
||||||
import Pages.Internal.Platform.StaticResponses as StaticResponses exposing (StaticResponses)
|
import Pages.Internal.Platform.StaticResponses as StaticResponses exposing (StaticResponses)
|
||||||
import Pages.Internal.Platform.ToJsPayload as ToJsPayload exposing (ToJsPayload, ToJsSuccessPayload)
|
import Pages.Internal.Platform.ToJsPayload as ToJsPayload exposing (ToJsSuccessPayload)
|
||||||
import Pages.Internal.StaticHttpBody as StaticHttpBody
|
import Pages.Internal.StaticHttpBody as StaticHttpBody
|
||||||
import Pages.Manifest as Manifest
|
import Pages.Manifest as Manifest
|
||||||
import Pages.PagePath as PagePath exposing (PagePath)
|
import Pages.PagePath as PagePath exposing (PagePath)
|
||||||
@ -38,19 +37,6 @@ import TerminalText as Terminal
|
|||||||
import Url
|
import Url
|
||||||
|
|
||||||
|
|
||||||
type alias FileToGenerate =
|
|
||||||
{ path : List String
|
|
||||||
, content : String
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
type alias Page metadata view pathKey =
|
|
||||||
{ metadata : metadata
|
|
||||||
, path : PagePath pathKey
|
|
||||||
, view : view
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
type alias Content =
|
type alias Content =
|
||||||
List ( List String, { extension : String, frontMatter : String, body : Maybe String } )
|
List ( List String, { extension : String, frontMatter : String, body : Maybe String } )
|
||||||
|
|
||||||
@ -279,17 +265,6 @@ perform config cliMsgConstructor toJsPort effect =
|
|||||||
Cmd.none
|
Cmd.none
|
||||||
|
|
||||||
|
|
||||||
encodeFilesToGenerate list =
|
|
||||||
list
|
|
||||||
|> Json.Encode.list
|
|
||||||
(\item ->
|
|
||||||
Json.Encode.object
|
|
||||||
[ ( "path", item.path |> String.join "/" |> Json.Encode.string )
|
|
||||||
, ( "content", item.content |> Json.Encode.string )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Task.succeed ()
|
--Task.succeed ()
|
||||||
-- |> Task.perform (\_ -> Continue)
|
-- |> Task.perform (\_ -> Continue)
|
||||||
@ -358,33 +333,6 @@ init toModel contentCache siteMetadata config flags =
|
|||||||
toModel
|
toModel
|
||||||
|
|
||||||
|
|
||||||
elmToHtmlBetaInit { secrets, mode, staticHttpCache } toModel contentCache siteMetadata config flags =
|
|
||||||
--case flags of
|
|
||||||
--init toModel contentCache siteMetadata config flags
|
|
||||||
--|> Tuple.mapSecond (perform cliMsgConstructor config.toJsPort)
|
|
||||||
--|> Tuple.mapSecond
|
|
||||||
-- (\cmd ->
|
|
||||||
--Cmd.map AppMsg
|
|
||||||
--Cmd.none
|
|
||||||
( toModel
|
|
||||||
(Model StaticResponses.error
|
|
||||||
secrets
|
|
||||||
[]
|
|
||||||
--(metadataParserErrors |> List.map Tuple.second)
|
|
||||||
staticHttpCache
|
|
||||||
mode
|
|
||||||
[]
|
|
||||||
)
|
|
||||||
, Effect.NoEffect
|
|
||||||
--, { html =
|
|
||||||
-- Html.div []
|
|
||||||
-- [ Html.text "Hello!!!!!" ]
|
|
||||||
-- |> viewRenderer
|
|
||||||
-- }
|
|
||||||
-- |> Effect.SendSinglePage
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--)
|
--)
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import Pages.StaticHttp as StaticHttp exposing (RequestDetails)
|
|||||||
import Pages.StaticHttp.Request as HashRequest
|
import Pages.StaticHttp.Request as HashRequest
|
||||||
import Pages.StaticHttpRequest as StaticHttpRequest
|
import Pages.StaticHttpRequest as StaticHttpRequest
|
||||||
import RequestsAndPending exposing (RequestsAndPending)
|
import RequestsAndPending exposing (RequestsAndPending)
|
||||||
import Result.Extra
|
|
||||||
import Secrets
|
import Secrets
|
||||||
import SecretsDict exposing (SecretsDict)
|
import SecretsDict exposing (SecretsDict)
|
||||||
import Set
|
import Set
|
||||||
@ -151,12 +150,6 @@ update newEntry model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dictCompact : Dict String (Maybe a) -> Dict String a
|
|
||||||
dictCompact dict =
|
|
||||||
dict
|
|
||||||
|> Dict.Extra.filterMap (\key value -> value)
|
|
||||||
|
|
||||||
|
|
||||||
encode : RequestsAndPending -> Mode -> StaticResponses -> Dict String (Dict String String)
|
encode : RequestsAndPending -> Mode -> StaticResponses -> Dict String (Dict String String)
|
||||||
encode requestsAndPending mode (StaticResponses staticResponses) =
|
encode requestsAndPending mode (StaticResponses staticResponses) =
|
||||||
staticResponses
|
staticResponses
|
||||||
@ -507,13 +500,3 @@ combineMultipleErrors results =
|
|||||||
)
|
)
|
||||||
(Ok [])
|
(Ok [])
|
||||||
results
|
results
|
||||||
|
|
||||||
|
|
||||||
isJust : Maybe a -> Bool
|
|
||||||
isJust maybeValue =
|
|
||||||
case maybeValue of
|
|
||||||
Just _ ->
|
|
||||||
True
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
False
|
|
||||||
|
@ -74,12 +74,6 @@ import Pages.PagePath as PagePath exposing (PagePath)
|
|||||||
-- TODO use language https://developer.mozilla.org/en-US/docs/Web/Manifest/lang
|
-- TODO use language https://developer.mozilla.org/en-US/docs/Web/Manifest/lang
|
||||||
|
|
||||||
|
|
||||||
type alias Language =
|
|
||||||
{ dir : String -- "rtl",
|
|
||||||
, lang : String -- "ar" -- TODO should this be an enum? What standard code?
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
{-| See <https://developer.mozilla.org/en-US/docs/Web/Manifest/display>
|
{-| See <https://developer.mozilla.org/en-US/docs/Web/Manifest/display>
|
||||||
-}
|
-}
|
||||||
type DisplayMode
|
type DisplayMode
|
||||||
@ -188,11 +182,6 @@ type IconPurpose
|
|||||||
| IconPurposeAny
|
| IconPurposeAny
|
||||||
|
|
||||||
|
|
||||||
square : Int -> ( Int, Int )
|
|
||||||
square x =
|
|
||||||
( x, x )
|
|
||||||
|
|
||||||
|
|
||||||
displayModeToAttribute : DisplayMode -> String
|
displayModeToAttribute : DisplayMode -> String
|
||||||
displayModeToAttribute displayMode =
|
displayModeToAttribute displayMode =
|
||||||
case displayMode of
|
case displayMode of
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
module Pages.StaticHttpRequest exposing (Error(..), Request(..), Status(..), cacheRequestResolution, permanentError, resolve, resolveUrls, strippedResponses, toBuildError, urls)
|
module Pages.StaticHttpRequest exposing (Error(..), Request(..), Status(..), cacheRequestResolution, resolve, resolveUrls, strippedResponses, toBuildError)
|
||||||
|
|
||||||
import BuildError exposing (BuildError)
|
import BuildError exposing (BuildError)
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import Pages.Internal.ApplicationType as ApplicationType exposing (ApplicationType)
|
import Pages.Internal.ApplicationType exposing (ApplicationType)
|
||||||
import Pages.Internal.StaticHttpBody as StaticHttpBody
|
|
||||||
import Pages.StaticHttp.Request
|
import Pages.StaticHttp.Request
|
||||||
import RequestsAndPending exposing (RequestsAndPending)
|
import RequestsAndPending exposing (RequestsAndPending)
|
||||||
import Secrets
|
import Secrets
|
||||||
@ -41,16 +40,6 @@ type Error
|
|||||||
| UserCalledStaticHttpFail String
|
| UserCalledStaticHttpFail String
|
||||||
|
|
||||||
|
|
||||||
urls : Request value -> List (Secrets.Value Pages.StaticHttp.Request.Request)
|
|
||||||
urls request =
|
|
||||||
case request of
|
|
||||||
Request ( urlList, lookupFn ) ->
|
|
||||||
urlList
|
|
||||||
|
|
||||||
Done value ->
|
|
||||||
[]
|
|
||||||
|
|
||||||
|
|
||||||
toBuildError : String -> Error -> BuildError
|
toBuildError : String -> Error -> BuildError
|
||||||
toBuildError path error =
|
toBuildError path error =
|
||||||
case error of
|
case error of
|
||||||
@ -85,29 +74,6 @@ toBuildError path error =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
permanentError : ApplicationType -> Request value -> RequestsAndPending -> Maybe Error
|
|
||||||
permanentError appType request rawResponses =
|
|
||||||
case request of
|
|
||||||
Request ( urlList, lookupFn ) ->
|
|
||||||
case lookupFn appType rawResponses of
|
|
||||||
Ok ( partiallyStrippedResponses, nextRequest ) ->
|
|
||||||
permanentError appType nextRequest rawResponses
|
|
||||||
|
|
||||||
Err error ->
|
|
||||||
case error of
|
|
||||||
MissingHttpResponse _ ->
|
|
||||||
Nothing
|
|
||||||
|
|
||||||
DecoderError _ ->
|
|
||||||
Just error
|
|
||||||
|
|
||||||
UserCalledStaticHttpFail string ->
|
|
||||||
Just error
|
|
||||||
|
|
||||||
Done value ->
|
|
||||||
Nothing
|
|
||||||
|
|
||||||
|
|
||||||
resolve : ApplicationType -> Request value -> RequestsAndPending -> Result Error value
|
resolve : ApplicationType -> Request value -> RequestsAndPending -> Result Error value
|
||||||
resolve appType request rawResponses =
|
resolve appType request rawResponses =
|
||||||
case request of
|
case request of
|
||||||
|
@ -38,34 +38,6 @@ succeed value =
|
|||||||
Value (\_ -> Ok value)
|
Value (\_ -> Ok value)
|
||||||
|
|
||||||
|
|
||||||
append : Value (List value) -> Value (List value) -> Value (List value)
|
|
||||||
append (Value lookupSecrets1) (Value lookupSecrets2) =
|
|
||||||
Value
|
|
||||||
(\secrets ->
|
|
||||||
let
|
|
||||||
secrets1 : Result (List BuildError) (List value)
|
|
||||||
secrets1 =
|
|
||||||
lookupSecrets1 secrets
|
|
||||||
|
|
||||||
secrets2 : Result (List BuildError) (List value)
|
|
||||||
secrets2 =
|
|
||||||
lookupSecrets2 secrets
|
|
||||||
in
|
|
||||||
case ( secrets1, secrets2 ) of
|
|
||||||
( Ok value1, Ok value2 ) ->
|
|
||||||
Ok (value1 ++ value2)
|
|
||||||
|
|
||||||
( Ok value1, Err errors2 ) ->
|
|
||||||
Err errors2
|
|
||||||
|
|
||||||
( Err errors1, Ok value2 ) ->
|
|
||||||
Err errors1
|
|
||||||
|
|
||||||
( Err errors1, Err errors2 ) ->
|
|
||||||
Err (errors1 ++ errors2)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
buildError : String -> SecretsDict -> BuildError
|
buildError : String -> SecretsDict -> BuildError
|
||||||
buildError secretName secretsDict =
|
buildError secretName secretsDict =
|
||||||
let
|
let
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
module BetaStaticHttpRequestsTests exposing (all)
|
module BetaStaticHttpRequestsTests exposing (all)
|
||||||
|
|
||||||
import Codec
|
import Codec
|
||||||
import Dict exposing (Dict)
|
import Dict
|
||||||
import Expect
|
import Expect
|
||||||
import Html
|
import Html
|
||||||
import Json.Decode as JD
|
import Json.Decode as JD
|
||||||
@ -12,7 +12,7 @@ import Pages.Document as Document
|
|||||||
import Pages.ImagePath as ImagePath
|
import Pages.ImagePath as ImagePath
|
||||||
import Pages.Internal.Platform.Cli as Main exposing (..)
|
import Pages.Internal.Platform.Cli as Main exposing (..)
|
||||||
import Pages.Internal.Platform.Effect as Effect exposing (Effect)
|
import Pages.Internal.Platform.Effect as Effect exposing (Effect)
|
||||||
import Pages.Internal.Platform.ToJsPayload as ToJsPayload exposing (ToJsPayload)
|
import Pages.Internal.Platform.ToJsPayload as ToJsPayload
|
||||||
import Pages.Internal.StaticHttpBody as StaticHttpBody
|
import Pages.Internal.StaticHttpBody as StaticHttpBody
|
||||||
import Pages.Manifest as Manifest
|
import Pages.Manifest as Manifest
|
||||||
import Pages.PagePath as PagePath
|
import Pages.PagePath as PagePath
|
||||||
@ -20,14 +20,12 @@ import Pages.StaticHttp as StaticHttp
|
|||||||
import Pages.StaticHttp.Request as Request
|
import Pages.StaticHttp.Request as Request
|
||||||
import PagesHttp
|
import PagesHttp
|
||||||
import ProgramTest exposing (ProgramTest)
|
import ProgramTest exposing (ProgramTest)
|
||||||
import Regex
|
|
||||||
import Secrets
|
import Secrets
|
||||||
import SimulatedEffect.Cmd
|
import SimulatedEffect.Cmd
|
||||||
import SimulatedEffect.Http as Http
|
import SimulatedEffect.Http as Http
|
||||||
import SimulatedEffect.Ports
|
import SimulatedEffect.Ports
|
||||||
import SimulatedEffect.Task
|
import SimulatedEffect.Task
|
||||||
import Test exposing (Test, describe, only, skip, test)
|
import Test exposing (Test, describe, test)
|
||||||
import Test.Http
|
|
||||||
|
|
||||||
|
|
||||||
all : Test
|
all : Test
|
||||||
@ -296,56 +294,6 @@ simulateEffects effect =
|
|||||||
-- |> SimulatedEffect.Task.perform (\_ -> Main.Continue)
|
-- |> SimulatedEffect.Task.perform (\_ -> Main.Continue)
|
||||||
|
|
||||||
|
|
||||||
expectErrorsPort : String -> List (ToJsPayload pathKey) -> Expect.Expectation
|
|
||||||
expectErrorsPort expectedPlainString actualPorts =
|
|
||||||
case actualPorts of
|
|
||||||
[ ToJsPayload.Errors actualRichTerminalString ] ->
|
|
||||||
actualRichTerminalString
|
|
||||||
|> normalizeErrorExpectEqual expectedPlainString
|
|
||||||
|
|
||||||
[] ->
|
|
||||||
Expect.fail "Expected single error port. Didn't receive any ports."
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
Expect.fail <| "Expected single error port. Got\n" ++ String.join "\n\n" (List.map Debug.toString actualPorts)
|
|
||||||
|
|
||||||
|
|
||||||
expectNonfatalErrorsPort : String -> List (ToJsPayload pathKey) -> Expect.Expectation
|
|
||||||
expectNonfatalErrorsPort expectedPlainString actualPorts =
|
|
||||||
case actualPorts of
|
|
||||||
[ ToJsPayload.Success successPayload ] ->
|
|
||||||
successPayload.errors
|
|
||||||
|> String.join "\n\n"
|
|
||||||
|> normalizeErrorExpectEqual expectedPlainString
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
Expect.fail <| "Expected single non-fatal error port. Got\n" ++ String.join "\n\n" (List.map Debug.toString actualPorts)
|
|
||||||
|
|
||||||
|
|
||||||
normalizeErrorExpectEqual : String -> String -> Expect.Expectation
|
|
||||||
normalizeErrorExpectEqual expectedPlainString actualRichTerminalString =
|
|
||||||
actualRichTerminalString
|
|
||||||
|> Regex.replace
|
|
||||||
(Regex.fromString "\u{001B}\\[[0-9;]+m"
|
|
||||||
|> Maybe.withDefault Regex.never
|
|
||||||
)
|
|
||||||
(\_ -> "")
|
|
||||||
|> Expect.equal expectedPlainString
|
|
||||||
|
|
||||||
|
|
||||||
normalizeErrorsExpectEqual : List String -> List String -> Expect.Expectation
|
|
||||||
normalizeErrorsExpectEqual expectedPlainStrings actualRichTerminalStrings =
|
|
||||||
actualRichTerminalStrings
|
|
||||||
|> List.map
|
|
||||||
(Regex.replace
|
|
||||||
(Regex.fromString "\u{001B}\\[[0-9;]+m"
|
|
||||||
|> Maybe.withDefault Regex.never
|
|
||||||
)
|
|
||||||
(\_ -> "")
|
|
||||||
)
|
|
||||||
|> Expect.equalLists expectedPlainStrings
|
|
||||||
|
|
||||||
|
|
||||||
toJsPort foo =
|
toJsPort foo =
|
||||||
Cmd.none
|
Cmd.none
|
||||||
|
|
||||||
@ -416,23 +364,6 @@ expectSuccess expectedRequests previous =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
expectError : List String -> ProgramTest model msg effect -> Expect.Expectation
|
|
||||||
expectError expectedErrors previous =
|
|
||||||
previous
|
|
||||||
|> ProgramTest.expectOutgoingPortValues
|
|
||||||
"toJsPort"
|
|
||||||
(Codec.decoder (ToJsPayload.successCodecNew2 "" ""))
|
|
||||||
(\value ->
|
|
||||||
case value of
|
|
||||||
[ ToJsPayload.PageProgress portPayload ] ->
|
|
||||||
portPayload.errors
|
|
||||||
|> normalizeErrorsExpectEqual expectedErrors
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
Expect.fail ("Expected ports to be called once, but instead there were " ++ String.fromInt (List.length value) ++ " calls.")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
get : String -> Request.Request
|
get : String -> Request.Request
|
||||||
get url =
|
get url =
|
||||||
{ method = "GET"
|
{ method = "GET"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
module StaticHttpRequestsTests exposing (all)
|
module StaticHttpRequestsTests exposing (all)
|
||||||
|
|
||||||
import Codec
|
import Codec
|
||||||
import Dict exposing (Dict)
|
import Dict
|
||||||
import Expect
|
import Expect
|
||||||
import Html
|
import Html
|
||||||
import Json.Decode as JD
|
import Json.Decode as JD
|
||||||
@ -26,7 +26,7 @@ import SimulatedEffect.Cmd
|
|||||||
import SimulatedEffect.Http as Http
|
import SimulatedEffect.Http as Http
|
||||||
import SimulatedEffect.Ports
|
import SimulatedEffect.Ports
|
||||||
import SimulatedEffect.Task
|
import SimulatedEffect.Task
|
||||||
import Test exposing (Test, describe, only, skip, test)
|
import Test exposing (Test, describe, test)
|
||||||
import Test.Http
|
import Test.Http
|
||||||
|
|
||||||
|
|
||||||
@ -982,18 +982,6 @@ expectErrorsPort expectedPlainString actualPorts =
|
|||||||
Expect.fail <| "Expected single error port. Got\n" ++ String.join "\n\n" (List.map Debug.toString actualPorts)
|
Expect.fail <| "Expected single error port. Got\n" ++ String.join "\n\n" (List.map Debug.toString actualPorts)
|
||||||
|
|
||||||
|
|
||||||
expectNonfatalErrorsPort : String -> List (ToJsPayload pathKey) -> Expect.Expectation
|
|
||||||
expectNonfatalErrorsPort expectedPlainString actualPorts =
|
|
||||||
case actualPorts of
|
|
||||||
[ ToJsPayload.Success successPayload ] ->
|
|
||||||
successPayload.errors
|
|
||||||
|> String.join "\n\n"
|
|
||||||
|> normalizeErrorExpectEqual expectedPlainString
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
Expect.fail <| "Expected single non-fatal error port. Got\n" ++ String.join "\n\n" (List.map Debug.toString actualPorts)
|
|
||||||
|
|
||||||
|
|
||||||
normalizeErrorExpectEqual : String -> String -> Expect.Expectation
|
normalizeErrorExpectEqual : String -> String -> Expect.Expectation
|
||||||
normalizeErrorExpectEqual expectedPlainString actualRichTerminalString =
|
normalizeErrorExpectEqual expectedPlainString actualRichTerminalString =
|
||||||
actualRichTerminalString
|
actualRichTerminalString
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
module StaticHttpUnitTests exposing (all)
|
module StaticHttpUnitTests exposing (all)
|
||||||
|
|
||||||
import Dict exposing (Dict)
|
import Dict
|
||||||
import Expect
|
import Expect
|
||||||
import Json.Decode.Exploration
|
|
||||||
import OptimizedDecoder as Decode
|
import OptimizedDecoder as Decode
|
||||||
import Pages.Internal.ApplicationType as ApplicationType
|
import Pages.Internal.ApplicationType as ApplicationType
|
||||||
import Pages.StaticHttp as StaticHttp
|
import Pages.StaticHttp as StaticHttp
|
||||||
import Pages.StaticHttp.Request as Request
|
import Pages.StaticHttp.Request as Request
|
||||||
import Pages.StaticHttpRequest as StaticHttpRequest
|
import Pages.StaticHttpRequest as StaticHttpRequest
|
||||||
import Secrets
|
import Secrets
|
||||||
import Test exposing (Test, describe, only, test)
|
import Test exposing (Test, describe, test)
|
||||||
|
|
||||||
|
|
||||||
getWithoutSecrets url =
|
getWithoutSecrets url =
|
||||||
|
@ -1,30 +1,15 @@
|
|||||||
module StaticResponsesTests exposing (all)
|
module StaticResponsesTests exposing (all)
|
||||||
|
|
||||||
import Dict exposing (Dict)
|
import Dict
|
||||||
import Expect
|
import Expect
|
||||||
import Pages.Internal.Platform.Mode as Mode
|
import Pages.Internal.Platform.Mode as Mode
|
||||||
import Pages.Internal.Platform.StaticResponses as StaticResponses
|
import Pages.Internal.Platform.StaticResponses as StaticResponses
|
||||||
import Pages.Internal.Platform.ToJsPayload as ToJsPayload
|
import Pages.Internal.Platform.ToJsPayload as ToJsPayload
|
||||||
import Pages.StaticHttp as StaticHttp
|
import Pages.StaticHttp as StaticHttp
|
||||||
import Pages.StaticHttp.Request as Request
|
|
||||||
import Secrets
|
|
||||||
import SecretsDict
|
import SecretsDict
|
||||||
import Test exposing (Test, describe, test)
|
import Test exposing (Test, describe, test)
|
||||||
|
|
||||||
|
|
||||||
getWithoutSecrets url =
|
|
||||||
StaticHttp.get (Secrets.succeed url)
|
|
||||||
|
|
||||||
|
|
||||||
get : String -> Request.Request
|
|
||||||
get url =
|
|
||||||
{ method = "GET"
|
|
||||||
, url = url
|
|
||||||
, headers = []
|
|
||||||
, body = StaticHttp.emptyBody
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
all : Test
|
all : Test
|
||||||
all =
|
all =
|
||||||
describe "Static Http Requests"
|
describe "Static Http Requests"
|
||||||
@ -51,12 +36,3 @@ config =
|
|||||||
, content = []
|
, content = []
|
||||||
, manifest = ToJsPayload.stubManifest
|
, manifest = ToJsPayload.stubManifest
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getReq : String -> StaticHttp.RequestDetails
|
|
||||||
getReq url =
|
|
||||||
{ url = url
|
|
||||||
, method = "GET"
|
|
||||||
, headers = []
|
|
||||||
, body = StaticHttp.emptyBody
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user