{-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Server.Playground ( httpPlayground, ) where import Data.ByteString.Lazy.Char8 (ByteString) import Data.Functor (fmap) import Data.Semigroup ((<>)) import Prelude ( (.), mconcat, ) link :: ByteString -> ByteString -> ByteString link :: ByteString -> ByteString -> ByteString link ByteString rel ByteString href = ByteString "<link rel=\"" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString rel ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString "\" href=\"" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString href ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString "\" />" meta :: [(ByteString, ByteString)] -> ByteString meta :: [(ByteString, ByteString)] -> ByteString meta [(ByteString, ByteString)] attr = ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString "meta" [(ByteString, ByteString)] attr [] tag :: ByteString -> [ByteString] -> ByteString tag :: ByteString -> [ByteString] -> ByteString tag ByteString tagName = ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString tagName [] t :: ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t :: ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString tagName [(ByteString, ByteString)] attr [ByteString] children = ByteString "<" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString tagName ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString " " ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> [ByteString] -> ByteString forall a. Monoid a => [a] -> a mconcat (((ByteString, ByteString) -> ByteString) -> [(ByteString, ByteString)] -> [ByteString] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (ByteString, ByteString) -> ByteString forall a. (Semigroup a, IsString a) => (a, a) -> a renderAttr [(ByteString, ByteString)] attr) ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString " >" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> [ByteString] -> ByteString forall a. Monoid a => [a] -> a mconcat [ByteString] children ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString "</" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString tagName ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString ">" where renderAttr :: (a, a) -> a renderAttr (a name, a value) = a name a -> a -> a forall a. Semigroup a => a -> a -> a <> a "=\"" a -> a -> a forall a. Semigroup a => a -> a -> a <> a value a -> a -> a forall a. Semigroup a => a -> a -> a <> a "\" " script :: [(ByteString, ByteString)] -> [ByteString] -> ByteString script :: [(ByteString, ByteString)] -> [ByteString] -> ByteString script = ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString "script" html :: [ByteString] -> ByteString html :: [ByteString] -> ByteString html = ByteString -> ByteString docType (ByteString -> ByteString) -> ([ByteString] -> ByteString) -> [ByteString] -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString "html" [] docType :: ByteString -> ByteString docType :: ByteString -> ByteString docType ByteString x = ByteString "<!DOCTYPE html>" ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString x httpPlayground :: ByteString httpPlayground :: ByteString httpPlayground = [ByteString] -> ByteString html [ ByteString -> [ByteString] -> ByteString tag ByteString "head" [ [(ByteString, ByteString)] -> ByteString meta [(ByteString "charset", ByteString "utf-8")], [(ByteString, ByteString)] -> ByteString meta [ (ByteString "name", ByteString "viewport"), (ByteString "content", ByteString "user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui") ], ByteString -> [ByteString] -> ByteString tag ByteString "title" [ByteString "GraphQL Playground"], ByteString -> ByteString -> ByteString link ByteString "stylesheet" ByteString "//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/css/index.css", ByteString -> ByteString -> ByteString link ByteString "shortcut icon" ByteString "//cdn.jsdelivr.net/npm/graphql-playground-react/build/favicon.png", [(ByteString, ByteString)] -> [ByteString] -> ByteString script [(ByteString "src", ByteString "//cdn.jsdelivr.net/npm/graphql-playground-react/build/static/js/middleware.js")] [] ], ByteString -> [ByteString] -> ByteString tag ByteString "body" [ ByteString -> [(ByteString, ByteString)] -> [ByteString] -> ByteString t ByteString "div" [(ByteString "id", ByteString "root")] [], [(ByteString, ByteString)] -> [ByteString] -> ByteString script [] [ ByteString " window.addEventListener('load', (_) => \ \ GraphQLPlayground.init(document.getElementById('root'), {}) \ \ );" ] ] ]