.
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
import { DEFAULT_MAX_POSTPONED_STATE_SIZE, parseMaxPostponedStateSize } from '../../shared/lib/size-limit';
|
||||
const INVALID_MAX_POSTPONED_STATE_SIZE_ERROR_MESSAGE = 'maxPostponedStateSize must be a valid number (bytes) or filesize format string (e.g., "5mb")';
|
||||
export function getMaxPostponedStateSize(configuredMaxPostponedStateSize) {
|
||||
const maxPostponedStateSize = configuredMaxPostponedStateSize ?? DEFAULT_MAX_POSTPONED_STATE_SIZE;
|
||||
const maxPostponedStateSizeBytes = parseMaxPostponedStateSize(configuredMaxPostponedStateSize);
|
||||
if (maxPostponedStateSizeBytes === undefined) {
|
||||
throw Object.defineProperty(new Error(INVALID_MAX_POSTPONED_STATE_SIZE_ERROR_MESSAGE), "__NEXT_ERROR_CODE", {
|
||||
value: "E977",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
return {
|
||||
maxPostponedStateSize,
|
||||
maxPostponedStateSizeBytes
|
||||
};
|
||||
}
|
||||
export function getPostponedStateExceededErrorMessage(maxPostponedStateSize) {
|
||||
return `Postponed state exceeded ${maxPostponedStateSize} limit. ` + `To configure the limit, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/max-postponed-state-size`;
|
||||
}
|
||||
function toBuffer(chunk) {
|
||||
return Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
||||
}
|
||||
export async function readBodyWithSizeLimit(body, maxBodySizeBytes) {
|
||||
const chunks = [];
|
||||
let size = 0;
|
||||
for await (const chunk of body){
|
||||
const buffer = toBuffer(chunk);
|
||||
size += buffer.byteLength;
|
||||
if (size > maxBodySizeBytes) {
|
||||
return null;
|
||||
}
|
||||
chunks.push(buffer);
|
||||
}
|
||||
return Buffer.concat(chunks);
|
||||
}
|
||||
|
||||
//# sourceMappingURL=postponed-request-body.js.map
|
||||
Reference in New Issue
Block a user