1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { WorkboxError } from 'workbox-core/_private/WorkboxError.js';
- import { assert } from 'workbox-core/_private/assert.js';
- import '../_version.js';
- function parseRangeHeader(rangeHeader) {
- if (process.env.NODE_ENV !== 'production') {
- assert.isType(rangeHeader, 'string', {
- moduleName: 'workbox-range-requests',
- funcName: 'parseRangeHeader',
- paramName: 'rangeHeader',
- });
- }
- const normalizedRangeHeader = rangeHeader.trim().toLowerCase();
- if (!normalizedRangeHeader.startsWith('bytes=')) {
- throw new WorkboxError('unit-must-be-bytes', { normalizedRangeHeader });
- }
-
-
-
- if (normalizedRangeHeader.includes(',')) {
- throw new WorkboxError('single-range-only', { normalizedRangeHeader });
- }
- const rangeParts = /(\d*)-(\d*)/.exec(normalizedRangeHeader);
-
- if (!rangeParts || !(rangeParts[1] || rangeParts[2])) {
- throw new WorkboxError('invalid-range-values', { normalizedRangeHeader });
- }
- return {
- start: rangeParts[1] === '' ? undefined : Number(rangeParts[1]),
- end: rangeParts[2] === '' ? undefined : Number(rangeParts[2]),
- };
- }
- export { parseRangeHeader };
|