import * as types from './types.js'; /** * Abstract Core Response class that provides a fetch-like API */ export abstract class CoreResponse implements types.IAbstractResponse { protected consumed = false; // Public properties public abstract readonly ok: boolean; public abstract readonly status: number; public abstract readonly statusText: string; public abstract readonly headers: types.AbstractHeaders; public abstract readonly url: string; /** * Ensures the body can only be consumed once */ protected ensureNotConsumed(): void { if (this.consumed) { throw new Error('Body has already been consumed'); } this.consumed = true; } /** * Parse response as JSON */ abstract json(): Promise; /** * Get response as text */ abstract text(): Promise; /** * Get response as ArrayBuffer */ abstract arrayBuffer(): Promise; }