@gravito/radiance 1.0.4 → 2.0.0

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 (160) hide show
  1. package/README.md +30 -7
  2. package/dist/core/src/Application.d.ts +256 -0
  3. package/dist/core/src/CommandKernel.d.ts +33 -0
  4. package/dist/core/src/ConfigManager.d.ts +65 -0
  5. package/dist/core/src/Container/RequestScopeManager.d.ts +62 -0
  6. package/dist/core/src/Container/RequestScopeMetrics.d.ts +144 -0
  7. package/dist/core/src/Container.d.ts +153 -0
  8. package/dist/core/src/ErrorHandler.d.ts +66 -0
  9. package/dist/core/src/Event.d.ts +5 -0
  10. package/dist/core/src/EventManager.d.ts +123 -0
  11. package/dist/core/src/GlobalErrorHandlers.d.ts +47 -0
  12. package/dist/core/src/GravitoServer.d.ts +28 -0
  13. package/dist/core/src/HookManager.d.ts +435 -0
  14. package/dist/core/src/Listener.d.ts +4 -0
  15. package/dist/core/src/Logger.d.ts +20 -0
  16. package/dist/core/src/PlanetCore.d.ts +408 -0
  17. package/dist/core/src/RequestContext.d.ts +97 -0
  18. package/dist/core/src/Route.d.ts +36 -0
  19. package/dist/core/src/Router.d.ts +270 -0
  20. package/dist/core/src/ServiceProvider.d.ts +178 -0
  21. package/dist/core/src/adapters/GravitoEngineAdapter.d.ts +27 -0
  22. package/dist/core/src/adapters/bun/BunContext.d.ts +54 -0
  23. package/dist/core/src/adapters/bun/BunNativeAdapter.d.ts +66 -0
  24. package/dist/core/src/adapters/bun/BunRequest.d.ts +31 -0
  25. package/dist/core/src/adapters/bun/BunWebSocketHandler.d.ts +48 -0
  26. package/dist/core/src/adapters/bun/RadixNode.d.ts +19 -0
  27. package/dist/core/src/adapters/bun/RadixRouter.d.ts +32 -0
  28. package/dist/core/src/adapters/bun/index.d.ts +7 -0
  29. package/dist/core/src/adapters/bun/types.d.ts +20 -0
  30. package/dist/core/src/adapters/types.d.ts +235 -0
  31. package/dist/core/src/binary/BinaryUtils.d.ts +105 -0
  32. package/dist/core/src/binary/index.d.ts +5 -0
  33. package/dist/core/src/cli/queue-commands.d.ts +6 -0
  34. package/dist/core/src/compat/async-local-storage.d.ts +7 -0
  35. package/dist/core/src/compat/crypto.d.ts +6 -0
  36. package/dist/core/src/engine/AOTRouter.d.ts +139 -0
  37. package/dist/core/src/engine/FastContext.d.ts +141 -0
  38. package/dist/core/src/engine/Gravito.d.ts +131 -0
  39. package/dist/core/src/engine/MinimalContext.d.ts +102 -0
  40. package/dist/core/src/engine/analyzer.d.ts +113 -0
  41. package/dist/core/src/engine/constants.d.ts +23 -0
  42. package/dist/core/src/engine/index.d.ts +26 -0
  43. package/dist/core/src/engine/path.d.ts +26 -0
  44. package/dist/core/src/engine/pool.d.ts +83 -0
  45. package/dist/core/src/engine/types.d.ts +149 -0
  46. package/dist/core/src/error-handling/RequestScopeErrorContext.d.ts +126 -0
  47. package/dist/core/src/events/BackpressureManager.d.ts +215 -0
  48. package/dist/core/src/events/CircuitBreaker.d.ts +241 -0
  49. package/dist/core/src/events/DeadLetterQueue.d.ts +219 -0
  50. package/dist/core/src/events/EventBackend.d.ts +12 -0
  51. package/dist/core/src/events/EventOptions.d.ts +204 -0
  52. package/dist/core/src/events/EventPriorityQueue.d.ts +63 -0
  53. package/dist/core/src/events/FlowControlStrategy.d.ts +109 -0
  54. package/dist/core/src/events/IdempotencyCache.d.ts +60 -0
  55. package/dist/core/src/events/MessageQueueBridge.d.ts +184 -0
  56. package/dist/core/src/events/PriorityEscalationManager.d.ts +82 -0
  57. package/dist/core/src/events/RetryScheduler.d.ts +104 -0
  58. package/dist/core/src/events/WorkerPool.d.ts +98 -0
  59. package/dist/core/src/events/WorkerPoolConfig.d.ts +153 -0
  60. package/dist/core/src/events/WorkerPoolMetrics.d.ts +65 -0
  61. package/dist/core/src/events/aggregation/AggregationWindow.d.ts +77 -0
  62. package/dist/core/src/events/aggregation/DeduplicationManager.d.ts +135 -0
  63. package/dist/core/src/events/aggregation/EventAggregationManager.d.ts +108 -0
  64. package/dist/core/src/events/aggregation/EventBatcher.d.ts +99 -0
  65. package/dist/core/src/events/aggregation/types.d.ts +117 -0
  66. package/dist/core/src/events/index.d.ts +26 -0
  67. package/dist/core/src/events/observability/EventMetrics.d.ts +132 -0
  68. package/dist/core/src/events/observability/EventTracer.d.ts +68 -0
  69. package/dist/core/src/events/observability/EventTracing.d.ts +161 -0
  70. package/dist/core/src/events/observability/OTelEventMetrics.d.ts +332 -0
  71. package/dist/core/src/events/observability/ObservableHookManager.d.ts +108 -0
  72. package/dist/core/src/events/observability/StreamWorkerMetrics.d.ts +76 -0
  73. package/dist/core/src/events/observability/index.d.ts +24 -0
  74. package/dist/core/src/events/observability/metrics-types.d.ts +16 -0
  75. package/dist/core/src/events/queue-core.d.ts +77 -0
  76. package/dist/core/src/events/task-executor.d.ts +51 -0
  77. package/dist/core/src/events/types.d.ts +134 -0
  78. package/dist/core/src/exceptions/AuthException.d.ts +10 -0
  79. package/dist/core/src/exceptions/AuthenticationException.d.ts +8 -0
  80. package/dist/core/src/exceptions/AuthorizationException.d.ts +8 -0
  81. package/dist/core/src/exceptions/CacheException.d.ts +9 -0
  82. package/dist/core/src/exceptions/CircularDependencyException.d.ts +10 -0
  83. package/dist/core/src/exceptions/ConfigurationException.d.ts +9 -0
  84. package/dist/core/src/exceptions/DatabaseException.d.ts +9 -0
  85. package/dist/core/src/exceptions/DomainException.d.ts +9 -0
  86. package/dist/core/src/exceptions/GravitoException.d.ts +23 -0
  87. package/dist/core/src/exceptions/HttpException.d.ts +9 -0
  88. package/dist/core/src/exceptions/InfrastructureException.d.ts +17 -0
  89. package/dist/core/src/exceptions/ModelNotFoundException.d.ts +10 -0
  90. package/dist/core/src/exceptions/QueueException.d.ts +9 -0
  91. package/dist/core/src/exceptions/StorageException.d.ts +9 -0
  92. package/dist/core/src/exceptions/StreamException.d.ts +9 -0
  93. package/dist/core/src/exceptions/SystemException.d.ts +9 -0
  94. package/dist/core/src/exceptions/ValidationException.d.ts +22 -0
  95. package/dist/core/src/exceptions/index.d.ts +17 -0
  96. package/dist/core/src/ffi/NativeAccelerator.d.ts +62 -0
  97. package/dist/core/src/ffi/NativeHasher.d.ts +139 -0
  98. package/dist/core/src/ffi/cbor-fallback.d.ts +96 -0
  99. package/dist/core/src/ffi/hash-fallback.d.ts +33 -0
  100. package/dist/core/src/ffi/index.d.ts +10 -0
  101. package/dist/core/src/ffi/types.d.ts +135 -0
  102. package/dist/core/src/health/HealthProvider.d.ts +67 -0
  103. package/dist/core/src/helpers/Arr.d.ts +19 -0
  104. package/dist/core/src/helpers/Str.d.ts +38 -0
  105. package/dist/core/src/helpers/data.d.ts +25 -0
  106. package/dist/core/src/helpers/errors.d.ts +34 -0
  107. package/dist/core/src/helpers/response.d.ts +41 -0
  108. package/dist/core/src/helpers.d.ts +338 -0
  109. package/dist/core/src/hooks/ActionManager.d.ts +132 -0
  110. package/dist/core/src/hooks/AsyncDetector.d.ts +84 -0
  111. package/dist/core/src/hooks/FilterManager.d.ts +71 -0
  112. package/dist/core/src/hooks/MigrationWarner.d.ts +24 -0
  113. package/dist/core/src/hooks/dlq-operations.d.ts +60 -0
  114. package/dist/core/src/hooks/types.d.ts +107 -0
  115. package/dist/core/src/http/CookieJar.d.ts +51 -0
  116. package/dist/core/src/http/cookie.d.ts +29 -0
  117. package/dist/core/src/http/types.d.ts +395 -0
  118. package/dist/core/src/index.d.ts +565 -0
  119. package/dist/core/src/observability/QueueDashboard.d.ts +136 -0
  120. package/dist/core/src/observability/contracts.d.ts +137 -0
  121. package/dist/core/src/reliability/DeadLetterQueueManager.d.ts +349 -0
  122. package/dist/core/src/reliability/RetryPolicy.d.ts +217 -0
  123. package/dist/core/src/reliability/index.d.ts +6 -0
  124. package/dist/core/src/router/ControllerDispatcher.d.ts +12 -0
  125. package/dist/core/src/router/RequestValidator.d.ts +20 -0
  126. package/dist/core/src/runtime/adapter-bun.d.ts +12 -0
  127. package/dist/core/src/runtime/adapter-deno.d.ts +12 -0
  128. package/dist/core/src/runtime/adapter-node.d.ts +12 -0
  129. package/dist/core/src/runtime/adapter-unknown.d.ts +13 -0
  130. package/dist/core/src/runtime/archive.d.ts +17 -0
  131. package/dist/core/src/runtime/compression.d.ts +21 -0
  132. package/dist/core/src/runtime/deep-equals.d.ts +56 -0
  133. package/dist/core/src/runtime/detection.d.ts +22 -0
  134. package/dist/core/src/runtime/escape.d.ts +34 -0
  135. package/dist/core/src/runtime/index.d.ts +44 -0
  136. package/dist/core/src/runtime/markdown.d.ts +44 -0
  137. package/dist/core/src/runtime/types.d.ts +436 -0
  138. package/dist/core/src/runtime-helpers.d.ts +67 -0
  139. package/dist/core/src/runtime.d.ts +11 -0
  140. package/dist/core/src/security/Encrypter.d.ts +33 -0
  141. package/dist/core/src/security/Hasher.d.ts +29 -0
  142. package/dist/core/src/testing/HttpTester.d.ts +40 -0
  143. package/dist/core/src/testing/TestResponse.d.ts +78 -0
  144. package/dist/core/src/testing/index.d.ts +2 -0
  145. package/dist/core/src/transpiler-utils.d.ts +170 -0
  146. package/dist/core/src/types/events.d.ts +94 -0
  147. package/dist/index.js +3 -294
  148. package/dist/index.js.map +3 -10
  149. package/dist/radiance/src/BroadcastManager.d.ts +124 -0
  150. package/dist/radiance/src/OrbitRadiance.d.ts +98 -0
  151. package/dist/radiance/src/channels/Channel.d.ts +86 -0
  152. package/dist/radiance/src/drivers/AblyDriver.d.ts +73 -0
  153. package/dist/radiance/src/drivers/BroadcastDriver.d.ts +50 -0
  154. package/dist/radiance/src/drivers/PusherDriver.d.ts +95 -0
  155. package/dist/radiance/src/drivers/RedisDriver.d.ts +83 -0
  156. package/dist/radiance/src/drivers/WebSocketDriver.d.ts +89 -0
  157. package/dist/radiance/src/errors/RadianceError.d.ts +29 -0
  158. package/dist/radiance/src/errors/codes.d.ts +18 -0
  159. package/dist/radiance/src/index.d.ts +42 -0
  160. package/package.json +4 -2
@@ -0,0 +1,408 @@
1
+ /**
2
+ * @fileoverview PlanetCore - The Heart of Gravito Framework
3
+ *
4
+ * The micro-kernel that orchestrates the entire Galaxy Architecture.
5
+ * Manages HTTP routing, middleware, error handling, and orbit integration.
6
+ *
7
+ * @module @gravito/core
8
+ * @since 1.0.0
9
+ */
10
+ import { type HttpAdapter } from './adapters/types';
11
+ import { ConfigManager } from './ConfigManager';
12
+ import { Container } from './Container';
13
+ import { EventManager } from './EventManager';
14
+ import { type RegisterGlobalErrorHandlersOptions } from './GlobalErrorHandlers';
15
+ import { HookManager } from './HookManager';
16
+ import type { fail } from './helpers/response';
17
+ import type { ContentfulStatusCode, GravitoContext } from './http/types';
18
+ import { type Logger } from './Logger';
19
+ import { type ObservabilityProvider } from './observability/contracts';
20
+ import type { ServiceProvider } from './ServiceProvider';
21
+ /**
22
+ * CacheService interface for orbit-injected cache
23
+ * Orbits implementing cache should conform to this interface
24
+ */
25
+ export interface CacheService {
26
+ get<T = unknown>(key: string): Promise<T | null>;
27
+ set(key: string, value: unknown, ttl?: number): Promise<void>;
28
+ delete(key: string): Promise<void>;
29
+ clear(): Promise<void>;
30
+ remember<T>(key: string, ttl: number, callback: () => Promise<T>): Promise<T>;
31
+ }
32
+ /**
33
+ * Interface for View Rendering Service
34
+ * @public
35
+ */
36
+ export interface ViewService {
37
+ render(view: string, data?: Record<string, unknown>, options?: Record<string, unknown>): string;
38
+ }
39
+ /**
40
+ * Context passed to error handlers
41
+ * @public
42
+ */
43
+ export type ErrorHandlerContext = {
44
+ core: PlanetCore;
45
+ c: GravitoContext;
46
+ error: unknown;
47
+ isProduction: boolean;
48
+ accept: string;
49
+ wantsHtml: boolean;
50
+ status: ContentfulStatusCode;
51
+ payload: ReturnType<typeof fail>;
52
+ logLevel?: 'error' | 'warn' | 'info' | 'none';
53
+ logMessage?: string;
54
+ html?: {
55
+ templates: string[];
56
+ data: Record<string, unknown>;
57
+ };
58
+ };
59
+ /**
60
+ * Interface for Gravito Orbit (Plugin/Module)
61
+ * @public
62
+ */
63
+ export interface GravitoOrbit {
64
+ install(core: PlanetCore): void | Promise<void>;
65
+ }
66
+ /**
67
+ * Configuration for booting PlanetCore
68
+ * @public
69
+ */
70
+ export type GravitoConfig = {
71
+ logger?: Logger;
72
+ config?: Record<string, unknown>;
73
+ orbits?: (new () => GravitoOrbit)[] | GravitoOrbit[];
74
+ /**
75
+ * HTTP Adapter to use. Defaults to BunNativeAdapter in Bun environments.
76
+ * In non-Bun environments, must be provided explicitly.
77
+ * @example
78
+ * ```typescript
79
+ * import { PhotonAdapter } from '@gravito/photon/adapter'
80
+ * new PlanetCore({ adapter: new PhotonAdapter() })
81
+ * ```
82
+ * See https://gravito.dev/guides/http-adapters for available adapters.
83
+ * @since 2.0.0
84
+ */
85
+ adapter?: HttpAdapter;
86
+ /**
87
+ * Dependency Injection Container. If provided, PlanetCore will use this
88
+ * container instead of creating a new one. This allows sharing a container
89
+ * between Application and PlanetCore.
90
+ * @since 2.0.0
91
+ */
92
+ container?: Container;
93
+ /**
94
+ * Observability configuration for event system.
95
+ * @since 2.1.0
96
+ */
97
+ observability?: {
98
+ /**
99
+ * Enable event system observability (metrics, tracing).
100
+ * @default false
101
+ */
102
+ enabled?: boolean;
103
+ /**
104
+ * Enable OpenTelemetry distributed tracing.
105
+ * @default false
106
+ */
107
+ tracing?: boolean;
108
+ /**
109
+ * Prefix for metric names.
110
+ * @default 'gravito_event_'
111
+ */
112
+ metricsPrefix?: string;
113
+ /**
114
+ * Prometheus metrics configuration.
115
+ */
116
+ prometheus?: {
117
+ /**
118
+ * Enable Prometheus metrics endpoint.
119
+ * @default true
120
+ */
121
+ enabled?: boolean;
122
+ /**
123
+ * Port for Prometheus metrics endpoint.
124
+ * @default 9090
125
+ */
126
+ port?: number;
127
+ /**
128
+ * Endpoint path for metrics.
129
+ * @default '/metrics'
130
+ */
131
+ endpoint?: string;
132
+ };
133
+ };
134
+ /**
135
+ * Observability provider for distributed tracing and metrics.
136
+ * If provided, this will be used instead of the default OTel setup.
137
+ * @since 2.2.0
138
+ */
139
+ observabilityProvider?: ObservabilityProvider;
140
+ };
141
+ import { Router } from './Router';
142
+ import { Encrypter } from './security/Encrypter';
143
+ import { BunHasher } from './security/Hasher';
144
+ /**
145
+ * PlanetCore - The Heart of Gravito Framework
146
+ *
147
+ * The micro-kernel that orchestrates the entire Galaxy Architecture.
148
+ * Manages HTTP routing, middleware, error handling, and orbit integration.
149
+ * @public
150
+ */
151
+ export declare class PlanetCore {
152
+ /**
153
+ * The HTTP adapter used by this core instance.
154
+ * @since 2.0.0
155
+ */
156
+ private _adapter;
157
+ /**
158
+ * Access the underlying Photon app instance.
159
+ * @deprecated Use adapter methods for new code. This property is kept for backward compatibility.
160
+ */
161
+ get app(): unknown;
162
+ /**
163
+ * Get the HTTP adapter instance.
164
+ * @since 2.0.0
165
+ */
166
+ get adapter(): HttpAdapter;
167
+ logger: Logger;
168
+ config: ConfigManager;
169
+ hooks: HookManager;
170
+ events: EventManager;
171
+ router: Router;
172
+ container: Container;
173
+ /** @deprecated Use core.container instead */
174
+ services: Map<string, unknown>;
175
+ encrypter?: Encrypter;
176
+ hasher: BunHasher;
177
+ /**
178
+ * Observability provider for distributed tracing and metrics.
179
+ * @since 2.2.0
180
+ */
181
+ observabilityProvider: ObservabilityProvider;
182
+ private providers;
183
+ private deferredProviders;
184
+ private bootedProviders;
185
+ private isShuttingDown;
186
+ /**
187
+ * Global shutdown timeout in milliseconds (D-10).
188
+ * If the entire shutdown sequence does not complete within this limit,
189
+ * a warning is logged and shutdown is force-completed so the process can exit.
190
+ */
191
+ private static readonly GLOBAL_SHUTDOWN_TIMEOUT;
192
+ /**
193
+ * Initialize observability asynchronously (metrics, tracing, Prometheus).
194
+ * This is called from constructor but doesn't block initialization.
195
+ *
196
+ * Phase 2.2 Update: Now uses the observabilityProvider passed from @gravito/monitor
197
+ * or falls back to OTel implementation if available for backward compatibility.
198
+ *
199
+ * @internal
200
+ */
201
+ private initializeObservabilityAsync;
202
+ /**
203
+ * Initialize Prometheus metrics asynchronously.
204
+ *
205
+ * @internal
206
+ * @deprecated Prometheus setup has been moved to @gravito/monitor
207
+ */
208
+ private initializePrometheusAsync;
209
+ /**
210
+ * Register a service provider to the core.
211
+ *
212
+ * Service providers are the central place to configure your application.
213
+ * They bind services to the container and bootstrap application features.
214
+ *
215
+ * @param provider - The ServiceProvider instance to register.
216
+ * @returns The PlanetCore instance for chaining.
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * core.register(new DatabaseServiceProvider());
221
+ * ```
222
+ */
223
+ register(provider: ServiceProvider): this;
224
+ /**
225
+ * Bootstrap the application by registering and booting providers.
226
+ *
227
+ * This method orchestrates the two-phase startup sequence:
228
+ * 1. Registration: Calls `register()` on all providers to bind services.
229
+ * 2. Booting: Calls `boot()` on all providers once all bindings are ready.
230
+ *
231
+ * This method must be called before the application starts handling requests.
232
+ *
233
+ * @returns Promise that resolves when bootstrapping is complete.
234
+ * @throws Error if a deferred provider has an asynchronous register method.
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * await core.bootstrap();
239
+ * ```
240
+ */
241
+ bootstrap(): Promise<void>;
242
+ /**
243
+ * Called when the application is ready to accept requests.
244
+ *
245
+ * Invokes the `onReady()` lifecycle hook on all providers.
246
+ * Called automatically at the end of `bootstrap()`.
247
+ *
248
+ * @returns Promise that resolves when all providers are ready.
249
+ *
250
+ * @example
251
+ * ```typescript
252
+ * await core.ready();
253
+ * ```
254
+ */
255
+ ready(): Promise<void>;
256
+ /**
257
+ * Gracefully shutdown the application.
258
+ *
259
+ * Invokes the `onShutdown()` lifecycle hook on all providers in reverse order (LIFO).
260
+ * Should be called when the application receives a termination signal.
261
+ *
262
+ * @returns Promise that resolves when all providers have shut down.
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * process.on('SIGTERM', () => core.shutdown());
267
+ * ```
268
+ */
269
+ shutdown(): Promise<void>;
270
+ /**
271
+ * Setup deferred provider resolution.
272
+ * Wraps container.make to auto-register deferred providers on first request.
273
+ *
274
+ * @internal
275
+ */
276
+ private setupDeferredProviderResolution;
277
+ /**
278
+ * Register a deferred provider on-demand.
279
+ *
280
+ * @internal
281
+ */
282
+ private registerDeferredProvider;
283
+ /**
284
+ * Boot a single provider if not already booted.
285
+ *
286
+ * @internal
287
+ */
288
+ private bootProvider;
289
+ constructor(options?: {
290
+ logger?: Logger;
291
+ config?: Record<string, unknown>;
292
+ adapter?: HttpAdapter;
293
+ container?: Container;
294
+ observabilityProvider?: ObservabilityProvider;
295
+ });
296
+ /**
297
+ * Setup process signal handlers for graceful shutdown
298
+ *
299
+ * @internal
300
+ */
301
+ private setupSignalHandlers;
302
+ /**
303
+ * Programmatically register an infrastructure module (Orbit).
304
+ * @since 2.0.0
305
+ *
306
+ * @param orbit - The orbit class or instance to register.
307
+ * @returns The PlanetCore instance for chaining.
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * await core.orbit(OrbitCache);
312
+ * ```
313
+ */
314
+ orbit(orbit: GravitoOrbit | (new () => GravitoOrbit)): Promise<this>;
315
+ /**
316
+ * Programmatically register a feature module (Satellite).
317
+ * Alias for register() with provider support.
318
+ * @since 2.0.0
319
+ *
320
+ * @param satellite - The provider or setup function.
321
+ * @returns The PlanetCore instance for chaining.
322
+ *
323
+ * @example
324
+ * ```typescript
325
+ * await core.use(new AuthProvider());
326
+ * ```
327
+ */
328
+ use(satellite: ServiceProvider | ((core: PlanetCore) => void | Promise<void>)): Promise<this>;
329
+ /**
330
+ * Register a global error handler for process-level exceptions.
331
+ *
332
+ * Captures `unhandledRejection` and `uncaughtException` to prevent process crashes
333
+ * and allow for graceful shutdown or error reporting.
334
+ *
335
+ * @param options - Configuration for global error handling.
336
+ * @returns A function to unregister the global error handlers.
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * const unregister = core.registerGlobalErrorHandlers({
341
+ * exitOnFatal: true
342
+ * });
343
+ * ```
344
+ */
345
+ registerGlobalErrorHandlers(options?: Omit<RegisterGlobalErrorHandlersOptions, 'core'>): () => void;
346
+ /**
347
+ * Predictive Route Warming (JIT Optimization).
348
+ *
349
+ * Pre-compiles or warms up the specified paths in the HTTP adapter to reduce
350
+ * latency for the first request to these endpoints.
351
+ *
352
+ * @param paths - List of paths to warm up.
353
+ * @returns Promise that resolves when warming is complete.
354
+ *
355
+ * @example
356
+ * ```typescript
357
+ * await core.warmup(['/api/v1/products', '/api/v1/categories']);
358
+ * ```
359
+ */
360
+ warmup(paths: string[]): Promise<void>;
361
+ /**
362
+ * Boot the application with a configuration object (IoC style default entry)
363
+ *
364
+ * @param config - The Gravito configuration object.
365
+ * @returns A Promise resolving to the booted PlanetCore instance.
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * const core = await PlanetCore.boot(config);
370
+ * ```
371
+ */
372
+ static boot(config: GravitoConfig): Promise<PlanetCore>;
373
+ /**
374
+ * Mount an Orbit (a PlanetCore instance or native app) to a specific URL path.
375
+ *
376
+ * This allows for micro-service like composition where different parts of the
377
+ * application can be developed as independent Orbits and mounted together.
378
+ *
379
+ * @param path - The URL path to mount the orbit at.
380
+ * @param orbitApp - The application instance (PlanetCore, HttpAdapter, or native app).
381
+ *
382
+ * @example
383
+ * ```typescript
384
+ * const blogOrbit = new PlanetCore();
385
+ * core.mountOrbit('/blog', blogOrbit);
386
+ * ```
387
+ */
388
+ mountOrbit(path: string, orbitApp: unknown): void;
389
+ /**
390
+ * Start the core (Liftoff).
391
+ *
392
+ * Returns a config object for `Bun.serve`.
393
+ *
394
+ * @param port - Optional port number (defaults to config or 3000).
395
+ * @returns An object compatible with Bun.serve({ ... }).
396
+ *
397
+ * @example
398
+ * ```typescript
399
+ * export default core.liftoff(3000);
400
+ * ```
401
+ */
402
+ liftoff(port?: number): {
403
+ port: number;
404
+ fetch: (request: Request, server?: unknown) => Response | Promise<Response>;
405
+ core: PlanetCore;
406
+ websocket?: HttpAdapter['websocket'];
407
+ };
408
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @fileoverview RequestContext - AsyncLocalStorage-based request context management
3
+ *
4
+ * Allows deep service layers to access request-scoped data (requestId, userId, etc.)
5
+ * without passing parameters through the call stack.
6
+ *
7
+ * @module @gravito/core/RequestContext
8
+ * @since 2.2.0
9
+ */
10
+ /**
11
+ * 請求上下文資料介面
12
+ * 包含請求相關的唯一識別碼和上下文資訊
13
+ * @public
14
+ */
15
+ export interface RequestContextData {
16
+ /** 唯一的請求識別碼 */
17
+ requestId: string;
18
+ /** 使用者 ID(可選) */
19
+ userId?: string;
20
+ /** 租戶 ID(可選) */
21
+ tenantId?: string;
22
+ /** 追蹤 ID(可選) */
23
+ traceId?: string;
24
+ /** 自訂欄位 */
25
+ [key: string]: unknown;
26
+ }
27
+ /**
28
+ * RequestContext 物件 - 管理請求上下文的 API
29
+ *
30
+ * 提供在非同步鏈中存取和設定請求上下文的方法
31
+ * @public
32
+ */
33
+ export declare const RequestContext: {
34
+ /**
35
+ * 在給定的上下文中執行函式
36
+ *
37
+ * 確保函式及其所有非同步呼叫都在同一個上下文中執行
38
+ *
39
+ * @param data - 請求上下文資料
40
+ * @param fn - 要執行的函式(可以是非同步的或同步的)
41
+ * @returns 如果函式是非同步的,返回 Promise;如果是同步的,直接返回值
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * await RequestContext.run({ requestId: 'req-123' }, async () => {
46
+ * const userId = RequestContext.get()?.userId;
47
+ * });
48
+ *
49
+ * const result = RequestContext.run({ requestId: 'req-123' }, () => {
50
+ * return 'sync-result';
51
+ * });
52
+ * ```
53
+ */
54
+ run<T>(data: RequestContextData, fn: () => T | Promise<T>): T | Promise<T>;
55
+ /**
56
+ * 獲取當前請求的上下文資料
57
+ *
58
+ * @returns 請求上下文資料,如果不在請求上下文中則返回 undefined
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const context = RequestContext.get();
63
+ * if (context) {
64
+ * console.log(context.requestId);
65
+ * }
66
+ * ```
67
+ */
68
+ get(): RequestContextData | undefined;
69
+ /**
70
+ * 獲取當前請求的上下文資料,如果不存在則拋出錯誤
71
+ *
72
+ * @returns 請求上下文資料
73
+ * @throws Error 如果不在請求上下文中
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const context = RequestContext.getOrThrow();
78
+ * console.log(context.requestId); // 保證不為 undefined
79
+ * ```
80
+ */
81
+ getOrThrow(): RequestContextData;
82
+ /**
83
+ * 在當前上下文中設定或修改值
84
+ *
85
+ * @param key - 要設定的欄位名稱
86
+ * @param value - 要設定的值
87
+ * @throws Error 如果不在請求上下文中
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * RequestContext.set('userId', 'user-456');
92
+ * const userId = RequestContext.get()?.userId; // 'user-456'
93
+ * ```
94
+ */
95
+ set(key: string, value: unknown): void;
96
+ };
97
+ export default RequestContext;
@@ -0,0 +1,36 @@
1
+ import type { GravitoMiddleware } from './http/types';
2
+ import type { ControllerClass, FormRequestClass, ResourceOptions, RouteHandler, RouteOptions, Router } from './Router';
3
+ /**
4
+ * Route definition helper.
5
+ * Represents a registered route and allows method chaining for middleware/names.
6
+ * @public
7
+ */
8
+ export declare class Route {
9
+ private router;
10
+ private method;
11
+ private path;
12
+ private options;
13
+ constructor(router: Router, method: string, path: string, options: RouteOptions);
14
+ /**
15
+ * Name the route
16
+ */
17
+ name(name: string): this;
18
+ static get(path: string, handler: RouteHandler): Route;
19
+ static get(path: string, request: FormRequestClass, handler: RouteHandler): Route;
20
+ static get(path: string, middleware: GravitoMiddleware | GravitoMiddleware[], handler: RouteHandler): Route;
21
+ static post(path: string, handler: RouteHandler): Route;
22
+ static post(path: string, request: FormRequestClass, handler: RouteHandler): Route;
23
+ static post(path: string, middleware: GravitoMiddleware | GravitoMiddleware[], handler: RouteHandler): Route;
24
+ static put(path: string, handler: RouteHandler): Route;
25
+ static put(path: string, request: FormRequestClass, handler: RouteHandler): Route;
26
+ static put(path: string, middleware: GravitoMiddleware | GravitoMiddleware[], handler: RouteHandler): Route;
27
+ static delete(path: string, handler: RouteHandler): Route;
28
+ static delete(path: string, request: FormRequestClass, handler: RouteHandler): Route;
29
+ static delete(path: string, middleware: GravitoMiddleware | GravitoMiddleware[], handler: RouteHandler): Route;
30
+ static patch(path: string, handler: RouteHandler): Route;
31
+ static patch(path: string, request: FormRequestClass, handler: RouteHandler): Route;
32
+ static patch(path: string, middleware: GravitoMiddleware | GravitoMiddleware[], handler: RouteHandler): Route;
33
+ static resource(name: string, controller: ControllerClass, options?: ResourceOptions): void;
34
+ static prefix(path: string): import("@gravito/core").RouteGroup;
35
+ static middleware(...handlers: (GravitoMiddleware | GravitoMiddleware[])[]): import("@gravito/core").RouteGroup;
36
+ }