0
0
mirror of https://github.com/honojs/hono.git synced 2024-12-01 11:51:01 +01:00
hono/deno_dist/utils/buffer.ts
Yusuke Wada c7fc8a033a
fix(utils/buffer): fix bufferToFormData() (#1500)
* fix(utils/buffer): fix `bufferToFormData()`

* denoify
2023-09-23 23:46:09 +09:00

59 lines
1.1 KiB
TypeScript

import { sha256 } from './crypto.ts'
export const equal = (a: ArrayBuffer, b: ArrayBuffer) => {
if (a === b) {
return true
}
if (a.byteLength !== b.byteLength) {
return false
}
const va = new DataView(a)
const vb = new DataView(b)
let i = va.byteLength
while (i--) {
if (va.getUint8(i) !== vb.getUint8(i)) {
return false
}
}
return true
}
export const timingSafeEqual = async (
a: string | object | boolean,
b: string | object | boolean,
hashFunction?: Function
) => {
if (!hashFunction) {
hashFunction = sha256
}
const sa = await hashFunction(a)
const sb = await hashFunction(b)
if (!sa || !sb) {
return false
}
return sa === sb && a === b
}
export const bufferToString = (buffer: ArrayBuffer): string => {
if (buffer instanceof ArrayBuffer) {
const enc = new TextDecoder('utf-8')
return enc.decode(buffer)
}
return buffer
}
export const bufferToFormData = (arrayBuffer: ArrayBuffer, contentType: string) => {
const response = new Response(arrayBuffer, {
headers: {
'Content-Type': contentType,
},
})
return response.formData()
}