UNPKG

@dbs-portal/core-api

Version:

HTTP client and API utilities for DBS Portal

134 lines 4.04 kB
/** * MSW integration with existing ApiClient and factory patterns */ import type { RequestHandler } from 'msw'; import type { ApiClient } from '../../client/api-client'; import type { ApiClientConfig } from '../../types'; import type { MockConfig } from '../types'; /** * Extended API client configuration with MSW support */ export interface MockAwareApiClientConfig extends ApiClientConfig { /** MSW configuration */ mocking?: Partial<MockConfig>; /** Custom mock handlers */ mockHandlers?: RequestHandler[]; /** Whether to auto-setup MSW */ autoSetupMocks?: boolean; } /** * API client factory options with MSW support */ export interface MockAwareFactoryOptions { /** Base URL for real API */ baseURL: string; /** Mock base URL (optional, defaults to baseURL) */ mockBaseURL?: string; /** Whether to enable mocking */ enableMocking?: boolean; /** Mock configuration */ mockConfig?: Partial<MockConfig>; /** Custom mock handlers */ mockHandlers?: RequestHandler[]; /** Standard API client config */ clientConfig?: Partial<ApiClientConfig>; } /** * Environment-aware API client configuration */ export interface EnvironmentAwareConfig { /** Production API configuration */ production: { baseURL: string; config?: Partial<ApiClientConfig>; }; /** Development API configuration */ development: { baseURL: string; config?: Partial<ApiClientConfig>; /** Whether to enable mocking in development */ enableMocking?: boolean; mockConfig?: Partial<MockConfig>; mockHandlers?: RequestHandler[]; }; /** Testing API configuration */ testing: { baseURL: string; config?: Partial<ApiClientConfig>; /** Whether to enable mocking in testing (default: true) */ enableMocking?: boolean; mockConfig?: Partial<MockConfig>; mockHandlers?: RequestHandler[]; }; /** Storybook API configuration */ storybook?: { baseURL: string; config?: Partial<ApiClientConfig>; enableMocking?: boolean; mockConfig?: Partial<MockConfig>; mockHandlers?: RequestHandler[]; }; } /** * Create API client configuration with MSW integration */ export declare function createMockAwareConfig(options: MockAwareFactoryOptions): MockAwareApiClientConfig; /** * Create environment-aware API client configuration */ export declare function createEnvironmentAwareConfig(config: EnvironmentAwareConfig): MockAwareApiClientConfig; /** * Initialize MSW for API client if configured */ export declare function initializeMockingForClient(config: MockAwareApiClientConfig): Promise<void>; /** * API client wrapper that handles MSW integration */ export declare class MockAwareApiClient { private client; private mockConfig?; private isMockingEnabled; constructor(client: ApiClient, config?: MockAwareApiClientConfig); /** * Get the underlying API client */ getClient(): ApiClient; /** * Check if mocking is enabled */ isMocking(): boolean; /** * Get mock configuration */ getMockConfig(): Partial<MockConfig> | undefined; /** * Enable mocking at runtime */ enableMocking(handlers?: RequestHandler[]): Promise<void>; /** * Disable mocking at runtime */ disableMocking(): Promise<void>; /** * Add mock handlers at runtime */ addMockHandlers(..._handlers: RequestHandler[]): void; private initializeMocking; } /** * Utility to check if current environment should use mocking */ export declare function shouldUseMocking(options?: { forceEnable?: boolean; forceDisable?: boolean; environment?: string; }): boolean; /** * Get appropriate base URL based on mocking status */ export declare function getApiBaseUrl(options: { realBaseURL: string; mockBaseURL?: string; enableMocking?: boolean; }): string; //# sourceMappingURL=api-client-integration.d.ts.map