@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.
Files changed (272) hide show
  1. package/README.md +2 -2
  2. package/dist/auth.d.ts +134 -0
  3. package/dist/cache/lru-cache.d.ts +139 -0
  4. package/dist/cache/middleware-memoization.d.ts +151 -0
  5. package/dist/cache/route-cache-warmer.d.ts +161 -0
  6. package/dist/cache/sqlite-cache.d.ts +209 -0
  7. package/dist/cache/streaming-cache.d.ts +132 -0
  8. package/dist/chunk-jhsk5c5b.js +15758 -0
  9. package/dist/cli/colors.d.ts +15 -0
  10. package/dist/cli/index.d.ts +10 -0
  11. package/dist/cli/middleware.d.ts +31 -0
  12. package/dist/cli/openapi.d.ts +17 -0
  13. package/dist/cli/router.d.ts +15 -0
  14. package/dist/cli/routes.d.ts +29 -0
  15. package/dist/cli/utils.d.ts +74 -0
  16. package/dist/cli.d.ts +1 -1
  17. package/dist/cli.js +2 -2
  18. package/dist/config.d.ts +7 -0
  19. package/dist/container/container.d.ts +273 -0
  20. package/dist/container/contextual-binding.d.ts +240 -0
  21. package/dist/container/decorators.d.ts +141 -0
  22. package/dist/container/service-provider.d.ts +285 -0
  23. package/dist/development/hot-reload.d.ts +187 -0
  24. package/dist/development/index.d.ts +167 -0
  25. package/dist/development/performance-profiler.d.ts +217 -0
  26. package/dist/development/route-debugger.d.ts +154 -0
  27. package/dist/development/route-inspector.d.ts +211 -0
  28. package/dist/development/typescript-utilities.d.ts +209 -0
  29. package/dist/docs.d.ts +11 -0
  30. package/dist/errors/circuit-breaker.d.ts +195 -0
  31. package/dist/errors/error-handler.d.ts +88 -0
  32. package/dist/errors/error-reporting.d.ts +144 -0
  33. package/dist/errors/exceptions.d.ts +184 -0
  34. package/dist/errors/graceful-degradation.d.ts +154 -0
  35. package/dist/errors/index.d.ts +9 -0
  36. package/dist/errors/router-errors.d.ts +110 -0
  37. package/dist/file-serving/static-files.d.ts +143 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +320 -206
  40. package/dist/middleware/auth.d.ts +63 -0
  41. package/dist/middleware/content_security_policy.d.ts +53 -0
  42. package/dist/middleware/cors.d.ts +5 -0
  43. package/dist/middleware/csrf.d.ts +7 -0
  44. package/dist/middleware/ddos_protection.d.ts +39 -0
  45. package/dist/middleware/file_security.d.ts +26 -0
  46. package/dist/middleware/file_upload.d.ts +38 -0
  47. package/dist/middleware/helmet.d.ts +54 -0
  48. package/dist/middleware/index.d.ts +44 -0
  49. package/dist/middleware/input_validation.d.ts +45 -0
  50. package/dist/middleware/json_body.d.ts +4 -0
  51. package/dist/middleware/performance_alerting.d.ts +87 -0
  52. package/dist/middleware/performance_dashboard.d.ts +87 -0
  53. package/dist/middleware/performance_monitor.d.ts +209 -0
  54. package/dist/middleware/pipeline.d.ts +131 -0
  55. package/dist/middleware/rate_limit.d.ts +36 -0
  56. package/dist/middleware/request_id.d.ts +4 -0
  57. package/dist/middleware/request_signing.d.ts +153 -0
  58. package/dist/middleware/request_tracer.d.ts +72 -0
  59. package/dist/middleware/response_cache.d.ts +97 -0
  60. package/dist/middleware/security.d.ts +69 -0
  61. package/dist/middleware/security_suite.d.ts +46 -0
  62. package/dist/middleware/session.d.ts +23 -0
  63. package/dist/model-binding/index.d.ts +2 -0
  64. package/dist/model-binding/model-middleware.d.ts +118 -0
  65. package/dist/model-binding/model-registry.d.ts +164 -0
  66. package/dist/model-binding.d.ts +185 -0
  67. package/dist/model-resolver-factory.d.ts +31 -0
  68. package/dist/observability/correlation.d.ts +187 -0
  69. package/dist/observability/health-checks.d.ts +186 -0
  70. package/dist/observability/index.d.ts +60 -0
  71. package/dist/observability/integration.d.ts +147 -0
  72. package/dist/observability/metrics.d.ts +184 -0
  73. package/dist/observability/tracing.d.ts +187 -0
  74. package/dist/optimization/bun-utilities.d.ts +224 -0
  75. package/dist/query-builder-integration.d.ts +36 -0
  76. package/dist/request/context.d.ts +34 -0
  77. package/dist/request/enhanced-request.d.ts +213 -0
  78. package/dist/request/macros.d.ts +300 -0
  79. package/dist/response/macros.d.ts +245 -0
  80. package/dist/response/response-factory.d.ts +133 -0
  81. package/dist/router/api-routes.d.ts +5 -0
  82. package/dist/router/file-based-routing.d.ts +118 -0
  83. package/dist/router/file-streaming.d.ts +5 -0
  84. package/dist/router/fluent-router.d.ts +315 -0
  85. package/dist/router/fluent-routing.d.ts +271 -0
  86. package/dist/router/group-organization.d.ts +5 -0
  87. package/dist/router/handler-resolver.d.ts +24 -0
  88. package/dist/router/http-methods.d.ts +10 -0
  89. package/dist/router/index.d.ts +113 -0
  90. package/dist/router/middleware-groups.d.ts +94 -0
  91. package/dist/router/middleware-integration.d.ts +112 -0
  92. package/dist/router/middleware.d.ts +5 -0
  93. package/dist/router/model-binding.d.ts +5 -0
  94. package/dist/router/optimized-route-matching.d.ts +6 -0
  95. package/dist/router/route-building.d.ts +5 -0
  96. package/dist/router/route-compiler.d.ts +153 -0
  97. package/dist/router/route-matching.d.ts +5 -0
  98. package/dist/router/route-trie.d.ts +114 -0
  99. package/dist/router/router.d.ts +276 -0
  100. package/dist/router/server.d.ts +5 -0
  101. package/dist/router/validation-integration.d.ts +170 -0
  102. package/dist/router/view-rendering.d.ts +5 -0
  103. package/dist/router/websocket.d.ts +5 -0
  104. package/dist/routing/route-caching.d.ts +129 -0
  105. package/dist/routing/route-throttling.d.ts +150 -0
  106. package/dist/routing/subdomain-routing.d.ts +206 -0
  107. package/dist/session/database-store.d.ts +51 -0
  108. package/dist/session/file-store.d.ts +22 -0
  109. package/dist/session/index.d.ts +106 -0
  110. package/dist/session/memory-store.d.ts +21 -0
  111. package/dist/session/redis-store.d.ts +31 -0
  112. package/dist/streaming/index.d.ts +3 -0
  113. package/dist/streaming/sse-handler.d.ts +138 -0
  114. package/dist/streaming/stream-handler.d.ts +114 -0
  115. package/dist/testing/auth-testing.d.ts +156 -0
  116. package/dist/testing/file-upload-testing.d.ts +190 -0
  117. package/dist/testing/index.d.ts +10 -0
  118. package/dist/testing/middleware-testing.d.ts +138 -0
  119. package/dist/testing/model-binding-testing.d.ts +186 -0
  120. package/dist/testing/performance-testing.d.ts +235 -0
  121. package/dist/testing/test-client.d.ts +117 -0
  122. package/dist/testing/test-request.d.ts +85 -0
  123. package/dist/testing/test-response.d.ts +90 -0
  124. package/dist/testing/types.d.ts +207 -0
  125. package/dist/testing/websocket-testing.d.ts +227 -0
  126. package/dist/types/controller-types.d.ts +208 -0
  127. package/dist/types/core.d.ts +543 -0
  128. package/dist/types/middleware-types.d.ts +227 -0
  129. package/dist/types/request-response-augmentation.d.ts +261 -0
  130. package/dist/types/route-inference.d.ts +168 -0
  131. package/dist/types.d.ts +1776 -0
  132. package/dist/url.d.ts +56 -0
  133. package/dist/utils/index.d.ts +1 -0
  134. package/dist/utils/query-preservation.d.ts +48 -0
  135. package/dist/utils.d.ts +69 -0
  136. package/dist/validation/validator.d.ts +140 -0
  137. package/dist/websocket/clustering.d.ts +185 -0
  138. package/package.json +18 -4
  139. package/src/auth.ts +469 -0
  140. package/src/cache/lru-cache.ts +457 -0
  141. package/src/cache/middleware-memoization.ts +531 -0
  142. package/src/cache/route-cache-warmer.ts +486 -0
  143. package/src/cache/sqlite-cache.ts +783 -0
  144. package/src/cache/streaming-cache.ts +572 -0
  145. package/src/cli/colors.ts +29 -0
  146. package/src/cli/index.ts +287 -0
  147. package/src/cli/middleware.ts +291 -0
  148. package/src/cli/openapi.ts +407 -0
  149. package/src/cli/router.ts +188 -0
  150. package/src/cli/routes.ts +265 -0
  151. package/src/cli/utils.ts +531 -0
  152. package/src/cli.ts +5 -0
  153. package/src/config.ts +322 -0
  154. package/src/container/container.ts +740 -0
  155. package/src/container/contextual-binding.ts +603 -0
  156. package/src/container/decorators.ts +359 -0
  157. package/src/container/service-provider.ts +596 -0
  158. package/src/development/hot-reload.ts +673 -0
  159. package/src/development/index.ts +499 -0
  160. package/src/development/performance-profiler.ts +717 -0
  161. package/src/development/route-debugger.ts +527 -0
  162. package/src/development/route-inspector.ts +749 -0
  163. package/src/development/typescript-utilities.ts +678 -0
  164. package/src/docs.ts +397 -0
  165. package/src/errors/circuit-breaker.ts +732 -0
  166. package/src/errors/error-handler.ts +569 -0
  167. package/src/errors/error-reporting.ts +672 -0
  168. package/src/errors/exceptions.ts +536 -0
  169. package/src/errors/graceful-degradation.ts +621 -0
  170. package/src/errors/index.ts +21 -0
  171. package/src/errors/router-errors.ts +632 -0
  172. package/src/file-serving/static-files.ts +581 -0
  173. package/src/index.ts +14 -0
  174. package/src/middleware/auth.ts +219 -0
  175. package/src/middleware/content_security_policy.ts +215 -0
  176. package/src/middleware/cors.ts +74 -0
  177. package/src/middleware/csrf.ts +108 -0
  178. package/src/middleware/ddos_protection.ts +255 -0
  179. package/src/middleware/file_security.ts +191 -0
  180. package/src/middleware/file_upload.ts +264 -0
  181. package/src/middleware/helmet.ts +268 -0
  182. package/src/middleware/index.ts +117 -0
  183. package/src/middleware/input_validation.ts +449 -0
  184. package/src/middleware/json_body.ts +37 -0
  185. package/src/middleware/performance_alerting.ts +538 -0
  186. package/src/middleware/performance_dashboard.ts +661 -0
  187. package/src/middleware/performance_monitor.ts +943 -0
  188. package/src/middleware/pipeline.ts +489 -0
  189. package/src/middleware/rate_limit.ts +245 -0
  190. package/src/middleware/request_id.ts +36 -0
  191. package/src/middleware/request_signing.ts +636 -0
  192. package/src/middleware/request_tracer.ts +636 -0
  193. package/src/middleware/response_cache.ts +743 -0
  194. package/src/middleware/security.ts +482 -0
  195. package/src/middleware/security_suite.ts +257 -0
  196. package/src/middleware/session.ts +91 -0
  197. package/src/model-binding/index.ts +18 -0
  198. package/src/model-binding/model-middleware.ts +425 -0
  199. package/src/model-binding/model-registry.ts +550 -0
  200. package/src/model-binding.ts +370 -0
  201. package/src/model-resolver-factory.ts +106 -0
  202. package/src/observability/correlation.ts +691 -0
  203. package/src/observability/health-checks.ts +729 -0
  204. package/src/observability/index.ts +184 -0
  205. package/src/observability/integration.ts +548 -0
  206. package/src/observability/metrics.ts +753 -0
  207. package/src/observability/tracing.ts +638 -0
  208. package/src/optimization/bun-utilities.ts +778 -0
  209. package/src/query-builder-integration.ts +137 -0
  210. package/src/request/context.ts +62 -0
  211. package/src/request/enhanced-request.ts +857 -0
  212. package/src/request/macros.ts +688 -0
  213. package/src/response/macros.ts +612 -0
  214. package/src/response/response-factory.ts +588 -0
  215. package/src/router/api-routes.ts +243 -0
  216. package/src/router/file-based-routing.ts +670 -0
  217. package/src/router/file-streaming.ts +372 -0
  218. package/src/router/fluent-router.ts +927 -0
  219. package/src/router/fluent-routing.ts +797 -0
  220. package/src/router/group-organization.ts +213 -0
  221. package/src/router/handler-resolver.ts +291 -0
  222. package/src/router/http-methods.ts +377 -0
  223. package/src/router/index.ts +185 -0
  224. package/src/router/middleware-groups.ts +222 -0
  225. package/src/router/middleware-integration.ts +399 -0
  226. package/src/router/middleware.ts +231 -0
  227. package/src/router/model-binding.ts +215 -0
  228. package/src/router/optimized-route-matching.ts +253 -0
  229. package/src/router/route-building.ts +212 -0
  230. package/src/router/route-compiler.ts +702 -0
  231. package/src/router/route-matching.ts +349 -0
  232. package/src/router/route-trie.ts +464 -0
  233. package/src/router/router.ts +1508 -0
  234. package/src/router/server.ts +406 -0
  235. package/src/router/validation-integration.ts +443 -0
  236. package/src/router/view-rendering.ts +233 -0
  237. package/src/router/websocket.ts +100 -0
  238. package/src/routing/route-caching.ts +402 -0
  239. package/src/routing/route-throttling.ts +469 -0
  240. package/src/routing/subdomain-routing.ts +492 -0
  241. package/src/session/database-store.ts +109 -0
  242. package/src/session/file-store.ts +148 -0
  243. package/src/session/index.ts +244 -0
  244. package/src/session/memory-store.ts +88 -0
  245. package/src/session/redis-store.ts +93 -0
  246. package/src/streaming/index.ts +17 -0
  247. package/src/streaming/sse-handler.ts +482 -0
  248. package/src/streaming/stream-handler.ts +552 -0
  249. package/src/testing/auth-testing.ts +446 -0
  250. package/src/testing/file-upload-testing.ts +543 -0
  251. package/src/testing/index.ts +10 -0
  252. package/src/testing/middleware-testing.ts +322 -0
  253. package/src/testing/model-binding-testing.ts +645 -0
  254. package/src/testing/performance-testing.ts +738 -0
  255. package/src/testing/test-client.ts +310 -0
  256. package/src/testing/test-request.ts +315 -0
  257. package/src/testing/test-response.ts +332 -0
  258. package/src/testing/types.ts +224 -0
  259. package/src/testing/websocket-testing.ts +590 -0
  260. package/src/types/controller-types.ts +385 -0
  261. package/src/types/core.ts +683 -0
  262. package/src/types/middleware-types.ts +419 -0
  263. package/src/types/request-response-augmentation.ts +489 -0
  264. package/src/types/route-inference.ts +357 -0
  265. package/src/types.ts +2049 -0
  266. package/src/url.ts +126 -0
  267. package/src/utils/index.ts +1 -0
  268. package/src/utils/query-preservation.ts +201 -0
  269. package/src/utils.ts +327 -0
  270. package/src/validation/validator.ts +685 -0
  271. package/src/websocket/clustering.ts +762 -0
  272. package/dist/chunk-cjdekj87.js +0 -25886
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Simple color utility for CLI output without external dependencies
3
+ */
4
+ export declare const chalk: {
5
+ red: (text: string) => string;
6
+ green: (text: string) => string;
7
+ yellow: (text: string) => string;
8
+ blue: (text: string) => string;
9
+ cyan: (text: string) => string;
10
+ white: (text: string) => string;
11
+ gray: (text: string) => string;
12
+ bold: (text: string) => string;
13
+ dim: (text: string) => string;
14
+ hex: (_color: string) => (text: string) => string;
15
+ };
@@ -0,0 +1,10 @@
1
+ import { CLI } from '@stacksjs/clapp';
2
+ /**
3
+ * Create and configure the CLI
4
+ */
5
+ export declare function createCLI(): CLI;
6
+ export * from './middleware';
7
+ export * from './openapi';
8
+ export * from './router';
9
+ export * from './routes';
10
+ export * from './utils';
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Options for the middleware:types command
3
+ */
4
+ export interface GenerateMiddlewareTypesOptions {
5
+ output?: string;
6
+ watch?: boolean;
7
+ }
8
+ /**
9
+ * Options for the middleware:map command
10
+ */
11
+ export interface MapMiddlewareOptions {
12
+ output?: string;
13
+ dir?: string;
14
+ watch?: boolean;
15
+ }
16
+ /**
17
+ * Generate TypeScript types for middleware configurations
18
+ */
19
+ export declare function generateMiddlewareTypes(outputPath: string): Promise<void>;
20
+ /**
21
+ * Generate middleware type mappings for user project
22
+ */
23
+ export declare function generateMiddlewareMap(directoryPath: string, outputPath: string): Promise<void>;
24
+ /**
25
+ * Watch for changes in the directory and regenerate middleware map
26
+ */
27
+ export declare function watchDirectoryForMiddleware(directoryPath: string, outputPath: string): Promise<void>;
28
+ /**
29
+ * Watch for changes in the middleware directory and regenerate types
30
+ */
31
+ export declare function watchMiddlewareDirectory(outputPath: string): Promise<void>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Options for the openapi command
3
+ */
4
+ export interface OpenAPIOptions {
5
+ output?: string;
6
+ title?: string;
7
+ version?: string;
8
+ description?: string;
9
+ basePath?: string;
10
+ servers?: string;
11
+ tags?: boolean;
12
+ security?: boolean;
13
+ }
14
+ /**
15
+ * Generate OpenAPI specification for API routes
16
+ */
17
+ export declare function generateOpenAPISpec(options: OpenAPIOptions): Promise<void>;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Options for the router:types command
3
+ */
4
+ export interface GenerateRouterTypesOptions {
5
+ output?: string;
6
+ watch?: boolean;
7
+ }
8
+ /**
9
+ * Generate TypeScript types for router extensions
10
+ */
11
+ export declare function generateRouterTypes(outputPath: string): Promise<void>;
12
+ /**
13
+ * Watch for changes in router files and regenerate types
14
+ */
15
+ export declare function watchRouterFiles(outputPath: string): Promise<void>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Options for the route:list command
3
+ */
4
+ export interface RouteListOptions {
5
+ verbose?: boolean;
6
+ extraVerbose?: boolean;
7
+ path?: string;
8
+ exceptVendor?: boolean;
9
+ onlyVendor?: boolean;
10
+ }
11
+ /**
12
+ * Options for the route:types command
13
+ */
14
+ export interface GenerateRouteTypesOptions {
15
+ output?: string;
16
+ watch?: boolean;
17
+ }
18
+ /**
19
+ * Display all registered routes in a formatted table
20
+ */
21
+ export declare function displayRoutes(options: RouteListOptions): Promise<void>;
22
+ /**
23
+ * Generate TypeScript types for route names
24
+ */
25
+ export declare function generateRouteTypes(outputPath: string): Promise<void>;
26
+ /**
27
+ * Watch for changes in the routes directory and regenerate types
28
+ */
29
+ export declare function watchRoutesDirectory(outputPath: string): Promise<void>;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Formats console output with consistent styling
3
+ */
4
+ export declare const format: {
5
+ success: (message: string) => string;
6
+ info: (message: string) => string;
7
+ warning: (message: string) => string;
8
+ error: (message: string) => string;
9
+ dim: (message: string) => string;
10
+ bold: (message: string) => string;
11
+ };
12
+ /**
13
+ * Logger for CLI commands with consistent styling
14
+ */
15
+ export declare const logger: {
16
+ success: (message: string) => void;
17
+ info: (message: string) => void;
18
+ warning: (message: string) => void;
19
+ error: (message: string) => void;
20
+ debug: (message: string) => void;
21
+ };
22
+ /**
23
+ * Load router instance from the application
24
+ */
25
+ export declare function loadRouter(): Promise<any>;
26
+ /**
27
+ * Setup a debounced file watcher
28
+ */
29
+ export declare function setupDebouncedWatcher(_callback: () => Promise<void>, _debounceTime?: number): {
30
+ timeoutId: NodeJS.Timeout | null;
31
+ };
32
+ /**
33
+ * Utility to get method color for console output
34
+ */
35
+ export declare function getMethodColor(method: string): string;
36
+ /**
37
+ * Pad a string to a specified length
38
+ */
39
+ export declare function padString(str: string, length: number): string;
40
+ /**
41
+ * Check router health and configuration
42
+ */
43
+ export declare function checkRouterHealth(options: {
44
+ verbose?: boolean;
45
+ }): Promise<void>;
46
+ /**
47
+ * Test routes by making HTTP requests
48
+ */
49
+ export declare function testRoutes(options: {
50
+ baseUrl?: string;
51
+ filter?: string;
52
+ method?: string;
53
+ timeout?: number;
54
+ }): Promise<void>;
55
+ /**
56
+ * Debug route matching for a specific path
57
+ */
58
+ export declare function debugRoute(path: string, options: {
59
+ method?: string;
60
+ verbose?: boolean;
61
+ }): Promise<void>;
62
+ /**
63
+ * Clear route caches
64
+ */
65
+ export declare function clearCaches(options: {
66
+ stats?: boolean;
67
+ }): Promise<void>;
68
+ /**
69
+ * Validate route definitions and configuration
70
+ */
71
+ export declare function validateRoutes(options: {
72
+ strict?: boolean;
73
+ fix?: boolean;
74
+ }): Promise<void>;
package/dist/cli.d.ts CHANGED
@@ -1 +1 @@
1
-
1
+ export {};
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  middleware
4
- } from "./chunk-cjdekj87.js";
4
+ } from "./chunk-jhsk5c5b.js";
5
5
 
6
6
  // src/cli/index.ts
7
7
  import process13 from "process";
@@ -1879,7 +1879,7 @@ var prefix = getPrefix();
1879
1879
  var color18 = __toESM(require_picocolors(), 1);
1880
1880
  var import_picocolors19 = __toESM(require_picocolors(), 1);
1881
1881
  // package.json
1882
- var version = "0.0.4";
1882
+ var version = "0.0.6";
1883
1883
 
1884
1884
  // src/cli/middleware.ts
1885
1885
  import fs from "fs/promises";
@@ -0,0 +1,7 @@
1
+ import type { RouterConfig } from './types';
2
+ /**
3
+ * Default configuration for the router
4
+ */
5
+ export declare const defaultConfig: RouterConfig;
6
+ export declare function getConfig(): Promise<RouterConfig>;
7
+ export declare const config: RouterConfig;
@@ -0,0 +1,273 @@
1
+ /**
2
+ * IoC Container for Dependency Resolution
3
+ *
4
+ * Comprehensive dependency injection container with automatic resolution,
5
+ * lifecycle management, and contextual binding support
6
+ */
7
+ declare global {
8
+ namespace Reflect {
9
+ function getMetadata(_metadataKey: any, _target: any, _propertyKey?: string | symbol): any;
10
+ function defineMetadata(_metadataKey: any, _metadataValue: any, _target: any, _propertyKey?: string | symbol): void;
11
+ }
12
+ }
13
+ export type BindingScope = 'singleton' | 'transient' | 'scoped' | 'request';
14
+ export type Token = string | symbol | ((...args: any[]) => any) | (new (...args: any[]) => any) | Function;
15
+ export interface BindingMetadata {
16
+ scope: BindingScope;
17
+ tags?: string[];
18
+ when?: (context: ResolutionContext) => boolean;
19
+ factory?: (..._args: any[]) => any;
20
+ dependencies?: Token[];
21
+ lazy?: boolean;
22
+ decorators?: ((..._args: any[]) => any)[];
23
+ }
24
+ export interface Binding<T = any> {
25
+ token: Token;
26
+ implementation?: new (...args: any[]) => T;
27
+ instance?: T;
28
+ factory?: (...args: any[]) => T;
29
+ value?: T;
30
+ metadata: BindingMetadata;
31
+ }
32
+ export interface ResolutionContext {
33
+ container: Container;
34
+ token: Token;
35
+ parent?: ResolutionContext;
36
+ environment?: string;
37
+ requestId?: string;
38
+ depth: number;
39
+ resolving: Set<Token>;
40
+ }
41
+ export interface ContainerOptions {
42
+ autoRegister?: boolean;
43
+ strictMode?: boolean;
44
+ maxDepth?: number;
45
+ enableDecorators?: boolean;
46
+ enableInterception?: boolean;
47
+ defaultScope?: BindingScope;
48
+ }
49
+ export declare const INJECTABLE_METADATA_KEY: unique symbol;
50
+ export declare const INJECT_METADATA_KEY: unique symbol;
51
+ export declare const OPTIONAL_METADATA_KEY: unique symbol;
52
+ export declare const TAGGED_METADATA_KEY: unique symbol;
53
+ export interface InjectableMetadata {
54
+ token?: string | symbol;
55
+ scope?: BindingScope;
56
+ tags?: string[];
57
+ }
58
+ export interface InjectMetadata {
59
+ token: Token;
60
+ optional?: boolean;
61
+ tags?: string[];
62
+ when?: (context: ResolutionContext) => boolean;
63
+ }
64
+ /**
65
+ * Main IoC Container implementation
66
+ */
67
+ export declare class Container {
68
+ private bindings;
69
+ private instances;
70
+ private scopedInstances;
71
+ private interceptors;
72
+ private parent?;
73
+ private children;
74
+ private options;
75
+ constructor(options?: ContainerOptions);
76
+ /**
77
+ * Bind a token to an implementation
78
+ */
79
+ bind<T>(token: Token): BindingBuilder<T>;
80
+ /**
81
+ * Register a binding
82
+ */
83
+ register<T>(binding: Binding<T>): this;
84
+ /**
85
+ * Bind a singleton
86
+ */
87
+ singleton<T>(token: Token, implementation: new (...args: any[]) => T): Container;
88
+ /**
89
+ * Bind a transient
90
+ */
91
+ transient<T>(token: Token, implementation: new (...args: any[]) => T): Container;
92
+ /**
93
+ * Bind a value
94
+ */
95
+ value<T>(token: Token, value: T): Container;
96
+ /**
97
+ * Bind a factory
98
+ */
99
+ factory<T>(token: Token, factory: (...args: any[]) => T): Container;
100
+ /**
101
+ * Resolve a dependency
102
+ */
103
+ resolve<T>(token: Token, context?: Partial<ResolutionContext>): T;
104
+ /**
105
+ * Resolve all instances of a token (useful for arrays of services)
106
+ */
107
+ resolveAll<T>(token: Token): T[];
108
+ /**
109
+ * Resolve with tags
110
+ */
111
+ resolveTagged<T>(tag: string): T[];
112
+ /**
113
+ * Get all bindings with a specific tag
114
+ */
115
+ getTaggedBindings<T>(tag: string): Binding<T>[];
116
+ /**
117
+ * Add interceptor for a service
118
+ */
119
+ addInterceptor<T>(token: Token, interceptor: (service: T) => T): void;
120
+ /**
121
+ * Register controller (basic implementation for compatibility)
122
+ */
123
+ registerController(controller: new (...args: any[]) => any): void;
124
+ /**
125
+ * Get controller instance
126
+ */
127
+ getController<T>(controller: new (...args: any[]) => T): T;
128
+ /**
129
+ * Check if a token is bound
130
+ */
131
+ isBound(token: Token): boolean;
132
+ /**
133
+ * Unbind a token
134
+ */
135
+ unbind(token: Token): this;
136
+ /**
137
+ * Create a child container
138
+ */
139
+ createChild(options?: ContainerOptions): Container;
140
+ /**
141
+ * Create a scoped container
142
+ */
143
+ createScope(scopeId: string): Container;
144
+ /**
145
+ * Get all bindings
146
+ */
147
+ getBindings(): Map<Token, Binding>;
148
+ /**
149
+ * Clear all bindings and instances
150
+ */
151
+ clear(): this;
152
+ /**
153
+ * Add interceptor
154
+ */
155
+ intercept<T>(token: string | symbol | ((..._args: any[]) => any), interceptor: (instance: T, context: ResolutionContext) => T): this;
156
+ /**
157
+ * Internal resolution logic
158
+ */
159
+ private resolveInternal;
160
+ /**
161
+ * Create instance from binding
162
+ */
163
+ protected createInstance<T>(binding: Binding<T>, context: ResolutionContext): T;
164
+ /**
165
+ * Create new instance from binding
166
+ */
167
+ private createNewInstance;
168
+ /**
169
+ * Create instance from constructor
170
+ */
171
+ private createInstanceFromConstructor;
172
+ /**
173
+ * Get constructor dependencies using reflection
174
+ */
175
+ private getConstructorDependencies;
176
+ /**
177
+ * Parse constructor dependencies from function string
178
+ */
179
+ private parseConstructorDependencies;
180
+ /**
181
+ * Resolve array of dependencies
182
+ */
183
+ private resolveDependencies;
184
+ /**
185
+ * Auto-register and resolve
186
+ */
187
+ private autoRegisterAndResolve;
188
+ /**
189
+ * Apply decorators to instance
190
+ */
191
+ private applyDecorators;
192
+ /**
193
+ * Check if binding has tag
194
+ */
195
+ private hasTag;
196
+ /**
197
+ * Convert token to string for error messages
198
+ */
199
+ private tokenToString;
200
+ /**
201
+ * Generate unique request ID
202
+ */
203
+ private generateRequestId;
204
+ }
205
+ /**
206
+ * Fluent binding builder
207
+ */
208
+ export declare class BindingBuilder<T> {
209
+ private container;
210
+ private binding;
211
+ constructor(container: Container, token: Token);
212
+ /**
213
+ * Bind to implementation
214
+ */
215
+ to(implementation: new (...args: any[]) => T): this;
216
+ /**
217
+ * Bind to value
218
+ */
219
+ toValue(value: T): this;
220
+ /**
221
+ * Bind to factory
222
+ */
223
+ toFactory(factory: (...args: any[]) => T): this;
224
+ /**
225
+ * Bind to existing instance
226
+ */
227
+ toInstance(instance: T): this;
228
+ /**
229
+ * Set singleton scope
230
+ */
231
+ inSingletonScope(): this;
232
+ /**
233
+ * Set transient scope
234
+ */
235
+ inTransientScope(): this;
236
+ /**
237
+ * Set scoped scope
238
+ */
239
+ inScopedScope(): this;
240
+ /**
241
+ * Set request scope
242
+ */
243
+ inRequestScope(): this;
244
+ /**
245
+ * Add tags
246
+ */
247
+ withTags(...tags: string[]): this;
248
+ /**
249
+ * Add contextual condition
250
+ */
251
+ when(condition: (context: ResolutionContext) => boolean): this;
252
+ /**
253
+ * Set as lazy
254
+ */
255
+ lazy(): this;
256
+ /**
257
+ * Build and register binding
258
+ */
259
+ build(): Container;
260
+ }
261
+ /**
262
+ * Get or create global container
263
+ */
264
+ export declare function getContainer(): Container;
265
+ /**
266
+ * Set global container
267
+ */
268
+ export declare function setContainer(container: Container): void;
269
+ /**
270
+ * Create new container
271
+ */
272
+ export declare function createContainer(options?: ContainerOptions): Container;
273
+ export { Container as DIContainer };