@@ -1,180 +1,82 @@
1module Playwright
1module Playwright
10− , LaunchOptions
3+ , contexts
11− , headless
4+ , isConnected
12− , executablePath
5+ , version
45 , queryMany
9 , queryMany
10+ , module Playwright.Data
11+ , module Playwright.Options
49import Prelude
15import Prelude
50import Effect (Effect)
16import Effect (Effect)
51−import Control.Promise (Promise, toAffE)
17+import Control.Promise (toAffE)
52−import Data.Options (Option, Options, opt, options)
18+import Data.Options (Options, options)
53import Effect.Aff (Aff)
19import Effect.Aff (Aff)
54−import Foreign (Foreign)
20+import Untagged.Union (type (|+|))
55−import Foreign.Object (Object)
21+import Node.Buffer (Buffer)
56−
22+import Playwright.Data
57−foreign import data BrowserType :: Type
23+import Playwright.Options
58−foreign import data Browser :: Type
24+import Playwright.Internal (prop)
60−foreign import firefox :: BrowserType
26+launch :: BrowserType -> Options Launch -> Aff Browser
61−foreign import chromium :: BrowserType
27+launch bt =
62−foreign import webkit :: BrowserType
28+ options >>>
63−
29+ prop "launch" (\_ -> launch) bt >>>
64−foreign import _launch :: BrowserType -> Foreign -> Effect (Promise Browser)
30+ toAffE
66−launch :: BrowserType -> Options LaunchOptions -> Aff Browser
32+close :: Browser |+| BrowserContext |+| Page -> Aff Unit
67−launch bt opts = toAffE $ _launch bt (options opts)
33+close =
68−
34+ prop "close" (\_ -> close) >>> toAffE
69−foreign import data LaunchOptions :: Type
35+
70−
36+contexts :: Browser -> Effect (Array BrowserContext)
71−headless :: Option LaunchOptions Boolean
37+contexts =
72−headless = opt "headless"
38+ prop "contexts" (\_ -> contexts)
74−executablePath :: Option LaunchOptions String
40+isConnected :: Browser -> Effect Boolean
75−executablePath = opt "executablePath"
41+isConnected =
76−
42+ prop "isConnected" (\_ -> isConnected)
77−args :: Option LaunchOptions String
43+
78−args = opt "args"
44+version :: Browser -> Effect String
80−ignoreDefaultArgs :: Option LaunchOptions (Array String)
46+ prop "version" (\_ -> version)
81−ignoreDefaultArgs = opt "ignoreDefaultArgs"
47+
82−
48+newPage :: Browser |+| BrowserContext -> Options Newpage -> Aff Page
83−foreign import data ProxyOptions :: Type
49+newPage sth =
85−server :: Option ProxyOptions String
51+ prop "newPage" (\_ -> newPage) sth >>>
86−server = opt "server"
52+ toAffE
88−bypass :: Option ProxyOptions String
54+-- | `sth.$(selector)`
89−bypass = opt "bypass"
55+query
90−
56+ :: ElementHandle |+| Page |+| Frame
91−username :: Option ProxyOptions String
57+ -> Selector
92−username = opt "username"
94−password :: Option ProxyOptions String
95−password = opt "password"
97−proxy :: Option LaunchOptions (Options ProxyOptions)
100−downloadsPath :: Option LaunchOptions String
101−downloadsPath = opt "downloadsPath"
103−chromiumSandbox :: Option LaunchOptions Boolean
104−chromiumSandbox = opt "chromiumSandbox"
106−firefoxUserPrefs :: Option LaunchOptions Foreign
107−firefoxUserPrefs = opt "firefoxUserPrefs"
109−handleSIGINT :: Option LaunchOptions Boolean
110−handleSIGINT = opt "handleSIGINT"
112−handleSIGTERM :: Option LaunchOptions Boolean
113−handleSIGTERM = opt "handleSIGTERM"
115−handleSIGHUP :: Option LaunchOptions Boolean
116−handleSIGHUP = opt "handleSIGHUP"
118−timeout :: Option LaunchOptions Number
119−timeout = opt "timeout"
121−env :: Option LaunchOptions (Object String)
124−devtools :: Option LaunchOptions Boolean
125−devtools = opt "devtools"
127−slowMo :: Option LaunchOptions Number
128−slowMo = opt "slowMo"
132−instance closeBrowser :: Close Browser
134−close :: forall sth. Close sth => sth -> Aff Unit
135−close = toAffE <<< _close
137−foreign import _close :: forall sth. sth -> Effect (Promise Unit)
139−foreign import data BrowserContext :: Type
141−foreign import contexts :: Browser -> Effect (Array BrowserContext)
143−foreign import isConnected :: Browser -> Effect Boolean
145−foreign import version :: Browser -> Effect String
147−foreign import data NewpageOptions :: Type
149−foreign import data Page :: Type
153−instance newpageBrowser :: NewPage Browser
154−instance newpageBrowserContext :: NewPage BrowserContext
156−newPage :: forall sth. NewPage sth => sth -> Options NewpageOptions -> Aff Page
157−newPage sth opts = toAffE $ _newPage sth (options opts)
159−foreign import _newPage :: forall sth. sth -> Foreign -> Effect (Promise Page)
161−foreign import data ElementHandle :: Type
165−instance queryElementHandle :: Query ElementHandle
166−instance queryPage :: Query Page
167−instance queryFrame :: Query Frame
169−type Selector = String
171−foreign import data Frame :: Type
173−foreign import query_ :: forall sth. sth -> Selector -> Effect (Promise ElementHandle)
174−foreign import queryMany_ :: forall sth. sth -> Selector -> Effect (Promise (Array ElementHandle))
176−query :: forall sth. Query sth => sth -> Selector -> Aff ElementHandle
58+ -> Aff ElementHandle
177−query sth = toAffE <<< query_ sth
59+query sth =
178−
60+ toAffE <<< prop "$" (\_ -> query) sth
62+-- | `sth.$$(selector)
64+ :: ElementHandle |+| Page |+| Frame
179−queryMany :: forall sth. Query sth => sth -> Selector -> Aff (Array ElementHandle)
66+ -> Aff (Array ElementHandle)
180−queryMany sth = toAffE <<< queryMany_ sth
67+queryMany sth =
68+ toAffE <<< prop "$$" (\_ -> queryMany) sth
71+ :: ElementHandle |+| Page
72+ -> Options Screenshot
76+ prop "screenshot" (\_ -> screenshot) sth >>>
80+ :: Page |+| Frame |+| Download |+| Request |+| Response |+| Worker
82+url = prop "url" \_ -> url