This commit is contained in:
2025-07-28 22:37:36 +00:00
parent bc99aa3569
commit eb2ccd8d9f
21 changed files with 228 additions and 99 deletions

View File

@@ -8,6 +8,11 @@ import { CoreRequest as AbstractCoreRequest } from '../core_base/request.js';
export class CoreRequest extends AbstractCoreRequest<types.ICoreRequestOptions, CoreResponse> {
constructor(url: string, options: types.ICoreRequestOptions = {}) {
super(url, options);
// Check for unsupported Node.js-specific options
if (options.agent || options.socketPath) {
throw new Error('Node.js specific options (agent, socketPath) are not supported in browser/fetch implementation');
}
}
/**

View File

@@ -4,7 +4,7 @@ import { CoreResponse as AbstractCoreResponse } from '../core_base/response.js';
/**
* Fetch-based implementation of Core Response class
*/
export class CoreResponse<T = any> extends AbstractCoreResponse<T> implements types.ICoreResponse<T> {
export class CoreResponse<T = any> extends AbstractCoreResponse<T> implements types.IFetchResponse<T> {
private response: Response;
private responseClone: Response;
@@ -12,7 +12,7 @@ export class CoreResponse<T = any> extends AbstractCoreResponse<T> implements ty
public readonly ok: boolean;
public readonly status: number;
public readonly statusText: string;
public readonly headers: types.AbstractHeaders;
public readonly headers: types.Headers;
public readonly url: string;
constructor(response: Response) {

View File

@@ -4,24 +4,12 @@ import * as baseTypes from '../core_base/types.js';
export * from '../core_base/types.js';
/**
* Core request options for fetch-based implementation
* Extends RequestInit from the Fetch API
* Fetch-specific response extensions
*/
export interface ICoreRequestOptions extends RequestInit {
// Override method to be more specific
method?: baseTypes.THttpMethod;
// Additional options not in RequestInit
requestBody?: any;
queryParams?: { [key: string]: string };
timeout?: number;
hardDataCuttingTimeout?: number;
// keepAlive maps to keepalive in RequestInit
keepAlive?: boolean;
}
/**
* Core response object for fetch implementation
*/
export interface ICoreResponse<T = any> extends baseTypes.IAbstractResponse<T> {
// Fetch-specific properties (all from base interface)
export interface IFetchResponse<T = any> extends baseTypes.ICoreResponse<T> {
// Fetch-specific methods
stream(): ReadableStream<Uint8Array> | null;
// Access to raw Response object
raw(): Response;
}