@plyaz/types 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/api/index.d.ts +1 -0
  2. package/dist/api/types.d.ts +84 -0
  3. package/dist/auth/enums.d.ts +32 -0
  4. package/dist/auth/index.d.ts +3 -0
  5. package/dist/auth/schemas.d.ts +27 -0
  6. package/dist/auth/types.d.ts +34 -0
  7. package/dist/common/index.d.ts +1 -0
  8. package/dist/common/types.d.ts +22 -0
  9. package/dist/entities/index.d.ts +1 -0
  10. package/dist/errors/enums.d.ts +33 -0
  11. package/dist/errors/index.d.ts +2 -0
  12. package/dist/errors/types.d.ts +79 -0
  13. package/dist/events/enums.d.ts +25 -0
  14. package/dist/events/index.d.ts +3 -0
  15. package/dist/events/payload.d.ts +6 -0
  16. package/dist/events/types.d.ts +136 -0
  17. package/dist/features/cache/index.d.ts +1 -0
  18. package/dist/features/cache/types.d.ts +142 -0
  19. package/dist/features/feature-flag/index.d.ts +1 -0
  20. package/dist/features/feature-flag/types.d.ts +491 -0
  21. package/dist/features/index.d.ts +2 -0
  22. package/dist/index.d.ts +13 -0
  23. package/dist/store/index.d.ts +1 -0
  24. package/dist/testing/common/assertions/index.d.ts +1 -0
  25. package/dist/testing/common/assertions/types.d.ts +137 -0
  26. package/dist/testing/common/factories/index.d.ts +1 -0
  27. package/dist/testing/common/factories/types.d.ts +701 -0
  28. package/dist/testing/common/index.d.ts +6 -0
  29. package/dist/testing/common/mocks/index.d.ts +1 -0
  30. package/dist/testing/common/mocks/types.d.ts +1662 -0
  31. package/dist/testing/common/patterns/index.d.ts +1 -0
  32. package/dist/testing/common/patterns/types.d.ts +397 -0
  33. package/dist/testing/common/utils/index.d.ts +1 -0
  34. package/dist/testing/common/utils/types.d.ts +1970 -0
  35. package/dist/testing/common/wrappers/index.d.ts +1 -0
  36. package/dist/testing/common/wrappers/types.d.ts +373 -0
  37. package/dist/testing/features/cache/index.d.ts +1 -0
  38. package/dist/testing/features/cache/types.d.ts +43 -0
  39. package/dist/testing/features/feature-flags/index.d.ts +1 -0
  40. package/dist/testing/features/feature-flags/types.d.ts +1133 -0
  41. package/dist/testing/features/index.d.ts +2 -0
  42. package/dist/testing/index.d.ts +2 -0
  43. package/dist/translations/index.d.ts +1 -0
  44. package/dist/translations/types.d.ts +390 -0
  45. package/dist/ui/index.d.ts +1 -0
  46. package/dist/web3/enums.d.ts +17 -0
  47. package/dist/web3/index.d.ts +2 -0
  48. package/dist/web3/types.d.ts +63 -0
  49. package/package.json +5 -3
@@ -0,0 +1 @@
1
+ export type * from './types';
@@ -0,0 +1,373 @@
1
+ /**
2
+ * @fileoverview Wrapper Component Types
3
+ *
4
+ * Comprehensive type definitions for React wrapper components used in testing.
5
+ * Provides type safety for provider wrappers, error boundaries, mock providers,
6
+ * and testing compositions. Essential for creating reusable test environments.
7
+ *
8
+ * This module includes types for:
9
+ * - Wrapper component interfaces and options
10
+ * - React provider testing utilities
11
+ * - Error boundary testing components
12
+ * - Mock and tracked provider implementations
13
+ * - Async data provider patterns
14
+ * - Context composition and stacking
15
+ * - Time travel and subscribable providers
16
+ * - API mocking provider utilities
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import type {
21
+ * WrapperComponent,
22
+ * MockProviderReturn,
23
+ * ProviderStack,
24
+ * TimeTravelProviderReturn
25
+ * } from './types';
26
+ *
27
+ * // Create wrapper component
28
+ * const TestWrapper: WrapperComponent = ({ children }) => (
29
+ * <ThemeProvider theme={testTheme}>
30
+ * <AuthProvider user={mockUser}>
31
+ * {children}
32
+ * </AuthProvider>
33
+ * </ThemeProvider>
34
+ * );
35
+ *
36
+ * // Mock provider for testing
37
+ * const { Provider, useValue }: MockProviderReturn<User> = createMockProvider({
38
+ * defaultValue: mockUser
39
+ * });
40
+ *
41
+ * // Provider stack composition
42
+ * const stack: ProviderStack = createProviderStack()
43
+ * .add({ provider: ThemeProvider, value: theme })
44
+ * .add({ provider: AuthProvider, value: user });
45
+ * ```
46
+ *
47
+ * @module WrapperTypes
48
+ * @since 1.0.0
49
+ */
50
+ import type * as React from 'react';
51
+ import type { RenderOptions, RenderHookOptions, MockNextRouter } from '..';
52
+ import type * as TestingLibraryReact from '@testing-library/react';
53
+ /**
54
+ * React wrapper component interface for test utilities
55
+ *
56
+ * Defines the contract for wrapper components used in testing environments.
57
+ * Wrapper components typically provide context, state, or other dependencies
58
+ * needed by components under test.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const TestWrapper: WrapperComponent = ({ children }) => (
63
+ * <QueryClient client={testQueryClient}>
64
+ * <ThemeProvider theme={lightTheme}>
65
+ * <AuthProvider user={mockUser}>
66
+ * {children}
67
+ * </AuthProvider>
68
+ * </ThemeProvider>
69
+ * </QueryClient>
70
+ * );
71
+ *
72
+ * TestWrapper.displayName = 'TestWrapper';
73
+ *
74
+ * // Use in tests
75
+ * render(<MyComponent />, { wrapper: TestWrapper });
76
+ * ```
77
+ */
78
+ export interface WrapperComponent {
79
+ (props: {
80
+ children: React.ReactNode;
81
+ }): React.ReactNode;
82
+ displayName?: string;
83
+ }
84
+ /**
85
+ * Common props interface for components that accept children
86
+ *
87
+ * Standard interface for React components that render child elements.
88
+ * Used throughout the testing library for consistent props typing.
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const Container: React.FC<ChildrenProps> = ({ children }) => (
93
+ * <div className="test-container">{children}</div>
94
+ * );
95
+ *
96
+ * function ProviderWrapper({ children }: ChildrenProps) {
97
+ * return <TestProvider>{children}</TestProvider>;
98
+ * }
99
+ * ```
100
+ */
101
+ export interface ChildrenProps {
102
+ children: React.ReactNode;
103
+ }
104
+ export interface WrapperOptions {
105
+ providers?: Array<React.ComponentType<{
106
+ children: React.ReactNode;
107
+ }>>;
108
+ providerProps?: Record<string, unknown>;
109
+ }
110
+ export interface GenericRenderOptions extends Omit<RenderOptions, 'wrapper'>, WrapperOptions {
111
+ }
112
+ export interface GenericRenderHookOptions<TProps> extends Omit<RenderHookOptions<TProps>, 'wrapper'>, WrapperOptions {
113
+ }
114
+ /**
115
+ * Type definition for the enhanced render function
116
+ *
117
+ * @param ui - React element to render
118
+ * @param options - Render options including providers
119
+ * @returns Render result from testing library
120
+ */
121
+ export type RenderFunction = (ui: React.ReactElement, options?: GenericRenderOptions) => TestingLibraryReact.RenderResult;
122
+ /**
123
+ * Type definition for the enhanced renderHook function
124
+ *
125
+ * @typeParam TResult - Type of the hook's return value
126
+ * @typeParam TProps - Type of the hook's props
127
+ * @param hook - Hook function to test
128
+ * @param options - Render hook options including providers
129
+ * @returns Render hook result from testing library
130
+ */
131
+ export type RenderHookFunction = <TResult, TProps>(hook: (props: TProps) => TResult, options?: GenericRenderHookOptions<TProps>) => TestingLibraryReact.RenderHookResult<TResult, TProps>;
132
+ export interface ErrorBoundaryState {
133
+ hasError: boolean;
134
+ error: Error | null;
135
+ }
136
+ /**
137
+ * Type definition for render result with Next.js router
138
+ */
139
+ export type RenderWithRouterResult = TestingLibraryReact.RenderResult & {
140
+ router: MockNextRouter;
141
+ };
142
+ export interface ErrorBoundaryProps {
143
+ children: React.ReactNode;
144
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
145
+ }
146
+ /**
147
+ * Context value interface for mock providers
148
+ *
149
+ * Defines the structure of context values provided by mock providers,
150
+ * including methods for updating and resetting the mock state.
151
+ *
152
+ * @typeParam T - Type of the value being provided
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * // User context mock
157
+ * const userContext: MockProviderContextValue<User> = {
158
+ * value: { id: 1, name: 'John', email: 'john@example.com' },
159
+ * setValue: (newUser) => console.log('User updated:', newUser),
160
+ * reset: () => console.log('User context reset')
161
+ * };
162
+ *
163
+ * // Theme context mock
164
+ * const themeContext: MockProviderContextValue<Theme> = {
165
+ * value: lightTheme,
166
+ * setValue: (theme) => document.body.className = theme.name,
167
+ * reset: () => document.body.className = 'default'
168
+ * };
169
+ * ```
170
+ */
171
+ export interface MockProviderContextValue<T> {
172
+ value: T;
173
+ setValue: (value: T) => void;
174
+ reset: () => void;
175
+ }
176
+ export interface MockProviderProps<T> {
177
+ children: React.ReactNode;
178
+ initialValue?: T;
179
+ }
180
+ export interface MockProviderReturn<T> {
181
+ Provider: React.FC<MockProviderProps<T>>;
182
+ useValue: () => MockProviderContextValue<T>;
183
+ Context: React.Context<MockProviderContextValue<T> | null>;
184
+ }
185
+ export interface TrackedProviderProps<T> {
186
+ children: React.ReactNode;
187
+ value: T;
188
+ onRender?: (count: number) => void;
189
+ }
190
+ export interface TrackedProviderReturn<T> {
191
+ Provider: React.FC<TrackedProviderProps<T>>;
192
+ getRenderCount: () => number;
193
+ getUpdateHistory: () => Array<UpdateHistoryEntry<T>>;
194
+ reset: () => void;
195
+ }
196
+ export interface AsyncProviderContextValue<T> {
197
+ data: T | undefined;
198
+ loading: boolean;
199
+ error: Error | null;
200
+ refetch: () => Promise<void>;
201
+ }
202
+ export interface AsyncProviderProps {
203
+ children: React.ReactNode;
204
+ }
205
+ export interface AsyncProviderReturn<T> {
206
+ Provider: React.FC<AsyncProviderProps>;
207
+ useAsyncValue: () => AsyncProviderContextValue<T>;
208
+ Context: React.Context<AsyncProviderContextValue<T> | null>;
209
+ }
210
+ export interface SuspenseWrapperProps {
211
+ children: React.ReactNode;
212
+ fallback?: React.ReactNode;
213
+ }
214
+ export interface AllProvidersOptions {
215
+ includeErrorBoundary?: boolean;
216
+ includeSuspense?: boolean;
217
+ includeStrictMode?: boolean;
218
+ errorBoundaryProps?: {
219
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
220
+ };
221
+ suspenseProps?: {
222
+ fallback?: React.ReactNode;
223
+ };
224
+ additionalProviders?: Array<React.ComponentType<{
225
+ children: React.ReactNode;
226
+ }>>;
227
+ }
228
+ export interface ContextProvider<T = unknown> {
229
+ Provider: React.ComponentType<{
230
+ value: T;
231
+ children: React.ReactNode;
232
+ }>;
233
+ Consumer: React.ComponentType<{
234
+ children: (value: T) => React.ReactNode;
235
+ }>;
236
+ displayName?: string;
237
+ }
238
+ export interface ProviderConfigOptions<T = unknown> {
239
+ provider: ContextProvider<T>;
240
+ value: T;
241
+ name?: string;
242
+ dependencies?: string[];
243
+ }
244
+ /**
245
+ * Provider stack interface for composing multiple providers
246
+ *
247
+ * Provides a fluent API for building complex provider hierarchies in tests.
248
+ * Allows adding, removing, and organizing providers in a dependency-aware manner.
249
+ *
250
+ * @example
251
+ * ```typescript
252
+ * // Build a provider stack
253
+ * const testStack: ProviderStack = createProviderStack()
254
+ * .add({
255
+ * provider: QueryClientProvider,
256
+ * value: testQueryClient,
257
+ * name: 'query'
258
+ * })
259
+ * .add({
260
+ * provider: ThemeProvider,
261
+ * value: darkTheme,
262
+ * name: 'theme',
263
+ * dependencies: ['query']
264
+ * })
265
+ * .add({
266
+ * provider: AuthProvider,
267
+ * value: mockUser,
268
+ * name: 'auth'
269
+ * });
270
+ *
271
+ * // Build the wrapper component
272
+ * const TestWrapper = testStack.build();
273
+ *
274
+ * // Use in tests
275
+ * render(<App />, { wrapper: TestWrapper });
276
+ *
277
+ * // Remove a provider
278
+ * const reducedStack = testStack.remove('auth');
279
+ *
280
+ * // Clear all providers
281
+ * testStack.clear();
282
+ * ```
283
+ */
284
+ export interface ProviderStack {
285
+ providers: ProviderConfigOptions[];
286
+ add: <T>(config: ProviderConfigOptions<T>) => ProviderStack;
287
+ remove: (name: string) => ProviderStack;
288
+ build: () => WrapperComponent;
289
+ clear: () => ProviderStack;
290
+ }
291
+ export interface WrapperComposition {
292
+ components: WrapperComponent[];
293
+ add: (component: WrapperComponent) => WrapperComposition;
294
+ remove: (displayName: string) => WrapperComposition;
295
+ build: () => WrapperComponent;
296
+ clear: () => WrapperComposition;
297
+ clone: () => WrapperComposition;
298
+ }
299
+ export interface MockProviderOptions<T> {
300
+ defaultValue: T;
301
+ onValueChange?: (newValue: T) => void;
302
+ }
303
+ export interface TrackedProviderOptions {
304
+ name: string;
305
+ logRenders?: boolean;
306
+ }
307
+ export interface AsyncProviderOptions<T> {
308
+ loadData: () => Promise<T>;
309
+ fallback?: T;
310
+ onError?: (error: Error) => void;
311
+ }
312
+ export interface SubscribableProviderOptions<T> {
313
+ initialValue: T;
314
+ name: string;
315
+ }
316
+ export interface TimeTravelProviderOptions<T> {
317
+ initialState: T;
318
+ maxHistory?: number;
319
+ name: string;
320
+ }
321
+ export interface MockApiProviderOptions {
322
+ endpoints: Record<string, () => Promise<unknown> | unknown>;
323
+ delay?: number;
324
+ name: string;
325
+ }
326
+ export interface UpdateHistoryEntry<T> {
327
+ timestamp: number;
328
+ updates: Partial<T>;
329
+ }
330
+ export interface ProviderChainItem {
331
+ provider: React.ComponentType<{
332
+ children: React.ReactNode;
333
+ }>;
334
+ props?: Record<string, unknown>;
335
+ }
336
+ export interface SubscribableContextValue<T> {
337
+ value: T;
338
+ subscribe: (callback: (value: T) => void) => () => void;
339
+ update: (value: T) => void;
340
+ }
341
+ export interface SubscribableProviderReturn<T> {
342
+ Provider: React.FC<{
343
+ children: React.ReactNode;
344
+ }>;
345
+ useSubscribable: () => SubscribableContextValue<T>;
346
+ getSubscriberCount: () => number;
347
+ clearSubscribers: () => void;
348
+ }
349
+ export type Subscriber<T> = (value: T) => void;
350
+ export interface TimeTravelContextValue<T> {
351
+ state: T;
352
+ canUndo: boolean;
353
+ canRedo: boolean;
354
+ undo: () => void;
355
+ redo: () => void;
356
+ update: (newState: T) => void;
357
+ reset: () => void;
358
+ getHistory: () => T[];
359
+ }
360
+ export interface TimeTravelProviderReturn<T> {
361
+ Provider: React.FC<{
362
+ children: React.ReactNode;
363
+ }>;
364
+ useTimeTravel: () => TimeTravelContextValue<T>;
365
+ }
366
+ export interface MockApiProviderReturn<T extends Record<string, unknown>> {
367
+ Provider: React.FC<{
368
+ children: React.ReactNode;
369
+ }>;
370
+ useApi: () => T;
371
+ mockApi: T;
372
+ resetMocks: () => void;
373
+ }
@@ -0,0 +1 @@
1
+ export type * from './types';
@@ -0,0 +1,43 @@
1
+ import type { CacheStrategy } from '../../../features';
2
+ /**
3
+ * Configuration for cache strategy test suite
4
+ *
5
+ * @interface CacheStrategyTestConfig
6
+ * @property name - Display name for the test suite
7
+ * @property createStrategy - Factory function to create strategy instance
8
+ * @property supportsExpiration - Whether strategy supports TTL/expiration (default: true)
9
+ * @property supportsStats - Whether strategy tracks statistics (default: true)
10
+ * @property cleanup - Optional cleanup function called after each test
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const memoryConfig: CacheStrategyTestConfig = {
15
+ * name: 'MemoryCache',
16
+ * createStrategy: () => new MemoryCache(),
17
+ * supportsExpiration: true,
18
+ * supportsStats: true
19
+ * };
20
+ *
21
+ * const redisConfig: CacheStrategyTestConfig = {
22
+ * name: 'RedisCache',
23
+ * createStrategy: async () => {
24
+ * const redis = new RedisCache(redisClient);
25
+ * await redis.connect();
26
+ * return redis;
27
+ * },
28
+ * cleanup: async (strategy) => {
29
+ * await strategy.dispose();
30
+ * await redisClient.quit();
31
+ * }
32
+ * };
33
+ * ```
34
+ *
35
+ * @public
36
+ */
37
+ export interface CacheStrategyTestConfig {
38
+ name: string;
39
+ createStrategy: () => CacheStrategy | Promise<CacheStrategy>;
40
+ supportsExpiration?: boolean;
41
+ supportsStats?: boolean;
42
+ cleanup?: (strategy: CacheStrategy) => Promise<void>;
43
+ }
@@ -0,0 +1 @@
1
+ export type * from './types';