@@ -2,124 +2,78 @@ module Playwright.Options where
22
33import Playwright.Data
44
5−import Data.Options (Option, Options, opt)
65import Foreign.Object (Object)
76import Foreign (Foreign)
8−
9−foreign import data Launch :: Type
10−
11−headless :: Option Launch Boolean
12−headless = opt "headless"
13−
14−executablePath :: Option Launch String
15−executablePath = opt "executablePath"
16−
17−args :: Option Launch String
18−args = opt "args"
19−
20−ignoreDefaultArgs :: Option Launch (Array String)
21−ignoreDefaultArgs = opt "ignoreDefaultArgs"
22−
23−proxy :: Option Launch (Options Proxy)
24−proxy = opt "proxy"
25−
26−downloadsPath :: Option Launch String
27−downloadsPath = opt "downloadsPath"
28−
29−chromiumSandbox :: Option Launch Boolean
30−chromiumSandbox = opt "chromiumSandbox"
31−
32−firefoxUserPrefs :: Option Launch Foreign
33−firefoxUserPrefs = opt "firefoxUserPrefs"
34−
35−handleSIGINT :: Option Launch Boolean
36−handleSIGINT = opt "handleSIGINT"
37−
38−handleSIGTERM :: Option Launch Boolean
39−handleSIGTERM = opt "handleSIGTERM"
40−
41−handleSIGHUP :: Option Launch Boolean
42−handleSIGHUP = opt "handleSIGHUP"
43−
44−timeout :: Option Launch Number
45−timeout = opt "timeout"
46−
47−env :: Option Launch (Object String)
48−env = opt "env"
49−
50−devtools :: Option Launch Boolean
51−devtools = opt "devtools"
52−
53−slowMo :: Option Launch Number
54−slowMo = opt "slowMo"
55−
56−foreign import data Proxy :: Type
57−
58−server :: Option Proxy String
59−server = opt "server"
60−
61−bypass :: Option Proxy String
62−bypass = opt "bypass"
63−
64−username :: Option Proxy String
65−username = opt "username"
66−
67−password :: Option Proxy String
68−password = opt "password"
69−
70−foreign import data Newpage :: Type
71−
72−foreign import data Screenshot :: Type
73−
74−path :: Option Screenshot String
75−path = opt "path"
76−
77−screenshotType :: Option Screenshot ScreenshotType
78−screenshotType = opt "type"
79−
80−quality :: Option Screenshot Number
81−quality = opt "quality"
82−
83−omitBackground :: Option Screenshot Boolean
84−omitBackground = opt "omitBackground"
85−
86−screenshotTimeout :: Option Screenshot Number
87−screenshotTimeout = opt "timeout"
88−
89−foreign import data Goto :: Type
90−
91−gotoTimeout :: Option Goto Int
92−gotoTimeout = opt "timeout"
93−
94−gotoWaitUntil :: Option Goto WaitUntil
95−gotoWaitUntil = opt "waitUntil"
96−
97−referer :: Option Goto String
98−referer = opt "referer"
99−
100−foreign import data Go :: Type
101−
102−goTimeout :: Option Go Int
103−goTimeout = opt "timeout"
104−
105−goWaitUntil :: Option Go WaitUntil
106−goWaitUntil = opt "waitUntil"
107−
108−foreign import data Hover :: Type
109−
110−position :: Option Hover { x :: Number, y :: Number }
111−position = opt "position"
112−
113−modifier :: Option Hover (Array Modifier)
114−modifier = opt "modifier"
115−
116−force :: Option Hover Boolean
117−force = opt "force"
118−
119−hoverTimeout :: Option Hover Number
120−hoverTimeout = opt "timeout"
121−
122−foreign import data InnerHTML :: Type
123−
124−innerHTMLTimeout :: Option InnerHTML Number
125−innerHTMLTimeout = opt "timeout"
7+import Untagged.Union (UndefinedOr, type (|+|))
8+import Untagged.Coercible (class Coercible, coerce)
9+
10+-- | A "no options" value, defined as `coerce {}`.
11+empty :: forall a. Coercible {} a => a
12+empty = coerce {}
13+
14+type Op a = UndefinedOr a
15+
16+type LaunchOptions =
17+ { headless :: Op Boolean
18+ , executablePath :: Op String
19+ , args :: Op String
20+ , ignoreDefaultArgs :: Op (Array String)
21+ , proxy :: Op ProxyOptions
22+ , downloadsPath :: Op String
23+ , chromiumSandbox :: Op Boolean
24+ , firefoxUserPrefs :: Op Foreign
25+ , handleSIGINT :: Op Boolean
26+ , handleSIGTERM :: Op Boolean
27+ , handleSIGHUP :: Op Boolean
28+ , timeout :: Op Number
29+ , env :: Op (Object String)
30+ , devtools :: Op Boolean
31+ , slowMo :: Op Number
32+ }
33+
34+type ProxyOptions =
35+ { server :: Op String
36+ , bypass :: Op String
37+ , username :: Op String
38+ , password :: Op String
39+ }
40+
41+type ScreenshotOptions =
42+ { path :: Op String
43+ , "type" :: Op ScreenshotType
44+ , quality :: Op Number
45+ , omitBackground :: Op Boolean
46+ , timeout :: Op Number
47+ }
48+
49+type GotoOptions =
50+ { timeout :: Op Int
51+ , waitUntil :: Op WaitUntil
52+ , referer :: Op String
53+ }
54+
55+type NewpageOptions =
56+ { acceptDownloads :: Op Boolean
57+ , ignoreHTTPSErrors :: Op Boolean
58+ , bypassCSP :: Op Boolean
59+ , viewport :: Op (Null |+| { width :: Int, height :: Int })
60+ }
61+
62+type GoOptions =
63+ { timeout :: Op Int
64+ , waitUntil :: Op WaitUntil
65+ }
66+
67+type HoverOptions =
68+ { position :: Op { x :: Number, y :: Number }
69+ , modifier :: Op (Array Modifier)
70+ , force :: Op Boolean
71+ }
72+
73+type InnerHTMLOptions =
74+ { timeout :: Op Number
75+ }
76+
77+type InnerTextOptions =
78+ { timeout :: Op Number
79+ }