@@ -54,17 +54,20 @@ it depends on
54[`Web.Encoding.TextEncoder`](https://pursuit.purescript.org/packages/purescript-web-encoding/docs/Web.Encoding.TextEncoder).
54[`Web.Encoding.TextEncoder`](https://pursuit.purescript.org/packages/purescript-web-encoding/docs/Web.Encoding.TextEncoder).
56```purescript
56```purescript
57+import Effect.Class (class MonadEffect, liftEffect)
58+import Data.UInt (fromInt)
59+import Data.ArrayBuffer.Types (ArrayBuffer(..))
57−import Data.ArrayBuffer.Builder (PutM, putArrayBuffer, execPut)
60+import Data.ArrayBuffer.Builder (PutM, putArrayBuffer, execPut, putUint32be)
58import Data.ArrayBuffer.Typed (buffer)
61import Data.ArrayBuffer.Typed (buffer)
59import Data.ArrayBuffer.ArrayBuffer (byteLength)
62import Data.ArrayBuffer.ArrayBuffer (byteLength)
60−import Web.Encoding.TextEncoder (new, textEncoder)
63+import Web.Encoding.TextEncoder (new, TextEncoder, encode)
62putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
65putStringUtf8 :: forall m. MonadEffect m => String -> PutM m Unit
63putStringUtf8 s = do
66putStringUtf8 s = do
64 textEncoder <- liftEffect new
67 textEncoder <- liftEffect new
65 let stringbuf = buffer $ encode s textEncoder
68 let stringbuf = buffer $ encode s textEncoder
66 -- Put a 32-bit big-endian length for the utf8 string, in bytes.
69 -- Put a 32-bit big-endian length for the utf8 string, in bytes.
67− putInt32be $ byteLength stringbuf
70+ putUint32be $ fromInt $ byteLength stringbuf
68 putArrayBuffer stringbuf
71 putArrayBuffer stringbuf
70arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
73arraybuffer :: ArrayBuffer <- execPut $ putStringUtf8 "🦝"
@@ -121,7 +124,7 @@ of the `PutM` builder expression are stack-safe.
122This package is only for writing `ArrayBuffer`s, not reading them.
125This package is only for writing `ArrayBuffer`s, not reading them.
124−[__purescript-parsing-dataview__](https://pursuit.purescript.org/packages/purescript-parsing-dataview/)
127+[__parsing-dataview__](https://pursuit.purescript.org/packages/purescript-parsing-dataview/)
125for a way to deserialize from `ArrayBuffer` back to Purescript data.
128for a way to deserialize from `ArrayBuffer` back to Purescript data.
127## Alternative packages for serializing to an `ArrayBuffer`
130## Alternative packages for serializing to an `ArrayBuffer`