@dbs-portal/tool-mock
Version:
API mocking toolkit using MSW for DBS Portal development workflows
209 lines • 5.4 kB
TypeScript
/**
* Zustand integration for mock state management
*/
import type { ZustandIntegrationConfig } from './types';
/**
* Mock store configuration
*/
export interface MockStoreConfig<T = any> {
/** Store name */
name: string;
/** Initial state */
initialState: T;
/** Mock data to populate */
mockData?: Partial<T>;
/** Actions to mock */
actions?: Record<string, (...args: any[]) => any>;
/** Whether to persist state */
persist?: boolean;
/** Storage key for persistence */
storageKey?: string;
}
/**
* Create mock-aware Zustand store
*/
export declare function createMockStore<T extends Record<string, any>>(config: MockStoreConfig<T>): any;
/**
* Mock store manager
*/
export declare class MockStoreManager {
private stores;
constructor(_config?: ZustandIntegrationConfig);
/**
* Register a mock store
*/
registerStore<T extends Record<string, any>>(name: string, storeConfig: MockStoreConfig<T>): any;
/**
* Get registered store
*/
getStore(name: string): any;
/**
* Update store state
*/
updateStore<T>(name: string, update: Partial<T>): void;
/**
* Reset store to initial state
*/
resetStore(name: string): void;
/**
* Clear all stores
*/
clearAllStores(): void;
/**
* Get all store names
*/
getStoreNames(): string[];
/**
* Apply global mock state
*/
applyGlobalMockState(globalState: any): void;
}
/**
* Create mock store hooks for React
*/
export declare function createMockStoreHooks<T>(store: any): {
/**
* Use store hook
*/
useStore: <K extends keyof T>(selector?: (state: T) => K) => any;
/**
* Use store actions
*/
useStoreActions: () => any;
};
/**
* Mock data providers for common store patterns
*/
export declare const mockStoreProviders: {
/**
* User store mock data
*/
userStore: {
initialState: {
currentUser: null;
isAuthenticated: boolean;
loading: boolean;
error: null;
};
mockData: {
currentUser: {
id: string;
email: string;
firstName: string;
lastName: string;
roles: string[];
};
isAuthenticated: boolean;
};
actions: {
login: (credentials: any) => {
currentUser: {
id: string;
email: any;
firstName: string;
lastName: string;
};
isAuthenticated: boolean;
loading: boolean;
error: null;
};
logout: () => {
currentUser: null;
isAuthenticated: boolean;
loading: boolean;
error: null;
};
};
};
/**
* UI store mock data
*/
uiStore: {
initialState: {
sidebarOpen: boolean;
theme: string;
notifications: never[];
loading: boolean;
};
mockData: {
notifications: {
id: string;
type: string;
message: string;
timestamp: string;
}[];
};
actions: {
toggleSidebar: () => (state: any) => {
sidebarOpen: boolean;
};
setTheme: (theme: string) => {
theme: string;
};
addNotification: (notification: any) => (state: any) => {
notifications: any[];
};
};
};
/**
* Data store mock data
*/
dataStore: {
initialState: {
items: never[];
loading: boolean;
error: null;
pagination: {
page: number;
pageSize: number;
total: number;
};
};
mockData: {
items: {
id: string;
name: string;
description: string;
createdAt: string;
}[];
pagination: {
page: number;
pageSize: number;
total: number;
};
};
actions: {
setItems: (items: any[]) => {
items: any[];
};
addItem: (item: any) => (state: any) => {
items: any[];
};
removeItem: (id: string) => (state: any) => {
items: any;
};
setLoading: (loading: boolean) => {
loading: boolean;
};
setError: (error: any) => {
error: any;
};
};
};
};
/**
* Setup mock stores for development
*/
export declare function setupMockStores(storeConfigs?: Record<string, MockStoreConfig>): MockStoreManager;
/**
* Integration with existing Zustand stores
*/
export declare function integrateMockWithZustand(existingStore: any, mockData: any, options?: {
override?: boolean;
merge?: boolean;
}): any;
/**
* Mock store devtools integration
*/
export declare function setupMockStoreDevtools(stores: Record<string, any>): void;
//# sourceMappingURL=zustand.d.ts.map