import * as types from './types.js'; /** * Abstract Core Request class that defines the interface for all HTTP/HTTPS requests */ export abstract class CoreRequest { /** * Tests if a URL is a unix socket */ static isUnixSocket(url: string): boolean { const unixRegex = /^(http:\/\/|https:\/\/|)unix:/; return unixRegex.test(url); } /** * Parses socket path and route from unix socket URL */ static parseUnixSocketUrl(url: string): { socketPath: string; path: string } { const parseRegex = /(.*):(.*)/; const result = parseRegex.exec(url); return { socketPath: result[1], path: result[2], }; } protected url: string; protected options: TOptions; constructor(url: string, options: TOptions) { this.url = url; this.options = options; } /** * Fire the request and return a response */ abstract fire(): Promise; /** * Fire the request and return the raw response (platform-specific) */ abstract fireCore(): Promise; }