@stacksjs/bun-router 0.0.4 → 0.0.6
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/README.md +2 -2
- package/dist/auth.d.ts +134 -0
- package/dist/cache/lru-cache.d.ts +139 -0
- package/dist/cache/middleware-memoization.d.ts +151 -0
- package/dist/cache/route-cache-warmer.d.ts +161 -0
- package/dist/cache/sqlite-cache.d.ts +209 -0
- package/dist/cache/streaming-cache.d.ts +132 -0
- package/dist/chunk-jhsk5c5b.js +15758 -0
- package/dist/cli/colors.d.ts +15 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/middleware.d.ts +31 -0
- package/dist/cli/openapi.d.ts +17 -0
- package/dist/cli/router.d.ts +15 -0
- package/dist/cli/routes.d.ts +29 -0
- package/dist/cli/utils.d.ts +74 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +2 -2
- package/dist/config.d.ts +7 -0
- package/dist/container/container.d.ts +273 -0
- package/dist/container/contextual-binding.d.ts +240 -0
- package/dist/container/decorators.d.ts +141 -0
- package/dist/container/service-provider.d.ts +285 -0
- package/dist/development/hot-reload.d.ts +187 -0
- package/dist/development/index.d.ts +167 -0
- package/dist/development/performance-profiler.d.ts +217 -0
- package/dist/development/route-debugger.d.ts +154 -0
- package/dist/development/route-inspector.d.ts +211 -0
- package/dist/development/typescript-utilities.d.ts +209 -0
- package/dist/docs.d.ts +11 -0
- package/dist/errors/circuit-breaker.d.ts +195 -0
- package/dist/errors/error-handler.d.ts +88 -0
- package/dist/errors/error-reporting.d.ts +144 -0
- package/dist/errors/exceptions.d.ts +184 -0
- package/dist/errors/graceful-degradation.d.ts +154 -0
- package/dist/errors/index.d.ts +9 -0
- package/dist/errors/router-errors.d.ts +110 -0
- package/dist/file-serving/static-files.d.ts +143 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +320 -206
- package/dist/middleware/auth.d.ts +63 -0
- package/dist/middleware/content_security_policy.d.ts +53 -0
- package/dist/middleware/cors.d.ts +5 -0
- package/dist/middleware/csrf.d.ts +7 -0
- package/dist/middleware/ddos_protection.d.ts +39 -0
- package/dist/middleware/file_security.d.ts +26 -0
- package/dist/middleware/file_upload.d.ts +38 -0
- package/dist/middleware/helmet.d.ts +54 -0
- package/dist/middleware/index.d.ts +44 -0
- package/dist/middleware/input_validation.d.ts +45 -0
- package/dist/middleware/json_body.d.ts +4 -0
- package/dist/middleware/performance_alerting.d.ts +87 -0
- package/dist/middleware/performance_dashboard.d.ts +87 -0
- package/dist/middleware/performance_monitor.d.ts +209 -0
- package/dist/middleware/pipeline.d.ts +131 -0
- package/dist/middleware/rate_limit.d.ts +36 -0
- package/dist/middleware/request_id.d.ts +4 -0
- package/dist/middleware/request_signing.d.ts +153 -0
- package/dist/middleware/request_tracer.d.ts +72 -0
- package/dist/middleware/response_cache.d.ts +97 -0
- package/dist/middleware/security.d.ts +69 -0
- package/dist/middleware/security_suite.d.ts +46 -0
- package/dist/middleware/session.d.ts +23 -0
- package/dist/model-binding/index.d.ts +2 -0
- package/dist/model-binding/model-middleware.d.ts +118 -0
- package/dist/model-binding/model-registry.d.ts +164 -0
- package/dist/model-binding.d.ts +185 -0
- package/dist/model-resolver-factory.d.ts +31 -0
- package/dist/observability/correlation.d.ts +187 -0
- package/dist/observability/health-checks.d.ts +186 -0
- package/dist/observability/index.d.ts +60 -0
- package/dist/observability/integration.d.ts +147 -0
- package/dist/observability/metrics.d.ts +184 -0
- package/dist/observability/tracing.d.ts +187 -0
- package/dist/optimization/bun-utilities.d.ts +224 -0
- package/dist/query-builder-integration.d.ts +36 -0
- package/dist/request/context.d.ts +34 -0
- package/dist/request/enhanced-request.d.ts +213 -0
- package/dist/request/macros.d.ts +300 -0
- package/dist/response/macros.d.ts +245 -0
- package/dist/response/response-factory.d.ts +133 -0
- package/dist/router/api-routes.d.ts +5 -0
- package/dist/router/file-based-routing.d.ts +118 -0
- package/dist/router/file-streaming.d.ts +5 -0
- package/dist/router/fluent-router.d.ts +315 -0
- package/dist/router/fluent-routing.d.ts +271 -0
- package/dist/router/group-organization.d.ts +5 -0
- package/dist/router/handler-resolver.d.ts +24 -0
- package/dist/router/http-methods.d.ts +10 -0
- package/dist/router/index.d.ts +113 -0
- package/dist/router/middleware-groups.d.ts +94 -0
- package/dist/router/middleware-integration.d.ts +112 -0
- package/dist/router/middleware.d.ts +5 -0
- package/dist/router/model-binding.d.ts +5 -0
- package/dist/router/optimized-route-matching.d.ts +6 -0
- package/dist/router/route-building.d.ts +5 -0
- package/dist/router/route-compiler.d.ts +153 -0
- package/dist/router/route-matching.d.ts +5 -0
- package/dist/router/route-trie.d.ts +114 -0
- package/dist/router/router.d.ts +276 -0
- package/dist/router/server.d.ts +5 -0
- package/dist/router/validation-integration.d.ts +170 -0
- package/dist/router/view-rendering.d.ts +5 -0
- package/dist/router/websocket.d.ts +5 -0
- package/dist/routing/route-caching.d.ts +129 -0
- package/dist/routing/route-throttling.d.ts +150 -0
- package/dist/routing/subdomain-routing.d.ts +206 -0
- package/dist/session/database-store.d.ts +51 -0
- package/dist/session/file-store.d.ts +22 -0
- package/dist/session/index.d.ts +106 -0
- package/dist/session/memory-store.d.ts +21 -0
- package/dist/session/redis-store.d.ts +31 -0
- package/dist/streaming/index.d.ts +3 -0
- package/dist/streaming/sse-handler.d.ts +138 -0
- package/dist/streaming/stream-handler.d.ts +114 -0
- package/dist/testing/auth-testing.d.ts +156 -0
- package/dist/testing/file-upload-testing.d.ts +190 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/middleware-testing.d.ts +138 -0
- package/dist/testing/model-binding-testing.d.ts +186 -0
- package/dist/testing/performance-testing.d.ts +235 -0
- package/dist/testing/test-client.d.ts +117 -0
- package/dist/testing/test-request.d.ts +85 -0
- package/dist/testing/test-response.d.ts +90 -0
- package/dist/testing/types.d.ts +207 -0
- package/dist/testing/websocket-testing.d.ts +227 -0
- package/dist/types/controller-types.d.ts +208 -0
- package/dist/types/core.d.ts +543 -0
- package/dist/types/middleware-types.d.ts +227 -0
- package/dist/types/request-response-augmentation.d.ts +261 -0
- package/dist/types/route-inference.d.ts +168 -0
- package/dist/types.d.ts +1776 -0
- package/dist/url.d.ts +56 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/query-preservation.d.ts +48 -0
- package/dist/utils.d.ts +69 -0
- package/dist/validation/validator.d.ts +140 -0
- package/dist/websocket/clustering.d.ts +185 -0
- package/package.json +18 -4
- package/src/auth.ts +469 -0
- package/src/cache/lru-cache.ts +457 -0
- package/src/cache/middleware-memoization.ts +531 -0
- package/src/cache/route-cache-warmer.ts +486 -0
- package/src/cache/sqlite-cache.ts +783 -0
- package/src/cache/streaming-cache.ts +572 -0
- package/src/cli/colors.ts +29 -0
- package/src/cli/index.ts +287 -0
- package/src/cli/middleware.ts +291 -0
- package/src/cli/openapi.ts +407 -0
- package/src/cli/router.ts +188 -0
- package/src/cli/routes.ts +265 -0
- package/src/cli/utils.ts +531 -0
- package/src/cli.ts +5 -0
- package/src/config.ts +322 -0
- package/src/container/container.ts +740 -0
- package/src/container/contextual-binding.ts +603 -0
- package/src/container/decorators.ts +359 -0
- package/src/container/service-provider.ts +596 -0
- package/src/development/hot-reload.ts +673 -0
- package/src/development/index.ts +499 -0
- package/src/development/performance-profiler.ts +717 -0
- package/src/development/route-debugger.ts +527 -0
- package/src/development/route-inspector.ts +749 -0
- package/src/development/typescript-utilities.ts +678 -0
- package/src/docs.ts +397 -0
- package/src/errors/circuit-breaker.ts +732 -0
- package/src/errors/error-handler.ts +569 -0
- package/src/errors/error-reporting.ts +672 -0
- package/src/errors/exceptions.ts +536 -0
- package/src/errors/graceful-degradation.ts +621 -0
- package/src/errors/index.ts +21 -0
- package/src/errors/router-errors.ts +632 -0
- package/src/file-serving/static-files.ts +581 -0
- package/src/index.ts +14 -0
- package/src/middleware/auth.ts +219 -0
- package/src/middleware/content_security_policy.ts +215 -0
- package/src/middleware/cors.ts +74 -0
- package/src/middleware/csrf.ts +108 -0
- package/src/middleware/ddos_protection.ts +255 -0
- package/src/middleware/file_security.ts +191 -0
- package/src/middleware/file_upload.ts +264 -0
- package/src/middleware/helmet.ts +268 -0
- package/src/middleware/index.ts +117 -0
- package/src/middleware/input_validation.ts +449 -0
- package/src/middleware/json_body.ts +37 -0
- package/src/middleware/performance_alerting.ts +538 -0
- package/src/middleware/performance_dashboard.ts +661 -0
- package/src/middleware/performance_monitor.ts +943 -0
- package/src/middleware/pipeline.ts +489 -0
- package/src/middleware/rate_limit.ts +245 -0
- package/src/middleware/request_id.ts +36 -0
- package/src/middleware/request_signing.ts +636 -0
- package/src/middleware/request_tracer.ts +636 -0
- package/src/middleware/response_cache.ts +743 -0
- package/src/middleware/security.ts +482 -0
- package/src/middleware/security_suite.ts +257 -0
- package/src/middleware/session.ts +91 -0
- package/src/model-binding/index.ts +18 -0
- package/src/model-binding/model-middleware.ts +425 -0
- package/src/model-binding/model-registry.ts +550 -0
- package/src/model-binding.ts +370 -0
- package/src/model-resolver-factory.ts +106 -0
- package/src/observability/correlation.ts +691 -0
- package/src/observability/health-checks.ts +729 -0
- package/src/observability/index.ts +184 -0
- package/src/observability/integration.ts +548 -0
- package/src/observability/metrics.ts +753 -0
- package/src/observability/tracing.ts +638 -0
- package/src/optimization/bun-utilities.ts +778 -0
- package/src/query-builder-integration.ts +137 -0
- package/src/request/context.ts +62 -0
- package/src/request/enhanced-request.ts +857 -0
- package/src/request/macros.ts +688 -0
- package/src/response/macros.ts +612 -0
- package/src/response/response-factory.ts +588 -0
- package/src/router/api-routes.ts +243 -0
- package/src/router/file-based-routing.ts +670 -0
- package/src/router/file-streaming.ts +372 -0
- package/src/router/fluent-router.ts +927 -0
- package/src/router/fluent-routing.ts +797 -0
- package/src/router/group-organization.ts +213 -0
- package/src/router/handler-resolver.ts +291 -0
- package/src/router/http-methods.ts +377 -0
- package/src/router/index.ts +185 -0
- package/src/router/middleware-groups.ts +222 -0
- package/src/router/middleware-integration.ts +399 -0
- package/src/router/middleware.ts +231 -0
- package/src/router/model-binding.ts +215 -0
- package/src/router/optimized-route-matching.ts +253 -0
- package/src/router/route-building.ts +212 -0
- package/src/router/route-compiler.ts +702 -0
- package/src/router/route-matching.ts +349 -0
- package/src/router/route-trie.ts +464 -0
- package/src/router/router.ts +1508 -0
- package/src/router/server.ts +406 -0
- package/src/router/validation-integration.ts +443 -0
- package/src/router/view-rendering.ts +233 -0
- package/src/router/websocket.ts +100 -0
- package/src/routing/route-caching.ts +402 -0
- package/src/routing/route-throttling.ts +469 -0
- package/src/routing/subdomain-routing.ts +492 -0
- package/src/session/database-store.ts +109 -0
- package/src/session/file-store.ts +148 -0
- package/src/session/index.ts +244 -0
- package/src/session/memory-store.ts +88 -0
- package/src/session/redis-store.ts +93 -0
- package/src/streaming/index.ts +17 -0
- package/src/streaming/sse-handler.ts +482 -0
- package/src/streaming/stream-handler.ts +552 -0
- package/src/testing/auth-testing.ts +446 -0
- package/src/testing/file-upload-testing.ts +543 -0
- package/src/testing/index.ts +10 -0
- package/src/testing/middleware-testing.ts +322 -0
- package/src/testing/model-binding-testing.ts +645 -0
- package/src/testing/performance-testing.ts +738 -0
- package/src/testing/test-client.ts +310 -0
- package/src/testing/test-request.ts +315 -0
- package/src/testing/test-response.ts +332 -0
- package/src/testing/types.ts +224 -0
- package/src/testing/websocket-testing.ts +590 -0
- package/src/types/controller-types.ts +385 -0
- package/src/types/core.ts +683 -0
- package/src/types/middleware-types.ts +419 -0
- package/src/types/request-response-augmentation.ts +489 -0
- package/src/types/route-inference.ts +357 -0
- package/src/types.ts +2049 -0
- package/src/url.ts +126 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/query-preservation.ts +201 -0
- package/src/utils.ts +327 -0
- package/src/validation/validator.ts +685 -0
- package/src/websocket/clustering.ts +762 -0
- package/dist/chunk-cjdekj87.js +0 -25886
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contextual Binding for Different Environments
|
|
3
|
+
*
|
|
4
|
+
* Advanced contextual binding system supporting environment-specific configurations,
|
|
5
|
+
* conditional service resolution, and dynamic binding based on runtime context
|
|
6
|
+
*/
|
|
7
|
+
import type { Binding, ResolutionContext, Token } from './container';
|
|
8
|
+
import { Container } from './container';
|
|
9
|
+
export interface ContextualBinding<T = any> extends Binding<T> {
|
|
10
|
+
conditions: BindingCondition[];
|
|
11
|
+
priority: number;
|
|
12
|
+
fallback?: Binding<T>;
|
|
13
|
+
}
|
|
14
|
+
export interface BindingCondition {
|
|
15
|
+
type: 'environment' | 'custom' | 'tag' | 'parent' | 'request';
|
|
16
|
+
predicate: (context: ResolutionContext) => boolean;
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface EnvironmentConfig {
|
|
20
|
+
name: string;
|
|
21
|
+
variables: Record<string, any>;
|
|
22
|
+
services: Record<string, any>;
|
|
23
|
+
features: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ContextualBindingBuilder<T> {
|
|
26
|
+
to: (implementation: new (...args: any[]) => T) => ContextualBindingBuilder<T>;
|
|
27
|
+
toValue: (value: T) => ContextualBindingBuilder<T>;
|
|
28
|
+
toFactory: (factory: (...args: any[]) => T) => ContextualBindingBuilder<T>;
|
|
29
|
+
when: (condition: BindingCondition) => ContextualBindingBuilder<T>;
|
|
30
|
+
whenEnvironment: (...environments: string[]) => ContextualBindingBuilder<T>;
|
|
31
|
+
whenTag: (tag: string) => ContextualBindingBuilder<T>;
|
|
32
|
+
whenParent: (parentToken: string | symbol | ((..._args: any[]) => any)) => ContextualBindingBuilder<T>;
|
|
33
|
+
whenRequest: (predicate: (context: ResolutionContext) => boolean) => ContextualBindingBuilder<T>;
|
|
34
|
+
withPriority: (priority: number) => ContextualBindingBuilder<T>;
|
|
35
|
+
withFallback: (fallback: Binding<T>) => ContextualBindingBuilder<T>;
|
|
36
|
+
build: () => Container;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Environment manager for handling different deployment contexts
|
|
40
|
+
*/
|
|
41
|
+
export declare class EnvironmentManager {
|
|
42
|
+
private environments;
|
|
43
|
+
private currentEnvironment;
|
|
44
|
+
private variables;
|
|
45
|
+
constructor(defaultEnvironment?: string);
|
|
46
|
+
/**
|
|
47
|
+
* Register an environment configuration
|
|
48
|
+
*/
|
|
49
|
+
register(config: EnvironmentConfig): this;
|
|
50
|
+
/**
|
|
51
|
+
* Set current environment
|
|
52
|
+
*/
|
|
53
|
+
setEnvironment(name: string): this;
|
|
54
|
+
/**
|
|
55
|
+
* Get current environment
|
|
56
|
+
*/
|
|
57
|
+
getCurrentEnvironment(): string;
|
|
58
|
+
/**
|
|
59
|
+
* Get environment configuration
|
|
60
|
+
*/
|
|
61
|
+
getEnvironment(name?: string): EnvironmentConfig | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Check if environment is active
|
|
64
|
+
*/
|
|
65
|
+
is(...environments: string[]): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get environment variable
|
|
68
|
+
*/
|
|
69
|
+
get(key: string, defaultValue?: any): any;
|
|
70
|
+
/**
|
|
71
|
+
* Set environment variable
|
|
72
|
+
*/
|
|
73
|
+
set(key: string, value: any): this;
|
|
74
|
+
/**
|
|
75
|
+
* Check if feature is enabled
|
|
76
|
+
*/
|
|
77
|
+
hasFeature(feature: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Load environment variables
|
|
80
|
+
*/
|
|
81
|
+
private loadEnvironmentVariables;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Contextual binding builder implementation
|
|
85
|
+
*/
|
|
86
|
+
export declare class DefaultContextualBindingBuilder<T> implements ContextualBindingBuilder<T> {
|
|
87
|
+
private container;
|
|
88
|
+
private binding;
|
|
89
|
+
constructor(container: ContextualContainer, token: Token);
|
|
90
|
+
/**
|
|
91
|
+
* Add custom condition
|
|
92
|
+
*/
|
|
93
|
+
when(condition: BindingCondition): ContextualBindingBuilder<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Add environment condition
|
|
96
|
+
*/
|
|
97
|
+
whenEnvironment(...environments: string[]): ContextualBindingBuilder<T>;
|
|
98
|
+
/**
|
|
99
|
+
* Add tag condition
|
|
100
|
+
*/
|
|
101
|
+
whenTag(tag: string): ContextualBindingBuilder<T>;
|
|
102
|
+
/**
|
|
103
|
+
* Add parent condition
|
|
104
|
+
*/
|
|
105
|
+
whenParent(parentToken: string | symbol | ((..._args: any[]) => any)): ContextualBindingBuilder<T>;
|
|
106
|
+
/**
|
|
107
|
+
* Add request condition
|
|
108
|
+
*/
|
|
109
|
+
whenRequest(predicate: (context: ResolutionContext) => boolean): ContextualBindingBuilder<T>;
|
|
110
|
+
/**
|
|
111
|
+
* Set priority
|
|
112
|
+
*/
|
|
113
|
+
withPriority(priority: number): ContextualBindingBuilder<T>;
|
|
114
|
+
/**
|
|
115
|
+
* Set fallback binding
|
|
116
|
+
*/
|
|
117
|
+
withFallback(fallback: Binding<T>): ContextualBindingBuilder<T>;
|
|
118
|
+
/**
|
|
119
|
+
* Set implementation
|
|
120
|
+
*/
|
|
121
|
+
to(implementation: new (...args: any[]) => T): this;
|
|
122
|
+
/**
|
|
123
|
+
* Set value
|
|
124
|
+
*/
|
|
125
|
+
toValue(value: T): this;
|
|
126
|
+
/**
|
|
127
|
+
* Set factory
|
|
128
|
+
*/
|
|
129
|
+
toFactory(factory: (...args: any[]) => T): this;
|
|
130
|
+
/**
|
|
131
|
+
* Set singleton scope
|
|
132
|
+
*/
|
|
133
|
+
inSingletonScope(): this;
|
|
134
|
+
/**
|
|
135
|
+
* Set transient scope
|
|
136
|
+
*/
|
|
137
|
+
inTransientScope(): this;
|
|
138
|
+
/**
|
|
139
|
+
* Build and register binding
|
|
140
|
+
*/
|
|
141
|
+
build(): Container;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Enhanced container with contextual binding support
|
|
145
|
+
*/
|
|
146
|
+
export declare class ContextualContainer extends Container {
|
|
147
|
+
private contextualBindings;
|
|
148
|
+
private environmentManager;
|
|
149
|
+
constructor(options?: any);
|
|
150
|
+
/**
|
|
151
|
+
* Create contextual binding
|
|
152
|
+
*/
|
|
153
|
+
bindContextual<T>(token: Token): ContextualBindingBuilder<T>;
|
|
154
|
+
/**
|
|
155
|
+
* Register contextual binding
|
|
156
|
+
*/
|
|
157
|
+
registerContextualBinding<T>(binding: ContextualBinding<T>): this;
|
|
158
|
+
/**
|
|
159
|
+
* Get environment manager
|
|
160
|
+
*/
|
|
161
|
+
getEnvironmentManager(): EnvironmentManager;
|
|
162
|
+
/**
|
|
163
|
+
* Environment-specific binding helpers
|
|
164
|
+
*/
|
|
165
|
+
forDevelopment<T>(token: Token): ContextualBindingBuilder<T>;
|
|
166
|
+
forProduction<T>(token: Token): ContextualBindingBuilder<T>;
|
|
167
|
+
forTesting<T>(token: Token): ContextualBindingBuilder<T>;
|
|
168
|
+
forStaging<T>(token: Token): ContextualBindingBuilder<T>;
|
|
169
|
+
/**
|
|
170
|
+
* Override resolve to handle contextual bindings
|
|
171
|
+
*/
|
|
172
|
+
resolve<T>(token: Token, context?: Partial<ResolutionContext>): T;
|
|
173
|
+
/**
|
|
174
|
+
* Find matching contextual binding
|
|
175
|
+
*/
|
|
176
|
+
private findContextualBinding;
|
|
177
|
+
/**
|
|
178
|
+
* Evaluate binding conditions
|
|
179
|
+
*/
|
|
180
|
+
private evaluateConditions;
|
|
181
|
+
/**
|
|
182
|
+
* Create instance from contextual binding
|
|
183
|
+
*/
|
|
184
|
+
private createInstanceFromContextualBinding;
|
|
185
|
+
/**
|
|
186
|
+
* Generate unique request ID
|
|
187
|
+
*/
|
|
188
|
+
private generateContextualRequestId;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Pre-configured environment setups
|
|
192
|
+
*/
|
|
193
|
+
export declare class EnvironmentPresets {
|
|
194
|
+
/**
|
|
195
|
+
* Development environment
|
|
196
|
+
*/
|
|
197
|
+
static development(): EnvironmentConfig;
|
|
198
|
+
/**
|
|
199
|
+
* Production environment
|
|
200
|
+
*/
|
|
201
|
+
static production(): EnvironmentConfig;
|
|
202
|
+
/**
|
|
203
|
+
* Testing environment
|
|
204
|
+
*/
|
|
205
|
+
static testing(): EnvironmentConfig;
|
|
206
|
+
/**
|
|
207
|
+
* Staging environment
|
|
208
|
+
*/
|
|
209
|
+
static staging(): EnvironmentConfig;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Contextual binding conditions factory
|
|
213
|
+
*/
|
|
214
|
+
export declare class BindingConditions {
|
|
215
|
+
/**
|
|
216
|
+
* Environment condition
|
|
217
|
+
*/
|
|
218
|
+
static environment(...environments: string[]): BindingCondition;
|
|
219
|
+
/**
|
|
220
|
+
* Feature flag condition
|
|
221
|
+
*/
|
|
222
|
+
static feature(featureName: string): BindingCondition;
|
|
223
|
+
/**
|
|
224
|
+
* Environment variable condition
|
|
225
|
+
*/
|
|
226
|
+
static envVar(key: string, value: any): BindingCondition;
|
|
227
|
+
/**
|
|
228
|
+
* Request ID pattern condition
|
|
229
|
+
*/
|
|
230
|
+
static requestPattern(pattern: RegExp): BindingCondition;
|
|
231
|
+
/**
|
|
232
|
+
* Time-based condition
|
|
233
|
+
*/
|
|
234
|
+
static timeRange(startHour: number, endHour: number): BindingCondition;
|
|
235
|
+
/**
|
|
236
|
+
* Custom predicate condition
|
|
237
|
+
*/
|
|
238
|
+
static custom(predicate: (context: ResolutionContext) => boolean, description?: string): BindingCondition;
|
|
239
|
+
}
|
|
240
|
+
export { ContextualContainer as DIContainer };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modern Dependency Injection Decorators
|
|
3
|
+
*/
|
|
4
|
+
import type { ResolutionContext } from './container';
|
|
5
|
+
import { Container } from './container';
|
|
6
|
+
export declare const INJECTABLE_METADATA_KEY: unique symbol;
|
|
7
|
+
export declare const INJECT_METADATA_KEY: unique symbol;
|
|
8
|
+
export declare const OPTIONAL_METADATA_KEY: unique symbol;
|
|
9
|
+
export declare const TAGGED_METADATA_KEY: unique symbol;
|
|
10
|
+
export declare const CONTROLLER_METADATA_KEY: unique symbol;
|
|
11
|
+
export declare const ROUTE_METADATA_KEY: unique symbol;
|
|
12
|
+
export declare const MIDDLEWARE_METADATA_KEY: unique symbol;
|
|
13
|
+
export declare const PARAM_METADATA_KEY: unique symbol;
|
|
14
|
+
export interface InjectableMetadata {
|
|
15
|
+
token?: string | symbol;
|
|
16
|
+
scope?: 'singleton' | 'transient' | 'scoped' | 'request';
|
|
17
|
+
tags?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface InjectMetadata {
|
|
20
|
+
token: string | symbol | Function;
|
|
21
|
+
optional?: boolean;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
when?: (context: ResolutionContext) => boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ControllerMetadata {
|
|
26
|
+
prefix?: string;
|
|
27
|
+
middleware?: Function[];
|
|
28
|
+
tags?: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface RouteMetadata {
|
|
31
|
+
method: string;
|
|
32
|
+
path: string;
|
|
33
|
+
middleware?: Function[];
|
|
34
|
+
tags?: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface ParamMetadata {
|
|
37
|
+
type: 'param' | 'query' | 'body' | 'header' | 'cookie';
|
|
38
|
+
key?: string;
|
|
39
|
+
token?: string | symbol | Function;
|
|
40
|
+
optional?: boolean;
|
|
41
|
+
transform?: (value: any) => any;
|
|
42
|
+
validate?: (value: any) => boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Injectable decorator - marks a class as injectable
|
|
46
|
+
*/
|
|
47
|
+
export declare function Injectable(metadata?: InjectableMetadata): ClassDecorator;
|
|
48
|
+
/**
|
|
49
|
+
* Inject decorator - specifies dependency injection for constructor parameters
|
|
50
|
+
*/
|
|
51
|
+
export declare function Inject(token: string | symbol | Function, options?: {
|
|
52
|
+
optional?: boolean;
|
|
53
|
+
tags?: string[];
|
|
54
|
+
when?: (context: ResolutionContext) => boolean;
|
|
55
|
+
}): ParameterDecorator;
|
|
56
|
+
/**
|
|
57
|
+
* Optional decorator - marks a dependency as optional
|
|
58
|
+
*/
|
|
59
|
+
export declare function Optional(): ParameterDecorator;
|
|
60
|
+
/**
|
|
61
|
+
* Tagged decorator - injects services with specific tags
|
|
62
|
+
*/
|
|
63
|
+
export declare function Tagged(tag: string): ParameterDecorator;
|
|
64
|
+
/**
|
|
65
|
+
* Controller decorator - marks a class as a controller
|
|
66
|
+
*/
|
|
67
|
+
export declare function Controller(prefix?: string, options?: {
|
|
68
|
+
middleware?: Function[];
|
|
69
|
+
tags?: string[];
|
|
70
|
+
}): ClassDecorator;
|
|
71
|
+
/**
|
|
72
|
+
* HTTP method decorators
|
|
73
|
+
*/
|
|
74
|
+
export declare function Get(path?: string, options?: {
|
|
75
|
+
middleware?: Function[];
|
|
76
|
+
tags?: string[];
|
|
77
|
+
}): MethodDecorator;
|
|
78
|
+
export declare function Post(path?: string, options?: {
|
|
79
|
+
middleware?: Function[];
|
|
80
|
+
tags?: string[];
|
|
81
|
+
}): MethodDecorator;
|
|
82
|
+
export declare function Put(path?: string, options?: {
|
|
83
|
+
middleware?: Function[];
|
|
84
|
+
tags?: string[];
|
|
85
|
+
}): MethodDecorator;
|
|
86
|
+
export declare function Delete(path?: string, options?: {
|
|
87
|
+
middleware?: Function[];
|
|
88
|
+
tags?: string[];
|
|
89
|
+
}): MethodDecorator;
|
|
90
|
+
export declare function Patch(path?: string, options?: {
|
|
91
|
+
middleware?: Function[];
|
|
92
|
+
tags?: string[];
|
|
93
|
+
}): MethodDecorator;
|
|
94
|
+
export declare function Options(path?: string, options?: {
|
|
95
|
+
middleware?: Function[];
|
|
96
|
+
tags?: string[];
|
|
97
|
+
}): MethodDecorator;
|
|
98
|
+
export declare function Head(path?: string, options?: {
|
|
99
|
+
middleware?: Function[];
|
|
100
|
+
tags?: string[];
|
|
101
|
+
}): MethodDecorator;
|
|
102
|
+
/**
|
|
103
|
+
* UseMiddleware decorator - applies middleware to a class or method
|
|
104
|
+
*/
|
|
105
|
+
export declare function UseMiddleware(...middleware: Function[]): ClassDecorator & MethodDecorator;
|
|
106
|
+
/**
|
|
107
|
+
* Parameter decorators for route handlers
|
|
108
|
+
*/
|
|
109
|
+
export declare function Param(key?: string): ParameterDecorator;
|
|
110
|
+
export declare function Query(key?: string): ParameterDecorator;
|
|
111
|
+
export declare function Body(): ParameterDecorator;
|
|
112
|
+
export declare function Header(key?: string): ParameterDecorator;
|
|
113
|
+
export declare function Cookie(key?: string): ParameterDecorator;
|
|
114
|
+
export declare function InjectParam(token: string | symbol | Function): ParameterDecorator;
|
|
115
|
+
/**
|
|
116
|
+
* Metadata reader utility class
|
|
117
|
+
*/
|
|
118
|
+
export declare class MetadataReader {
|
|
119
|
+
static getInjectableMetadata(target: Function): InjectableMetadata | undefined;
|
|
120
|
+
static getInjectMetadata(target: Function): InjectMetadata[];
|
|
121
|
+
static getOptionalMetadata(target: Function): boolean[];
|
|
122
|
+
static getTaggedMetadata(target: Function): string[];
|
|
123
|
+
static getControllerMetadata(target: Function): ControllerMetadata | undefined;
|
|
124
|
+
static getAllRoutes(target: Function): any[];
|
|
125
|
+
static getMiddlewareMetadata(target: Function, propertyKey?: string | symbol): Function[];
|
|
126
|
+
static getParamMetadata(target: Function, propertyKey: string | symbol): ParamMetadata[];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Modern Decorator Container
|
|
130
|
+
*/
|
|
131
|
+
export declare class DecoratorContainer extends Container {
|
|
132
|
+
/**
|
|
133
|
+
* Register a controller with automatic route discovery
|
|
134
|
+
*/
|
|
135
|
+
registerController(controllerClass: Function): void;
|
|
136
|
+
/**
|
|
137
|
+
* Enhanced resolve method that handles decorator metadata
|
|
138
|
+
*/
|
|
139
|
+
resolve<T>(token: string | symbol | Function, context?: ResolutionContext): T;
|
|
140
|
+
}
|
|
141
|
+
export declare const decoratorContainer: DecoratorContainer;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Providers for Bootstrapping
|
|
3
|
+
*
|
|
4
|
+
* Service provider system for registering services, managing lifecycle,
|
|
5
|
+
* and bootstrapping application components with dependency injection
|
|
6
|
+
*/
|
|
7
|
+
import type { BindingBuilder, Container, ResolutionContext } from './container';
|
|
8
|
+
export interface ServiceProvider {
|
|
9
|
+
/**
|
|
10
|
+
* Register services in the container
|
|
11
|
+
*/
|
|
12
|
+
register: (container: Container) => void | Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Boot services after all providers are registered
|
|
15
|
+
*/
|
|
16
|
+
boot?: (container: Container) => void | Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Shutdown services gracefully
|
|
19
|
+
*/
|
|
20
|
+
shutdown?: (container: Container) => void | Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Provider metadata
|
|
23
|
+
*/
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly version?: string;
|
|
26
|
+
readonly dependencies?: readonly string[];
|
|
27
|
+
readonly environment?: string[];
|
|
28
|
+
readonly priority?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface DeferredServiceProvider extends ServiceProvider {
|
|
31
|
+
/**
|
|
32
|
+
* Services that should trigger loading of this provider
|
|
33
|
+
*/
|
|
34
|
+
provides: () => (string | symbol | Function)[];
|
|
35
|
+
/**
|
|
36
|
+
* Check if provider should be loaded
|
|
37
|
+
*/
|
|
38
|
+
isDeferred: () => boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface ConditionalServiceProvider extends ServiceProvider {
|
|
41
|
+
/**
|
|
42
|
+
* Check if provider should be loaded based on environment
|
|
43
|
+
*/
|
|
44
|
+
shouldLoad: (container: Container) => boolean | Promise<boolean>;
|
|
45
|
+
}
|
|
46
|
+
export interface ServiceProviderManager {
|
|
47
|
+
register: (provider: ServiceProvider) => this;
|
|
48
|
+
boot: () => Promise<void>;
|
|
49
|
+
shutdown: () => Promise<void>;
|
|
50
|
+
getProvider: (name: string) => ServiceProvider | undefined;
|
|
51
|
+
getProviders: () => ServiceProvider[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Base service provider implementation
|
|
55
|
+
*/
|
|
56
|
+
export declare abstract class BaseServiceProvider implements ServiceProvider {
|
|
57
|
+
abstract readonly name: string;
|
|
58
|
+
readonly version?: string;
|
|
59
|
+
readonly dependencies?: readonly string[];
|
|
60
|
+
readonly environment?: string[];
|
|
61
|
+
readonly priority: number;
|
|
62
|
+
abstract register(container: Container): void | Promise<void>;
|
|
63
|
+
boot?(_container: Container): void | Promise<void>;
|
|
64
|
+
shutdown?(_container: Container): void | Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Helper method to bind singleton
|
|
67
|
+
*/
|
|
68
|
+
protected singleton<T>(container: Container, token: string | symbol | Function, implementation: new (...args: any[]) => T): void;
|
|
69
|
+
/**
|
|
70
|
+
* Helper method to bind transient
|
|
71
|
+
*/
|
|
72
|
+
protected transient<T>(container: Container, token: string | symbol | Function, implementation: new (...args: any[]) => T): void;
|
|
73
|
+
/**
|
|
74
|
+
* Helper method to bind value
|
|
75
|
+
*/
|
|
76
|
+
protected value<T>(container: Container, token: string | symbol | Function, value: T): void;
|
|
77
|
+
/**
|
|
78
|
+
* Helper method to bind factory
|
|
79
|
+
*/
|
|
80
|
+
protected factory<T>(container: Container, token: string | symbol | Function, factory: (...args: any[]) => T): void;
|
|
81
|
+
/**
|
|
82
|
+
* Helper method for conditional binding
|
|
83
|
+
*/
|
|
84
|
+
protected when(container: Container, condition: (context: ResolutionContext) => boolean): {
|
|
85
|
+
bind: <T>(token: string | symbol | Function) => BindingBuilder<T>;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Helper method for environment-specific binding
|
|
89
|
+
*/
|
|
90
|
+
protected forEnvironment(container: Container, ...environments: string[]): {
|
|
91
|
+
bind: <T>(token: string | symbol | Function) => BindingBuilder<T>;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Deferred service provider base class
|
|
96
|
+
*/
|
|
97
|
+
export declare abstract class BaseDeferredServiceProvider extends BaseServiceProvider implements DeferredServiceProvider {
|
|
98
|
+
abstract provides(): (string | symbol | Function)[];
|
|
99
|
+
isDeferred(): boolean;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Service provider manager implementation
|
|
103
|
+
*/
|
|
104
|
+
export declare class DefaultServiceProviderManager implements ServiceProviderManager {
|
|
105
|
+
private providers;
|
|
106
|
+
private deferredProviders;
|
|
107
|
+
private loadedProviders;
|
|
108
|
+
private bootedProviders;
|
|
109
|
+
private container;
|
|
110
|
+
constructor(container: Container);
|
|
111
|
+
/**
|
|
112
|
+
* Register a service provider
|
|
113
|
+
*/
|
|
114
|
+
register(provider: ServiceProvider): this;
|
|
115
|
+
/**
|
|
116
|
+
* Boot all registered providers
|
|
117
|
+
*/
|
|
118
|
+
boot(): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Shutdown all providers
|
|
121
|
+
*/
|
|
122
|
+
shutdown(): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Get provider by name
|
|
125
|
+
*/
|
|
126
|
+
getProvider(name: string): ServiceProvider | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* Get all providers
|
|
129
|
+
*/
|
|
130
|
+
getProviders(): ServiceProvider[];
|
|
131
|
+
/**
|
|
132
|
+
* Load deferred provider when needed
|
|
133
|
+
*/
|
|
134
|
+
loadDeferredProvider(token: string | symbol | Function): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Internal registration logic
|
|
137
|
+
*/
|
|
138
|
+
private doRegister;
|
|
139
|
+
/**
|
|
140
|
+
* Load a provider
|
|
141
|
+
*/
|
|
142
|
+
private loadProvider;
|
|
143
|
+
/**
|
|
144
|
+
* Boot a provider
|
|
145
|
+
*/
|
|
146
|
+
private bootProvider;
|
|
147
|
+
/**
|
|
148
|
+
* Validate provider dependencies
|
|
149
|
+
*/
|
|
150
|
+
private validateDependencies;
|
|
151
|
+
/**
|
|
152
|
+
* Check if provider is deferred
|
|
153
|
+
*/
|
|
154
|
+
private isDeferredProvider;
|
|
155
|
+
/**
|
|
156
|
+
* Check if provider is conditional
|
|
157
|
+
*/
|
|
158
|
+
private isConditionalProvider;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Common service providers
|
|
162
|
+
*/
|
|
163
|
+
/**
|
|
164
|
+
* Configuration service provider
|
|
165
|
+
*/
|
|
166
|
+
export declare class ConfigServiceProvider extends BaseServiceProvider {
|
|
167
|
+
readonly name = "config";
|
|
168
|
+
readonly priority = 100;
|
|
169
|
+
register(container: Container): void;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Logging service provider
|
|
173
|
+
*/
|
|
174
|
+
export declare class LoggingServiceProvider extends BaseServiceProvider {
|
|
175
|
+
readonly name = "logging";
|
|
176
|
+
readonly priority = 90;
|
|
177
|
+
register(container: Container): void;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Database service provider
|
|
181
|
+
*/
|
|
182
|
+
export declare class DatabaseServiceProvider extends BaseServiceProvider {
|
|
183
|
+
readonly name = "database";
|
|
184
|
+
readonly dependencies: readonly ["config", "logging"];
|
|
185
|
+
register(container: Container): void;
|
|
186
|
+
boot(container: Container): Promise<void>;
|
|
187
|
+
shutdown(container: Container): Promise<void>;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Cache service provider
|
|
191
|
+
*/
|
|
192
|
+
export declare class CacheServiceProvider extends BaseServiceProvider {
|
|
193
|
+
readonly name = "cache";
|
|
194
|
+
readonly dependencies: readonly ["config"];
|
|
195
|
+
register(container: Container): void;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Authentication service provider
|
|
199
|
+
*/
|
|
200
|
+
export declare class AuthServiceProvider extends BaseServiceProvider {
|
|
201
|
+
readonly name = "auth";
|
|
202
|
+
readonly dependencies: readonly ["config", "database"];
|
|
203
|
+
register(container: Container): void;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Validation service provider
|
|
207
|
+
*/
|
|
208
|
+
export declare class ValidationServiceProvider extends BaseServiceProvider {
|
|
209
|
+
readonly name = "validation";
|
|
210
|
+
register(container: Container): void;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Event service provider (deferred)
|
|
214
|
+
*/
|
|
215
|
+
export declare class EventServiceProvider extends BaseDeferredServiceProvider {
|
|
216
|
+
readonly name = "events";
|
|
217
|
+
provides(): (string | symbol | Function)[];
|
|
218
|
+
register(container: Container): void;
|
|
219
|
+
}
|
|
220
|
+
declare class ConfigService {
|
|
221
|
+
get(key: string, defaultValue?: any): any;
|
|
222
|
+
}
|
|
223
|
+
declare class Logger {
|
|
224
|
+
private config;
|
|
225
|
+
constructor(config: any);
|
|
226
|
+
log(message: string): void;
|
|
227
|
+
}
|
|
228
|
+
declare class ConsoleLogger extends Logger {
|
|
229
|
+
constructor();
|
|
230
|
+
}
|
|
231
|
+
declare class FileLogger extends Logger {
|
|
232
|
+
private filePath;
|
|
233
|
+
constructor(filePath: string);
|
|
234
|
+
}
|
|
235
|
+
declare class DatabaseConnection {
|
|
236
|
+
connect(): Promise<void>;
|
|
237
|
+
disconnect(): Promise<void>;
|
|
238
|
+
}
|
|
239
|
+
declare class UserRepository {
|
|
240
|
+
private db;
|
|
241
|
+
constructor(db: DatabaseConnection);
|
|
242
|
+
}
|
|
243
|
+
declare class PostRepository {
|
|
244
|
+
private db;
|
|
245
|
+
constructor(db: DatabaseConnection);
|
|
246
|
+
}
|
|
247
|
+
declare class CacheManager {
|
|
248
|
+
private store;
|
|
249
|
+
constructor(store: any);
|
|
250
|
+
}
|
|
251
|
+
declare class MemoryCache {
|
|
252
|
+
private cache;
|
|
253
|
+
}
|
|
254
|
+
declare class RedisCache {
|
|
255
|
+
private config;
|
|
256
|
+
constructor(config: any);
|
|
257
|
+
}
|
|
258
|
+
declare class AuthService {
|
|
259
|
+
private jwt;
|
|
260
|
+
private userRepo;
|
|
261
|
+
constructor(jwt: JwtService, userRepo: UserRepository);
|
|
262
|
+
}
|
|
263
|
+
declare class JwtService {
|
|
264
|
+
private config;
|
|
265
|
+
constructor(config: ConfigService);
|
|
266
|
+
}
|
|
267
|
+
declare class AuthGuard {
|
|
268
|
+
private auth;
|
|
269
|
+
constructor(auth: AuthService);
|
|
270
|
+
}
|
|
271
|
+
declare class Validator {
|
|
272
|
+
validate(_data: any, _rules: any): boolean;
|
|
273
|
+
}
|
|
274
|
+
declare class ValidationPipe {
|
|
275
|
+
private validator;
|
|
276
|
+
constructor(validator: Validator);
|
|
277
|
+
}
|
|
278
|
+
declare class EventBus {
|
|
279
|
+
emit(_event: string, _data: any): void;
|
|
280
|
+
}
|
|
281
|
+
declare class EventDispatcher {
|
|
282
|
+
private bus;
|
|
283
|
+
constructor(bus: EventBus);
|
|
284
|
+
}
|
|
285
|
+
export { AuthGuard, AuthService, CacheManager, ConfigService, ConsoleLogger, DatabaseConnection, EventBus, EventDispatcher, FileLogger, JwtService, Logger, MemoryCache, PostRepository, RedisCache, UserRepository, ValidationPipe, Validator, };
|