django-vue3-admin-web/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js
2025-10-20 21:21:14 +08:00

28 lines
835 B
JavaScript

import { fstatSync, lstatSync, ReadStream } from "node:fs";
export const calculateBodyLength = (body) => {
if (!body) {
return 0;
}
if (typeof body === "string") {
return Buffer.byteLength(body);
}
else if (typeof body.byteLength === "number") {
return body.byteLength;
}
else if (typeof body.size === "number") {
return body.size;
}
else if (typeof body.start === "number" && typeof body.end === "number") {
return body.end + 1 - body.start;
}
else if (body instanceof ReadStream) {
if (body.path != null) {
return lstatSync(body.path).size;
}
else if (typeof body.fd === "number") {
return fstatSync(body.fd).size;
}
}
throw new Error(`Body Length computation failed for ${body}`);
};