refactor: adapter 구현중..
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
export type ProviderOutputLimiter = Readonly<{
|
||||
consume(chunk: Buffer | string): void;
|
||||
bytes(): number;
|
||||
}>;
|
||||
|
||||
export function createProviderOutputLimiter(
|
||||
maxBytes: number,
|
||||
onExceeded: () => void,
|
||||
): ProviderOutputLimiter {
|
||||
if (!Number.isSafeInteger(maxBytes) || maxBytes <= 0 || typeof onExceeded !== "function") {
|
||||
throw new TypeError("provider output limiter input is invalid");
|
||||
}
|
||||
let observedBytes = 0;
|
||||
let exceeded = false;
|
||||
return Object.freeze({
|
||||
consume: (chunk: Buffer | string) => {
|
||||
if (exceeded) return;
|
||||
const bytes = Buffer.isBuffer(chunk) ? chunk.byteLength : Buffer.byteLength(chunk);
|
||||
observedBytes += bytes;
|
||||
if (observedBytes > maxBytes) {
|
||||
exceeded = true;
|
||||
onExceeded();
|
||||
}
|
||||
},
|
||||
bytes: () => observedBytes,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user