@stacksjs/bun-router 0.0.13 → 0.0.14
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.
- package/CHANGELOG.md +770 -0
- package/README.md +584 -261
- package/package.json +43 -47
- package/bin/cli.ts +0 -9
- package/dist/auth.d.ts +0 -134
- package/dist/cache/lru-cache.d.ts +0 -139
- package/dist/cache/middleware-memoization.d.ts +0 -151
- package/dist/cache/route-cache-warmer.d.ts +0 -161
- package/dist/cache/sqlite-cache.d.ts +0 -209
- package/dist/cache/streaming-cache.d.ts +0 -132
- package/dist/chunk-1mvtv6jw.js +0 -13012
- package/dist/cli/colors.d.ts +0 -15
- package/dist/cli/index.d.ts +0 -10
- package/dist/cli/middleware.d.ts +0 -31
- package/dist/cli/openapi.d.ts +0 -17
- package/dist/cli/router.d.ts +0 -15
- package/dist/cli/routes.d.ts +0 -29
- package/dist/cli/utils.d.ts +0 -74
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -3195
- package/dist/config.d.ts +0 -7
- package/dist/container/container.d.ts +0 -273
- package/dist/container/contextual-binding.d.ts +0 -240
- package/dist/container/decorators.d.ts +0 -141
- package/dist/container/service-provider.d.ts +0 -285
- package/dist/development/hot-reload.d.ts +0 -187
- package/dist/development/index.d.ts +0 -167
- package/dist/development/performance-profiler.d.ts +0 -217
- package/dist/development/route-debugger.d.ts +0 -154
- package/dist/development/route-inspector.d.ts +0 -211
- package/dist/development/typescript-utilities.d.ts +0 -209
- package/dist/docs.d.ts +0 -11
- package/dist/errors/circuit-breaker.d.ts +0 -195
- package/dist/errors/error-handler.d.ts +0 -88
- package/dist/errors/error-reporting.d.ts +0 -144
- package/dist/errors/exceptions.d.ts +0 -184
- package/dist/errors/graceful-degradation.d.ts +0 -154
- package/dist/errors/index.d.ts +0 -9
- package/dist/errors/router-errors.d.ts +0 -110
- package/dist/file-serving/static-files.d.ts +0 -143
- package/dist/index.d.ts +0 -14
- package/dist/index.js +0 -13933
- package/dist/middleware/auth.d.ts +0 -63
- package/dist/middleware/content_security_policy.d.ts +0 -53
- package/dist/middleware/cors.d.ts +0 -5
- package/dist/middleware/csrf.d.ts +0 -7
- package/dist/middleware/ddos_protection.d.ts +0 -39
- package/dist/middleware/file_security.d.ts +0 -26
- package/dist/middleware/file_upload.d.ts +0 -38
- package/dist/middleware/helmet.d.ts +0 -54
- package/dist/middleware/index.d.ts +0 -44
- package/dist/middleware/input_validation.d.ts +0 -45
- package/dist/middleware/json_body.d.ts +0 -4
- package/dist/middleware/performance_alerting.d.ts +0 -87
- package/dist/middleware/performance_dashboard.d.ts +0 -87
- package/dist/middleware/performance_monitor.d.ts +0 -209
- package/dist/middleware/pipeline.d.ts +0 -131
- package/dist/middleware/rate_limit.d.ts +0 -36
- package/dist/middleware/request_id.d.ts +0 -4
- package/dist/middleware/request_signing.d.ts +0 -153
- package/dist/middleware/request_tracer.d.ts +0 -72
- package/dist/middleware/response_cache.d.ts +0 -97
- package/dist/middleware/security.d.ts +0 -69
- package/dist/middleware/security_suite.d.ts +0 -46
- package/dist/middleware/session.d.ts +0 -23
- package/dist/model-binding/index.d.ts +0 -2
- package/dist/model-binding/model-middleware.d.ts +0 -118
- package/dist/model-binding/model-registry.d.ts +0 -164
- package/dist/model-binding.d.ts +0 -185
- package/dist/model-resolver-factory.d.ts +0 -31
- package/dist/observability/correlation.d.ts +0 -187
- package/dist/observability/health-checks.d.ts +0 -186
- package/dist/observability/index.d.ts +0 -60
- package/dist/observability/integration.d.ts +0 -147
- package/dist/observability/metrics.d.ts +0 -184
- package/dist/observability/tracing.d.ts +0 -187
- package/dist/optimization/bun-utilities.d.ts +0 -224
- package/dist/query-builder-integration.d.ts +0 -36
- package/dist/request/context.d.ts +0 -34
- package/dist/request/enhanced-request.d.ts +0 -213
- package/dist/request/macros.d.ts +0 -300
- package/dist/response/macros.d.ts +0 -245
- package/dist/response/response-factory.d.ts +0 -133
- package/dist/router/api-routes.d.ts +0 -5
- package/dist/router/file-based-routing.d.ts +0 -118
- package/dist/router/file-streaming.d.ts +0 -5
- package/dist/router/fluent-router.d.ts +0 -315
- package/dist/router/fluent-routing.d.ts +0 -271
- package/dist/router/group-organization.d.ts +0 -5
- package/dist/router/handler-resolver.d.ts +0 -24
- package/dist/router/http-methods.d.ts +0 -10
- package/dist/router/index.d.ts +0 -114
- package/dist/router/middleware-groups.d.ts +0 -94
- package/dist/router/middleware-integration.d.ts +0 -112
- package/dist/router/middleware.d.ts +0 -5
- package/dist/router/model-binding.d.ts +0 -5
- package/dist/router/optimized-route-matching.d.ts +0 -6
- package/dist/router/route-building.d.ts +0 -5
- package/dist/router/route-compiler.d.ts +0 -153
- package/dist/router/route-matching.d.ts +0 -5
- package/dist/router/route-trie.d.ts +0 -114
- package/dist/router/router.d.ts +0 -294
- package/dist/router/server.d.ts +0 -5
- package/dist/router/validation-integration.d.ts +0 -170
- package/dist/router/view-rendering.d.ts +0 -5
- package/dist/router/websocket.d.ts +0 -5
- package/dist/routing/route-caching.d.ts +0 -129
- package/dist/routing/route-throttling.d.ts +0 -150
- package/dist/routing/subdomain-routing.d.ts +0 -206
- package/dist/session/database-store.d.ts +0 -51
- package/dist/session/file-store.d.ts +0 -22
- package/dist/session/index.d.ts +0 -106
- package/dist/session/memory-store.d.ts +0 -21
- package/dist/session/redis-store.d.ts +0 -31
- package/dist/streaming/index.d.ts +0 -3
- package/dist/streaming/sse-handler.d.ts +0 -138
- package/dist/streaming/stream-handler.d.ts +0 -114
- package/dist/testing/auth-testing.d.ts +0 -156
- package/dist/testing/file-upload-testing.d.ts +0 -190
- package/dist/testing/index.d.ts +0 -10
- package/dist/testing/middleware-testing.d.ts +0 -138
- package/dist/testing/model-binding-testing.d.ts +0 -186
- package/dist/testing/performance-testing.d.ts +0 -235
- package/dist/testing/test-client.d.ts +0 -117
- package/dist/testing/test-request.d.ts +0 -85
- package/dist/testing/test-response.d.ts +0 -90
- package/dist/testing/types.d.ts +0 -207
- package/dist/testing/websocket-testing.d.ts +0 -227
- package/dist/types/controller-types.d.ts +0 -208
- package/dist/types/core.d.ts +0 -543
- package/dist/types/middleware-types.d.ts +0 -227
- package/dist/types/request-response-augmentation.d.ts +0 -261
- package/dist/types/route-inference.d.ts +0 -168
- package/dist/types.d.ts +0 -1782
- package/dist/url.d.ts +0 -56
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/query-preservation.d.ts +0 -48
- package/dist/utils.d.ts +0 -69
- package/dist/validation/validator.d.ts +0 -140
- package/dist/websocket/clustering.d.ts +0 -185
- package/src/auth.ts +0 -469
- package/src/cache/lru-cache.ts +0 -457
- package/src/cache/middleware-memoization.ts +0 -531
- package/src/cache/route-cache-warmer.ts +0 -486
- package/src/cache/sqlite-cache.ts +0 -783
- package/src/cache/streaming-cache.ts +0 -572
- package/src/cli/colors.ts +0 -29
- package/src/cli/index.ts +0 -287
- package/src/cli/middleware.ts +0 -291
- package/src/cli/openapi.ts +0 -407
- package/src/cli/router.ts +0 -188
- package/src/cli/routes.ts +0 -265
- package/src/cli/utils.ts +0 -531
- package/src/cli.ts +0 -5
- package/src/config.ts +0 -322
- package/src/container/container.ts +0 -740
- package/src/container/contextual-binding.ts +0 -603
- package/src/container/decorators.ts +0 -359
- package/src/container/service-provider.ts +0 -596
- package/src/development/hot-reload.ts +0 -673
- package/src/development/index.ts +0 -499
- package/src/development/performance-profiler.ts +0 -717
- package/src/development/route-debugger.ts +0 -527
- package/src/development/route-inspector.ts +0 -749
- package/src/development/typescript-utilities.ts +0 -682
- package/src/docs.ts +0 -397
- package/src/errors/circuit-breaker.ts +0 -732
- package/src/errors/error-handler.ts +0 -569
- package/src/errors/error-reporting.ts +0 -672
- package/src/errors/exceptions.ts +0 -536
- package/src/errors/graceful-degradation.ts +0 -621
- package/src/errors/index.ts +0 -21
- package/src/errors/router-errors.ts +0 -632
- package/src/file-serving/static-files.ts +0 -581
- package/src/index.ts +0 -14
- package/src/middleware/auth.ts +0 -219
- package/src/middleware/content_security_policy.ts +0 -215
- package/src/middleware/cors.ts +0 -74
- package/src/middleware/csrf.ts +0 -108
- package/src/middleware/ddos_protection.ts +0 -255
- package/src/middleware/file_security.ts +0 -191
- package/src/middleware/file_upload.ts +0 -264
- package/src/middleware/helmet.ts +0 -268
- package/src/middleware/index.ts +0 -117
- package/src/middleware/input_validation.ts +0 -449
- package/src/middleware/json_body.ts +0 -37
- package/src/middleware/performance_alerting.ts +0 -538
- package/src/middleware/performance_dashboard.ts +0 -661
- package/src/middleware/performance_monitor.ts +0 -943
- package/src/middleware/pipeline.ts +0 -489
- package/src/middleware/rate_limit.ts +0 -245
- package/src/middleware/request_id.ts +0 -36
- package/src/middleware/request_signing.ts +0 -636
- package/src/middleware/request_tracer.ts +0 -636
- package/src/middleware/response_cache.ts +0 -743
- package/src/middleware/security.ts +0 -482
- package/src/middleware/security_suite.ts +0 -257
- package/src/middleware/session.ts +0 -91
- package/src/model-binding/index.ts +0 -18
- package/src/model-binding/model-middleware.ts +0 -425
- package/src/model-binding/model-registry.ts +0 -550
- package/src/model-binding.ts +0 -370
- package/src/model-resolver-factory.ts +0 -106
- package/src/observability/correlation.ts +0 -691
- package/src/observability/health-checks.ts +0 -729
- package/src/observability/index.ts +0 -184
- package/src/observability/integration.ts +0 -548
- package/src/observability/metrics.ts +0 -753
- package/src/observability/tracing.ts +0 -638
- package/src/optimization/bun-utilities.ts +0 -778
- package/src/query-builder-integration.ts +0 -137
- package/src/request/context.ts +0 -62
- package/src/request/enhanced-request.ts +0 -857
- package/src/request/macros.ts +0 -688
- package/src/response/macros.ts +0 -612
- package/src/response/response-factory.ts +0 -596
- package/src/router/api-routes.ts +0 -243
- package/src/router/file-based-routing.ts +0 -670
- package/src/router/file-streaming.ts +0 -372
- package/src/router/fluent-router.ts +0 -927
- package/src/router/fluent-routing.ts +0 -797
- package/src/router/group-organization.ts +0 -213
- package/src/router/handler-resolver.ts +0 -291
- package/src/router/http-methods.ts +0 -377
- package/src/router/index.ts +0 -187
- package/src/router/middleware-groups.ts +0 -222
- package/src/router/middleware-integration.ts +0 -399
- package/src/router/middleware.ts +0 -231
- package/src/router/model-binding.ts +0 -215
- package/src/router/optimized-route-matching.ts +0 -253
- package/src/router/route-building.ts +0 -212
- package/src/router/route-compiler.ts +0 -702
- package/src/router/route-matching.ts +0 -349
- package/src/router/route-trie.ts +0 -464
- package/src/router/router.ts +0 -1581
- package/src/router/server.ts +0 -462
- package/src/router/validation-integration.ts +0 -443
- package/src/router/view-rendering.ts +0 -233
- package/src/router/websocket.ts +0 -100
- package/src/routing/route-caching.ts +0 -402
- package/src/routing/route-throttling.ts +0 -469
- package/src/routing/subdomain-routing.ts +0 -492
- package/src/session/database-store.ts +0 -109
- package/src/session/file-store.ts +0 -148
- package/src/session/index.ts +0 -244
- package/src/session/memory-store.ts +0 -88
- package/src/session/redis-store.ts +0 -93
- package/src/streaming/index.ts +0 -17
- package/src/streaming/sse-handler.ts +0 -482
- package/src/streaming/stream-handler.ts +0 -552
- package/src/testing/auth-testing.ts +0 -446
- package/src/testing/file-upload-testing.ts +0 -543
- package/src/testing/index.ts +0 -10
- package/src/testing/middleware-testing.ts +0 -322
- package/src/testing/model-binding-testing.ts +0 -645
- package/src/testing/performance-testing.ts +0 -738
- package/src/testing/test-client.ts +0 -310
- package/src/testing/test-request.ts +0 -315
- package/src/testing/test-response.ts +0 -332
- package/src/testing/types.ts +0 -224
- package/src/testing/websocket-testing.ts +0 -590
- package/src/types/controller-types.ts +0 -385
- package/src/types/core.ts +0 -683
- package/src/types/middleware-types.ts +0 -419
- package/src/types/request-response-augmentation.ts +0 -489
- package/src/types/route-inference.ts +0 -357
- package/src/types.ts +0 -2055
- package/src/url.ts +0 -126
- package/src/utils/index.ts +0 -1
- package/src/utils/query-preservation.ts +0 -201
- package/src/utils.ts +0 -327
- package/src/validation/validator.ts +0 -685
- package/src/websocket/clustering.ts +0 -762
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import type { EnhancedRequest, ExtractRouteParams, SSEConfig, SSEEvent, SSERouteHandler } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Server-Sent Events handler
|
|
4
|
-
*/
|
|
5
|
-
export declare class SSEHandler {
|
|
6
|
-
private config;
|
|
7
|
-
private controller?;
|
|
8
|
-
private encoder;
|
|
9
|
-
private isConnected;
|
|
10
|
-
private heartbeatInterval?;
|
|
11
|
-
constructor(config?: SSEConfig);
|
|
12
|
-
/**
|
|
13
|
-
* Create SSE response stream
|
|
14
|
-
*/
|
|
15
|
-
createStream(): Response;
|
|
16
|
-
/**
|
|
17
|
-
* Send an SSE event
|
|
18
|
-
*/
|
|
19
|
-
send(event: SSEEvent): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Send multiple events
|
|
22
|
-
*/
|
|
23
|
-
sendBatch(events: SSEEvent[]): number;
|
|
24
|
-
/**
|
|
25
|
-
* Send a simple message
|
|
26
|
-
*/
|
|
27
|
-
message(data: any, id?: string): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Send an event with type
|
|
30
|
-
*/
|
|
31
|
-
event(type: string, data: any, id?: string): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Send a comment (for debugging)
|
|
34
|
-
*/
|
|
35
|
-
comment(text: string): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Close the connection
|
|
38
|
-
*/
|
|
39
|
-
close(): void;
|
|
40
|
-
/**
|
|
41
|
-
* Check if connection is active
|
|
42
|
-
*/
|
|
43
|
-
get connected(): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Format SSE event according to specification
|
|
46
|
-
*/
|
|
47
|
-
private formatEvent;
|
|
48
|
-
/**
|
|
49
|
-
* Setup heartbeat to keep connection alive
|
|
50
|
-
*/
|
|
51
|
-
private setupHeartbeat;
|
|
52
|
-
/**
|
|
53
|
-
* Clear heartbeat interval
|
|
54
|
-
*/
|
|
55
|
-
private clearHeartbeat;
|
|
56
|
-
/**
|
|
57
|
-
* Send retry delay instruction
|
|
58
|
-
*/
|
|
59
|
-
private sendRetryDelay;
|
|
60
|
-
/**
|
|
61
|
-
* Disconnect and cleanup
|
|
62
|
-
*/
|
|
63
|
-
private disconnect;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* SSE connection manager
|
|
67
|
-
*/
|
|
68
|
-
export declare class SSEConnectionManager {
|
|
69
|
-
private connections;
|
|
70
|
-
private connectionCounts;
|
|
71
|
-
/**
|
|
72
|
-
* Create or get SSE connection
|
|
73
|
-
*/
|
|
74
|
-
createConnection(connectionId: string, config?: SSEConfig): SSEHandler;
|
|
75
|
-
/**
|
|
76
|
-
* Get existing connection
|
|
77
|
-
*/
|
|
78
|
-
getConnection(connectionId: string): SSEHandler | undefined;
|
|
79
|
-
/**
|
|
80
|
-
* Close connection
|
|
81
|
-
*/
|
|
82
|
-
closeConnection(connectionId: string): boolean;
|
|
83
|
-
/**
|
|
84
|
-
* Broadcast to all connections
|
|
85
|
-
*/
|
|
86
|
-
broadcast(event: SSEEvent): number;
|
|
87
|
-
/**
|
|
88
|
-
* Broadcast to specific connections
|
|
89
|
-
*/
|
|
90
|
-
broadcastToConnections(connectionIds: string[], event: SSEEvent): number;
|
|
91
|
-
/**
|
|
92
|
-
* Get connection statistics
|
|
93
|
-
*/
|
|
94
|
-
getStats(): {
|
|
95
|
-
totalConnections: number;
|
|
96
|
-
connectionsByUser: Record<string, number>;
|
|
97
|
-
activeConnections: string[];
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Cleanup dead connections
|
|
101
|
-
*/
|
|
102
|
-
cleanup(): void;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Global SSE connection manager instance
|
|
106
|
-
*/
|
|
107
|
-
export declare const sseManager: SSEConnectionManager;
|
|
108
|
-
/**
|
|
109
|
-
* SSE middleware for route handlers
|
|
110
|
-
*/
|
|
111
|
-
export declare function createSSEMiddleware(config?: SSEConfig): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
112
|
-
/**
|
|
113
|
-
* SSE utility functions
|
|
114
|
-
*/
|
|
115
|
-
export declare const SSEUtils: {
|
|
116
|
-
/**
|
|
117
|
-
* Create a simple SSE route handler
|
|
118
|
-
*/
|
|
119
|
-
createHandler<TPath extends string>(handler: SSERouteHandler<TPath>): (req: EnhancedRequest & {
|
|
120
|
-
params: ExtractRouteParams<TPath>;
|
|
121
|
-
}) => Promise<Response>;
|
|
122
|
-
/**
|
|
123
|
-
* Create SSE event from object
|
|
124
|
-
*/
|
|
125
|
-
createEvent(data: any, options?: Partial<SSEEvent>): SSEEvent;
|
|
126
|
-
/**
|
|
127
|
-
* Validate SSE event
|
|
128
|
-
*/
|
|
129
|
-
validateEvent(event: SSEEvent): boolean;
|
|
130
|
-
/**
|
|
131
|
-
* Create periodic SSE sender
|
|
132
|
-
*/
|
|
133
|
-
createPeriodicSender(sse: SSEHandler, dataFn: () => any | Promise<any>, intervalMs: number): () => void;
|
|
134
|
-
/**
|
|
135
|
-
* Create SSE from async iterable
|
|
136
|
-
*/
|
|
137
|
-
fromAsyncIterable<T>(sse: SSEHandler, iterable: AsyncIterable<T>, transform?: (item: T) => SSEEvent): Promise<void>;
|
|
138
|
-
};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import type { BufferedStreamConfig, ContentType, DirectStreamConfig, EnhancedRequest, ResponseStatus, StreamingCompression } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Base streaming configuration
|
|
4
|
-
*/
|
|
5
|
-
export interface BaseStreamConfig {
|
|
6
|
-
contentType?: ContentType;
|
|
7
|
-
headers?: Record<string, string>;
|
|
8
|
-
status?: ResponseStatus;
|
|
9
|
-
bufferSize?: number;
|
|
10
|
-
enableCompression?: boolean;
|
|
11
|
-
compressionType?: StreamingCompression;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Stream response wrapper
|
|
15
|
-
*/
|
|
16
|
-
export declare class StreamResponse {
|
|
17
|
-
private stream;
|
|
18
|
-
private headers;
|
|
19
|
-
private status;
|
|
20
|
-
constructor(stream: ReadableStream, options?: {
|
|
21
|
-
headers?: Headers | Record<string, string>;
|
|
22
|
-
status?: ResponseStatus;
|
|
23
|
-
contentType?: ContentType;
|
|
24
|
-
});
|
|
25
|
-
toResponse(): Response;
|
|
26
|
-
addHeader(name: string, value: string): this;
|
|
27
|
-
setContentType(contentType: ContentType): this;
|
|
28
|
-
setStatus(status: ResponseStatus): this;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Generic streaming handler
|
|
32
|
-
*/
|
|
33
|
-
export declare class StreamHandler {
|
|
34
|
-
/**
|
|
35
|
-
* Create a direct stream response
|
|
36
|
-
*/
|
|
37
|
-
static direct<T>(data: T[] | AsyncIterable<T>, config?: DirectStreamConfig): StreamResponse;
|
|
38
|
-
/**
|
|
39
|
-
* Create a buffered stream response
|
|
40
|
-
*/
|
|
41
|
-
static buffered<T>(data: T[] | AsyncIterable<T>, config?: BufferedStreamConfig): StreamResponse;
|
|
42
|
-
/**
|
|
43
|
-
* Create a JSON stream response
|
|
44
|
-
*/
|
|
45
|
-
static json<T>(data: T[] | AsyncIterable<T>, config?: BaseStreamConfig): StreamResponse;
|
|
46
|
-
/**
|
|
47
|
-
* Create a text stream response
|
|
48
|
-
*/
|
|
49
|
-
static text(data: string[] | AsyncIterable<string>, config?: BaseStreamConfig): StreamResponse;
|
|
50
|
-
/**
|
|
51
|
-
* Create a CSV stream response
|
|
52
|
-
*/
|
|
53
|
-
static csv<T extends Record<string, any>>(data: T[] | AsyncIterable<T>, config?: BaseStreamConfig & {
|
|
54
|
-
csvHeaders?: string[];
|
|
55
|
-
}): StreamResponse;
|
|
56
|
-
/**
|
|
57
|
-
* Format data according to the specified format
|
|
58
|
-
*/
|
|
59
|
-
private static formatData;
|
|
60
|
-
/**
|
|
61
|
-
* Convert object to CSV row
|
|
62
|
-
*/
|
|
63
|
-
private static objectToCsvRow;
|
|
64
|
-
/**
|
|
65
|
-
* Get appropriate content type for format
|
|
66
|
-
*/
|
|
67
|
-
private static getContentTypeForFormat;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Stream utilities
|
|
71
|
-
*/
|
|
72
|
-
export declare const StreamUtils: {
|
|
73
|
-
/**
|
|
74
|
-
* Create a transform stream
|
|
75
|
-
*/
|
|
76
|
-
transform<T, U>(transformFn: (chunk: T) => U | Promise<U>): TransformStream<T, U>;
|
|
77
|
-
/**
|
|
78
|
-
* Create a filter stream
|
|
79
|
-
*/
|
|
80
|
-
filter<T>(filterFn: (chunk: T) => boolean | Promise<boolean>): TransformStream<T, T>;
|
|
81
|
-
/**
|
|
82
|
-
* Create a batch stream
|
|
83
|
-
*/
|
|
84
|
-
batch<T>(batchSize: number): TransformStream<T, T[]>;
|
|
85
|
-
/**
|
|
86
|
-
* Create a delay stream
|
|
87
|
-
*/
|
|
88
|
-
delay<T>(ms: number): TransformStream<T, T>;
|
|
89
|
-
/**
|
|
90
|
-
* Create a rate limit stream
|
|
91
|
-
*/
|
|
92
|
-
rateLimit<T>(itemsPerSecond: number): TransformStream<T, T>;
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* File streaming utilities
|
|
96
|
-
*/
|
|
97
|
-
export declare class FileStreamHandler {
|
|
98
|
-
/**
|
|
99
|
-
* Stream a file with range support
|
|
100
|
-
*/
|
|
101
|
-
static streamFile(filePath: string, request: EnhancedRequest, options?: {
|
|
102
|
-
contentType?: ContentType;
|
|
103
|
-
enableRanges?: boolean;
|
|
104
|
-
chunkSize?: number;
|
|
105
|
-
}): Promise<Response>;
|
|
106
|
-
/**
|
|
107
|
-
* Handle range requests for file streaming
|
|
108
|
-
*/
|
|
109
|
-
private static handleRangeRequest;
|
|
110
|
-
/**
|
|
111
|
-
* Parse Range header
|
|
112
|
-
*/
|
|
113
|
-
private static parseRangeHeader;
|
|
114
|
-
}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import type { EnhancedRequest } from '../types';
|
|
2
|
-
import type { JWTTestOptions, SessionTestOptions, TestUser } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Authentication testing utilities
|
|
5
|
-
*/
|
|
6
|
-
export declare class AuthTester {
|
|
7
|
-
private request;
|
|
8
|
-
constructor(request?: EnhancedRequest);
|
|
9
|
-
/**
|
|
10
|
-
* Set authenticated user
|
|
11
|
-
*/
|
|
12
|
-
as(user: TestUser): AuthTester;
|
|
13
|
-
/**
|
|
14
|
-
* Set JWT token
|
|
15
|
-
*/
|
|
16
|
-
withJWT(token: string, type?: 'Bearer' | 'Basic'): AuthTester;
|
|
17
|
-
/**
|
|
18
|
-
* Set session data
|
|
19
|
-
*/
|
|
20
|
-
withSession(sessionData: any): AuthTester;
|
|
21
|
-
/**
|
|
22
|
-
* Set API key
|
|
23
|
-
*/
|
|
24
|
-
withApiKey(apiKey: string, headerName?: string): AuthTester;
|
|
25
|
-
/**
|
|
26
|
-
* Set basic auth credentials
|
|
27
|
-
*/
|
|
28
|
-
withBasicAuth(username: string, password: string): AuthTester;
|
|
29
|
-
/**
|
|
30
|
-
* Set cookies for authentication
|
|
31
|
-
*/
|
|
32
|
-
withAuthCookies(cookies: Record<string, string>): AuthTester;
|
|
33
|
-
/**
|
|
34
|
-
* Remove authentication
|
|
35
|
-
*/
|
|
36
|
-
unauthenticated(): AuthTester;
|
|
37
|
-
/**
|
|
38
|
-
* Get the configured request
|
|
39
|
-
*/
|
|
40
|
-
getRequest(): EnhancedRequest;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* JWT testing utilities
|
|
44
|
-
*/
|
|
45
|
-
export declare class JWTTester {
|
|
46
|
-
private options;
|
|
47
|
-
constructor(options?: JWTTestOptions);
|
|
48
|
-
/**
|
|
49
|
-
* Generate a test JWT token
|
|
50
|
-
*/
|
|
51
|
-
generateToken(payload?: Record<string, any>): string;
|
|
52
|
-
/**
|
|
53
|
-
* Generate an expired token
|
|
54
|
-
*/
|
|
55
|
-
generateExpiredToken(payload?: Record<string, any>): string;
|
|
56
|
-
/**
|
|
57
|
-
* Generate an invalid token
|
|
58
|
-
*/
|
|
59
|
-
generateInvalidToken(): string;
|
|
60
|
-
/**
|
|
61
|
-
* Decode a JWT token (for testing purposes)
|
|
62
|
-
*/
|
|
63
|
-
decodeToken(token: string): {
|
|
64
|
-
header: any;
|
|
65
|
-
payload: any;
|
|
66
|
-
signature: string;
|
|
67
|
-
};
|
|
68
|
-
private parseExpiresIn;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Session testing utilities
|
|
72
|
-
*/
|
|
73
|
-
export declare class SessionTester {
|
|
74
|
-
private options;
|
|
75
|
-
constructor(options?: SessionTestOptions);
|
|
76
|
-
/**
|
|
77
|
-
* Create a test session
|
|
78
|
-
*/
|
|
79
|
-
createSession(data?: Record<string, any>): {
|
|
80
|
-
sessionId: string;
|
|
81
|
-
data: Record<string, any>;
|
|
82
|
-
cookie: string;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Generate session cookie string
|
|
86
|
-
*/
|
|
87
|
-
generateSessionCookie(name?: string): string;
|
|
88
|
-
/**
|
|
89
|
-
* Create an expired session
|
|
90
|
-
*/
|
|
91
|
-
createExpiredSession(): {
|
|
92
|
-
sessionId: string;
|
|
93
|
-
data: Record<string, any>;
|
|
94
|
-
cookie: string;
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Authentication mock factories
|
|
99
|
-
*/
|
|
100
|
-
export declare const authMocks: {
|
|
101
|
-
/**
|
|
102
|
-
* Create a mock user
|
|
103
|
-
*/
|
|
104
|
-
user: (overrides?: Partial<TestUser>) => TestUser;
|
|
105
|
-
/**
|
|
106
|
-
* Create an admin user
|
|
107
|
-
*/
|
|
108
|
-
adminUser: (overrides?: Partial<TestUser>) => TestUser;
|
|
109
|
-
/**
|
|
110
|
-
* Create a guest user
|
|
111
|
-
*/
|
|
112
|
-
guestUser: () => TestUser;
|
|
113
|
-
/**
|
|
114
|
-
* Mock authentication middleware
|
|
115
|
-
*/
|
|
116
|
-
authMiddleware: (user?: TestUser) => any;
|
|
117
|
-
/**
|
|
118
|
-
* Mock role-based middleware
|
|
119
|
-
*/
|
|
120
|
-
roleMiddleware: (requiredRoles: string[]) => any;
|
|
121
|
-
/**
|
|
122
|
-
* Mock permission-based middleware
|
|
123
|
-
*/
|
|
124
|
-
permissionMiddleware: (requiredPermissions: string[]) => any;
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* Helper functions
|
|
128
|
-
*/
|
|
129
|
-
export declare const authHelpers: {
|
|
130
|
-
/**
|
|
131
|
-
* Create an authenticated request
|
|
132
|
-
*/
|
|
133
|
-
authenticatedRequest: (user: TestUser, request?: EnhancedRequest) => EnhancedRequest;
|
|
134
|
-
/**
|
|
135
|
-
* Create a request with JWT
|
|
136
|
-
*/
|
|
137
|
-
jwtRequest: (payload?: Record<string, any>, request?: EnhancedRequest) => EnhancedRequest;
|
|
138
|
-
/**
|
|
139
|
-
* Create a request with session
|
|
140
|
-
*/
|
|
141
|
-
sessionRequest: (sessionData?: Record<string, any>, request?: EnhancedRequest) => EnhancedRequest;
|
|
142
|
-
/**
|
|
143
|
-
* Verify JWT token structure
|
|
144
|
-
*/
|
|
145
|
-
verifyJWTStructure: (token: string) => boolean;
|
|
146
|
-
/**
|
|
147
|
-
* Extract payload from JWT (for testing)
|
|
148
|
-
*/
|
|
149
|
-
extractJWTPayload: (token: string) => any;
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* Factory functions
|
|
153
|
-
*/
|
|
154
|
-
export declare function createAuthTester(request?: EnhancedRequest): AuthTester;
|
|
155
|
-
export declare function createJWTTester(options?: JWTTestOptions): JWTTester;
|
|
156
|
-
export declare function createSessionTester(options?: SessionTestOptions): SessionTester;
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import type { EnhancedRequest, UploadedFile } from '../types';
|
|
2
|
-
import type { TestFile } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* File upload testing utilities
|
|
5
|
-
*/
|
|
6
|
-
export declare class FileUploadTester {
|
|
7
|
-
private request;
|
|
8
|
-
private files;
|
|
9
|
-
constructor(request?: EnhancedRequest);
|
|
10
|
-
/**
|
|
11
|
-
* Add a test file to the request
|
|
12
|
-
*/
|
|
13
|
-
addFile(testFile: TestFile): FileUploadTester;
|
|
14
|
-
/**
|
|
15
|
-
* Add multiple test files
|
|
16
|
-
*/
|
|
17
|
-
addFiles(testFiles: TestFile[]): FileUploadTester;
|
|
18
|
-
/**
|
|
19
|
-
* Create an image file for testing
|
|
20
|
-
*/
|
|
21
|
-
addImage(fieldName: string, filename?: string, size?: number): FileUploadTester;
|
|
22
|
-
/**
|
|
23
|
-
* Create a document file for testing
|
|
24
|
-
*/
|
|
25
|
-
addDocument(fieldName: string, filename?: string, content?: string): FileUploadTester;
|
|
26
|
-
/**
|
|
27
|
-
* Create a text file for testing
|
|
28
|
-
*/
|
|
29
|
-
addTextFile(fieldName: string, filename?: string, content?: string): FileUploadTester;
|
|
30
|
-
/**
|
|
31
|
-
* Create a large file for testing upload limits
|
|
32
|
-
*/
|
|
33
|
-
addLargeFile(fieldName: string, sizeInMB?: number): FileUploadTester;
|
|
34
|
-
/**
|
|
35
|
-
* Create a file with invalid extension
|
|
36
|
-
*/
|
|
37
|
-
addInvalidFile(fieldName: string, filename?: string): FileUploadTester;
|
|
38
|
-
/**
|
|
39
|
-
* Set form data alongside files
|
|
40
|
-
*/
|
|
41
|
-
withFormData(data: Record<string, any>): FileUploadTester;
|
|
42
|
-
/**
|
|
43
|
-
* Get the configured request
|
|
44
|
-
*/
|
|
45
|
-
getRequest(): EnhancedRequest;
|
|
46
|
-
/**
|
|
47
|
-
* Get uploaded files
|
|
48
|
-
*/
|
|
49
|
-
getFiles(): UploadedFile[];
|
|
50
|
-
/**
|
|
51
|
-
* Clear all files
|
|
52
|
-
*/
|
|
53
|
-
clearFiles(): FileUploadTester;
|
|
54
|
-
private detectMimeType;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* File validation testing utilities
|
|
58
|
-
*/
|
|
59
|
-
export declare class FileValidationTester {
|
|
60
|
-
/**
|
|
61
|
-
* Test file size validation
|
|
62
|
-
*/
|
|
63
|
-
static testFileSize(file: UploadedFile, maxSize: number): boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Test file type validation
|
|
66
|
-
*/
|
|
67
|
-
static testFileType(file: UploadedFile, allowedTypes: string[]): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Test file extension validation
|
|
70
|
-
*/
|
|
71
|
-
static testFileExtension(file: UploadedFile, allowedExtensions: string[]): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Test filename validation (security)
|
|
74
|
-
*/
|
|
75
|
-
static testFilename(file: UploadedFile): boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Test image file validation
|
|
78
|
-
*/
|
|
79
|
-
static testImageFile(file: UploadedFile): boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Test document file validation
|
|
82
|
-
*/
|
|
83
|
-
static testDocumentFile(file: UploadedFile): boolean;
|
|
84
|
-
}
|
|
85
|
-
/** Middleware function type */
|
|
86
|
-
export type MiddlewareFn = (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
87
|
-
/** File storage service interface */
|
|
88
|
-
export interface FileStorageService {
|
|
89
|
-
store: (file: UploadedFile, path?: string) => Promise<string>;
|
|
90
|
-
delete: (path: string) => Promise<void>;
|
|
91
|
-
exists: (path: string) => Promise<boolean>;
|
|
92
|
-
getUrl: (path: string) => string;
|
|
93
|
-
}
|
|
94
|
-
/** Virus scanner interface */
|
|
95
|
-
export interface VirusScanResult {
|
|
96
|
-
clean: boolean;
|
|
97
|
-
threat?: string;
|
|
98
|
-
}
|
|
99
|
-
export interface VirusScanner {
|
|
100
|
-
scan: (file: UploadedFile) => Promise<VirusScanResult>;
|
|
101
|
-
}
|
|
102
|
-
/** Validation middleware options */
|
|
103
|
-
export interface ValidationMiddlewareOptions {
|
|
104
|
-
maxSize?: number;
|
|
105
|
-
allowedTypes?: string[];
|
|
106
|
-
maxFiles?: number;
|
|
107
|
-
}
|
|
108
|
-
/** Image upload middleware options */
|
|
109
|
-
export interface ImageUploadMiddlewareOptions {
|
|
110
|
-
maxSize?: number;
|
|
111
|
-
maxWidth?: number;
|
|
112
|
-
maxHeight?: number;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* File upload mock factories
|
|
116
|
-
*/
|
|
117
|
-
export declare const fileUploadMocks: {
|
|
118
|
-
validationMiddleware: (options?: ValidationMiddlewareOptions) => MiddlewareFn;
|
|
119
|
-
imageUploadMiddleware: (options?: ImageUploadMiddlewareOptions) => MiddlewareFn;
|
|
120
|
-
storageService: FileStorageService;
|
|
121
|
-
virusScanner: VirusScanner;
|
|
122
|
-
};
|
|
123
|
-
/**
|
|
124
|
-
* File upload test scenarios
|
|
125
|
-
*/
|
|
126
|
-
export declare const fileUploadScenarios: {
|
|
127
|
-
/**
|
|
128
|
-
* Test successful single file upload
|
|
129
|
-
*/
|
|
130
|
-
singleFileUpload: () => FileUploadTester;
|
|
131
|
-
/**
|
|
132
|
-
* Test multiple file upload
|
|
133
|
-
*/
|
|
134
|
-
multipleFileUpload: () => FileUploadTester;
|
|
135
|
-
/**
|
|
136
|
-
* Test file size limit exceeded
|
|
137
|
-
*/
|
|
138
|
-
fileSizeExceeded: () => FileUploadTester;
|
|
139
|
-
/**
|
|
140
|
-
* Test invalid file type
|
|
141
|
-
*/
|
|
142
|
-
invalidFileType: () => FileUploadTester;
|
|
143
|
-
/**
|
|
144
|
-
* Test empty file upload
|
|
145
|
-
*/
|
|
146
|
-
emptyFileUpload: () => FileUploadTester;
|
|
147
|
-
/**
|
|
148
|
-
* Test file with malicious filename
|
|
149
|
-
*/
|
|
150
|
-
maliciousFilename: () => FileUploadTester;
|
|
151
|
-
};
|
|
152
|
-
/**
|
|
153
|
-
* File upload assertion helpers
|
|
154
|
-
*/
|
|
155
|
-
export declare const fileUploadAssertions: {
|
|
156
|
-
/**
|
|
157
|
-
* Assert that request has files
|
|
158
|
-
*/
|
|
159
|
-
hasFiles: (request: EnhancedRequest, count?: number) => void;
|
|
160
|
-
/**
|
|
161
|
-
* Assert that request has file with specific field name
|
|
162
|
-
*/
|
|
163
|
-
hasFileWithField: (request: EnhancedRequest, fieldName: string) => void;
|
|
164
|
-
/**
|
|
165
|
-
* Assert file properties
|
|
166
|
-
*/
|
|
167
|
-
fileMatches: (file: UploadedFile, expected: Partial<UploadedFile>) => void;
|
|
168
|
-
/**
|
|
169
|
-
* Assert file size is within limits
|
|
170
|
-
*/
|
|
171
|
-
fileSizeWithinLimit: (file: UploadedFile, maxSize: number) => void;
|
|
172
|
-
/**
|
|
173
|
-
* Assert file type is allowed
|
|
174
|
-
*/
|
|
175
|
-
fileTypeAllowed: (file: UploadedFile, allowedTypes: string[]) => void;
|
|
176
|
-
};
|
|
177
|
-
/**
|
|
178
|
-
* Factory functions
|
|
179
|
-
*/
|
|
180
|
-
export declare function createFileUploadTester(request?: EnhancedRequest): FileUploadTester;
|
|
181
|
-
/**
|
|
182
|
-
* Helper to create test files
|
|
183
|
-
*/
|
|
184
|
-
export declare const testFiles: {
|
|
185
|
-
image: (fieldName?: string, filename?: string) => TestFile;
|
|
186
|
-
document: (fieldName?: string, filename?: string) => TestFile;
|
|
187
|
-
text: (fieldName?: string, filename?: string, content?: string) => TestFile;
|
|
188
|
-
large: (fieldName?: string, sizeInMB?: number) => TestFile;
|
|
189
|
-
malicious: (fieldName?: string) => TestFile;
|
|
190
|
-
};
|
package/dist/testing/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from './auth-testing';
|
|
2
|
-
export * from './file-upload-testing';
|
|
3
|
-
export * from './middleware-testing';
|
|
4
|
-
export * from './model-binding-testing';
|
|
5
|
-
export * from './performance-testing';
|
|
6
|
-
export * from './test-client';
|
|
7
|
-
export * from './test-request';
|
|
8
|
-
export * from './test-response';
|
|
9
|
-
export * from './types';
|
|
10
|
-
export * from './websocket-testing';
|