@@ -13,15 +13,24 @@ import Promise.Aff (toAffE, fromAff) as Promise
13import Web.Fetch.Request (Request)
13import Web.Fetch.Request (Request)
14import Web.Fetch.Response (Response)
14import Web.Fetch.Response (Response)
16−type BunServerImpl = { stop :: EffectFn1 Boolean (Promise Unit) }
16+type BunServerImpl = { stop :: EffectFn1 Boolean (Promise Unit), upgrade :: EffectFn1 Request Boolean }
18data CloseActiveConnections = WaitForOpenConnections | ForceTerminateAllOpenConnections
18data CloseActiveConnections = WaitForOpenConnections | ForceTerminateAllOpenConnections
20−type BunServer = { stop :: CloseActiveConnections -> Aff Unit }
20+type BunServer = { stop :: CloseActiveConnections -> Aff Unit, upgrade :: Request -> Effect Boolean }
22foreign import serveImpl :: forall options. EffectFn1 options BunServerImpl
22foreign import serveImpl :: forall options. EffectFn1 options BunServerImpl
24+type BunServeOptionsImpl =
24−type BunServeOptionsImpl = (fetch :: EffectFn1 Request (Promise Response), port :: Int, host :: String)
25+ ( fetch :: EffectFn1 Request (Promise Response)
29+ { open :: EffectFn1 Foreign Unit
30+ , message :: EffectFn2 Foreign Foreign Unit
31+ , close :: EffectFn2 Foreign Foreign Unit
26serve :: forall opts opts_. Union opts opts_ BunServeOptionsImpl => { fetch :: EffectFn1 Request (Promise Response) | opts } -> Effect BunServer
35serve :: forall opts opts_. Union opts opts_ BunServeOptionsImpl => { fetch :: EffectFn1 Request (Promise Response) | opts } -> Effect BunServer
27serve opts = do
36serve opts = do
@@ -30,6 +39,7 @@ serve opts = do
30 { stop: \closeActiveConnections -> case closeActiveConnections of
39 { stop: \closeActiveConnections -> case closeActiveConnections of
31 WaitForOpenConnections -> runEffectFn1 serverImpl.stop true # Promise.toAffE
40 WaitForOpenConnections -> runEffectFn1 serverImpl.stop true # Promise.toAffE
32 ForceTerminateAllOpenConnections -> runEffectFn1 serverImpl.stop false # Promise.toAffE
41 ForceTerminateAllOpenConnections -> runEffectFn1 serverImpl.stop false # Promise.toAffE
42+ , upgrade: runEffectFn1 serverImpl.upgrade
35mkFetch :: (Request -> Aff Response) -> EffectFn1 Request (Promise Response)
45mkFetch :: (Request -> Aff Response) -> EffectFn1 Request (Promise Response)