generated from tpl/purs
feat: rawRequestBodySize
This commit is contained in:
parent
01f505d05b
commit
deb995015d
@ -1,2 +1,16 @@
|
|||||||
/** @type {(_: Blob) => () => Promise<ArrayBuffer>} */
|
/** @type {(_: Blob) => () => Promise<ArrayBuffer>} */
|
||||||
export const blobArrayBufferImpl = b => () => b.arrayBuffer()
|
export const blobArrayBufferImpl = b => () => b.arrayBuffer()
|
||||||
|
|
||||||
|
/** @type {(_: FormDataEntryValue) => number} */
|
||||||
|
const formDataValueSize = v => (typeof v === 'string' ? v.length : v.size)
|
||||||
|
|
||||||
|
/** @type {(_: ArrayBuffer | FormData) => () => number} */
|
||||||
|
export const rawRequestBodySize = body => () =>
|
||||||
|
body instanceof ArrayBuffer
|
||||||
|
? body.byteLength
|
||||||
|
: body instanceof FormData
|
||||||
|
? Array.from(body.entries()).reduce(
|
||||||
|
(size, [k, v]) => size + k.length + formDataValueSize(v),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
: 0
|
||||||
|
@ -12,21 +12,21 @@ module HTTP.Request
|
|||||||
, requestHeaders
|
, requestHeaders
|
||||||
, requestUrl
|
, requestUrl
|
||||||
, requestMethod
|
, requestMethod
|
||||||
|
, rawRequestBodySize
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Prelude
|
import Prelude
|
||||||
|
|
||||||
import Control.Promise (Promise)
|
import Control.Promise (Promise)
|
||||||
import Control.Promise as Promise
|
import Control.Promise as Promise
|
||||||
import Data.ArrayBuffer.ArrayBuffer as ArrayBuffer
|
|
||||||
import Data.ArrayBuffer.Types (ArrayBuffer)
|
import Data.ArrayBuffer.Types (ArrayBuffer)
|
||||||
import Data.Map (Map)
|
import Data.Map (Map)
|
||||||
import Data.Map as Map
|
import Data.Map as Map
|
||||||
import Data.Maybe (Maybe(..))
|
import Data.Maybe (Maybe(..))
|
||||||
import Data.Newtype (unwrap)
|
import Data.Newtype (unwrap)
|
||||||
import Data.Nullable as Nullable
|
import Data.Nullable as Nullable
|
||||||
import Data.Tuple.Containing (class TupleContaining, extract)
|
import Data.Tuple.Containing (extract)
|
||||||
import Data.Tuple.Nested (type (/\), (/\))
|
import Data.Tuple.Nested (type (/\))
|
||||||
import Data.URL (URL)
|
import Data.URL (URL)
|
||||||
import Effect (Effect)
|
import Effect (Effect)
|
||||||
import Effect.Aff.Class (class MonadAff, liftAff)
|
import Effect.Aff.Class (class MonadAff, liftAff)
|
||||||
@ -45,9 +45,11 @@ import Unsafe.Coerce (unsafeCoerce)
|
|||||||
import Web.File.Blob (Blob)
|
import Web.File.Blob (Blob)
|
||||||
import Web.File.Blob as Blob
|
import Web.File.Blob as Blob
|
||||||
|
|
||||||
foreign import blobArrayBufferImpl :: Blob -> Effect (Promise ArrayBuffer)
|
|
||||||
foreign import data RawRequestBody :: Type
|
foreign import data RawRequestBody :: Type
|
||||||
|
|
||||||
|
foreign import blobArrayBufferImpl :: Blob -> Effect (Promise ArrayBuffer)
|
||||||
|
foreign import rawRequestBodySize :: RawRequestBody -> Effect Int
|
||||||
|
|
||||||
unsafeEmptyRawRequestBody :: RawRequestBody
|
unsafeEmptyRawRequestBody :: RawRequestBody
|
||||||
unsafeEmptyRawRequestBody = unsafeCoerce Nullable.null
|
unsafeEmptyRawRequestBody = unsafeCoerce Nullable.null
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user