@athosjs/pro 0.1.4-alpha

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 (94) hide show
  1. package/README.md +518 -0
  2. package/bootstrap.cjs +107 -0
  3. package/bootstrap.cjs.map +1 -0
  4. package/bootstrap.d.ts +8 -0
  5. package/bootstrap.d.ts.map +1 -0
  6. package/bootstrap.js +103 -0
  7. package/bootstrap.js.map +1 -0
  8. package/core/athos-application.cjs +362 -0
  9. package/core/athos-application.cjs.map +1 -0
  10. package/core/athos-application.d.ts +17 -0
  11. package/core/athos-application.d.ts.map +1 -0
  12. package/core/athos-application.js +357 -0
  13. package/core/athos-application.js.map +1 -0
  14. package/core/discovery.cjs +47 -0
  15. package/core/discovery.cjs.map +1 -0
  16. package/core/discovery.d.ts +6 -0
  17. package/core/discovery.d.ts.map +1 -0
  18. package/core/discovery.js +45 -0
  19. package/core/discovery.js.map +1 -0
  20. package/core/i18n.cjs +12 -0
  21. package/core/i18n.cjs.map +1 -0
  22. package/core/i18n.d.ts +4 -0
  23. package/core/i18n.d.ts.map +1 -0
  24. package/core/i18n.js +10 -0
  25. package/core/i18n.js.map +1 -0
  26. package/core/pipeline.cjs +251 -0
  27. package/core/pipeline.cjs.map +1 -0
  28. package/core/pipeline.d.ts +11 -0
  29. package/core/pipeline.d.ts.map +1 -0
  30. package/core/pipeline.js +246 -0
  31. package/core/pipeline.js.map +1 -0
  32. package/core/router-initializer.cjs +158 -0
  33. package/core/router-initializer.cjs.map +1 -0
  34. package/core/router-initializer.d.ts +26 -0
  35. package/core/router-initializer.d.ts.map +1 -0
  36. package/core/router-initializer.js +156 -0
  37. package/core/router-initializer.js.map +1 -0
  38. package/core/scanner.cjs +141 -0
  39. package/core/scanner.cjs.map +1 -0
  40. package/core/scanner.d.ts +7 -0
  41. package/core/scanner.d.ts.map +1 -0
  42. package/core/scanner.js +139 -0
  43. package/core/scanner.js.map +1 -0
  44. package/experimental.cjs +23 -0
  45. package/experimental.cjs.map +1 -0
  46. package/experimental.d.ts +9 -0
  47. package/experimental.d.ts.map +1 -0
  48. package/experimental.js +5 -0
  49. package/experimental.js.map +1 -0
  50. package/functions.cjs +67 -0
  51. package/functions.cjs.map +1 -0
  52. package/functions.d.ts +10 -0
  53. package/functions.d.ts.map +1 -0
  54. package/functions.js +62 -0
  55. package/functions.js.map +1 -0
  56. package/http-profile.cjs +48 -0
  57. package/http-profile.cjs.map +1 -0
  58. package/http-profile.d.ts +6 -0
  59. package/http-profile.d.ts.map +1 -0
  60. package/http-profile.js +44 -0
  61. package/http-profile.js.map +1 -0
  62. package/index.cjs +281 -0
  63. package/index.cjs.map +1 -0
  64. package/index.d.ts +23 -0
  65. package/index.d.ts.map +1 -0
  66. package/index.js +23 -0
  67. package/index.js.map +1 -0
  68. package/observability.cjs +191 -0
  69. package/observability.cjs.map +1 -0
  70. package/observability.d.ts +8 -0
  71. package/observability.d.ts.map +1 -0
  72. package/observability.js +188 -0
  73. package/observability.js.map +1 -0
  74. package/package.json +42 -0
  75. package/policies.cjs +30 -0
  76. package/policies.cjs.map +1 -0
  77. package/policies.d.ts +21 -0
  78. package/policies.d.ts.map +1 -0
  79. package/policies.js +27 -0
  80. package/policies.js.map +1 -0
  81. package/resilience.cjs +280 -0
  82. package/resilience.cjs.map +1 -0
  83. package/resilience.d.ts +6 -0
  84. package/resilience.d.ts.map +1 -0
  85. package/resilience.js +276 -0
  86. package/resilience.js.map +1 -0
  87. package/security.cjs +142 -0
  88. package/security.cjs.map +1 -0
  89. package/security.d.ts +11 -0
  90. package/security.d.ts.map +1 -0
  91. package/security.js +136 -0
  92. package/security.js.map +1 -0
  93. package/types.d.ts +3 -0
  94. package/types.d.ts.map +1 -0
package/bootstrap.js ADDED
@@ -0,0 +1,103 @@
1
+ import { profileStart, profileEnd } from '@athosjs/core';
2
+ import { createHttpApplication } from '@athosjs/http';
3
+ import { normalizeConfiguredProMiddlewareInput } from './core/pipeline.js';
4
+ import { ProApplication } from './functions.js';
5
+ import { resolveProHttpProfile } from './http-profile.js';
6
+ import { attachProObservability } from './observability.js';
7
+
8
+ class ProBootstrap {
9
+ static async create(options) {
10
+ const result = await ProApplication.create(options);
11
+ await result.kernel.start();
12
+ return result;
13
+ }
14
+ static async createHttp(options) {
15
+ const setup = await ProApplication.createSetup(options);
16
+ const setupStartedAt = profileStart(setup.builder.profiler);
17
+ const httpProfile = resolveProHttpProfile(options.http?.profile);
18
+ if (!setup.builder.capabilities.has("http-server")) {
19
+ setup.builder.capability("http-server", {
20
+ provider: "pro"
21
+ }, "pro");
22
+ }
23
+ const kernel = setup.builder.build();
24
+ kernel.container = setup.container;
25
+ profileEnd(kernel.profiler, "pro.bootstrap.setup", setupStartedAt);
26
+ const createHttpStartedAt = profileStart(kernel.profiler);
27
+ const app = createHttpApplication(kernel, {
28
+ ...httpProfile.router || options.http?.router ? {
29
+ router: {
30
+ ...httpProfile.router ?? {},
31
+ ...options.http?.router ?? {}
32
+ }
33
+ } : {}
34
+ });
35
+ profileEnd(kernel.profiler, "pro.bootstrap.create_http_app", createHttpStartedAt);
36
+ if (options.observability !== false) {
37
+ const observabilityStartedAt = profileStart(kernel.profiler);
38
+ attachProObservability(app, {
39
+ ...httpProfile.observability ?? {},
40
+ ...typeof options.observability === "object" ? options.observability : {},
41
+ ...options.logger ? {
42
+ logger: options.logger
43
+ } : {},
44
+ ...options.telemetrySink ? {
45
+ telemetrySink: options.telemetrySink
46
+ } : {}
47
+ });
48
+ profileEnd(kernel.profiler, "pro.bootstrap.attach_observability", observabilityStartedAt);
49
+ }
50
+ if (options.middlewares) {
51
+ const middlewaresStartedAt = profileStart(kernel.profiler);
52
+ for (const middleware of options.middlewares){
53
+ app.use(await normalizeConfiguredProMiddlewareInput(setup.container, middleware));
54
+ }
55
+ profileEnd(kernel.profiler, "pro.bootstrap.middlewares", middlewaresStartedAt);
56
+ }
57
+ if (options.validation && options.validation.adapter) {
58
+ const validationStartedAt = profileStart(kernel.profiler);
59
+ app.setValidation({
60
+ adapter: options.validation.adapter
61
+ });
62
+ profileEnd(kernel.profiler, "pro.bootstrap.validation", validationStartedAt);
63
+ }
64
+ if (options.configure) {
65
+ const configureStartedAt = profileStart(kernel.profiler);
66
+ await options.configure(app, {
67
+ ...setup,
68
+ kernel
69
+ });
70
+ profileEnd(kernel.profiler, "pro.bootstrap.configure", configureStartedAt);
71
+ }
72
+ if (options.start) {
73
+ const startStartedAt = profileStart(kernel.profiler);
74
+ await kernel.start();
75
+ profileEnd(kernel.profiler, "pro.bootstrap.start", startStartedAt);
76
+ }
77
+ return {
78
+ ...setup,
79
+ kernel,
80
+ app,
81
+ httpProfile: {
82
+ ...httpProfile,
83
+ ...httpProfile.router || options.http?.router ? {
84
+ router: {
85
+ ...httpProfile.router ?? {},
86
+ ...options.http?.router ?? {}
87
+ }
88
+ } : {},
89
+ ...httpProfile.observability || typeof options.observability === "object" ? {
90
+ observability: {
91
+ ...httpProfile.observability ?? {},
92
+ ...typeof options.observability === "object" ? options.observability : {}
93
+ }
94
+ } : {}
95
+ }
96
+ };
97
+ }
98
+ }
99
+ const createStartedProApplication = ProBootstrap.create;
100
+ const createProHttpApplication = ProBootstrap.createHttp;
101
+
102
+ export { ProBootstrap, createProHttpApplication, createStartedProApplication };
103
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sources":["../../../packages/pro/src/bootstrap.ts"],"sourcesContent":["import { profileEnd, profileStart } from \"@athosjs/core\";\nimport { createHttpApplication } from \"@athosjs/http\";\nimport { normalizeConfiguredProMiddlewareInput } from \"./core/pipeline\";\nimport { ProApplication } from \"./functions\";\nimport { resolveProHttpProfile } from \"./http-profile\";\nimport { attachProObservability } from \"./observability\";\nimport type {\n\tProApplicationResult,\n\tProApplicationSetupOptions,\n\tProHttpApplicationOptions,\n\tProHttpApplicationResult,\n} from \"./types\";\n\nexport class ProBootstrap {\n\tstatic async create(options: ProApplicationSetupOptions): Promise<ProApplicationResult> {\n\t\tconst result = await ProApplication.create(options);\n\t\tawait (result as any).kernel.start();\n\t\treturn result;\n\t}\n\n\tstatic async createHttp(options: ProHttpApplicationOptions): Promise<ProHttpApplicationResult> {\n\t\tconst setup = await ProApplication.createSetup(options);\n\t\tconst setupStartedAt = profileStart((setup as any).builder.profiler);\n\t\tconst httpProfile = resolveProHttpProfile(options.http?.profile);\n\n\t\tif (!(setup as any).builder.capabilities.has(\"http-server\")) {\n\t\t\t(setup as any).builder.capability(\"http-server\", { provider: \"pro\" }, \"pro\");\n\t\t}\n\n\t\tconst kernel = (setup as any).builder.build();\n\t\t(kernel as any).container = (setup as any).container;\n\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.setup\", setupStartedAt);\n\t\tconst createHttpStartedAt = profileStart(kernel.profiler);\n\t\tconst app = createHttpApplication(kernel, {\n\t\t\t...(httpProfile.router || options.http?.router\n\t\t\t\t? {\n\t\t\t\t\t\trouter: {\n\t\t\t\t\t\t\t...((httpProfile.router ?? {}) as any),\n\t\t\t\t\t\t\t...((options.http?.router ?? {}) as any),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t});\n\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.create_http_app\", createHttpStartedAt);\n\n\t\tif (options.observability !== false) {\n\t\t\tconst observabilityStartedAt = profileStart(kernel.profiler);\n\t\t\tattachProObservability(app, {\n\t\t\t\t...(httpProfile.observability ?? {}),\n\t\t\t\t...(typeof options.observability === \"object\" ? options.observability : {}),\n\t\t\t\t...(options.logger ? { logger: options.logger } : {}),\n\t\t\t\t...(options.telemetrySink ? { telemetrySink: options.telemetrySink } : {}),\n\t\t\t});\n\t\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.attach_observability\", observabilityStartedAt);\n\t\t}\n\n\t\tif (options.middlewares) {\n\t\t\tconst middlewaresStartedAt = profileStart(kernel.profiler);\n\t\t\tfor (const middleware of options.middlewares) {\n\t\t\t\tapp.use(await normalizeConfiguredProMiddlewareInput((setup as any).container, middleware));\n\t\t\t}\n\t\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.middlewares\", middlewaresStartedAt);\n\t\t}\n\n\t\tif (options.validation && (options.validation as any).adapter) {\n\t\t\tconst validationStartedAt = profileStart(kernel.profiler);\n\t\t\tapp.setValidation({ adapter: (options.validation as any).adapter });\n\t\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.validation\", validationStartedAt);\n\t\t}\n\n\t\tif (options.configure) {\n\t\t\tconst configureStartedAt = profileStart(kernel.profiler);\n\t\t\tawait options.configure(app, { ...(setup as any), kernel });\n\t\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.configure\", configureStartedAt);\n\t\t}\n\n\t\tif (options.start) {\n\t\t\tconst startStartedAt = profileStart(kernel.profiler);\n\t\t\tawait kernel.start();\n\t\t\tprofileEnd(kernel.profiler, \"pro.bootstrap.start\", startStartedAt);\n\t\t}\n\n\t\treturn {\n\t\t\t...(setup as any),\n\t\t\tkernel,\n\t\t\tapp,\n\t\t\thttpProfile: {\n\t\t\t\t...httpProfile,\n\t\t\t\t...(httpProfile.router || options.http?.router\n\t\t\t\t\t? {\n\t\t\t\t\t\t\trouter: {\n\t\t\t\t\t\t\t\t...((httpProfile.router ?? {}) as any),\n\t\t\t\t\t\t\t\t...((options.http?.router ?? {}) as any),\n\t\t\t\t\t\t\t} as any,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(httpProfile.observability || typeof options.observability === \"object\"\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tobservability: {\n\t\t\t\t\t\t\t\t...(httpProfile.observability ?? {}),\n\t\t\t\t\t\t\t\t...(typeof options.observability === \"object\" ? options.observability : {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t} as ProHttpApplicationResult;\n\t}\n}\n\nexport const createStartedProApplication = ProBootstrap.create;\nexport const createProHttpApplication = ProBootstrap.createHttp;\n"],"names":["ProBootstrap","create","options","result","ProApplication","kernel","start","createHttp","setup","createSetup","setupStartedAt","profileStart","builder","profiler","httpProfile","resolveProHttpProfile","http","profile","capabilities","has","capability","provider","build","container","profileEnd","createHttpStartedAt","app","createHttpApplication","router","observability","observabilityStartedAt","attachProObservability","logger","telemetrySink","middlewares","middlewaresStartedAt","middleware","use","normalizeConfiguredProMiddlewareInput","validation","adapter","validationStartedAt","setValidation","configure","configureStartedAt","startStartedAt","createStartedProApplication","createProHttpApplication"],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ 'use strict';
2
+
3
+ var config = require('@athosjs/config');
4
+ var core = require('@athosjs/core');
5
+ var http = require('@athosjs/http');
6
+ var observability = require('@athosjs/observability');
7
+ var runtime = require('@athosjs/runtime');
8
+ var functions = require('../functions.cjs');
9
+ var discovery = require('./discovery.cjs');
10
+ var pipeline = require('./pipeline.cjs');
11
+ var i18n = require('./i18n.cjs');
12
+ var routerInitializer = require('./router-initializer.cjs');
13
+
14
+ const applicationMetadataRegistry = new Map();
15
+ function AthosApplicationDecorator(options = {}) {
16
+ return (target)=>{
17
+ applicationMetadataRegistry.set(target, options);
18
+ };
19
+ }
20
+ function getAthosApplicationOptions(target) {
21
+ if (typeof target !== "function") {
22
+ return undefined;
23
+ }
24
+ return applicationMetadataRegistry.get(target);
25
+ }
26
+ function compileAthosApplicationManifest(target) {
27
+ const metadataOptions = getAthosApplicationOptions(target);
28
+ return {
29
+ controllers: [
30
+ ...metadataOptions?.controllers ?? []
31
+ ],
32
+ providers: [
33
+ ...metadataOptions?.providers?.filter((provider)=>typeof provider === "function") ?? []
34
+ ]
35
+ };
36
+ }
37
+ class AthosApplication {
38
+ static logger = new observability.ConsoleAthosLogger();
39
+ static async bootstrap(appClassOrOptions, optionsOrUndefined) {
40
+ const hasClass = arguments.length === 2 && typeof appClassOrOptions === "function";
41
+ const appClass = hasClass ? appClassOrOptions : null;
42
+ let options = hasClass ? optionsOrUndefined : appClassOrOptions;
43
+ const runtimeResult = options.runtime ? {
44
+ name: options.runtime
45
+ } : runtime.detectRuntime();
46
+ const runtime$1 = runtimeResult.name === "unknown" ? "node" : runtimeResult.name;
47
+ const loadedConfig = await core.ConfigLoader.load();
48
+ const resolvedConfig = loadedConfig ? await resolveConfigForRuntime(loadedConfig, runtime$1) : null;
49
+ if (resolvedConfig) {
50
+ options = {
51
+ ...resolvedConfig.config,
52
+ ...options,
53
+ port: options.port ?? resolvedConfig.config.port ?? 3000,
54
+ hostname: options.hostname ?? resolvedConfig.config.hostname
55
+ };
56
+ core.setAthosEnv(resolvedConfig.env ?? resolvedConfig.rawEnv);
57
+ }
58
+ core.setAthosOptions(options);
59
+ if (options.logLevel) {
60
+ AthosApplication.logger = new observability.ConsoleAthosLogger({
61
+ level: options.logLevel
62
+ });
63
+ } else if (typeof options.logger === "object" && "level" in options.logger) {
64
+ AthosApplication.logger = new observability.ConsoleAthosLogger({
65
+ level: options.logger.level
66
+ });
67
+ } else if (typeof options.logger === "function" || typeof options.logger === "object" && options.logger !== null) {
68
+ AthosApplication.logger = options.logger;
69
+ }
70
+ AthosApplication.logger.trace("Bootstrapping Athos application...");
71
+ const metadataOptions = appClass ? applicationMetadataRegistry.get(appClass) : undefined;
72
+ const discoveryEnabled = options.discovery?.enabled ?? resolvedConfig?.config.discovery?.enabled ?? false;
73
+ const discoveryRoot = options.discovery?.root ?? resolvedConfig?.config.discovery?.root;
74
+ const discoveryDirectories = options.discovery?.includeDirectories ?? resolvedConfig?.config.discovery?.includeDirectories;
75
+ if (discoveryEnabled && !discoveryRoot) {
76
+ throw new Error("Athos discovery requires an explicit discovery.root. Implicit process.cwd() scanning is not supported.");
77
+ }
78
+ const discovered = options.manifest ?? (discoveryEnabled ? await discovery.ComponentDiscovery.discover({
79
+ root: discoveryRoot,
80
+ includeDirectories: discoveryDirectories
81
+ }) : {
82
+ controllers: [],
83
+ providers: []
84
+ });
85
+ const discovery$1 = {
86
+ controllers: [
87
+ ...metadataOptions?.controllers ?? [],
88
+ ...discovered.controllers
89
+ ],
90
+ providers: [
91
+ ...metadataOptions?.providers?.filter((provider)=>typeof provider === "function") ?? [],
92
+ ...discovered.providers
93
+ ]
94
+ };
95
+ AthosApplication.logger.debug(`Prepared ${discovery$1.controllers.length} controllers and ${discovery$1.providers.length} providers.`);
96
+ AthosApplication.logger.trace("Creating pro application kernel...");
97
+ const proResult = await functions.ProApplication.create({
98
+ runtime: {
99
+ name: runtime$1
100
+ },
101
+ providers: [
102
+ ...discovery$1.providers,
103
+ ...discovery$1.controllers
104
+ ],
105
+ manifests: [
106
+ ...normalizeApplicationImports(metadataOptions?.imports),
107
+ ...options.manifests ?? []
108
+ ]
109
+ });
110
+ const kernel = proResult.kernel;
111
+ const container = proResult.container;
112
+ AthosApplication.logger.trace("Initializing HTTP application layer...");
113
+ const httpApp = http.createHttpApplication(kernel);
114
+ const serverConfig = options.server;
115
+ if (serverConfig?.cors) {
116
+ AthosApplication.logger.trace("Enabling built-in CORS support...");
117
+ const corsModule = await import('@athosjs/http');
118
+ const corsOptions = typeof serverConfig.cors === "object" ? serverConfig.cors : {};
119
+ httpApp.use(corsModule.createCorsMiddleware(corsOptions));
120
+ }
121
+ if (serverConfig?.compression) {
122
+ AthosApplication.logger.trace("Enabling built-in Compression support...");
123
+ const { compressionMiddleware } = await import('@athosjs/http');
124
+ httpApp.use(compressionMiddleware);
125
+ }
126
+ if (serverConfig?.onError) {
127
+ const userOnError = serverConfig.onError;
128
+ httpApp.setHooks({
129
+ onError: (context, error)=>userOnError({
130
+ context,
131
+ error
132
+ })
133
+ });
134
+ }
135
+ if (options.i18n) {
136
+ AthosApplication.logger.trace("Registering configured i18n middleware...");
137
+ await i18n.registerConfiguredI18n(httpApp, options.i18n);
138
+ }
139
+ if (options.middlewares) {
140
+ AthosApplication.logger.trace(`Registering ${options.middlewares.length} global middlewares...`);
141
+ for (const middleware of options.middlewares){
142
+ httpApp.use(await pipeline.normalizeConfiguredProMiddlewareInput(container, middleware));
143
+ }
144
+ }
145
+ if (options.policies) {
146
+ AthosApplication.logger.trace(`Registering ${options.policies.length} global policies...`);
147
+ for (const policy of options.policies){
148
+ httpApp.policy(await pipeline.normalizeProPolicyInput(container, policy));
149
+ }
150
+ }
151
+ if (options.interceptors) {
152
+ AthosApplication.logger.trace(`Registering ${options.interceptors.length} global interceptors...`);
153
+ for (const interceptor of options.interceptors){
154
+ httpApp.intercept(await pipeline.normalizeProInterceptorInput(container, interceptor));
155
+ }
156
+ }
157
+ if (options.validation && typeof options.validation === "object") {
158
+ httpApp.setValidation(options.validation);
159
+ }
160
+ AthosApplication.logger.trace("Binding discovered routes to router...");
161
+ routerInitializer.RouterInitializer.initialize(httpApp, container, discovery$1.controllers);
162
+ if (options.openapi) {
163
+ AthosApplication.logger.trace("Registering OpenAPI routes from athos.config...");
164
+ const { registerOpenApiRoutes } = await import('@athosjs/openapi');
165
+ registerOpenApiRoutes(httpApp, normalizeConfiguredOpenApiOptions(options.openapi, {
166
+ controllers: discovery$1.controllers
167
+ }));
168
+ }
169
+ await kernel.start();
170
+ const server = await AthosApplication.startServer(httpApp, runtime$1, options);
171
+ setupGracefulShutdown(server, kernel);
172
+ return server;
173
+ }
174
+ static async startServer(app, runtime, options) {
175
+ let serveFn;
176
+ try {
177
+ if (runtime === "node") {
178
+ const adapter = await import('@athosjs/runtime/node');
179
+ serveFn = adapter.serve;
180
+ } else if (runtime === "bun") {
181
+ const adapter = await import('@athosjs/runtime/bun');
182
+ serveFn = adapter.serve;
183
+ } else if (runtime === "deno") {
184
+ const adapter = await import('@athosjs/runtime/deno');
185
+ serveFn = adapter.serve;
186
+ } else {
187
+ throw new Error(`Unsupported runtime: ${runtime}`);
188
+ }
189
+ } catch (err) {
190
+ AthosApplication.logger.error(`Failed to load adapter for runtime '${runtime}'.`);
191
+ throw err;
192
+ }
193
+ if (!serveFn) {
194
+ throw new Error(`The runtime adapter for '${runtime}' does not export a 'serve' function.`);
195
+ }
196
+ const server = serveFn(app, {
197
+ port: options.port,
198
+ hostname: options.hostname,
199
+ ...runtime === "node" && options.nodeAdapter ? {
200
+ adapter: options.nodeAdapter
201
+ } : {},
202
+ ...runtime === "node" && options.server?.maxHeaderBytes !== undefined ? {
203
+ maxHeaderBytes: options.server.maxHeaderBytes
204
+ } : {}
205
+ });
206
+ AthosApplication.logger.info(`Application started on port ${options.port} (${runtime})`);
207
+ logOpenApiEndpoints(AthosApplication.logger, options.openapi, options.hostname, options.port);
208
+ return server;
209
+ }
210
+ static async run(appClassOrOptions, optionsOrUndefined) {
211
+ try {
212
+ const hasClass = arguments.length === 2 && typeof appClassOrOptions === "function";
213
+ if (hasClass) {
214
+ return await AthosApplication.bootstrap(appClassOrOptions, optionsOrUndefined);
215
+ }
216
+ return await AthosApplication.bootstrap(appClassOrOptions ?? {});
217
+ } catch (error) {
218
+ core.printAthosError(error);
219
+ throw error;
220
+ }
221
+ }
222
+ static async compile(appClassOrManifest) {
223
+ if (!appClassOrManifest) {
224
+ throw new Error("Athos.compile() requires an explicit application class or manifest. Implicit filesystem discovery is no longer supported.");
225
+ }
226
+ if (typeof appClassOrManifest === "object" && appClassOrManifest !== null && ("controllers" in appClassOrManifest || "providers" in appClassOrManifest)) {
227
+ return {
228
+ controllers: [
229
+ ...appClassOrManifest.controllers ?? []
230
+ ],
231
+ providers: [
232
+ ...appClassOrManifest.providers ?? []
233
+ ]
234
+ };
235
+ }
236
+ if (typeof appClassOrManifest === "function") {
237
+ return compileAthosApplicationManifest(appClassOrManifest);
238
+ }
239
+ throw new Error("Athos.compile() received an unsupported input. Pass an application class decorated with @AthosApplication() or an explicit manifest.");
240
+ }
241
+ }
242
+ function normalizeConfiguredOpenApiOptions(config, defaultSource) {
243
+ const explorer = config.explorer;
244
+ const docsPath = explorer?.path ?? config.docsPath ?? "/docs";
245
+ const documentPath = config.documentPath ?? (explorer?.enabled === false ? "/openapi.json" : deriveOpenApiDocumentPathFromDocsPath(docsPath));
246
+ return {
247
+ ...config,
248
+ documentPath,
249
+ source: config.source ?? defaultSource,
250
+ explorer: explorer?.enabled === false ? false : explorer ? {
251
+ ...explorer,
252
+ path: docsPath,
253
+ documentPath: explorer.documentPath ?? documentPath
254
+ } : {
255
+ path: docsPath,
256
+ documentPath
257
+ }
258
+ };
259
+ }
260
+ function normalizeApplicationImports(imports) {
261
+ if (!imports || imports.length === 0) {
262
+ return [];
263
+ }
264
+ return imports.filter((entry)=>entry !== undefined && entry !== null);
265
+ }
266
+ function logOpenApiEndpoints(logger, openapi, hostname, port) {
267
+ if (!openapi) {
268
+ return;
269
+ }
270
+ const docsEnabled = openapi.explorer?.enabled !== false;
271
+ const docsPath = openapi.explorer?.path ?? openapi.docsPath ?? "/docs";
272
+ const documentPath = openapi.documentPath ?? (docsEnabled ? deriveOpenApiDocumentPathFromDocsPath(docsPath) : "/openapi.json");
273
+ const baseUrl = createBaseUrl(hostname, port);
274
+ const documentUrl = new URL(documentPath, baseUrl).toString();
275
+ if (docsEnabled) {
276
+ logger.info(`OpenAPI docs available at ${new URL(docsPath, baseUrl).toString()}`);
277
+ }
278
+ logger.info(`OpenAPI JSON available at ${documentUrl}`);
279
+ }
280
+ function createBaseUrl(hostname, port) {
281
+ const resolvedHostname = normalizePublicHostname(hostname);
282
+ const resolvedPort = port ?? 3000;
283
+ return `http://${resolvedHostname}:${resolvedPort}`;
284
+ }
285
+ function setupGracefulShutdown(server, kernel) {
286
+ const timeoutMs = 30_000;
287
+ let shuttingDown = false;
288
+ const shutdown = async ()=>{
289
+ if (shuttingDown) return;
290
+ shuttingDown = true;
291
+ const timer = setTimeout(()=>{
292
+ process.stderr.write("Graceful shutdown timed out, forcing exit.\n");
293
+ process.exit(1);
294
+ }, timeoutMs);
295
+ try {
296
+ await Promise.all([
297
+ server.close(),
298
+ kernel.shutdown()
299
+ ]);
300
+ } catch {
301
+ process.exit(1);
302
+ } finally{
303
+ clearTimeout(timer);
304
+ process.exit(0);
305
+ }
306
+ };
307
+ process.on("SIGTERM", shutdown);
308
+ process.on("SIGINT", shutdown);
309
+ }
310
+ function normalizePublicHostname(hostname) {
311
+ if (!hostname || hostname === "0.0.0.0" || hostname === "::") {
312
+ return "localhost";
313
+ }
314
+ return hostname.includes(":") && !hostname.startsWith("[") ? `[${hostname}]` : hostname;
315
+ }
316
+ function deriveOpenApiDocumentPathFromDocsPath(docsPath) {
317
+ const normalized = docsPath === "/" ? "/" : docsPath.replace(/\/$/, "");
318
+ return `${normalized}.json`;
319
+ }
320
+ async function resolveConfigForRuntime(loadedConfig, runtime$1) {
321
+ try {
322
+ if (runtime$1 === "node") {
323
+ const { ensureNodeEnvFilesLoaded } = await import('@athosjs/runtime/node');
324
+ ensureNodeEnvFilesLoaded();
325
+ }
326
+ const resolved = await config.resolveAthosConfig(loadedConfig ?? {}, {
327
+ env: runtime.readRuntimeEnvRecord(),
328
+ runtime: {
329
+ name: runtime$1,
330
+ provider: runtime$1
331
+ }
332
+ });
333
+ const sourceUrl = readConfigSourceUrl(loadedConfig);
334
+ if (sourceUrl && resolved.config.i18n && !resolved.config.i18n.baseUrl) {
335
+ return {
336
+ ...resolved,
337
+ config: {
338
+ ...resolved.config,
339
+ i18n: {
340
+ ...resolved.config.i18n,
341
+ baseUrl: sourceUrl
342
+ }
343
+ }
344
+ };
345
+ }
346
+ return resolved;
347
+ } catch (error) {
348
+ throw core.formatAthosEnvValidationError(error);
349
+ }
350
+ }
351
+ function readConfigSourceUrl(input) {
352
+ if ((typeof input !== "object" || input === null) && typeof input !== "function") {
353
+ return undefined;
354
+ }
355
+ return input[core.ATHOS_CONFIG_SOURCE_URL];
356
+ }
357
+
358
+ exports.AthosApplication = AthosApplication;
359
+ exports.AthosApplicationDecorator = AthosApplicationDecorator;
360
+ exports.compileAthosApplicationManifest = compileAthosApplicationManifest;
361
+ exports.getAthosApplicationOptions = getAthosApplicationOptions;
362
+ //# sourceMappingURL=athos-application.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"athos-application.cjs","sources":["../../../../packages/pro/src/core/athos-application.ts"],"sourcesContent":["import type { HavenOpenApiConfig } from \"@athosjs/config\";\nimport { resolveAthosConfig } from \"@athosjs/config\";\nimport {\n\tATHOS_CONFIG_SOURCE_URL,\n\tConfigLoader,\n\tformatAthosEnvValidationError,\n\tprintAthosError,\n\tsetAthosEnv,\n\tsetAthosOptions,\n} from \"@athosjs/core\";\nimport { createHttpApplication } from \"@athosjs/http\";\nimport type { Constructable as Constructor } from \"@athosjs/metadata\";\nimport { ConsoleAthosLogger, type AthosLogger, type LogLevel } from \"@athosjs/observability\";\nimport { detectRuntime, readRuntimeEnvRecord, type SupportedRuntime } from \"@athosjs/runtime\";\nimport type { AthosApplicationOptions, AthosManifest, AthosRunOptions } from \"@athosjs/types/pro\";\nimport { ProApplication } from \"../functions\";\nimport { ComponentDiscovery } from \"./discovery\";\nimport {\n\tnormalizeConfiguredProMiddlewareInput,\n\tnormalizeProInterceptorInput,\n\tnormalizeProPolicyInput,\n} from \"./pipeline\";\nimport { registerConfiguredI18n } from \"./i18n\";\nimport { RouterInitializer } from \"./router-initializer\";\n\nexport type { AthosApplicationOptions, AthosManifest, AthosRunOptions };\nconst applicationMetadataRegistry = new Map<any, AthosApplicationOptions>();\n\nexport function AthosApplicationDecorator(options: AthosApplicationOptions = {}): ClassDecorator {\n\treturn (target: any) => {\n\t\tapplicationMetadataRegistry.set(target, options);\n\t};\n}\n\nexport function getAthosApplicationOptions(target: unknown): AthosApplicationOptions | undefined {\n\tif (typeof target !== \"function\") {\n\t\treturn undefined;\n\t}\n\n\treturn applicationMetadataRegistry.get(target);\n}\n\nexport function compileAthosApplicationManifest(target: unknown): AthosManifest {\n\tconst metadataOptions = getAthosApplicationOptions(target);\n\n\treturn {\n\t\tcontrollers: [...(metadataOptions?.controllers ?? [])],\n\t\tproviders: [\n\t\t\t...(metadataOptions?.providers?.filter(\n\t\t\t\t(provider): provider is Constructor<any> => typeof provider === \"function\",\n\t\t\t) ?? []),\n\t\t],\n\t};\n}\n\nexport class AthosApplication {\n\tstatic logger: AthosLogger = new ConsoleAthosLogger();\n\n\tstatic async bootstrap(options: AthosRunOptions): Promise<any>;\n\tstatic async bootstrap(appClass: any, options: AthosRunOptions): Promise<any>;\n\tstatic async bootstrap(appClassOrOptions: any, optionsOrUndefined?: AthosRunOptions): Promise<any> {\n\t\tconst hasClass = arguments.length === 2 && typeof appClassOrOptions === \"function\";\n\t\tconst appClass = hasClass ? appClassOrOptions : null;\n\t\tlet options = hasClass ? optionsOrUndefined! : appClassOrOptions;\n\n\t\tconst runtimeResult = options.runtime ? { name: options.runtime } : detectRuntime();\n\t\tconst runtime = runtimeResult.name === \"unknown\" ? \"node\" : runtimeResult.name;\n\n\t\tconst loadedConfig = await ConfigLoader.load();\n\t\tconst resolvedConfig = loadedConfig ? await resolveConfigForRuntime(loadedConfig, runtime) : null;\n\n\t\tif (resolvedConfig) {\n\t\t\toptions = {\n\t\t\t\t...resolvedConfig.config,\n\t\t\t\t...options,\n\t\t\t\tport: options.port ?? resolvedConfig.config.port ?? 3000,\n\t\t\t\thostname: options.hostname ?? resolvedConfig.config.hostname,\n\t\t\t} as any;\n\t\t\tsetAthosEnv((resolvedConfig.env ?? resolvedConfig.rawEnv) as Readonly<Record<string, unknown>>);\n\t\t}\n\t\tsetAthosOptions(options as Readonly<Record<string, unknown>>);\n\n\t\tif (options.logLevel) {\n\t\t\tAthosApplication.logger = new ConsoleAthosLogger({ level: options.logLevel });\n\t\t} else if (typeof options.logger === \"object\" && \"level\" in options.logger) {\n\t\t\tAthosApplication.logger = new ConsoleAthosLogger({ level: options.logger.level as LogLevel });\n\t\t} else if (\n\t\t\ttypeof options.logger === \"function\" ||\n\t\t\t(typeof options.logger === \"object\" && options.logger !== null)\n\t\t) {\n\t\t\tAthosApplication.logger = options.logger as AthosLogger;\n\t\t}\n\n\t\tAthosApplication.logger.trace(\"Bootstrapping Athos application...\");\n\n\t\tconst metadataOptions = appClass ? applicationMetadataRegistry.get(appClass) : undefined;\n\t\tconst discoveryEnabled =\n\t\t\t(options.discovery as any)?.enabled ?? (resolvedConfig?.config.discovery as any)?.enabled ?? false;\n\t\tconst discoveryRoot = options.discovery?.root ?? resolvedConfig?.config.discovery?.root;\n\t\tconst discoveryDirectories =\n\t\t\t(options.discovery as any)?.includeDirectories ?? (resolvedConfig?.config.discovery as any)?.includeDirectories;\n\n\t\tif (discoveryEnabled && !discoveryRoot) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Athos discovery requires an explicit discovery.root. Implicit process.cwd() scanning is not supported.\",\n\t\t\t);\n\t\t}\n\n\t\tconst discovered =\n\t\t\toptions.manifest ??\n\t\t\t(discoveryEnabled\n\t\t\t\t? await ComponentDiscovery.discover({\n\t\t\t\t\t\troot: discoveryRoot!,\n\t\t\t\t\t\tincludeDirectories: discoveryDirectories,\n\t\t\t\t\t})\n\t\t\t\t: { controllers: [], providers: [] });\n\t\tconst discovery = {\n\t\t\tcontrollers: [...(metadataOptions?.controllers ?? []), ...discovered.controllers],\n\t\t\tproviders: [\n\t\t\t\t...(metadataOptions?.providers?.filter(\n\t\t\t\t\t(provider): provider is Constructor<any> => typeof provider === \"function\",\n\t\t\t\t) ?? []),\n\t\t\t\t...discovered.providers,\n\t\t\t],\n\t\t};\n\t\tAthosApplication.logger.debug(\n\t\t\t`Prepared ${discovery.controllers.length} controllers and ${discovery.providers.length} providers.`,\n\t\t);\n\n\t\tAthosApplication.logger.trace(\"Creating pro application kernel...\");\n\t\tconst proResult = await ProApplication.create({\n\t\t\truntime: { name: runtime } as any,\n\t\t\tproviders: [...discovery.providers, ...discovery.controllers] as any,\n\t\t\tmanifests: [...normalizeApplicationImports(metadataOptions?.imports), ...(options.manifests ?? [])],\n\t\t});\n\t\tconst kernel = (proResult as any).kernel;\n\t\tconst container = (proResult as any).container;\n\n\t\tAthosApplication.logger.trace(\"Initializing HTTP application layer...\");\n\t\tconst httpApp = createHttpApplication(kernel);\n\t\tconst serverConfig = (options as any).server as AthosRunOptions[\"server\"] | undefined;\n\n\t\tif (serverConfig?.cors) {\n\t\t\tAthosApplication.logger.trace(\"Enabling built-in CORS support...\");\n\t\t\tconst corsModule = await import(\"@athosjs/http\");\n\t\t\tconst corsOptions = typeof serverConfig.cors === \"object\" ? serverConfig.cors : {};\n\t\t\thttpApp.use(corsModule.createCorsMiddleware(corsOptions as any));\n\t\t}\n\n\t\tif (serverConfig?.compression) {\n\t\t\tAthosApplication.logger.trace(\"Enabling built-in Compression support...\");\n\t\t\tconst { compressionMiddleware } = await import(\"@athosjs/http\");\n\t\t\thttpApp.use(compressionMiddleware);\n\t\t}\n\n\t\tif (serverConfig?.onError) {\n\t\t\tconst userOnError = serverConfig.onError;\n\t\t\thttpApp.setHooks({\n\t\t\t\tonError: (context: any, error: any) => userOnError({ context, error }),\n\t\t\t});\n\t\t}\n\n\t\tif ((options as any).i18n) {\n\t\t\tAthosApplication.logger.trace(\"Registering configured i18n middleware...\");\n\t\t\tawait registerConfiguredI18n(httpApp, (options as any).i18n);\n\t\t}\n\n\t\tif (options.middlewares) {\n\t\t\tAthosApplication.logger.trace(`Registering ${options.middlewares.length} global middlewares...`);\n\t\t\tfor (const middleware of options.middlewares) {\n\t\t\t\thttpApp.use(await normalizeConfiguredProMiddlewareInput(container, middleware));\n\t\t\t}\n\t\t}\n\n\t\tif (options.policies) {\n\t\t\tAthosApplication.logger.trace(`Registering ${options.policies.length} global policies...`);\n\t\t\tfor (const policy of options.policies) {\n\t\t\t\thttpApp.policy(await normalizeProPolicyInput(container, policy));\n\t\t\t}\n\t\t}\n\n\t\tif (options.interceptors) {\n\t\t\tAthosApplication.logger.trace(`Registering ${options.interceptors.length} global interceptors...`);\n\t\t\tfor (const interceptor of options.interceptors) {\n\t\t\t\thttpApp.intercept(await normalizeProInterceptorInput(container, interceptor));\n\t\t\t}\n\t\t}\n\n\t\tif ((options as any).validation && typeof (options as any).validation === \"object\") {\n\t\t\thttpApp.setValidation((options as any).validation);\n\t\t}\n\n\t\tAthosApplication.logger.trace(\"Binding discovered routes to router...\");\n\t\tRouterInitializer.initialize(httpApp, container, discovery.controllers);\n\n\t\tif ((options as any).openapi) {\n\t\t\tAthosApplication.logger.trace(\"Registering OpenAPI routes from athos.config...\");\n\t\t\tconst { registerOpenApiRoutes } = await import(\"@athosjs/openapi\");\n\t\t\tregisterOpenApiRoutes(\n\t\t\t\thttpApp,\n\t\t\t\tnormalizeConfiguredOpenApiOptions((options as any).openapi, {\n\t\t\t\t\tcontrollers: discovery.controllers,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tawait kernel.start();\n\n\t\tconst server = await AthosApplication.startServer(httpApp, runtime, options);\n\t\tsetupGracefulShutdown(server, kernel);\n\t\treturn server;\n\t}\n\n\tprivate static async startServer(app: any, runtime: SupportedRuntime, options: AthosRunOptions) {\n\t\tlet serveFn;\n\t\ttry {\n\t\t\tif (runtime === \"node\") {\n\t\t\t\tconst adapter = await import(\"@athosjs/runtime/node\");\n\t\t\t\tserveFn = adapter.serve;\n\t\t\t} else if (runtime === \"bun\") {\n\t\t\t\tconst adapter = await import(\"@athosjs/runtime/bun\");\n\t\t\t\tserveFn = (adapter as any).serve;\n\t\t\t} else if (runtime === \"deno\") {\n\t\t\t\tconst adapter = await import(\"@athosjs/runtime/deno\");\n\t\t\t\tserveFn = (adapter as any).serve;\n\t\t\t} else {\n\t\t\t\tthrow new Error(`Unsupported runtime: ${runtime}`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tAthosApplication.logger.error(`Failed to load adapter for runtime '${runtime}'.`);\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (!serveFn) {\n\t\t\tthrow new Error(`The runtime adapter for '${runtime}' does not export a 'serve' function.`);\n\t\t}\n\n\t\tconst server = serveFn(app, {\n\t\t\tport: options.port,\n\t\t\thostname: options.hostname,\n\t\t\t...(runtime === \"node\" && options.nodeAdapter ? { adapter: options.nodeAdapter } : {}),\n\t\t\t...(runtime === \"node\" && (options as any).server?.maxHeaderBytes !== undefined\n\t\t\t\t? { maxHeaderBytes: (options as any).server.maxHeaderBytes }\n\t\t\t\t: {}),\n\t\t});\n\t\tAthosApplication.logger.info(`Application started on port ${options.port} (${runtime})`);\n\t\tlogOpenApiEndpoints(AthosApplication.logger, options.openapi as any, options.hostname, options.port);\n\n\t\treturn server;\n\t}\n\n\tstatic async run(options?: AthosRunOptions): Promise<any>;\n\tstatic async run(appClass: any, options: AthosRunOptions): Promise<any>;\n\tstatic async run(appClassOrOptions?: any, optionsOrUndefined?: AthosRunOptions): Promise<any> {\n\t\ttry {\n\t\t\tconst hasClass = arguments.length === 2 && typeof appClassOrOptions === \"function\";\n\n\t\t\tif (hasClass) {\n\t\t\t\treturn await AthosApplication.bootstrap(appClassOrOptions, optionsOrUndefined!);\n\t\t\t}\n\n\t\t\treturn await AthosApplication.bootstrap(appClassOrOptions ?? {});\n\t\t} catch (error) {\n\t\t\tprintAthosError(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic async compile(manifest: AthosManifest): Promise<AthosManifest>;\n\tstatic async compile(appClass: any): Promise<AthosManifest>;\n\tstatic async compile(appClassOrManifest?: any): Promise<AthosManifest> {\n\t\tif (!appClassOrManifest) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Athos.compile() requires an explicit application class or manifest. Implicit filesystem discovery is no longer supported.\",\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\ttypeof appClassOrManifest === \"object\" &&\n\t\t\tappClassOrManifest !== null &&\n\t\t\t(\"controllers\" in appClassOrManifest || \"providers\" in appClassOrManifest)\n\t\t) {\n\t\t\treturn {\n\t\t\t\tcontrollers: [...(appClassOrManifest.controllers ?? [])],\n\t\t\t\tproviders: [...(appClassOrManifest.providers ?? [])],\n\t\t\t};\n\t\t}\n\n\t\tif (typeof appClassOrManifest === \"function\") {\n\t\t\treturn compileAthosApplicationManifest(appClassOrManifest);\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t\"Athos.compile() received an unsupported input. Pass an application class decorated with @AthosApplication() or an explicit manifest.\",\n\t\t);\n\t}\n}\n\nfunction normalizeConfiguredOpenApiOptions(\n\tconfig: HavenOpenApiConfig,\n\tdefaultSource: import(\"@athosjs/openapi\").RegisterOpenApiRoutesOptions[\"source\"],\n): import(\"@athosjs/openapi\").RegisterOpenApiRoutesOptions {\n\tconst explorer = config.explorer;\n\tconst docsPath = explorer?.path ?? config.docsPath ?? \"/docs\";\n\tconst documentPath =\n\t\tconfig.documentPath ??\n\t\t(explorer?.enabled === false ? \"/openapi.json\" : deriveOpenApiDocumentPathFromDocsPath(docsPath));\n\n\treturn {\n\t\t...config,\n\t\tdocumentPath,\n\t\tsource: config.source ?? defaultSource,\n\t\texplorer:\n\t\t\texplorer?.enabled === false\n\t\t\t\t? false\n\t\t\t\t: explorer\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...explorer,\n\t\t\t\t\t\t\tpath: docsPath,\n\t\t\t\t\t\t\tdocumentPath: explorer.documentPath ?? documentPath,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tpath: docsPath,\n\t\t\t\t\t\t\tdocumentPath,\n\t\t\t\t\t\t},\n\t};\n}\n\nfunction normalizeApplicationImports(imports: readonly unknown[] | undefined): readonly unknown[] {\n\tif (!imports || imports.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn imports.filter((entry) => entry !== undefined && entry !== null);\n}\n\nfunction logOpenApiEndpoints(\n\tlogger: AthosLogger,\n\topenapi: HavenOpenApiConfig | undefined,\n\thostname: string | undefined,\n\tport: number | undefined,\n): void {\n\tif (!openapi) {\n\t\treturn;\n\t}\n\n\tconst docsEnabled = openapi.explorer?.enabled !== false;\n\tconst docsPath = openapi.explorer?.path ?? openapi.docsPath ?? \"/docs\";\n\tconst documentPath =\n\t\topenapi.documentPath ?? (docsEnabled ? deriveOpenApiDocumentPathFromDocsPath(docsPath) : \"/openapi.json\");\n\tconst baseUrl = createBaseUrl(hostname, port);\n\tconst documentUrl = new URL(documentPath, baseUrl).toString();\n\n\tif (docsEnabled) {\n\t\tlogger.info(`OpenAPI docs available at ${new URL(docsPath, baseUrl).toString()}`);\n\t}\n\n\tlogger.info(`OpenAPI JSON available at ${documentUrl}`);\n}\n\nfunction createBaseUrl(hostname: string | undefined, port: number | undefined): string {\n\tconst resolvedHostname = normalizePublicHostname(hostname);\n\tconst resolvedPort = port ?? 3000;\n\treturn `http://${resolvedHostname}:${resolvedPort}`;\n}\n\nfunction setupGracefulShutdown(\n\tserver: { close(): void | Promise<void> },\n\tkernel: { shutdown(): void | Promise<void> },\n): void {\n\tconst timeoutMs = 30_000;\n\tlet shuttingDown = false;\n\n\tconst shutdown = async () => {\n\t\tif (shuttingDown) return;\n\t\tshuttingDown = true;\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tprocess.stderr.write(\"Graceful shutdown timed out, forcing exit.\\n\");\n\t\t\tprocess.exit(1);\n\t\t}, timeoutMs);\n\n\t\ttry {\n\t\t\tawait Promise.all([server.close(), kernel.shutdown()]);\n\t\t} catch {\n\t\t\tprocess.exit(1);\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t\tprocess.exit(0);\n\t\t}\n\t};\n\n\tprocess.on(\"SIGTERM\", shutdown);\n\tprocess.on(\"SIGINT\", shutdown);\n}\n\nfunction normalizePublicHostname(hostname: string | undefined): string {\n\tif (!hostname || hostname === \"0.0.0.0\" || hostname === \"::\") {\n\t\treturn \"localhost\";\n\t}\n\n\treturn hostname.includes(\":\") && !hostname.startsWith(\"[\") ? `[${hostname}]` : hostname;\n}\n\nfunction deriveOpenApiDocumentPathFromDocsPath(docsPath: string): string {\n\tconst normalized = docsPath === \"/\" ? \"/\" : docsPath.replace(/\\/$/, \"\");\n\treturn `${normalized}.json`;\n}\n\nasync function resolveConfigForRuntime(\n\tloadedConfig: Awaited<ReturnType<typeof ConfigLoader.load>>,\n\truntime: SupportedRuntime,\n) {\n\ttry {\n\t\tif (runtime === \"node\") {\n\t\t\tconst { ensureNodeEnvFilesLoaded } = await import(\"@athosjs/runtime/node\");\n\t\t\tensureNodeEnvFilesLoaded();\n\t\t}\n\n\t\tconst resolved = await resolveAthosConfig(loadedConfig ?? {}, {\n\t\t\tenv: readRuntimeEnvRecord() as any,\n\t\t\truntime: {\n\t\t\t\tname: runtime,\n\t\t\t\tprovider: runtime,\n\t\t\t},\n\t\t});\n\t\tconst sourceUrl = readConfigSourceUrl(loadedConfig);\n\t\tif (sourceUrl && resolved.config.i18n && !resolved.config.i18n.baseUrl) {\n\t\t\treturn {\n\t\t\t\t...resolved,\n\t\t\t\tconfig: {\n\t\t\t\t\t...resolved.config,\n\t\t\t\t\ti18n: {\n\t\t\t\t\t\t...resolved.config.i18n,\n\t\t\t\t\t\tbaseUrl: sourceUrl,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn resolved;\n\t} catch (error) {\n\t\tthrow formatAthosEnvValidationError(error);\n\t}\n}\n\nfunction readConfigSourceUrl(input: unknown): string | undefined {\n\tif ((typeof input !== \"object\" || input === null) && typeof input !== \"function\") {\n\t\treturn undefined;\n\t}\n\n\treturn (input as Record<string | symbol, unknown>)[ATHOS_CONFIG_SOURCE_URL] as string | undefined;\n}\n"],"names":["applicationMetadataRegistry","Map","AthosApplicationDecorator","options","target","set","getAthosApplicationOptions","undefined","get","compileAthosApplicationManifest","metadataOptions","controllers","providers","filter","provider","AthosApplication","logger","ConsoleAthosLogger","bootstrap","appClassOrOptions","optionsOrUndefined","hasClass","arguments","length","appClass","runtimeResult","runtime","name","detectRuntime","loadedConfig","ConfigLoader","load","resolvedConfig","resolveConfigForRuntime","config","port","hostname","setAthosEnv","env","rawEnv","setAthosOptions","logLevel","level","trace","discoveryEnabled","discovery","enabled","discoveryRoot","root","discoveryDirectories","includeDirectories","Error","discovered","manifest","ComponentDiscovery","discover","debug","proResult","ProApplication","create","manifests","normalizeApplicationImports","imports","kernel","container","httpApp","createHttpApplication","serverConfig","server","cors","corsModule","corsOptions","use","createCorsMiddleware","compression","compressionMiddleware","onError","userOnError","setHooks","context","error","i18n","registerConfiguredI18n","middlewares","middleware","normalizeConfiguredProMiddlewareInput","policies","policy","normalizeProPolicyInput","interceptors","interceptor","intercept","normalizeProInterceptorInput","validation","setValidation","RouterInitializer","initialize","openapi","registerOpenApiRoutes","normalizeConfiguredOpenApiOptions","start","startServer","setupGracefulShutdown","app","serveFn","adapter","serve","err","nodeAdapter","maxHeaderBytes","info","logOpenApiEndpoints","run","printAthosError","compile","appClassOrManifest","defaultSource","explorer","docsPath","path","documentPath","deriveOpenApiDocumentPathFromDocsPath","source","entry","docsEnabled","baseUrl","createBaseUrl","documentUrl","URL","toString","resolvedHostname","normalizePublicHostname","resolvedPort","timeoutMs","shuttingDown","shutdown","timer","setTimeout","process","stderr","write","exit","Promise","all","close","clearTimeout","on","includes","startsWith","normalized","replace","ensureNodeEnvFilesLoaded","resolved","resolveAthosConfig","readRuntimeEnvRecord","sourceUrl","readConfigSourceUrl","formatAthosEnvValidationError","input","ATHOS_CONFIG_SOURCE_URL"],"mappings":";;;;;;;;;;;;;AA0BA,MAAMA,8BAA8B,IAAIC,GAAAA,EAAAA;AAEjC,SAASC,yBAAAA,CAA0BC,OAAAA,GAAmC,EAAE,EAAA;AAC9E,IAAA,OAAO,CAACC,MAAAA,GAAAA;QACPJ,2BAAAA,CAA4BK,GAAG,CAACD,MAAAA,EAAQD,OAAAA,CAAAA;AACzC,IAAA,CAAA;AACD;AAEO,SAASG,2BAA2BF,MAAe,EAAA;IACzD,IAAI,OAAOA,WAAW,UAAA,EAAY;QACjC,OAAOG,SAAAA;AACR,IAAA;IAEA,OAAOP,2BAAAA,CAA4BQ,GAAG,CAACJ,MAAAA,CAAAA;AACxC;AAEO,SAASK,gCAAgCL,MAAe,EAAA;AAC9D,IAAA,MAAMM,kBAAkBJ,0BAAAA,CAA2BF,MAAAA,CAAAA;IAEnD,OAAO;QACNO,WAAAA,EAAa;AAAKD,YAAAA,GAAAA,eAAAA,EAAiBC,eAAe;AAAI,SAAA;QACtDC,SAAAA,EAAW;AACNF,YAAAA,GAAAA,eAAAA,EAAiBE,WAAWC,MAAAA,CAC/B,CAACC,WAA2C,OAAOA,QAAAA,KAAa,eAC5D;AACL;AACF,KAAA;AACD;AAEO,MAAMC,gBAAAA,CAAAA;IACZ,OAAOC,MAAAA,GAAsB,IAAIC,gCAAAA,EAAAA;AAIjC,IAAA,aAAaC,SAAAA,CAAUC,iBAAsB,EAAEC,kBAAoC,EAAgB;AAClG,QAAA,MAAMC,WAAWC,SAAAA,CAAUC,MAAM,KAAK,CAAA,IAAK,OAAOJ,iBAAAA,KAAsB,UAAA;QACxE,MAAMK,QAAAA,GAAWH,WAAWF,iBAAAA,GAAoB,IAAA;QAChD,IAAIhB,OAAAA,GAAUkB,WAAWD,kBAAAA,GAAsBD,iBAAAA;QAE/C,MAAMM,aAAAA,GAAgBtB,OAAAA,CAAQuB,OAAO,GAAG;AAAEC,YAAAA,IAAAA,EAAMxB,QAAQuB;SAAQ,GAAIE,qBAAAA,EAAAA;AACpE,QAAA,MAAMF,YAAUD,aAAAA,CAAcE,IAAI,KAAK,SAAA,GAAY,MAAA,GAASF,cAAcE,IAAI;QAE9E,MAAME,YAAAA,GAAe,MAAMC,iBAAAA,CAAaC,IAAI,EAAA;AAC5C,QAAA,MAAMC,cAAAA,GAAiBH,YAAAA,GAAe,MAAMI,uBAAAA,CAAwBJ,cAAcH,SAAAA,CAAAA,GAAW,IAAA;AAE7F,QAAA,IAAIM,cAAAA,EAAgB;YACnB7B,OAAAA,GAAU;AACT,gBAAA,GAAG6B,eAAeE,MAAM;AACxB,gBAAA,GAAG/B,OAAO;AACVgC,gBAAAA,IAAAA,EAAMhC,QAAQgC,IAAI,IAAIH,eAAeE,MAAM,CAACC,IAAI,IAAI,IAAA;AACpDC,gBAAAA,QAAAA,EAAUjC,QAAQiC,QAAQ,IAAIJ,cAAAA,CAAeE,MAAM,CAACE;AACrD,aAAA;AACAC,YAAAA,gBAAAA,CAAaL,cAAAA,CAAeM,GAAG,IAAIN,cAAAA,CAAeO,MAAM,CAAA;AACzD,QAAA;QACAC,oBAAAA,CAAgBrC,OAAAA,CAAAA;QAEhB,IAAIA,OAAAA,CAAQsC,QAAQ,EAAE;YACrB1B,gBAAAA,CAAiBC,MAAM,GAAG,IAAIC,gCAAAA,CAAmB;AAAEyB,gBAAAA,KAAAA,EAAOvC,QAAQsC;AAAS,aAAA,CAAA;QAC5E,CAAA,MAAO,IAAI,OAAOtC,OAAAA,CAAQa,MAAM,KAAK,QAAA,IAAY,OAAA,IAAWb,OAAAA,CAAQa,MAAM,EAAE;YAC3ED,gBAAAA,CAAiBC,MAAM,GAAG,IAAIC,gCAAAA,CAAmB;gBAAEyB,KAAAA,EAAOvC,OAAAA,CAAQa,MAAM,CAAC0B;AAAkB,aAAA,CAAA;AAC5F,QAAA,CAAA,MAAO,IACN,OAAOvC,OAAAA,CAAQa,MAAM,KAAK,UAAA,IACzB,OAAOb,OAAAA,CAAQa,MAAM,KAAK,QAAA,IAAYb,OAAAA,CAAQa,MAAM,KAAK,IAAA,EACzD;YACDD,gBAAAA,CAAiBC,MAAM,GAAGb,OAAAA,CAAQa,MAAM;AACzC,QAAA;QAEAD,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,oCAAA,CAAA;AAE9B,QAAA,MAAMjC,eAAAA,GAAkBc,QAAAA,GAAWxB,2BAAAA,CAA4BQ,GAAG,CAACgB,QAAAA,CAAAA,GAAYjB,SAAAA;QAC/E,MAAMqC,gBAAAA,GACL,OAACzC,CAAQ0C,SAAS,EAAUC,OAAAA,IAAYd,cAAAA,EAAgBE,MAAAA,CAAOW,SAAAA,EAAmBC,OAAAA,IAAW,KAAA;AAC9F,QAAA,MAAMC,gBAAgB5C,OAAAA,CAAQ0C,SAAS,EAAEG,IAAAA,IAAQhB,cAAAA,EAAgBE,OAAOW,SAAAA,EAAWG,IAAAA;QACnF,MAAMC,oBAAAA,GACL,OAAC9C,CAAQ0C,SAAS,EAAUK,kBAAAA,IAAuBlB,cAAAA,EAAgBE,OAAOW,SAAAA,EAAmBK,kBAAAA;QAE9F,IAAIN,gBAAAA,IAAoB,CAACG,aAAAA,EAAe;AACvC,YAAA,MAAM,IAAII,KAAAA,CACT,wGAAA,CAAA;AAEF,QAAA;QAEA,MAAMC,UAAAA,GACLjD,QAAQkD,QAAQ,KACfT,gBAAAA,GACE,MAAMU,4BAAAA,CAAmBC,QAAQ,CAAC;YAClCP,IAAAA,EAAMD,aAAAA;YACNG,kBAAAA,EAAoBD;SACrB,CAAA,GACC;AAAEtC,YAAAA,WAAAA,EAAa,EAAE;AAAEC,YAAAA,SAAAA,EAAW;SAAG,CAAA;AACrC,QAAA,MAAMiC,WAAAA,GAAY;YACjBlC,WAAAA,EAAa;AAAKD,gBAAAA,GAAAA,eAAAA,EAAiBC,eAAe,EAAE;AAAMyC,gBAAAA,GAAAA,UAAAA,CAAWzC;AAAY,aAAA;YACjFC,SAAAA,EAAW;AACNF,gBAAAA,GAAAA,eAAAA,EAAiBE,WAAWC,MAAAA,CAC/B,CAACC,WAA2C,OAAOA,QAAAA,KAAa,eAC5D,EAAE;AACJsC,gBAAAA,GAAAA,UAAAA,CAAWxC;AACd;AACF,SAAA;QACAG,gBAAAA,CAAiBC,MAAM,CAACwC,KAAK,CAC5B,CAAC,SAAS,EAAEX,YAAUlC,WAAW,CAACY,MAAM,CAAC,iBAAiB,EAAEsB,WAAAA,CAAUjC,SAAS,CAACW,MAAM,CAAC,WAAW,CAAC,CAAA;QAGpGR,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,oCAAA,CAAA;AAC9B,QAAA,MAAMc,SAAAA,GAAY,MAAMC,wBAAAA,CAAeC,MAAM,CAAC;YAC7CjC,OAAAA,EAAS;gBAAEC,IAAAA,EAAMD;AAAQ,aAAA;YACzBd,SAAAA,EAAW;AAAIiC,gBAAAA,GAAAA,WAAAA,CAAUjC,SAAS;AAAKiC,gBAAAA,GAAAA,WAAAA,CAAUlC;AAAY,aAAA;YAC7DiD,SAAAA,EAAW;AAAIC,gBAAAA,GAAAA,2BAAAA,CAA4BnD,eAAAA,EAAiBoD,OAAAA,CAAAA;mBAAc3D,OAAAA,CAAQyD,SAAS,IAAI;AAAI;AACpG,SAAA,CAAA;QACA,MAAMG,MAAAA,GAAS,SAACN,CAAkBM,MAAM;QACxC,MAAMC,SAAAA,GAAY,SAACP,CAAkBO,SAAS;QAE9CjD,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,wCAAA,CAAA;AAC9B,QAAA,MAAMsB,UAAUC,0BAAAA,CAAsBH,MAAAA,CAAAA;QACtC,MAAMI,YAAAA,GAAe,OAAChE,CAAgBiE,MAAM;AAE5C,QAAA,IAAID,cAAcE,IAAAA,EAAM;YACvBtD,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,mCAAA,CAAA;YAC9B,MAAM2B,UAAAA,GAAa,MAAM,OAAO,eAAA,CAAA;YAChC,MAAMC,WAAAA,GAAc,OAAOJ,YAAAA,CAAaE,IAAI,KAAK,QAAA,GAAWF,YAAAA,CAAaE,IAAI,GAAG,EAAC;AACjFJ,YAAAA,OAAAA,CAAQO,GAAG,CAACF,UAAAA,CAAWG,oBAAoB,CAACF,WAAAA,CAAAA,CAAAA;AAC7C,QAAA;AAEA,QAAA,IAAIJ,cAAcO,WAAAA,EAAa;YAC9B3D,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,0CAAA,CAAA;AAC9B,YAAA,MAAM,EAAEgC,qBAAqB,EAAE,GAAG,MAAM,OAAO,eAAA,CAAA;AAC/CV,YAAAA,OAAAA,CAAQO,GAAG,CAACG,qBAAAA,CAAAA;AACb,QAAA;AAEA,QAAA,IAAIR,cAAcS,OAAAA,EAAS;YAC1B,MAAMC,WAAAA,GAAcV,aAAaS,OAAO;AACxCX,YAAAA,OAAAA,CAAQa,QAAQ,CAAC;gBAChBF,OAAAA,EAAS,CAACG,OAAAA,EAAcC,KAAAA,GAAeH,WAAAA,CAAY;AAAEE,wBAAAA,OAAAA;AAASC,wBAAAA;AAAM,qBAAA;AACrE,aAAA,CAAA;AACD,QAAA;QAEA,IAAK7E,OAAAA,CAAgB8E,IAAI,EAAE;YAC1BlE,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,2CAAA,CAAA;AAC9B,YAAA,MAAMuC,2BAAAA,CAAuBjB,OAAAA,EAAS,OAAC9D,CAAgB8E,IAAI,CAAA;AAC5D,QAAA;QAEA,IAAI9E,OAAAA,CAAQgF,WAAW,EAAE;AACxBpE,YAAAA,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,CAAC,YAAY,EAAExC,OAAAA,CAAQgF,WAAW,CAAC5D,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAC/F,YAAA,KAAK,MAAM6D,UAAAA,IAAcjF,OAAAA,CAAQgF,WAAW,CAAE;AAC7ClB,gBAAAA,OAAAA,CAAQO,GAAG,CAAC,MAAMa,8CAAAA,CAAsCrB,SAAAA,EAAWoB,UAAAA,CAAAA,CAAAA;AACpE,YAAA;AACD,QAAA;QAEA,IAAIjF,OAAAA,CAAQmF,QAAQ,EAAE;AACrBvE,YAAAA,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,CAAC,YAAY,EAAExC,OAAAA,CAAQmF,QAAQ,CAAC/D,MAAM,CAAC,mBAAmB,CAAC,CAAA;AACzF,YAAA,KAAK,MAAMgE,MAAAA,IAAUpF,OAAAA,CAAQmF,QAAQ,CAAE;AACtCrB,gBAAAA,OAAAA,CAAQsB,MAAM,CAAC,MAAMC,gCAAAA,CAAwBxB,SAAAA,EAAWuB,MAAAA,CAAAA,CAAAA;AACzD,YAAA;AACD,QAAA;QAEA,IAAIpF,OAAAA,CAAQsF,YAAY,EAAE;AACzB1E,YAAAA,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,CAAC,YAAY,EAAExC,OAAAA,CAAQsF,YAAY,CAAClE,MAAM,CAAC,uBAAuB,CAAC,CAAA;AACjG,YAAA,KAAK,MAAMmE,WAAAA,IAAevF,OAAAA,CAAQsF,YAAY,CAAE;AAC/CxB,gBAAAA,OAAAA,CAAQ0B,SAAS,CAAC,MAAMC,qCAAAA,CAA6B5B,SAAAA,EAAW0B,WAAAA,CAAAA,CAAAA;AACjE,YAAA;AACD,QAAA;QAEA,IAAKvF,QAAgB0F,UAAU,IAAI,OAAO,OAAC1F,CAAgB0F,UAAU,KAAK,QAAA,EAAU;AACnF5B,YAAAA,OAAAA,CAAQ6B,aAAa,CAAC,OAAC3F,CAAgB0F,UAAU,CAAA;AAClD,QAAA;QAEA9E,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,wCAAA,CAAA;AAC9BoD,QAAAA,mCAAAA,CAAkBC,UAAU,CAAC/B,OAAAA,EAASD,SAAAA,EAAWnB,YAAUlC,WAAW,CAAA;QAEtE,IAAKR,OAAAA,CAAgB8F,OAAO,EAAE;YAC7BlF,gBAAAA,CAAiBC,MAAM,CAAC2B,KAAK,CAAC,iDAAA,CAAA;AAC9B,YAAA,MAAM,EAAEuD,qBAAqB,EAAE,GAAG,MAAM,OAAO,kBAAA,CAAA;AAC/CA,YAAAA,qBAAAA,CACCjC,OAAAA,EACAkC,iCAAAA,CAAkC,OAAChG,CAAgB8F,OAAO,EAAE;AAC3DtF,gBAAAA,WAAAA,EAAakC,YAAUlC;AACxB,aAAA,CAAA,CAAA;AAEF,QAAA;AAEA,QAAA,MAAMoD,OAAOqC,KAAK,EAAA;AAElB,QAAA,MAAMhC,SAAS,MAAMrD,gBAAAA,CAAiBsF,WAAW,CAACpC,SAASvC,SAAAA,EAASvB,OAAAA,CAAAA;AACpEmG,QAAAA,qBAAAA,CAAsBlC,MAAAA,EAAQL,MAAAA,CAAAA;QAC9B,OAAOK,MAAAA;AACR,IAAA;AAEA,IAAA,aAAqBiC,YAAYE,GAAQ,EAAE7E,OAAyB,EAAEvB,OAAwB,EAAE;QAC/F,IAAIqG,OAAAA;QACJ,IAAI;AACH,YAAA,IAAI9E,YAAY,MAAA,EAAQ;gBACvB,MAAM+E,OAAAA,GAAU,MAAM,OAAO,uBAAA,CAAA;AAC7BD,gBAAAA,OAAAA,GAAUC,QAAQC,KAAK;YACxB,CAAA,MAAO,IAAIhF,YAAY,KAAA,EAAO;gBAC7B,MAAM+E,OAAAA,GAAU,MAAM,OAAO,sBAAA,CAAA;gBAC7BD,OAAAA,GAAWC,QAAgBC,KAAK;YACjC,CAAA,MAAO,IAAIhF,YAAY,MAAA,EAAQ;gBAC9B,MAAM+E,OAAAA,GAAU,MAAM,OAAO,uBAAA,CAAA;gBAC7BD,OAAAA,GAAWC,QAAgBC,KAAK;YACjC,CAAA,MAAO;AACN,gBAAA,MAAM,IAAIvD,KAAAA,CAAM,CAAC,qBAAqB,EAAEzB,OAAAA,CAAAA,CAAS,CAAA;AAClD,YAAA;AACD,QAAA,CAAA,CAAE,OAAOiF,GAAAA,EAAK;YACb5F,gBAAAA,CAAiBC,MAAM,CAACgE,KAAK,CAAC,CAAC,oCAAoC,EAAEtD,OAAAA,CAAQ,EAAE,CAAC,CAAA;YAChF,MAAMiF,GAAAA;AACP,QAAA;AAEA,QAAA,IAAI,CAACH,OAAAA,EAAS;AACb,YAAA,MAAM,IAAIrD,KAAAA,CAAM,CAAC,yBAAyB,EAAEzB,OAAAA,CAAQ,qCAAqC,CAAC,CAAA;AAC3F,QAAA;QAEA,MAAM0C,MAAAA,GAASoC,QAAQD,GAAAA,EAAK;AAC3BpE,YAAAA,IAAAA,EAAMhC,QAAQgC,IAAI;AAClBC,YAAAA,QAAAA,EAAUjC,QAAQiC,QAAQ;AAC1B,YAAA,GAAIV,OAAAA,KAAY,MAAA,IAAUvB,OAAAA,CAAQyG,WAAW,GAAG;AAAEH,gBAAAA,OAAAA,EAAStG,QAAQyG;AAAY,aAAA,GAAI,EAAE;AACrF,YAAA,GAAIlF,YAAY,MAAA,IAAWvB,QAAgBiE,MAAM,EAAEyC,mBAAmBtG,SAAAA,GACnE;AAAEsG,gBAAAA,cAAAA,EAAgB,OAAC1G,CAAgBiE,MAAM,CAACyC;AAAe,aAAA,GACzD;AACJ,SAAA,CAAA;AACA9F,QAAAA,gBAAAA,CAAiBC,MAAM,CAAC8F,IAAI,CAAC,CAAC,4BAA4B,EAAE3G,OAAAA,CAAQgC,IAAI,CAAC,EAAE,EAAET,OAAAA,CAAQ,CAAC,CAAC,CAAA;QACvFqF,mBAAAA,CAAoBhG,gBAAAA,CAAiBC,MAAM,EAAEb,OAAAA,CAAQ8F,OAAO,EAAS9F,OAAAA,CAAQiC,QAAQ,EAAEjC,OAAAA,CAAQgC,IAAI,CAAA;QAEnG,OAAOiC,MAAAA;AACR,IAAA;AAIA,IAAA,aAAa4C,GAAAA,CAAI7F,iBAAuB,EAAEC,kBAAoC,EAAgB;QAC7F,IAAI;AACH,YAAA,MAAMC,WAAWC,SAAAA,CAAUC,MAAM,KAAK,CAAA,IAAK,OAAOJ,iBAAAA,KAAsB,UAAA;AAExE,YAAA,IAAIE,QAAAA,EAAU;AACb,gBAAA,OAAO,MAAMN,gBAAAA,CAAiBG,SAAS,CAACC,iBAAAA,EAAmBC,kBAAAA,CAAAA;AAC5D,YAAA;AAEA,YAAA,OAAO,MAAML,gBAAAA,CAAiBG,SAAS,CAACC,qBAAqB,EAAC,CAAA;AAC/D,QAAA,CAAA,CAAE,OAAO6D,KAAAA,EAAO;YACfiC,oBAAAA,CAAgBjC,KAAAA,CAAAA;YAChB,MAAMA,KAAAA;AACP,QAAA;AACD,IAAA;IAIA,aAAakC,OAAAA,CAAQC,kBAAwB,EAA0B;AACtE,QAAA,IAAI,CAACA,kBAAAA,EAAoB;AACxB,YAAA,MAAM,IAAIhE,KAAAA,CACT,2HAAA,CAAA;AAEF,QAAA;QAEA,IACC,OAAOgE,kBAAAA,KAAuB,QAAA,IAC9BA,kBAAAA,KAAuB,IAAA,KACtB,aAAA,IAAiBA,kBAAAA,IAAsB,WAAA,IAAeA,kBAAiB,CAAA,EACvE;YACD,OAAO;gBACNxG,WAAAA,EAAa;uBAAKwG,kBAAAA,CAAmBxG,WAAW,IAAI;AAAI,iBAAA;gBACxDC,SAAAA,EAAW;uBAAKuG,kBAAAA,CAAmBvG,SAAS,IAAI;AAAI;AACrD,aAAA;AACD,QAAA;QAEA,IAAI,OAAOuG,uBAAuB,UAAA,EAAY;AAC7C,YAAA,OAAO1G,+BAAAA,CAAgC0G,kBAAAA,CAAAA;AACxC,QAAA;AAEA,QAAA,MAAM,IAAIhE,KAAAA,CACT,sIAAA,CAAA;AAEF,IAAA;AACD;AAEA,SAASgD,iCAAAA,CACRjE,MAA0B,EAC1BkF,aAAgF,EAAA;IAEhF,MAAMC,QAAAA,GAAWnF,OAAOmF,QAAQ;AAChC,IAAA,MAAMC,QAAAA,GAAWD,QAAAA,EAAUE,IAAAA,IAAQrF,MAAAA,CAAOoF,QAAQ,IAAI,OAAA;IACtD,MAAME,YAAAA,GACLtF,MAAAA,CAAOsF,YAAY,KAClBH,UAAUvE,OAAAA,KAAY,KAAA,GAAQ,eAAA,GAAkB2E,qCAAAA,CAAsCH,QAAAA,CAAQ,CAAA;IAEhG,OAAO;AACN,QAAA,GAAGpF,MAAM;AACTsF,QAAAA,YAAAA;QACAE,MAAAA,EAAQxF,MAAAA,CAAOwF,MAAM,IAAIN,aAAAA;AACzBC,QAAAA,QAAAA,EACCA,QAAAA,EAAUvE,OAAAA,KAAY,KAAA,GACnB,KAAA,GACAuE,QAAAA,GACC;AACA,YAAA,GAAGA,QAAQ;YACXE,IAAAA,EAAMD,QAAAA;YACNE,YAAAA,EAAcH,QAAAA,CAASG,YAAY,IAAIA;SACxC,GACC;YACAD,IAAAA,EAAMD,QAAAA;AACNE,YAAAA;AACD;AACL,KAAA;AACD;AAEA,SAAS3D,4BAA4BC,OAAuC,EAAA;AAC3E,IAAA,IAAI,CAACA,OAAAA,IAAWA,OAAAA,CAAQvC,MAAM,KAAK,CAAA,EAAG;AACrC,QAAA,OAAO,EAAE;AACV,IAAA;AAEA,IAAA,OAAOuC,QAAQjD,MAAM,CAAC,CAAC8G,KAAAA,GAAUA,KAAAA,KAAUpH,aAAaoH,KAAAA,KAAU,IAAA,CAAA;AACnE;AAEA,SAASZ,oBACR/F,MAAmB,EACnBiF,OAAuC,EACvC7D,QAA4B,EAC5BD,IAAwB,EAAA;AAExB,IAAA,IAAI,CAAC8D,OAAAA,EAAS;AACb,QAAA;AACD,IAAA;AAEA,IAAA,MAAM2B,WAAAA,GAAc3B,OAAAA,CAAQoB,QAAQ,EAAEvE,OAAAA,KAAY,KAAA;AAClD,IAAA,MAAMwE,WAAWrB,OAAAA,CAAQoB,QAAQ,EAAEE,IAAAA,IAAQtB,OAAAA,CAAQqB,QAAQ,IAAI,OAAA;IAC/D,MAAME,YAAAA,GACLvB,QAAQuB,YAAY,KAAKI,WAAAA,GAAcH,qCAAAA,CAAsCH,YAAY,eAAc,CAAA;IACxG,MAAMO,OAAAA,GAAUC,cAAc1F,QAAAA,EAAUD,IAAAA,CAAAA;AACxC,IAAA,MAAM4F,WAAAA,GAAc,IAAIC,GAAAA,CAAIR,YAAAA,EAAcK,SAASI,QAAQ,EAAA;AAE3D,IAAA,IAAIL,WAAAA,EAAa;QAChB5G,MAAAA,CAAO8F,IAAI,CAAC,CAAC,0BAA0B,EAAE,IAAIkB,GAAAA,CAAIV,QAAAA,EAAUO,OAAAA,CAAAA,CAASI,QAAQ,EAAA,CAAA,CAAI,CAAA;AACjF,IAAA;AAEAjH,IAAAA,MAAAA,CAAO8F,IAAI,CAAC,CAAC,0BAA0B,EAAEiB,WAAAA,CAAAA,CAAa,CAAA;AACvD;AAEA,SAASD,aAAAA,CAAc1F,QAA4B,EAAED,IAAwB,EAAA;AAC5E,IAAA,MAAM+F,mBAAmBC,uBAAAA,CAAwB/F,QAAAA,CAAAA;AACjD,IAAA,MAAMgG,eAAejG,IAAAA,IAAQ,IAAA;AAC7B,IAAA,OAAO,CAAC,OAAO,EAAE+F,gBAAAA,CAAiB,CAAC,EAAEE,YAAAA,CAAAA,CAAc;AACpD;AAEA,SAAS9B,qBAAAA,CACRlC,MAAyC,EACzCL,MAA4C,EAAA;AAE5C,IAAA,MAAMsE,SAAAA,GAAY,MAAA;AAClB,IAAA,IAAIC,YAAAA,GAAe,KAAA;AAEnB,IAAA,MAAMC,QAAAA,GAAW,UAAA;AAChB,QAAA,IAAID,YAAAA,EAAc;QAClBA,YAAAA,GAAe,IAAA;AAEf,QAAA,MAAME,QAAQC,UAAAA,CAAW,IAAA;YACxBC,OAAAA,CAAQC,MAAM,CAACC,KAAK,CAAC,8CAAA,CAAA;AACrBF,YAAAA,OAAAA,CAAQG,IAAI,CAAC,CAAA,CAAA;QACd,CAAA,EAAGR,SAAAA,CAAAA;QAEH,IAAI;YACH,MAAMS,OAAAA,CAAQC,GAAG,CAAC;AAAC3E,gBAAAA,MAAAA,CAAO4E,KAAK,EAAA;AAAIjF,gBAAAA,MAAAA,CAAOwE,QAAQ;AAAG,aAAA,CAAA;AACtD,QAAA,CAAA,CAAE,OAAM;AACPG,YAAAA,OAAAA,CAAQG,IAAI,CAAC,CAAA,CAAA;QACd,CAAA,QAAU;YACTI,YAAAA,CAAaT,KAAAA,CAAAA;AACbE,YAAAA,OAAAA,CAAQG,IAAI,CAAC,CAAA,CAAA;AACd,QAAA;AACD,IAAA,CAAA;IAEAH,OAAAA,CAAQQ,EAAE,CAAC,SAAA,EAAWX,QAAAA,CAAAA;IACtBG,OAAAA,CAAQQ,EAAE,CAAC,QAAA,EAAUX,QAAAA,CAAAA;AACtB;AAEA,SAASJ,wBAAwB/F,QAA4B,EAAA;AAC5D,IAAA,IAAI,CAACA,QAAAA,IAAYA,QAAAA,KAAa,SAAA,IAAaA,aAAa,IAAA,EAAM;QAC7D,OAAO,WAAA;AACR,IAAA;AAEA,IAAA,OAAOA,QAAAA,CAAS+G,QAAQ,CAAC,GAAA,CAAA,IAAQ,CAAC/G,QAAAA,CAASgH,UAAU,CAAC,GAAA,CAAA,GAAO,CAAC,CAAC,EAAEhH,QAAAA,CAAS,CAAC,CAAC,GAAGA,QAAAA;AAChF;AAEA,SAASqF,sCAAsCH,QAAgB,EAAA;AAC9D,IAAA,MAAM+B,aAAa/B,QAAAA,KAAa,GAAA,GAAM,MAAMA,QAAAA,CAASgC,OAAO,CAAC,KAAA,EAAO,EAAA,CAAA;IACpE,OAAO,CAAA,EAAGD,UAAAA,CAAW,KAAK,CAAC;AAC5B;AAEA,eAAepH,uBAAAA,CACdJ,YAA2D,EAC3DH,SAAyB,EAAA;IAEzB,IAAI;AACH,QAAA,IAAIA,cAAY,MAAA,EAAQ;AACvB,YAAA,MAAM,EAAE6H,wBAAwB,EAAE,GAAG,MAAM,OAAO,uBAAA,CAAA;AAClDA,YAAAA,wBAAAA,EAAAA;AACD,QAAA;AAEA,QAAA,MAAMC,QAAAA,GAAW,MAAMC,yBAAAA,CAAmB5H,YAAAA,IAAgB,EAAC,EAAG;YAC7DS,GAAAA,EAAKoH,4BAAAA,EAAAA;YACLhI,OAAAA,EAAS;gBACRC,IAAAA,EAAMD,SAAAA;gBACNZ,QAAAA,EAAUY;AACX;AACD,SAAA,CAAA;AACA,QAAA,MAAMiI,YAAYC,mBAAAA,CAAoB/H,YAAAA,CAAAA;AACtC,QAAA,IAAI8H,SAAAA,IAAaH,QAAAA,CAAStH,MAAM,CAAC+C,IAAI,IAAI,CAACuE,QAAAA,CAAStH,MAAM,CAAC+C,IAAI,CAAC4C,OAAO,EAAE;YACvE,OAAO;AACN,gBAAA,GAAG2B,QAAQ;gBACXtH,MAAAA,EAAQ;AACP,oBAAA,GAAGsH,SAAStH,MAAM;oBAClB+C,IAAAA,EAAM;wBACL,GAAGuE,QAAAA,CAAStH,MAAM,CAAC+C,IAAI;wBACvB4C,OAAAA,EAAS8B;AACV;AACD;AACD,aAAA;AACD,QAAA;QACA,OAAOH,QAAAA;AACR,IAAA,CAAA,CAAE,OAAOxE,KAAAA,EAAO;AACf,QAAA,MAAM6E,kCAAAA,CAA8B7E,KAAAA,CAAAA;AACrC,IAAA;AACD;AAEA,SAAS4E,oBAAoBE,KAAc,EAAA;IAC1C,IAAK,CAAA,OAAOA,KAAAA,KAAU,QAAA,IAAYA,UAAU,IAAG,KAAM,OAAOA,KAAAA,KAAU,UAAA,EAAY;QACjF,OAAOvJ,SAAAA;AACR,IAAA;IAEA,OAAQuJ,KAA0C,CAACC,4BAAAA,CAAwB;AAC5E;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ import { type AthosLogger } from "@athosjs/observability";
2
+ import type { AthosApplicationOptions, AthosManifest, AthosRunOptions } from "@athosjs/types/pro";
3
+ export type { AthosApplicationOptions, AthosManifest, AthosRunOptions };
4
+ export declare function AthosApplicationDecorator(options?: AthosApplicationOptions): ClassDecorator;
5
+ export declare function getAthosApplicationOptions(target: unknown): AthosApplicationOptions | undefined;
6
+ export declare function compileAthosApplicationManifest(target: unknown): AthosManifest;
7
+ export declare class AthosApplication {
8
+ static logger: AthosLogger;
9
+ static bootstrap(options: AthosRunOptions): Promise<any>;
10
+ static bootstrap(appClass: any, options: AthosRunOptions): Promise<any>;
11
+ private static startServer;
12
+ static run(options?: AthosRunOptions): Promise<any>;
13
+ static run(appClass: any, options: AthosRunOptions): Promise<any>;
14
+ static compile(manifest: AthosManifest): Promise<AthosManifest>;
15
+ static compile(appClass: any): Promise<AthosManifest>;
16
+ }
17
+ //# sourceMappingURL=athos-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"athos-application.d.ts","sourceRoot":"","sources":["../../../../../../../packages/pro/src/core/athos-application.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,KAAK,WAAW,EAAiB,MAAM,wBAAwB,CAAC;AAE7F,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAWlG,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAGxE,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,uBAA4B,GAAG,cAAc,CAI/F;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAM/F;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAW9E;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,MAAM,EAAE,WAAW,CAA4B;WAEzC,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;WACjD,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;mBA0JxD,WAAW;WAsCnB,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;WAC5C,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;WAgB1D,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;WACxD,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;CA2B3D"}