schemock 0.0.1

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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/adapters/index.d.mts +1364 -0
  4. package/dist/adapters/index.d.ts +1364 -0
  5. package/dist/adapters/index.js +36988 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/index.mjs +36972 -0
  8. package/dist/adapters/index.mjs.map +1 -0
  9. package/dist/cli/index.d.mts +831 -0
  10. package/dist/cli/index.d.ts +831 -0
  11. package/dist/cli/index.js +4425 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/cli/index.mjs +4401 -0
  14. package/dist/cli/index.mjs.map +1 -0
  15. package/dist/cli.js +6776 -0
  16. package/dist/index.d.mts +8 -0
  17. package/dist/index.d.ts +8 -0
  18. package/dist/index.js +39439 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.mjs +39367 -0
  21. package/dist/index.mjs.map +1 -0
  22. package/dist/middleware/index.d.mts +688 -0
  23. package/dist/middleware/index.d.ts +688 -0
  24. package/dist/middleware/index.js +921 -0
  25. package/dist/middleware/index.js.map +1 -0
  26. package/dist/middleware/index.mjs +899 -0
  27. package/dist/middleware/index.mjs.map +1 -0
  28. package/dist/react/index.d.mts +316 -0
  29. package/dist/react/index.d.ts +316 -0
  30. package/dist/react/index.js +466 -0
  31. package/dist/react/index.js.map +1 -0
  32. package/dist/react/index.mjs +456 -0
  33. package/dist/react/index.mjs.map +1 -0
  34. package/dist/runtime/index.d.mts +814 -0
  35. package/dist/runtime/index.d.ts +814 -0
  36. package/dist/runtime/index.js +1270 -0
  37. package/dist/runtime/index.js.map +1 -0
  38. package/dist/runtime/index.mjs +1246 -0
  39. package/dist/runtime/index.mjs.map +1 -0
  40. package/dist/schema/index.d.mts +838 -0
  41. package/dist/schema/index.d.ts +838 -0
  42. package/dist/schema/index.js +696 -0
  43. package/dist/schema/index.js.map +1 -0
  44. package/dist/schema/index.mjs +681 -0
  45. package/dist/schema/index.mjs.map +1 -0
  46. package/dist/types-C1MiZh1d.d.ts +96 -0
  47. package/dist/types-C2bd2vgy.d.mts +773 -0
  48. package/dist/types-C2bd2vgy.d.ts +773 -0
  49. package/dist/types-C9VMgu3E.d.mts +289 -0
  50. package/dist/types-DV2DS7wj.d.mts +96 -0
  51. package/dist/types-c2AN3vky.d.ts +289 -0
  52. package/package.json +116 -0
@@ -0,0 +1,688 @@
1
+ import { M as Middleware, b as MiddlewareContext } from '../types-C1MiZh1d.js';
2
+ export { a as MiddlewareFunction, c as MiddlewareResult } from '../types-C1MiZh1d.js';
3
+ import { b as AdapterResponse } from '../types-c2AN3vky.js';
4
+ import { o as EntitySchema } from '../types-C2bd2vgy.js';
5
+
6
+ /**
7
+ * MiddlewareChain - Executor for composable middleware
8
+ *
9
+ * Chains middleware in order, executing before hooks, the handler,
10
+ * and after hooks in sequence.
11
+ *
12
+ * @module middleware/chain
13
+ * @category Middleware
14
+ */
15
+
16
+ /**
17
+ * MiddlewareChain class for executing middleware in sequence.
18
+ *
19
+ * Supports both hook-based middleware (before/after/onError) and
20
+ * function-based middleware (Koa-style handler).
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const chain = new MiddlewareChain([
25
+ * createAuthMiddleware({ getToken: () => 'token' }),
26
+ * createLoggerMiddleware(),
27
+ * createCacheMiddleware({ ttl: 60000 }),
28
+ * ]);
29
+ *
30
+ * const result = await chain.execute(ctx, async () => {
31
+ * return adapter.findMany(ctx);
32
+ * });
33
+ * ```
34
+ */
35
+ declare class MiddlewareChain {
36
+ /** The middleware stack */
37
+ private middlewares;
38
+ /**
39
+ * Create a new MiddlewareChain.
40
+ *
41
+ * @param middlewares - Array of middleware to execute in order
42
+ */
43
+ constructor(middlewares: Middleware[]);
44
+ /**
45
+ * Execute the middleware chain with the given handler.
46
+ *
47
+ * @param ctx - The middleware context
48
+ * @param handler - The final handler (adapter call)
49
+ * @returns The response after all middleware processing
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const result = await chain.execute<User[]>(
54
+ * { entity: 'user', operation: 'findMany', metadata: {} },
55
+ * () => adapter.findMany({ entity: 'user' })
56
+ * );
57
+ * ```
58
+ */
59
+ execute<T>(ctx: MiddlewareContext, handler: () => Promise<AdapterResponse<T>>): Promise<AdapterResponse<T>>;
60
+ /**
61
+ * Execute middleware using hook-style (before/after/onError).
62
+ */
63
+ private executeHookStyle;
64
+ /**
65
+ * Execute middleware using function-style (Koa-like compose).
66
+ */
67
+ private executeFunctionStyle;
68
+ /**
69
+ * Add middleware to the chain.
70
+ *
71
+ * @param middleware - Middleware to add
72
+ */
73
+ use(middleware: Middleware): this;
74
+ /**
75
+ * Remove middleware by name.
76
+ *
77
+ * @param name - Name of middleware to remove
78
+ */
79
+ remove(name: string): this;
80
+ /**
81
+ * Get middleware by name.
82
+ *
83
+ * @param name - Middleware name
84
+ * @returns The middleware or undefined
85
+ */
86
+ get(name: string): Middleware | undefined;
87
+ /**
88
+ * Get all middleware names.
89
+ *
90
+ * @returns Array of middleware names
91
+ */
92
+ names(): string[];
93
+ /**
94
+ * Get the middleware count.
95
+ */
96
+ get length(): number;
97
+ }
98
+ /**
99
+ * Create a middleware chain from an array of middleware.
100
+ *
101
+ * @param middlewares - Array of middleware
102
+ * @returns A configured MiddlewareChain
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const chain = createMiddlewareChain([
107
+ * createAuthMiddleware({ getToken: () => token }),
108
+ * createLoggerMiddleware(),
109
+ * ]);
110
+ * ```
111
+ */
112
+ declare function createMiddlewareChain(middlewares: Middleware[]): MiddlewareChain;
113
+
114
+ /**
115
+ * Auth Middleware - Authentication token management
116
+ *
117
+ * Automatically attaches authentication tokens to requests
118
+ * and handles token refresh on 401 responses.
119
+ *
120
+ * @module middleware/auth
121
+ * @category Middleware
122
+ */
123
+
124
+ /**
125
+ * Configuration options for auth middleware.
126
+ */
127
+ interface AuthMiddlewareConfig {
128
+ /** Function to get the current auth token */
129
+ getToken: () => string | null | Promise<string | null>;
130
+ /** Function to refresh the token (optional) */
131
+ refreshToken?: () => Promise<string>;
132
+ /** Callback when user is unauthorized (optional) */
133
+ onUnauthorized?: () => void;
134
+ /** Header name for the token (default: 'Authorization') */
135
+ headerName?: string;
136
+ /** Token prefix (default: 'Bearer ') */
137
+ tokenPrefix?: string;
138
+ /** Whether to skip auth for certain operations */
139
+ skipOperations?: string[];
140
+ }
141
+ /**
142
+ * Create an authentication middleware.
143
+ *
144
+ * Attaches auth tokens to requests and handles 401 responses
145
+ * with optional token refresh.
146
+ *
147
+ * @param config - Auth middleware configuration
148
+ * @returns A configured Middleware instance
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const authMiddleware = createAuthMiddleware({
153
+ * getToken: () => localStorage.getItem('token'),
154
+ * refreshToken: async () => {
155
+ * const response = await fetch('/auth/refresh');
156
+ * const { token } = await response.json();
157
+ * localStorage.setItem('token', token);
158
+ * return token;
159
+ * },
160
+ * onUnauthorized: () => {
161
+ * window.location.href = '/login';
162
+ * },
163
+ * });
164
+ * ```
165
+ */
166
+ declare function createAuthMiddleware(config: AuthMiddlewareConfig): Middleware;
167
+
168
+ /**
169
+ * Retry Middleware - Automatic retry with exponential backoff
170
+ *
171
+ * Automatically retries failed requests with configurable
172
+ * retry count and exponential backoff delay.
173
+ *
174
+ * @module middleware/retry
175
+ * @category Middleware
176
+ */
177
+
178
+ /**
179
+ * Configuration options for retry middleware.
180
+ */
181
+ interface RetryMiddlewareConfig {
182
+ /** Maximum number of retry attempts (default: 3) */
183
+ maxRetries?: number;
184
+ /** Initial delay between retries in ms (default: 1000) */
185
+ retryDelay?: number;
186
+ /** Whether to use exponential backoff (default: true) */
187
+ exponentialBackoff?: boolean;
188
+ /** Maximum delay in ms (default: 30000) */
189
+ maxDelay?: number;
190
+ /** HTTP status codes that should trigger a retry */
191
+ retryableStatuses?: number[];
192
+ /** Custom function to determine if an error is retryable */
193
+ isRetryable?: (error: Error) => boolean;
194
+ /** Callback when a retry is attempted */
195
+ onRetry?: (attempt: number, error: Error, ctx: MiddlewareContext) => void;
196
+ }
197
+ /**
198
+ * Create a retry middleware with exponential backoff.
199
+ *
200
+ * @param config - Retry middleware configuration
201
+ * @returns A configured Middleware instance
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * const retryMiddleware = createRetryMiddleware({
206
+ * maxRetries: 3,
207
+ * retryDelay: 1000,
208
+ * onRetry: (attempt, error) => {
209
+ * console.log(`Retry attempt ${attempt}: ${error.message}`);
210
+ * },
211
+ * });
212
+ * ```
213
+ */
214
+ declare function createRetryMiddleware(config?: RetryMiddlewareConfig): Middleware;
215
+
216
+ /**
217
+ * Cache Middleware - Response caching with TTL
218
+ *
219
+ * Caches successful responses to reduce API calls
220
+ * and improve performance.
221
+ *
222
+ * @module middleware/cache
223
+ * @category Middleware
224
+ */
225
+
226
+ /**
227
+ * Configuration options for cache middleware.
228
+ */
229
+ interface CacheMiddlewareConfig {
230
+ /** Time-to-live for cache entries in ms (default: 60000 = 1 minute) */
231
+ ttl?: number;
232
+ /** Operations to cache (default: ['findOne', 'findMany']) */
233
+ cacheOperations?: string[];
234
+ /** Maximum number of cached entries (default: 1000) */
235
+ maxSize?: number;
236
+ /** Custom cache key generator */
237
+ getCacheKey?: (ctx: MiddlewareContext) => string;
238
+ /** Whether to cache errors (default: false) */
239
+ cacheErrors?: boolean;
240
+ /** Storage backend (default: in-memory Map) */
241
+ storage?: CacheStorage;
242
+ }
243
+ /**
244
+ * Cache storage interface.
245
+ */
246
+ interface CacheStorage {
247
+ get<T>(key: string): Promise<CacheEntry<T> | undefined>;
248
+ set<T>(key: string, entry: CacheEntry<T>): Promise<void>;
249
+ delete(key: string): Promise<void>;
250
+ clear(): Promise<void>;
251
+ size(): Promise<number>;
252
+ }
253
+ /**
254
+ * Cache entry structure.
255
+ */
256
+ interface CacheEntry<T> {
257
+ /** Cached response data */
258
+ data: AdapterResponse<T>;
259
+ /** Timestamp when cached */
260
+ timestamp: number;
261
+ /** TTL for this entry */
262
+ ttl: number;
263
+ }
264
+ /**
265
+ * Default in-memory cache storage.
266
+ */
267
+ declare class MemoryCacheStorage implements CacheStorage {
268
+ private cache;
269
+ private maxSize;
270
+ constructor(maxSize?: number);
271
+ get<T>(key: string): Promise<CacheEntry<T> | undefined>;
272
+ set<T>(key: string, entry: CacheEntry<T>): Promise<void>;
273
+ delete(key: string): Promise<void>;
274
+ clear(): Promise<void>;
275
+ size(): Promise<number>;
276
+ }
277
+ /**
278
+ * Create a cache middleware with TTL.
279
+ *
280
+ * @param config - Cache middleware configuration
281
+ * @returns A configured Middleware instance
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * const cacheMiddleware = createCacheMiddleware({
286
+ * ttl: 60000, // 1 minute
287
+ * cacheOperations: ['findOne', 'findMany'],
288
+ * });
289
+ * ```
290
+ *
291
+ * @example
292
+ * ```typescript
293
+ * // With custom cache key
294
+ * const cacheMiddleware = createCacheMiddleware({
295
+ * ttl: 300000, // 5 minutes
296
+ * getCacheKey: (ctx) => `${ctx.entity}:${ctx.params?.id}:${ctx.filter?.status}`,
297
+ * });
298
+ * ```
299
+ */
300
+ declare function createCacheMiddleware(config?: CacheMiddlewareConfig): Middleware;
301
+ /**
302
+ * Create a utility to invalidate cache entries.
303
+ *
304
+ * @param storage - The cache storage to invalidate
305
+ * @returns Invalidation functions
306
+ *
307
+ * @example
308
+ * ```typescript
309
+ * const storage = new MemoryCacheStorage();
310
+ * const cache = createCacheInvalidator(storage);
311
+ *
312
+ * // Clear all cache
313
+ * await cache.clear();
314
+ *
315
+ * // Invalidate specific entry
316
+ * await cache.invalidate('findMany:user');
317
+ * ```
318
+ */
319
+ declare function createCacheInvalidator(storage: CacheStorage): {
320
+ invalidate: (key: string) => Promise<void>;
321
+ clear: () => Promise<void>;
322
+ size: () => Promise<number>;
323
+ };
324
+
325
+ /**
326
+ * Logger Middleware - Request/response logging
327
+ *
328
+ * Logs request and response information for debugging
329
+ * and monitoring purposes.
330
+ *
331
+ * @module middleware/logger
332
+ * @category Middleware
333
+ */
334
+
335
+ /**
336
+ * Log level type.
337
+ */
338
+ type LogLevel = 'debug' | 'info' | 'warn' | 'error';
339
+ /**
340
+ * Configuration options for logger middleware.
341
+ */
342
+ interface LoggerMiddlewareConfig {
343
+ /** Custom log function (default: console.log) */
344
+ log?: (message: string, data?: unknown) => void;
345
+ /** Whether to log requests (default: true) */
346
+ logRequest?: boolean;
347
+ /** Whether to log responses (default: true) */
348
+ logResponse?: boolean;
349
+ /** Whether to log errors (default: true) */
350
+ logErrors?: boolean;
351
+ /** Whether to log timing information (default: true) */
352
+ logTiming?: boolean;
353
+ /** Minimum log level (default: 'debug') */
354
+ level?: LogLevel;
355
+ /** Custom formatter for log messages */
356
+ formatter?: (type: 'request' | 'response' | 'error', ctx: MiddlewareContext, data?: unknown) => string;
357
+ /** Whether to include request data in logs (be careful with sensitive data) */
358
+ includeData?: boolean;
359
+ /** Fields to redact from logs */
360
+ redactFields?: string[];
361
+ }
362
+ /**
363
+ * Create a logger middleware.
364
+ *
365
+ * @param config - Logger middleware configuration
366
+ * @returns A configured Middleware instance
367
+ *
368
+ * @example
369
+ * ```typescript
370
+ * const loggerMiddleware = createLoggerMiddleware({
371
+ * log: console.log,
372
+ * logRequest: true,
373
+ * logResponse: true,
374
+ * });
375
+ * ```
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * // With custom logger
380
+ * const loggerMiddleware = createLoggerMiddleware({
381
+ * log: (msg, data) => winston.info(msg, data),
382
+ * formatter: (type, ctx) => `[${type.toUpperCase()}] ${ctx.entity}.${ctx.operation}`,
383
+ * });
384
+ * ```
385
+ */
386
+ declare function createLoggerMiddleware(config?: LoggerMiddlewareConfig): Middleware;
387
+ /**
388
+ * Create a silent logger (logs nothing).
389
+ * Useful for testing.
390
+ */
391
+ declare function createSilentLogger(): Middleware;
392
+ /**
393
+ * Create a verbose logger (logs everything).
394
+ * Useful for debugging.
395
+ */
396
+ declare function createVerboseLogger(): Middleware;
397
+
398
+ /**
399
+ * Context Middleware - Extract execution context from headers
400
+ *
401
+ * Extracts user information, tenant IDs, and other context from
402
+ * request headers (Authorization, custom headers) and populates
403
+ * ctx.context for use by RLS and other middleware.
404
+ *
405
+ * @module middleware/context
406
+ * @category Middleware
407
+ */
408
+
409
+ /**
410
+ * Configuration options for context middleware.
411
+ */
412
+ interface ContextMiddlewareConfig {
413
+ /**
414
+ * Function to decode/validate token and extract user info.
415
+ * In production, this would validate the JWT signature.
416
+ *
417
+ * @param token - The JWT token (without 'Bearer ' prefix)
418
+ * @returns Decoded token payload or null if invalid
419
+ */
420
+ decodeToken?: (token: string) => Record<string, unknown> | null;
421
+ /**
422
+ * Additional headers to extract as context.
423
+ * Headers will be converted to camelCase context keys.
424
+ *
425
+ * @example ['X-Tenant-ID', 'X-Request-ID']
426
+ */
427
+ extractHeaders?: string[];
428
+ /**
429
+ * Mock mode: decode JWT without validation.
430
+ * In mock mode, the JWT payload is decoded without signature validation.
431
+ * This is useful for development/testing where tokens may be self-signed.
432
+ *
433
+ * @default true
434
+ */
435
+ mockMode?: boolean;
436
+ /**
437
+ * Header name for the Authorization token.
438
+ *
439
+ * @default 'Authorization'
440
+ */
441
+ authHeaderName?: string;
442
+ /**
443
+ * Token prefix to strip (e.g., 'Bearer ').
444
+ *
445
+ * @default 'Bearer '
446
+ */
447
+ tokenPrefix?: string;
448
+ }
449
+ /**
450
+ * Create a context middleware that extracts execution context from headers.
451
+ *
452
+ * This middleware:
453
+ * 1. Extracts JWT payload from Authorization header
454
+ * 2. Extracts additional values from custom headers
455
+ * 3. Populates ctx.context for use by RLS middleware
456
+ *
457
+ * @param config - Context middleware configuration
458
+ * @returns A configured Middleware instance
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * const contextMiddleware = createContextMiddleware({
463
+ * mockMode: true, // Decode JWT without validation
464
+ * extractHeaders: ['X-Tenant-ID', 'X-Request-ID'],
465
+ * });
466
+ *
467
+ * // With custom decoder
468
+ * const contextMiddleware = createContextMiddleware({
469
+ * decodeToken: (token) => {
470
+ * // Validate and decode the token
471
+ * return jwt.verify(token, secret);
472
+ * },
473
+ * });
474
+ * ```
475
+ */
476
+ declare function createContextMiddleware(config?: ContextMiddlewareConfig): Middleware;
477
+ /**
478
+ * Create a mock JWT token for testing.
479
+ * Encodes the payload as a JWT without signing.
480
+ *
481
+ * @param payload - The token payload
482
+ * @returns A mock JWT token string
483
+ *
484
+ * @example
485
+ * ```typescript
486
+ * const token = createMockJwt({
487
+ * sub: 'user-123',
488
+ * userId: 'user-123',
489
+ * role: 'admin',
490
+ * tenantId: 'tenant-456',
491
+ * });
492
+ *
493
+ * // Use in headers
494
+ * api._setHeaders({ Authorization: `Bearer ${token}` });
495
+ * ```
496
+ */
497
+ declare function createMockJwt(payload: Record<string, unknown>): string;
498
+
499
+ /**
500
+ * RLS Middleware - Row-Level Security enforcement in middleware chain
501
+ *
502
+ * Applies row-level security policies before and after storage operations.
503
+ * Works with ctx.context populated by the context middleware.
504
+ *
505
+ * @module middleware/rls-middleware
506
+ * @category Middleware
507
+ */
508
+
509
+ /**
510
+ * RLS filter function type.
511
+ * Returns true if the row passes the security check.
512
+ */
513
+ type RLSFilter = (row: Record<string, unknown>, ctx: Record<string, unknown> | null) => boolean;
514
+ /**
515
+ * RLS filters for a single entity.
516
+ */
517
+ interface RLSFilters {
518
+ /** Filter for SELECT/read operations */
519
+ select?: RLSFilter;
520
+ /** Filter for INSERT operations */
521
+ insert?: RLSFilter;
522
+ /** Filter for UPDATE operations */
523
+ update?: RLSFilter;
524
+ /** Filter for DELETE operations */
525
+ delete?: RLSFilter;
526
+ }
527
+ /**
528
+ * Configuration options for RLS middleware.
529
+ */
530
+ interface RLSMiddlewareConfig {
531
+ /**
532
+ * Entity schemas with RLS configuration.
533
+ * Used for schema lookup during operations.
534
+ */
535
+ schemas: Map<string, EntitySchema>;
536
+ /**
537
+ * Function to get RLS filters for all entities.
538
+ * Typically returns generated RLS filter functions.
539
+ *
540
+ * @returns Map of entity names to RLS filters
541
+ */
542
+ getFilters: () => Record<string, RLSFilters>;
543
+ /**
544
+ * Enable debug logging.
545
+ *
546
+ * @default false
547
+ */
548
+ debug?: boolean;
549
+ }
550
+ /**
551
+ * RLS Error thrown when a security check fails.
552
+ */
553
+ declare class RLSError extends Error {
554
+ /** Error code for programmatic handling */
555
+ readonly code = "RLS_DENIED";
556
+ /** The entity that was accessed */
557
+ readonly entity: string;
558
+ /** The operation that was attempted */
559
+ readonly operation: string;
560
+ constructor(operation: string, entity: string);
561
+ }
562
+ /**
563
+ * Create an RLS middleware that enforces row-level security.
564
+ *
565
+ * This middleware:
566
+ * 1. Pre-checks write operations (insert, update, delete) before execution
567
+ * 2. Post-filters read operations (select) after execution
568
+ * 3. Uses ctx.context populated by context middleware
569
+ *
570
+ * @param config - RLS middleware configuration
571
+ * @returns A configured Middleware instance
572
+ *
573
+ * @example
574
+ * ```typescript
575
+ * const rlsMiddleware = createRLSMiddleware({
576
+ * schemas: schemaMap,
577
+ * getFilters: () => ({
578
+ * post: {
579
+ * select: (row, ctx) => row.published || row.authorId === ctx?.userId,
580
+ * insert: (row, ctx) => row.authorId === ctx?.userId,
581
+ * update: (row, ctx) => row.authorId === ctx?.userId,
582
+ * delete: (row, ctx) => row.authorId === ctx?.userId,
583
+ * },
584
+ * }),
585
+ * });
586
+ * ```
587
+ */
588
+ declare function createRLSMiddleware(config: RLSMiddlewareConfig): Middleware;
589
+ /**
590
+ * Create a bypass check function from bypass conditions.
591
+ * Returns a function that checks if the context matches any bypass condition.
592
+ *
593
+ * @param bypassConditions - Array of { contextKey, values } conditions
594
+ * @returns A function that returns true if bypass should occur
595
+ *
596
+ * @example
597
+ * ```typescript
598
+ * const checkBypass = createBypassCheck([
599
+ * { contextKey: 'role', values: ['admin', 'superuser'] },
600
+ * ]);
601
+ *
602
+ * checkBypass({ role: 'admin' }); // true
603
+ * checkBypass({ role: 'user' }); // false
604
+ * ```
605
+ */
606
+ declare function createBypassCheck(bypassConditions: Array<{
607
+ contextKey: string;
608
+ values: string[];
609
+ }>): (ctx: Record<string, unknown> | null) => boolean;
610
+
611
+ /**
612
+ * Middleware Defaults - Default ordering and configuration
613
+ *
614
+ * Provides sensible defaults for middleware ordering and common
615
+ * middleware chain configurations.
616
+ *
617
+ * @module middleware/defaults
618
+ * @category Middleware
619
+ */
620
+
621
+ /**
622
+ * Default middleware execution order.
623
+ *
624
+ * The order is designed for optimal security and performance:
625
+ * 1. auth - Add authentication token to headers (must be first)
626
+ * 2. logger - Log request start (early for timing)
627
+ * 3. context - Extract context from headers (after auth adds token)
628
+ * 4. rls - Apply row-level security (needs context)
629
+ * 5. retry - Handle retries (wraps actual request)
630
+ * 6. cache - Check cache (before hitting storage)
631
+ *
632
+ * After hooks execute in reverse order.
633
+ */
634
+ declare const DEFAULT_MIDDLEWARE_ORDER: string[];
635
+ /**
636
+ * Sort middleware array according to a specified order.
637
+ * Unknown middleware are placed at the end in their original order.
638
+ *
639
+ * @param middlewares - Array of middleware to sort
640
+ * @param customOrder - Optional custom order array (defaults to DEFAULT_MIDDLEWARE_ORDER)
641
+ * @returns Sorted middleware array
642
+ *
643
+ * @example
644
+ * ```typescript
645
+ * const sorted = orderMiddleware([
646
+ * createCacheMiddleware(),
647
+ * createAuthMiddleware(),
648
+ * createLoggerMiddleware(),
649
+ * ]);
650
+ * // => [auth, logger, cache]
651
+ * ```
652
+ */
653
+ declare function orderMiddleware(middlewares: Middleware[], customOrder?: string[]): Middleware[];
654
+ /**
655
+ * Filter middleware by enabled/disabled state and names.
656
+ *
657
+ * @param middlewares - Array of middleware to filter
658
+ * @param enabled - Middleware names to enable (if empty, all are enabled)
659
+ * @param disabled - Middleware names to disable
660
+ * @returns Filtered middleware array
661
+ *
662
+ * @example
663
+ * ```typescript
664
+ * const filtered = filterMiddleware(
665
+ * middlewares,
666
+ * [], // Enable all
667
+ * ['cache'] // But disable cache
668
+ * );
669
+ * ```
670
+ */
671
+ declare function filterMiddleware(middlewares: Middleware[], enabled?: string[], disabled?: string[]): Middleware[];
672
+ /**
673
+ * Middleware configuration preset for mock/development mode.
674
+ * Includes auth, context, and logger.
675
+ */
676
+ declare const MOCK_MIDDLEWARE_PRESET: string[];
677
+ /**
678
+ * Middleware configuration preset for production mode.
679
+ * Includes all middleware with caching and retries.
680
+ */
681
+ declare const PRODUCTION_MIDDLEWARE_PRESET: string[];
682
+ /**
683
+ * Middleware configuration preset for testing.
684
+ * Minimal middleware for fast test execution.
685
+ */
686
+ declare const TEST_MIDDLEWARE_PRESET: string[];
687
+
688
+ export { type AuthMiddlewareConfig, type CacheEntry, type CacheMiddlewareConfig, type CacheStorage, type ContextMiddlewareConfig, DEFAULT_MIDDLEWARE_ORDER, type LogLevel, type LoggerMiddlewareConfig, MOCK_MIDDLEWARE_PRESET, MemoryCacheStorage, Middleware, MiddlewareChain, MiddlewareContext, PRODUCTION_MIDDLEWARE_PRESET, RLSError, type RLSFilter, type RLSFilters, type RLSMiddlewareConfig, type RetryMiddlewareConfig, TEST_MIDDLEWARE_PRESET, createAuthMiddleware, createBypassCheck, createCacheInvalidator, createCacheMiddleware, createContextMiddleware, createLoggerMiddleware, createMiddlewareChain, createMockJwt, createRLSMiddleware, createRetryMiddleware, createSilentLogger, createVerboseLogger, filterMiddleware, orderMiddleware };