Files
payloadcms/packages/storage-azure/src/utils/getRangeFromHeader.ts
Germán Jabloñski d4039f2f9e chore: enable noUncheckedIndexedAccess in all packages except richtext-lexical (#10592)
richtext-lexical throws a lot of errors so it will need a separate PR
2025-01-15 16:09:10 +00:00

27 lines
694 B
TypeScript

import type { BlockBlobClient } from '@azure/storage-blob'
import parseRange from 'range-parser'
export const getRangeFromHeader = async (
blockBlobClient: BlockBlobClient,
rangeHeader?: string,
): Promise<{ end: number | undefined; start: number }> => {
const fullRange = { end: undefined, start: 0 }
if (!rangeHeader) {
return fullRange
}
const size = await blockBlobClient.getProperties().then((props) => props.contentLength)
if (size === undefined) {
return fullRange
}
const range = parseRange(size, rangeHeader)
if (range === -1 || range === -2 || range.type !== 'bytes' || range.length !== 1) {
return fullRange
}
return range[0] ?? fullRange
}