This commit is contained in:
2025-07-28 15:12:11 +00:00
parent 8f5c88b47e
commit 7dcc5f3fe2
13 changed files with 175 additions and 78 deletions

View File

@@ -1,13 +1,13 @@
import * as plugins from './plugins.js';
import * as types from './types.js';
import { CoreResponse as AbstractCoreResponse } from '../core_base/response.js';
/**
* Core Response class that provides a fetch-like API
* Node.js implementation of Core Response class that provides a fetch-like API
*/
export class CoreResponse<T = any> implements types.ICoreResponse<T> {
export class CoreResponse<T = any> extends AbstractCoreResponse<T> implements types.ICoreResponse<T> {
private incomingMessage: plugins.http.IncomingMessage;
private bodyBufferPromise: Promise<Buffer> | null = null;
private consumed = false;
// Public properties
public readonly ok: boolean;
@@ -17,6 +17,7 @@ export class CoreResponse<T = any> implements types.ICoreResponse<T> {
public readonly url: string;
constructor(incomingMessage: plugins.http.IncomingMessage, url: string) {
super();
this.incomingMessage = incomingMessage;
this.url = url;
this.status = incomingMessage.statusCode || 0;
@@ -25,16 +26,6 @@ export class CoreResponse<T = any> implements types.ICoreResponse<T> {
this.headers = incomingMessage.headers;
}
/**
* Ensures the body can only be consumed once
*/
private ensureNotConsumed(): void {
if (this.consumed) {
throw new Error('Body has already been consumed');
}
this.consumed = true;
}
/**
* Collects the body as a buffer
*/