@dbs-portal/core-api
Version:
HTTP client and API utilities for DBS Portal
134 lines • 4.04 kB
TypeScript
/**
* 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