(
fileInfo: FileInfo,
{ algorithm = DEFAULT_ALGORITHM }: ETagOptions,
)
| 77 | } |
| 78 | |
| 79 | async function calcFileInfo( |
| 80 | fileInfo: FileInfo, |
| 81 | { algorithm = DEFAULT_ALGORITHM }: ETagOptions, |
| 82 | ) { |
| 83 | if (fileInfo.mtime) { |
| 84 | const hash = base64Encode( |
| 85 | await crypto.subtle.digest( |
| 86 | algorithm, |
| 87 | encoder.encode(fileInfo.mtime.toJSON()), |
| 88 | ), |
| 89 | ).substring(0, 27); |
| 90 | return `${fileInfo.size.toString(16)}-${hash}`; |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | /** |
| 95 | * Calculate an ETag for string or `Uint8Array` entities. This returns a |