Buckets:
| // src/utils/buffer.ts | |
| import { sha256 } from "./crypto.js"; | |
| var equal = (a, b) => { | |
| 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; | |
| }; | |
| var timingSafeEqual = async (a, b, hashFunction) => { | |
| if (!hashFunction) { | |
| hashFunction = sha256; | |
| } | |
| const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]); | |
| if (!sa || !sb) { | |
| return false; | |
| } | |
| return sa === sb && a === b; | |
| }; | |
| var bufferToString = (buffer) => { | |
| if (buffer instanceof ArrayBuffer) { | |
| const enc = new TextDecoder("utf-8"); | |
| return enc.decode(buffer); | |
| } | |
| return buffer; | |
| }; | |
| var bufferToFormData = (arrayBuffer, contentType) => { | |
| const response = new Response(arrayBuffer, { | |
| headers: { | |
| "Content-Type": contentType | |
| } | |
| }); | |
| return response.formData(); | |
| }; | |
| export { | |
| bufferToFormData, | |
| bufferToString, | |
| equal, | |
| timingSafeEqual | |
| }; | |
Xet Storage Details
- Size:
- 1.08 kB
- Xet hash:
- aa07629c1cc64592c15324bf5081c565387d24ce509707bae01b1c7db9b22037
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.