23 lines
609 B
Plaintext
23 lines
609 B
Plaintext
import { Buffer } from 'node:buffer';
|
|
import { promisify } from 'node:util';
|
|
import is from '@sindresorhus/is';
|
|
import isFormData from './is-form-data.js';
|
|
export default async function getBodySize(body, headers) {
|
|
if (headers && 'content-length' in headers) {
|
|
return Number(headers['content-length']);
|
|
}
|
|
if (!body) {
|
|
return 0;
|
|
}
|
|
if (is.string(body)) {
|
|
return Buffer.byteLength(body);
|
|
}
|
|
if (is.buffer(body)) {
|
|
return body.length;
|
|
}
|
|
if (isFormData(body)) {
|
|
return promisify(body.getLength.bind(body))();
|
|
}
|
|
return undefined;
|
|
}
|