glasswork 1.4.1 → 1.6.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.
- package/CHANGELOG.md +75 -1
- package/README.md +6 -2
- package/dist/audit/audit-logger.d.ts +6 -1
- package/dist/audit/audit-logger.d.ts.map +1 -1
- package/dist/audit/audit-logger.js +6 -1
- package/dist/audit/audit-logger.js.map +1 -1
- package/dist/auth/assert.d.ts +4 -0
- package/dist/auth/assert.d.ts.map +1 -1
- package/dist/auth/assert.js +7 -3
- package/dist/auth/assert.js.map +1 -1
- package/dist/auth/better-auth-provider.js +13 -4
- package/dist/auth/better-auth-provider.js.map +1 -1
- package/dist/auth/errors.d.ts +17 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +23 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +2 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +13 -0
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +19 -8
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/types.d.ts +4 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/config/providers.d.ts.map +1 -1
- package/dist/config/providers.js +5 -4
- package/dist/config/providers.js.map +1 -1
- package/dist/core/bootstrap.d.ts +2 -2
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +162 -83
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/contract.d.ts +9 -2
- package/dist/core/contract.d.ts.map +1 -1
- package/dist/core/contract.js +2 -1
- package/dist/core/contract.js.map +1 -1
- package/dist/core/errors.d.ts +16 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +31 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/glasswork-config.d.ts +42 -0
- package/dist/core/glasswork-config.d.ts.map +1 -0
- package/dist/core/glasswork-config.js +2 -0
- package/dist/core/glasswork-config.js.map +1 -0
- package/dist/core/index.d.ts +7 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/job-services.d.ts +16 -0
- package/dist/core/job-services.d.ts.map +1 -0
- package/dist/core/job-services.js +19 -0
- package/dist/core/job-services.js.map +1 -0
- package/dist/core/lifecycle.d.ts +30 -2
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +100 -13
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/module-graph.d.ts +7 -1
- package/dist/core/module-graph.d.ts.map +1 -1
- package/dist/core/module-graph.js +90 -21
- package/dist/core/module-graph.js.map +1 -1
- package/dist/core/module-inspection.d.ts +44 -0
- package/dist/core/module-inspection.d.ts.map +1 -0
- package/dist/core/module-inspection.js +114 -0
- package/dist/core/module-inspection.js.map +1 -0
- package/dist/core/module-runtime.d.ts +22 -0
- package/dist/core/module-runtime.d.ts.map +1 -0
- package/dist/core/module-runtime.js +252 -0
- package/dist/core/module-runtime.js.map +1 -0
- package/dist/core/module.d.ts +5 -1
- package/dist/core/module.d.ts.map +1 -1
- package/dist/core/module.js +15 -3
- package/dist/core/module.js.map +1 -1
- package/dist/core/request-scope.d.ts +1 -1
- package/dist/core/request-scope.d.ts.map +1 -1
- package/dist/core/request-scope.js +10 -8
- package/dist/core/request-scope.js.map +1 -1
- package/dist/core/types.d.ts +106 -10
- package/dist/core/types.d.ts.map +1 -1
- package/dist/email/compiler/compiler.d.ts.map +1 -1
- package/dist/email/compiler/compiler.js +24 -13
- package/dist/email/compiler/compiler.js.map +1 -1
- package/dist/email/email-service.d.ts +0 -4
- package/dist/email/email-service.d.ts.map +1 -1
- package/dist/email/email-service.js +2 -29
- package/dist/email/email-service.js.map +1 -1
- package/dist/email/html-to-text.d.ts +14 -0
- package/dist/email/html-to-text.d.ts.map +1 -0
- package/dist/email/html-to-text.js +47 -0
- package/dist/email/html-to-text.js.map +1 -0
- package/dist/email/index.d.ts +1 -0
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +1 -0
- package/dist/email/index.js.map +1 -1
- package/dist/email/ses.d.ts +7 -0
- package/dist/email/ses.d.ts.map +1 -0
- package/dist/email/ses.js +6 -0
- package/dist/email/ses.js.map +1 -0
- package/dist/email/smtp.d.ts +7 -0
- package/dist/email/smtp.d.ts.map +1 -0
- package/dist/email/smtp.js +6 -0
- package/dist/email/smtp.js.map +1 -0
- package/dist/email/transports/ses-transport.d.ts.map +1 -1
- package/dist/email/transports/ses-transport.js +6 -4
- package/dist/email/transports/ses-transport.js.map +1 -1
- package/dist/email/transports/smtp-transport.d.ts +40 -0
- package/dist/email/transports/smtp-transport.d.ts.map +1 -0
- package/dist/email/transports/smtp-transport.js +67 -0
- package/dist/email/transports/smtp-transport.js.map +1 -0
- package/dist/http/error-handler.d.ts +7 -1
- package/dist/http/error-handler.d.ts.map +1 -1
- package/dist/http/error-handler.js +18 -6
- package/dist/http/error-handler.js.map +1 -1
- package/dist/http/error-response.dto.d.ts +6 -0
- package/dist/http/error-response.dto.d.ts.map +1 -1
- package/dist/http/error-response.dto.js +6 -0
- package/dist/http/error-response.dto.js.map +1 -1
- package/dist/http/errors.d.ts +12 -0
- package/dist/http/errors.d.ts.map +1 -1
- package/dist/http/errors.js +35 -23
- package/dist/http/errors.js.map +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/http/index.js.map +1 -1
- package/dist/http/route-authorization.d.ts.map +1 -1
- package/dist/http/route-authorization.js +3 -3
- package/dist/http/route-authorization.js.map +1 -1
- package/dist/http/route-helpers.d.ts +2 -1
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +29 -2
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/http/route-openapi-context.d.ts +15 -1
- package/dist/http/route-openapi-context.d.ts.map +1 -1
- package/dist/http/route-openapi-context.js.map +1 -1
- package/dist/http/route-response.d.ts +6 -2
- package/dist/http/route-response.d.ts.map +1 -1
- package/dist/http/route-response.js +36 -16
- package/dist/http/route-response.js.map +1 -1
- package/dist/http/route-types.d.ts +12 -4
- package/dist/http/route-types.d.ts.map +1 -1
- package/dist/http/route-types.js.map +1 -1
- package/dist/http/route-validation.d.ts.map +1 -1
- package/dist/http/route-validation.js +21 -1
- package/dist/http/route-validation.js.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts +1 -0
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js +12 -2
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
- package/dist/jobs/drivers/mock-driver.d.ts +4 -0
- package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/mock-driver.js +10 -3
- package/dist/jobs/drivers/mock-driver.js.map +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/sqs-driver.js +8 -2
- package/dist/jobs/drivers/sqs-driver.js.map +1 -1
- package/dist/jobs/errors.d.ts +14 -1
- package/dist/jobs/errors.d.ts.map +1 -1
- package/dist/jobs/errors.js +19 -2
- package/dist/jobs/errors.js.map +1 -1
- package/dist/jobs/index.d.ts +3 -3
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +1 -1
- package/dist/jobs/index.js.map +1 -1
- package/dist/jobs/job-service.d.ts +46 -7
- package/dist/jobs/job-service.d.ts.map +1 -1
- package/dist/jobs/job-service.js +63 -9
- package/dist/jobs/job-service.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +6 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +6 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/sqs.d.ts +7 -0
- package/dist/jobs/sqs.d.ts.map +1 -0
- package/dist/jobs/sqs.js +7 -0
- package/dist/jobs/sqs.js.map +1 -0
- package/dist/jobs/types.d.ts +6 -1
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/utils.d.ts +6 -0
- package/dist/jobs/utils.d.ts.map +1 -1
- package/dist/jobs/utils.js +8 -0
- package/dist/jobs/utils.js.map +1 -1
- package/dist/jobs/worker.d.ts.map +1 -1
- package/dist/jobs/worker.js +28 -23
- package/dist/jobs/worker.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +5 -4
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/observability/exception-tracking.d.ts +23 -0
- package/dist/observability/exception-tracking.d.ts.map +1 -1
- package/dist/observability/exception-tracking.js +101 -6
- package/dist/observability/exception-tracking.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/sanitizers.d.ts.map +1 -1
- package/dist/observability/sanitizers.js +2 -0
- package/dist/observability/sanitizers.js.map +1 -1
- package/dist/openapi/drift.d.ts +17 -2
- package/dist/openapi/drift.d.ts.map +1 -1
- package/dist/openapi/drift.js +79 -5
- package/dist/openapi/drift.js.map +1 -1
- package/dist/openapi/openapi.d.ts.map +1 -1
- package/dist/openapi/openapi.js +2 -1
- package/dist/openapi/openapi.js.map +1 -1
- package/dist/utils/environment.d.ts +10 -2
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/environment.js +20 -3
- package/dist/utils/environment.js.map +1 -1
- package/dist/utils/module-interop.d.ts +9 -0
- package/dist/utils/module-interop.d.ts.map +1 -0
- package/dist/utils/module-interop.js +16 -0
- package/dist/utils/module-interop.js.map +1 -0
- package/dist/utils/optional-dependency.d.ts +6 -0
- package/dist/utils/optional-dependency.d.ts.map +1 -0
- package/dist/utils/optional-dependency.js +16 -0
- package/dist/utils/optional-dependency.js.map +1 -0
- package/dist/utils/serialize-prisma-types.d.ts +51 -15
- package/dist/utils/serialize-prisma-types.d.ts.map +1 -1
- package/dist/utils/serialize-prisma-types.js +47 -16
- package/dist/utils/serialize-prisma-types.js.map +1 -1
- package/package.json +56 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAIf,YAAY,EAQb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,YAAY,EACxB,GAAG,IAAI,EAAE,kBAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA0E1B"}
|
package/dist/core/bootstrap.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { asValue
|
|
1
|
+
import { asValue } from 'awilix';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
3
|
import { cors } from 'hono/cors';
|
|
4
4
|
import { logger as honoLogger } from 'hono/logger';
|
|
@@ -7,33 +7,20 @@ import { secureHeaders } from 'hono/secure-headers';
|
|
|
7
7
|
import { createErrorHandler, defaultErrorHandler } from '../http/error-handler.js';
|
|
8
8
|
import { route, setOpenAPIContext } from '../http/route-helpers.js';
|
|
9
9
|
import { createRateLimitMiddleware } from '../middleware/rate-limit.js';
|
|
10
|
+
import { flushExceptionTracker } from '../observability/exception-tracking.js';
|
|
10
11
|
import { createContextAwarePinoLogger, createPinoHttpMiddleware, } from '../observability/pino-logger.js';
|
|
11
12
|
import { createRequestContextMiddleware } from '../observability/request-context.js';
|
|
12
13
|
import { createSanitizedExceptionTracker, createSanitizedLogger, } from '../observability/sanitizers.js';
|
|
13
14
|
import { configureOpenAPI } from '../openapi/openapi.js';
|
|
14
15
|
import { createBuiltinProcessors } from '../openapi/openapi-processors.js';
|
|
15
|
-
import { isLambda, isTest } from '../utils/environment.js';
|
|
16
|
+
import { detectEnvironment, isLambda, isTest } from '../utils/environment.js';
|
|
16
17
|
import { createLogger, createPlainLogger, getDefaultLogLevel, } from '../utils/logger.js';
|
|
17
|
-
import {
|
|
18
|
+
import { createSerializationConfig } from '../utils/serialize-prisma-types.js';
|
|
19
|
+
import { createApplicationLifecycle, executeLifecycleHooks, shutdownContainer, } from './lifecycle.js';
|
|
20
|
+
import { getProviderName } from './module.js';
|
|
18
21
|
import { collectModules, registerModuleProviders, resolveAsyncFactoryProviders, validateNoCycles, } from './module-graph.js';
|
|
22
|
+
import { ModuleRuntime } from './module-runtime.js';
|
|
19
23
|
import { HttpRequestScope } from './request-scope.js';
|
|
20
|
-
/**
|
|
21
|
-
* Detect environment from NODE_ENV or AWS Lambda context
|
|
22
|
-
*/
|
|
23
|
-
function detectEnvironment() {
|
|
24
|
-
const nodeEnv = process.env.NODE_ENV;
|
|
25
|
-
if (nodeEnv === 'production') {
|
|
26
|
-
return 'production';
|
|
27
|
-
}
|
|
28
|
-
if (nodeEnv === 'test') {
|
|
29
|
-
return 'test';
|
|
30
|
-
}
|
|
31
|
-
// Check if running in AWS Lambda
|
|
32
|
-
if (process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.LAMBDA_TASK_ROOT) {
|
|
33
|
-
return 'production';
|
|
34
|
-
}
|
|
35
|
-
return 'development';
|
|
36
|
-
}
|
|
37
24
|
/**
|
|
38
25
|
* Bootstrap the application with modules.
|
|
39
26
|
*
|
|
@@ -70,8 +57,9 @@ function detectEnvironment() {
|
|
|
70
57
|
* container.register({ customService: asClass(CustomService) });
|
|
71
58
|
* ```
|
|
72
59
|
*/
|
|
73
|
-
export async function bootstrap(rootModule,
|
|
74
|
-
const
|
|
60
|
+
export async function bootstrap(rootModule, ...args) {
|
|
61
|
+
const options = args[0] ?? {};
|
|
62
|
+
const { apiBasePath = '/api', debug = false, environment = detectEnvironment(), errorHandler = defaultErrorHandler, openapi, rateLimit, middleware, logger, exceptionTracking, serialization, mode = 'runtime', providerOverrides = [], } = options;
|
|
75
63
|
// Create logger for bootstrap process
|
|
76
64
|
// Convert debug boolean to log level: debug=true -> 'debug', debug=false -> default level
|
|
77
65
|
// In test mode, use silent unless debug=true is explicitly set (for testing/debugging)
|
|
@@ -81,45 +69,83 @@ export async function bootstrap(rootModule, options = {}) {
|
|
|
81
69
|
? createContextAwarePinoLogger({ pino: logger.pino, service: 'Glasswork' })
|
|
82
70
|
: createLogger('Glasswork', bootstrapLogLevel));
|
|
83
71
|
const bootstrapLogger = createSanitizedLogger(baseLogger, logger?.sanitizers);
|
|
84
|
-
// Create Awilix container with PROXY mode (Lambda-compatible)
|
|
85
|
-
const container = createContainer({
|
|
86
|
-
injectionMode: InjectionMode.PROXY,
|
|
87
|
-
strict: true,
|
|
88
|
-
});
|
|
89
72
|
bootstrapLogger.debug('Bootstrapping application...');
|
|
90
73
|
// Collect all modules (flatten imports)
|
|
91
74
|
const allModules = collectModules(rootModule);
|
|
92
75
|
bootstrapLogger.debug(`Found ${allModules.length} modules: ${allModules.map((m) => m.name).join(', ')}`);
|
|
93
76
|
// Validate no circular dependencies
|
|
94
77
|
validateNoCycles(allModules);
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
78
|
+
const runtime = new ModuleRuntime(allModules, bootstrapLogger);
|
|
79
|
+
const container = runtime.container;
|
|
80
|
+
const asyncFactoryNames = runtime.asyncFactories;
|
|
81
|
+
try {
|
|
82
|
+
const activeAsyncFactories = applyProviderOverrides(runtime, asyncFactoryNames, providerOverrides, mode, bootstrapLogger);
|
|
83
|
+
// Resolve async factories before mounting runtime routes.
|
|
84
|
+
if (mode === 'runtime' && activeAsyncFactories.length > 0) {
|
|
85
|
+
await resolveAsyncFactoryProviders(container, activeAsyncFactories, bootstrapLogger);
|
|
86
|
+
}
|
|
87
|
+
return await finishBootstrap(allModules, runtime, bootstrapLogger, {
|
|
88
|
+
environment,
|
|
89
|
+
apiBasePath,
|
|
90
|
+
mode,
|
|
91
|
+
errorHandler,
|
|
92
|
+
openapi,
|
|
93
|
+
rateLimit,
|
|
94
|
+
middleware,
|
|
95
|
+
logger,
|
|
96
|
+
exceptionTracking,
|
|
97
|
+
serialization,
|
|
98
|
+
});
|
|
101
99
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
await resolveAsyncFactoryProviders(container, activeAsyncFactories, bootstrapLogger);
|
|
100
|
+
catch (error) {
|
|
101
|
+
await releaseFailedBootstrap(container, mode, bootstrapLogger);
|
|
102
|
+
throw error;
|
|
106
103
|
}
|
|
107
|
-
return finishBootstrap(allModules, container, bootstrapLogger, {
|
|
108
|
-
environment,
|
|
109
|
-
apiBasePath,
|
|
110
|
-
mode,
|
|
111
|
-
errorHandler,
|
|
112
|
-
openapi,
|
|
113
|
-
rateLimit,
|
|
114
|
-
middleware,
|
|
115
|
-
logger,
|
|
116
|
-
exceptionTracking,
|
|
117
|
-
});
|
|
118
104
|
}
|
|
119
|
-
|
|
105
|
+
/**
|
|
106
|
+
* The caller of a failed bootstrap never receives stop(), so release what was created so
|
|
107
|
+
* far: destroy hooks and disposers of resolved providers. Cleanup errors are logged and the
|
|
108
|
+
* original error is rethrown.
|
|
109
|
+
*/
|
|
110
|
+
async function releaseFailedBootstrap(container, mode, bootstrapLogger) {
|
|
111
|
+
try {
|
|
112
|
+
if (mode === 'contract')
|
|
113
|
+
await container.dispose();
|
|
114
|
+
else
|
|
115
|
+
await shutdownContainer(container, bootstrapLogger);
|
|
116
|
+
}
|
|
117
|
+
catch (cleanupError) {
|
|
118
|
+
bootstrapLogger.error('Cleanup after failed bootstrap failed', cleanupError);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function applyProviderOverrides(runtime, asyncFactoryNames, providerOverrides, mode, bootstrapLogger) {
|
|
122
|
+
validateProviderOverrides(runtime, providerOverrides, bootstrapLogger);
|
|
123
|
+
const declares = (module, name) => module.providers?.some((local) => getProviderName(local) === name) ?? false;
|
|
124
|
+
const container = runtime.container;
|
|
120
125
|
const originalRegistrations = { ...container.registrations };
|
|
121
|
-
const overrideAsyncFactories =
|
|
122
|
-
const
|
|
126
|
+
const overrideAsyncFactories = [];
|
|
127
|
+
for (const module of runtime.modules) {
|
|
128
|
+
const applies = (override) => {
|
|
129
|
+
const target = overrideTarget(override);
|
|
130
|
+
return ((target === undefined || target === module.name) &&
|
|
131
|
+
declares(module, getProviderName(override)));
|
|
132
|
+
};
|
|
133
|
+
// Module-specific overrides register last, so they win over overrides for every module.
|
|
134
|
+
const providers = [
|
|
135
|
+
...providerOverrides.filter((override) => !overrideTarget(override) && applies(override)),
|
|
136
|
+
...providerOverrides.filter((override) => overrideTarget(override) && applies(override)),
|
|
137
|
+
].map(withoutTarget);
|
|
138
|
+
const names = registerModuleProviders({
|
|
139
|
+
name: module.name,
|
|
140
|
+
providers: [
|
|
141
|
+
...new Map(providers.map((provider) => [getProviderName(provider), provider])).values(),
|
|
142
|
+
],
|
|
143
|
+
}, runtime.forModule(module), bootstrapLogger);
|
|
144
|
+
overrideAsyncFactories.push(...names.map((name) => `${module.name}/${name}`));
|
|
145
|
+
}
|
|
146
|
+
const overriddenNames = new Set(Object.entries(container.registrations)
|
|
147
|
+
.filter(([name, registration]) => registration !== originalRegistrations[name])
|
|
148
|
+
.map(([name]) => name));
|
|
123
149
|
const activeAsyncFactories = [
|
|
124
150
|
...new Set([
|
|
125
151
|
...asyncFactoryNames.filter((name) => !overriddenNames.has(name)),
|
|
@@ -137,8 +163,9 @@ function applyProviderOverrides(container, asyncFactoryNames, providerOverrides,
|
|
|
137
163
|
}
|
|
138
164
|
return activeAsyncFactories;
|
|
139
165
|
}
|
|
140
|
-
async function finishBootstrap(allModules,
|
|
141
|
-
const { environment, apiBasePath, mode, errorHandler, openapi, rateLimit, middleware, logger, exceptionTracking, } = resolved;
|
|
166
|
+
async function finishBootstrap(allModules, runtime, bootstrapLogger, resolved) {
|
|
167
|
+
const { environment, apiBasePath, mode, errorHandler, openapi, rateLimit, middleware, logger, exceptionTracking, serialization, } = resolved;
|
|
168
|
+
const container = runtime.container;
|
|
142
169
|
// Create Hono app and apply middleware
|
|
143
170
|
const { app, openAPIContext, writeOpenAPISpec, generateOpenAPI } = createApp({
|
|
144
171
|
mode,
|
|
@@ -149,59 +176,104 @@ async function finishBootstrap(allModules, container, bootstrapLogger, resolved)
|
|
|
149
176
|
middleware,
|
|
150
177
|
logger,
|
|
151
178
|
exceptionTracking,
|
|
179
|
+
serialization,
|
|
152
180
|
bootstrapLogger,
|
|
153
181
|
});
|
|
154
182
|
// Mount module routes
|
|
155
|
-
const requestScope = new HttpRequestScope();
|
|
156
183
|
mountModuleRoutes({
|
|
157
184
|
app,
|
|
158
185
|
modules: allModules,
|
|
159
|
-
|
|
186
|
+
runtime,
|
|
160
187
|
apiBasePath,
|
|
161
188
|
bootstrapLogger,
|
|
162
189
|
openAPIContext,
|
|
163
|
-
requestScope,
|
|
164
190
|
});
|
|
165
191
|
// Export only after every module route has been registered. The writer uses
|
|
166
192
|
// the route registry directly and does not add a public endpoint.
|
|
167
193
|
await writeOpenAPISpec?.();
|
|
168
194
|
bootstrapLogger.debug('Bootstrap complete');
|
|
169
195
|
bootstrapLogger.debug(`Environment: ${environment}`);
|
|
170
|
-
bootstrapLogger.debug(`Registered ${Object.keys(container.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
196
|
+
bootstrapLogger.debug(`Registered ${Object.keys(container.registrations).length} services`);
|
|
197
|
+
const lifecycle = createApplicationLifecycle({
|
|
198
|
+
start: async () => {
|
|
199
|
+
bootstrapLogger.debug('Starting application (running onModuleInit)...');
|
|
200
|
+
await executeLifecycleHooks(container, 'onModuleInit', bootstrapLogger);
|
|
201
|
+
bootstrapLogger.debug('Application started successfully');
|
|
202
|
+
},
|
|
203
|
+
stop: async () => {
|
|
204
|
+
bootstrapLogger.debug('Stopping application (running onModuleDestroy and disposers)...');
|
|
205
|
+
try {
|
|
206
|
+
await shutdownContainer(container, bootstrapLogger);
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
await flushTracker(exceptionTracking, bootstrapLogger);
|
|
210
|
+
}
|
|
211
|
+
bootstrapLogger.debug('Application stopped successfully');
|
|
212
|
+
},
|
|
213
|
+
});
|
|
175
214
|
const start = async () => {
|
|
176
215
|
if (mode === 'contract')
|
|
177
216
|
throw new Error('Contract bootstrap has no runtime lifecycle');
|
|
178
|
-
|
|
179
|
-
bootstrapLogger.debug('Application already started, skipping onModuleInit');
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
isStarted = true;
|
|
183
|
-
bootstrapLogger.debug('Starting application (running onModuleInit)...');
|
|
184
|
-
await executeLifecycleHooks(container, 'onModuleInit', bootstrapLogger);
|
|
185
|
-
bootstrapLogger.debug('Application started successfully');
|
|
217
|
+
await lifecycle.start();
|
|
186
218
|
};
|
|
187
219
|
const stop = async () => {
|
|
188
220
|
if (mode === 'contract')
|
|
189
221
|
throw new Error('Contract bootstrap has no runtime lifecycle');
|
|
190
|
-
|
|
191
|
-
bootstrapLogger.debug('Application already stopped, skipping onModuleDestroy');
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
isStopped = true;
|
|
195
|
-
bootstrapLogger.debug('Stopping application (running onModuleDestroy)...');
|
|
196
|
-
await executeLifecycleHooks(container, 'onModuleDestroy', bootstrapLogger);
|
|
197
|
-
bootstrapLogger.debug('Application stopped successfully');
|
|
222
|
+
await lifecycle.stop();
|
|
198
223
|
};
|
|
199
224
|
// Auto-start in production/development (but not test)
|
|
200
225
|
// This ensures providers are initialized before requests come in
|
|
201
226
|
if (mode === 'runtime' && environment !== 'test') {
|
|
202
227
|
await start();
|
|
203
228
|
}
|
|
204
|
-
return { app, container, start, stop, generateOpenAPI };
|
|
229
|
+
return { app, container: runtime.forModule(allModules[0]), start, stop, generateOpenAPI };
|
|
230
|
+
}
|
|
231
|
+
/** Rejects overrides that match nothing, and warns when one replaces several providers. */
|
|
232
|
+
function validateProviderOverrides(runtime, providerOverrides, bootstrapLogger) {
|
|
233
|
+
const declares = (module, name) => module.providers?.some((local) => getProviderName(local) === name) ?? false;
|
|
234
|
+
for (const override of providerOverrides) {
|
|
235
|
+
const name = getProviderName(override);
|
|
236
|
+
const target = overrideTarget(override);
|
|
237
|
+
if (target === undefined) {
|
|
238
|
+
const owners = runtime.modules.filter((module) => declares(module, name));
|
|
239
|
+
if (owners.length === 0) {
|
|
240
|
+
throw new Error(`Provider override "${name}" does not match a registered provider`);
|
|
241
|
+
}
|
|
242
|
+
if (owners.length > 1) {
|
|
243
|
+
bootstrapLogger.warn(`Provider override "${name}" replaces the provider in modules ${owners
|
|
244
|
+
.map((module) => `"${module.name}"`)
|
|
245
|
+
.join(', ')}. Set module to replace it in one module only.`);
|
|
246
|
+
}
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
const module = runtime.modules.find((candidate) => candidate.name === target);
|
|
250
|
+
if (!module) {
|
|
251
|
+
throw new Error(`Provider override "${name}" targets unknown module "${target}"`);
|
|
252
|
+
}
|
|
253
|
+
if (!declares(module, name)) {
|
|
254
|
+
throw new Error(`Provider override "${name}" does not match a provider declared in module "${target}"`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function overrideTarget(override) {
|
|
259
|
+
if (typeof override === 'function' || !('module' in override))
|
|
260
|
+
return undefined;
|
|
261
|
+
return typeof override.module === 'string' ? override.module : override.module.name;
|
|
262
|
+
}
|
|
263
|
+
function withoutTarget(override) {
|
|
264
|
+
if (typeof override === 'function' || !('module' in override))
|
|
265
|
+
return override;
|
|
266
|
+
const { module: _module, ...provider } = override;
|
|
267
|
+
return provider;
|
|
268
|
+
}
|
|
269
|
+
/** Errors reported during shutdown should still reach the tracker; never fails stop(). */
|
|
270
|
+
async function flushTracker(exceptionTracking, bootstrapLogger) {
|
|
271
|
+
if (!exceptionTracking)
|
|
272
|
+
return;
|
|
273
|
+
const result = await flushExceptionTracker(exceptionTracking.tracker, exceptionTracking.flushTimeoutMs ?? 2000, bootstrapLogger);
|
|
274
|
+
if (!result.completed) {
|
|
275
|
+
bootstrapLogger.warn(`Exception tracker did not finish sending before stop() (${result.pending} pending)`);
|
|
276
|
+
}
|
|
205
277
|
}
|
|
206
278
|
function createContractPlaceholder(name) {
|
|
207
279
|
const fail = () => {
|
|
@@ -231,7 +303,7 @@ function createApp(options) {
|
|
|
231
303
|
* Build the OpenAPI context with processors and security schemes
|
|
232
304
|
*/
|
|
233
305
|
function buildOpenAPIContext(options) {
|
|
234
|
-
const { openapi, rateLimit, middleware, logger } = options;
|
|
306
|
+
const { environment, openapi, rateLimit, middleware, logger, serialization } = options;
|
|
235
307
|
// Create built-in processors based on config
|
|
236
308
|
const builtinProcessors = createBuiltinProcessors({
|
|
237
309
|
corsEnabled: !!middleware?.cors,
|
|
@@ -252,6 +324,12 @@ function buildOpenAPIContext(options) {
|
|
|
252
324
|
pino: logger?.pino,
|
|
253
325
|
sanitizers: logger?.sanitizers,
|
|
254
326
|
logger: logger?.instance,
|
|
327
|
+
environment,
|
|
328
|
+
serialization: createSerializationConfig({
|
|
329
|
+
decimals: serialization?.decimals,
|
|
330
|
+
transformers: serialization?.transformers,
|
|
331
|
+
}),
|
|
332
|
+
strictTypes: serialization?.strictTypes,
|
|
255
333
|
};
|
|
256
334
|
}
|
|
257
335
|
/**
|
|
@@ -374,22 +452,23 @@ function applyOpenAPIDocumentation(app, options) {
|
|
|
374
452
|
* Mount module routes to the app
|
|
375
453
|
*/
|
|
376
454
|
function mountModuleRoutes(options) {
|
|
377
|
-
const { app, modules,
|
|
455
|
+
const { app, modules, runtime, apiBasePath, bootstrapLogger, openAPIContext } = options;
|
|
456
|
+
const requestScope = new HttpRequestScope();
|
|
457
|
+
app.use('*', requestScope.middleware(runtime.container));
|
|
378
458
|
for (const module of modules) {
|
|
379
459
|
if (!module.routes || !module.basePath) {
|
|
380
460
|
continue;
|
|
381
461
|
}
|
|
382
462
|
bootstrapLogger.debug(`Mounting routes: ${apiBasePath}/${module.basePath}`);
|
|
463
|
+
const container = runtime.forModule(module);
|
|
383
464
|
const router = new Hono();
|
|
384
465
|
// Set OpenAPI context on the router so routes can access it
|
|
385
466
|
setOpenAPIContext(router, openAPIContext);
|
|
386
|
-
// Create and dispose an Awilix scope around every request before handlers run.
|
|
387
|
-
router.use('*', requestScope.middleware(container));
|
|
388
467
|
// Create a bound route function for this router
|
|
389
468
|
const boundRoute = (config) => route(router, config);
|
|
390
469
|
// Normalize routes to array and call each factory
|
|
391
470
|
const routeFactories = Array.isArray(module.routes) ? module.routes : [module.routes];
|
|
392
|
-
const services = requestScope.routeServices(container);
|
|
471
|
+
const services = requestScope.routeServices(container, (scope) => runtime.forModule(module, scope));
|
|
393
472
|
for (const routeFactory of routeFactories) {
|
|
394
473
|
routeFactory(router, services, boundRoute);
|
|
395
474
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAuB,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAkBtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAwB,EACxB,GAAG,IAAwB;IAE3B,MAAM,OAAO,GAAqB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,EACJ,WAAW,GAAG,MAAM,EACpB,KAAK,GAAG,KAAK,EACb,WAAW,GAAG,iBAAiB,EAAE,EACjC,YAAY,GAAG,mBAAmB,EAClC,OAAO,EACP,SAAS,EACT,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,IAAI,GAAG,SAAS,EAChB,iBAAiB,GAAG,EAAE,GACvB,GAAG,OAAO,CAAC;IAEZ,sCAAsC;IACtC,0FAA0F;IAC1F,uFAAuF;IACvF,MAAM,iBAAiB,GAAa,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACjG,MAAM,UAAU,GACd,MAAM,EAAE,QAAQ;QAChB,CAAC,MAAM,EAAE,IAAI;YACX,CAAC,CAAC,4BAA4B,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3E,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9E,eAAe,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEtD,wCAAwC;IACxC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAE9C,eAAe,CAAC,KAAK,CACnB,SAAS,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;IAEF,oCAAoC;IACpC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,oBAAoB,GAAG,sBAAsB,CACjD,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,IAAI,EACJ,eAAe,CAChB,CAAC;QAEF,0DAA0D;QAC1D,IAAI,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,4BAA4B,CAAC,SAAS,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,MAAM,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE;YACjE,WAAW;YACX,WAAW;YACX,IAAI;YACJ,YAAY;YACZ,OAAO;YACP,SAAS;YACT,UAAU;YACV,MAAM;YACN,iBAAiB;YACjB,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,SAA2C,EAC3C,IAA4B,EAC5B,eAAoD;IAEpD,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,UAAU;YAAE,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;;YAC9C,MAAM,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,uCAAuC,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAsB,EACtB,iBAA2B,EAC3B,iBAAqC,EACrC,IAA4B,EAC5B,eAAoD;IAEpD,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,MAAoB,EAAE,IAAY,EAAE,EAAE,CACtD,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,qBAAqB,GAAG,EAAE,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAC7D,MAAM,sBAAsB,GAAa,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,QAA0B,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,CACL,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;gBAChD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAC5C,CAAC;QACJ,CAAC,CAAC;QACF,wFAAwF;QACxF,MAAM,SAAS,GAAG;YAChB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzF,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;SACzF,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,uBAAuB,CACnC;YACE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE;gBACT,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;aACxF;SACF,EACD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EACzB,eAAe,CAChB,CAAC;QACF,sBAAsB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC;SAC9E,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CACzB,CAAC;IACF,MAAM,oBAAoB,GAAG;QAC3B,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjE,GAAG,sBAAsB;SAC1B,CAAC;KACH,CAAC;IACF,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,IACE,iBAAiB,CAAC,IAAI,CACpB,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,CAC1E,EACD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5B,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,UAA0B,EAC1B,OAAsB,EACtB,eAAoD,EACpD,QAWC;IAED,MAAM,EACJ,WAAW,EACX,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,aAAa,GACd,GAAG,QAAQ,CAAC;IAEb,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAEpC,uCAAuC;IACvC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;QAC3E,IAAI;QACJ,WAAW;QACX,YAAY;QACZ,OAAO;QACP,SAAS;QACT,UAAU;QACV,MAAM;QACN,iBAAiB;QACjB,aAAa;QACb,eAAe;KAChB,CAAC,CAAC;IAEH,sBAAsB;IACtB,iBAAiB,CAAC;QAChB,GAAG;QACH,OAAO,EAAE,UAAU;QACnB,OAAO;QACP,WAAW;QACX,eAAe;QACf,cAAc;KACf,CAAC,CAAC;IAEH,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,gBAAgB,EAAE,EAAE,CAAC;IAE3B,eAAe,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC5C,eAAe,CAAC,KAAK,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IACrD,eAAe,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC;IAE5F,MAAM,SAAS,GAAG,0BAA0B,CAAC;QAC3C,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,eAAe,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxE,MAAM,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;YACxE,eAAe,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,eAAe,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACtD,CAAC;oBAAS,CAAC;gBACT,MAAM,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;YACzD,CAAC;YACD,eAAe,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,IAAI,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACxF,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,IAAI,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACxF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,sDAAsD;IACtD,iEAAiE;IACjE,IAAI,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAC5F,CAAC;AAED,2FAA2F;AAC3F,SAAS,yBAAyB,CAChC,OAAsB,EACtB,iBAAqC,EACrC,eAAoD;IAEpD,MAAM,QAAQ,GAAG,CAAC,MAAoB,EAAE,IAAY,EAAE,EAAE,CACtD,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;IAC9E,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,wCAAwC,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,eAAe,CAAC,IAAI,CAClB,sBAAsB,IAAI,sCAAsC,MAAM;qBACnE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;qBACnC,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAC9D,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,6BAA6B,MAAM,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,mDAAmD,MAAM,GAAG,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAA0B;IAChD,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAC,QAA0B;IAC/C,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAClD,OAAO,QAA0B,CAAC;AACpC,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,YAAY,CACzB,iBAA4E,EAC5E,eAAoD;IAEpD,IAAI,CAAC,iBAAiB;QAAE,OAAO;IAC/B,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,cAAc,IAAI,IAAI,EACxC,eAAe,CAChB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,eAAe,CAAC,IAAI,CAClB,2DAA2D,MAAM,CAAC,OAAO,WAAW,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,8CAA8C,IAAI,mEAAmE,CACtH,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAWlB;IAMC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CACvB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,EAAE,GAAG,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEvC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,yBAAyB,CAC9F,GAAG,EACH,OAAO,CACR,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAO5B;IACC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEvF,6CAA6C;IAC7C,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;QAChD,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI;QAC/B,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO;KACvC,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,cAAc,GAA+B,OAAO,EAAE,kBAAkB,IAAI,EAAE,CAAC;IACrF,MAAM,UAAU,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,cAAc,CAAC,CAAC;IAE7D,mDAAmD;IACnD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,EAAE,aAAa,EAAE,UAE9B,CAAC;IAEd,IAAI,UAAU,EAAE,eAAe,EAAE,CAAC;QAChC,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,UAAU;QACV,eAAe;QACf,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,UAAU,EAAE,MAAM,EAAE,UAAU;QAC9B,MAAM,EAAE,MAAM,EAAE,QAAQ;QACxB,WAAW;QACX,aAAa,EAAE,yBAAyB,CAAuB;YAC7D,QAAQ,EAAE,aAAa,EAAE,QAAQ;YACjC,YAAY,EAAE,aAAa,EAAE,YAAY;SAC1C,CAAC;QACF,WAAW,EAAE,aAAa,EAAE,WAAW;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,GAAS,EACT,EACE,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,MAAM,GAMP;IAED,IAAI,YAAY,KAAK,KAAK;QAAE,OAAO;IAEnC,6FAA6F;IAC7F,IAAI,YAAY,KAAK,mBAAmB,EAAE,CAAC;QACzC,eAAe,CAAC,KAAK,CACnB,iBAAiB;YACf,CAAC,CAAC,gDAAgD;YAClD,CAAC,CAAC,kCAAkC,CACvC,CAAC;QACF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;YAC5C,MAAM,EAAE,eAAe;YACvB,gBAAgB,EAAE,iBAAiB;gBACjC,CAAC,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;gBAChF,CAAC,CAAC,SAAS;YACb,cAAc,EAAE;gBACd,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC;aACrF;SACF,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChD,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,GAAS,EACT,EACE,WAAW,EACX,UAAU,EACV,eAAe,GAKhB;IAED,8EAA8E;IAC9E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC7B,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,IAAI,UAAU,EAAE,aAAa,KAAK,KAAK,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACxE,eAAe,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QACpC,eAAe,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;IACP,IAAI,UAAU,EAAE,IAAI,EAAE,CAAC;QACrB,eAAe,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,GAAS,EACT,EACE,MAAM,EACN,eAAe,GACkE;IAEnF,GAAG,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO;IAEtC,gFAAgF;IAChF,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;QACjB,eAAe,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAEvF,qCAAqC;QACrC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,EAAE,QAAQ,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACpF,eAAe,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;gBACrC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC7B,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;gBACpB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;gBAChB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;gBACpB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC7B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,4DAA4D;IAC5D,IAAI,MAAM,EAAE,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,MAAM,cAAc,GAAG,QAAQ,EAAE,CAAC;IAClC,eAAe,CAAC,KAAK,CAAC,oCAAoC,cAAc,GAAG,CAAC,CAAC;IAC7E,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,GAAS,EACT,EACE,SAAS,EACT,eAAe,GACwE;IAEzF,IAAI,CAAC,SAAS,EAAE,OAAO;QAAE,OAAO;IAEhC,eAAe,CAAC,KAAK,CACnB,0BAA0B,SAAS,CAAC,OAAO,aAAa,SAAS,CAAC,WAAW,IAAI,GAAG,QAAQ,SAAS,CAAC,QAAQ,IAAI,KAAK,KAAK,CAC7H,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,GAAS,EACT,OAMC;IAED,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEjF,IAAI,CAAC,OAAO,EAAE,OAAO;QAAE,OAAO,EAAE,CAAC;IAEjC,eAAe,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC7C,OAAO,gBAAgB,CAAC;QACtB,GAAG;QACH,WAAW;QACX,OAAO;QACP,SAAS;QACT,UAAU;QACV,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAO1B;IACC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAExF,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QAED,eAAe,CAAC,KAAK,CAAC,oBAAoB,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1B,4DAA4D;QAC5D,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE1C,gDAAgD;QAChD,MAAM,UAAU,GAAG,CAAwC,MAAS,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/F,kDAAkD;QAClD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/D,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CACjC,CAAC;QACF,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YAC1C,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAyB,CAAC,CAAC;QAC5D,CAAC;QAED,qBAAqB;QACrB,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
|
package/dist/core/contract.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import type { BootstrapOptions, ModuleConfig } from './types.js';
|
|
1
|
+
import type { BootstrapOptions, ModuleConfig, RequiresSerializationOption } from './types.js';
|
|
2
|
+
/** Bootstrap options for contract generation; `mode` is always `'contract'`. */
|
|
3
|
+
export type GenerateOpenAPIOptions = Omit<BootstrapOptions, 'mode'>;
|
|
4
|
+
/**
|
|
5
|
+
* The `options` parameter of `generateOpenAPI()`: required once `GlassworkConfig` requires the
|
|
6
|
+
* `serialization` option, like `bootstrap()`.
|
|
7
|
+
*/
|
|
8
|
+
export type GenerateOpenAPIArguments = RequiresSerializationOption extends true ? [options: GenerateOpenAPIOptions] : [options?: GenerateOpenAPIOptions];
|
|
2
9
|
/** Generates route contracts without runtime provider initialization or a server. */
|
|
3
|
-
export declare function generateOpenAPI(module: ModuleConfig,
|
|
10
|
+
export declare function generateOpenAPI(module: ModuleConfig, ...args: GenerateOpenAPIArguments): Promise<{
|
|
4
11
|
tags: import("openapi-types").OpenAPIV3.TagObject[];
|
|
5
12
|
info: {
|
|
6
13
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9F,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,SAAS,IAAI,GAC3E,CAAC,OAAO,EAAE,sBAAsB,CAAC,GACjC,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAEvC,qFAAqF;AACrF,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAc5F"}
|
package/dist/core/contract.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { bootstrap } from './bootstrap.js';
|
|
2
2
|
/** Generates route contracts without runtime provider initialization or a server. */
|
|
3
|
-
export async function generateOpenAPI(module,
|
|
3
|
+
export async function generateOpenAPI(module, ...args) {
|
|
4
|
+
const options = args[0] ?? {};
|
|
4
5
|
const result = await bootstrap(module, {
|
|
5
6
|
...options,
|
|
6
7
|
mode: 'contract',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAc3C,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAoB,EAAE,GAAG,IAA8B;IAC3F,MAAM,OAAO,GAA2B,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;QACrC,GAAG,OAAO;QACV,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;KAClF,CAAC,CAAC;IACH,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClF,OAAO,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A provider is not visible in the module that resolves it. `path` lists the module-qualified
|
|
3
|
+
* providers (`module/provider`) that were being created when the lookup failed, outermost
|
|
4
|
+
* first.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ProviderNotAvailableError extends Error {
|
|
7
|
+
#private;
|
|
8
|
+
readonly module: string;
|
|
9
|
+
readonly provider: string;
|
|
10
|
+
readonly hint: string;
|
|
11
|
+
readonly path: string[];
|
|
12
|
+
constructor(module: string, provider: string, hint: string);
|
|
13
|
+
/** @internal Records the provider whose creation needed the missing one. */
|
|
14
|
+
requiredBy(token: string): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;;IAIhD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;IALvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE7B,YACW,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAKtB;IAED,4EAA4E;IAC5E,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI9B;CAMF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A provider is not visible in the module that resolves it. `path` lists the module-qualified
|
|
3
|
+
* providers (`module/provider`) that were being created when the lookup failed, outermost
|
|
4
|
+
* first.
|
|
5
|
+
*/
|
|
6
|
+
export class ProviderNotAvailableError extends Error {
|
|
7
|
+
module;
|
|
8
|
+
provider;
|
|
9
|
+
hint;
|
|
10
|
+
path = [];
|
|
11
|
+
constructor(module, provider, hint) {
|
|
12
|
+
super();
|
|
13
|
+
this.module = module;
|
|
14
|
+
this.provider = provider;
|
|
15
|
+
this.hint = hint;
|
|
16
|
+
this.name = 'ProviderNotAvailableError';
|
|
17
|
+
this.message = this.#format();
|
|
18
|
+
}
|
|
19
|
+
/** @internal Records the provider whose creation needed the missing one. */
|
|
20
|
+
requiredBy(token) {
|
|
21
|
+
if (this.path[0] === token)
|
|
22
|
+
return;
|
|
23
|
+
this.path.unshift(token);
|
|
24
|
+
this.message = this.#format();
|
|
25
|
+
}
|
|
26
|
+
#format() {
|
|
27
|
+
const requiredBy = this.path.length > 0 ? ` (required by ${this.path.join(' -> ')})` : '';
|
|
28
|
+
return `Provider "${this.provider}" is not available in module "${this.module}"${requiredBy}. ${this.hint}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAIvC,MAAM;IACN,QAAQ;IACR,IAAI;IALN,IAAI,GAAa,EAAE,CAAC;IAE7B,YACW,MAAc,EACd,QAAgB,EAChB,IAAY;QAErB,KAAK,EAAE,CAAC;sBAJC,MAAM;wBACN,QAAQ;oBACR,IAAI;QAGb,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,UAAU,CAAC,KAAa;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,aAAa,IAAI,CAAC,QAAQ,iCAAiC,IAAI,CAAC,MAAM,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9G,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application-wide settings that route types read at compile time.
|
|
3
|
+
*
|
|
4
|
+
* `bootstrap()` applies the runtime side through its `serialization` option. Declare the same
|
|
5
|
+
* values here so handler return types follow them: with `decimals: 'string'`, response types
|
|
6
|
+
* accept Decimal values on string fields instead of number fields; with `strictTypes: true`,
|
|
7
|
+
* every route is typed as if it set `strictTypes: true`. The `serialization` option's type
|
|
8
|
+
* follows this declaration, so the two cannot drift apart.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // In your application's type declarations
|
|
13
|
+
* declare module 'glasswork' {
|
|
14
|
+
* interface GlassworkConfig {
|
|
15
|
+
* decimals: 'string';
|
|
16
|
+
* strictTypes: true;
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* // bootstrap() then requires the matching option
|
|
21
|
+
* await bootstrap(AppModule, {
|
|
22
|
+
* serialization: { decimals: 'string', strictTypes: true },
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export interface GlassworkConfig {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* How Decimal values (Prisma, Decimal.js) serialize in responses:
|
|
30
|
+
* - `'number'`: `toNumber()`, which rounds to a double
|
|
31
|
+
* - `'string'`: `toFixed()`, which keeps every digit and the stored scale in plain notation
|
|
32
|
+
*/
|
|
33
|
+
export type DecimalSerialization = 'number' | 'string';
|
|
34
|
+
/** The Decimal serialization declared in {@link GlassworkConfig}; `'number'` when not declared. */
|
|
35
|
+
export type ConfiguredDecimalSerialization = GlassworkConfig extends {
|
|
36
|
+
decimals: 'string';
|
|
37
|
+
} ? 'string' : 'number';
|
|
38
|
+
/** Whether {@link GlassworkConfig} declares `strictTypes: true` for every route. */
|
|
39
|
+
export type ConfiguredStrictTypes = GlassworkConfig extends {
|
|
40
|
+
strictTypes: true;
|
|
41
|
+
} ? true : false;
|
|
42
|
+
//# sourceMappingURL=glasswork-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glasswork-config.d.ts","sourceRoot":"","sources":["../../src/core/glasswork-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,eAAe;CAAG;AAEnC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,mGAAmG;AACnG,MAAM,MAAM,8BAA8B,GAAG,eAAe,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACvF,QAAQ,GACR,QAAQ,CAAC;AAEb,oFAAoF;AACpF,MAAM,MAAM,qBAAqB,GAAG,eAAe,SAAS;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glasswork-config.js","sourceRoot":"","sources":["../../src/core/glasswork-config.ts"],"names":[],"mappings":""}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -5,16 +5,19 @@
|
|
|
5
5
|
export type { AwilixContainer } from 'awilix';
|
|
6
6
|
export { type Config, type ConfigOptions, type ConfigProvider, ConfigValidationException, createConfig, type DotenvProviderOptions, dotenvProvider, type EnvProviderOptions, envProvider, objectProvider, parseArray, parseBoolean, parseJson, type SsmProviderOptions, ssmProvider, toCamelCase, toSnakeCase, validateConfig, } from '../config/index.js';
|
|
7
7
|
export { deepMerge } from '../utils/deep-merge.js';
|
|
8
|
-
export { isDevelopment, isLambda, isProduction, isTest } from '../utils/environment.js';
|
|
8
|
+
export { detectEnvironment, isDevelopment, isLambda, isProduction, isTest, } from '../utils/environment.js';
|
|
9
9
|
export { getClientIp } from '../utils/get-client-ip.js';
|
|
10
10
|
export type { Logger } from '../utils/logger.js';
|
|
11
11
|
export { createLogger, createPlainLogger, defaultLogger } from '../utils/logger.js';
|
|
12
12
|
export { omit } from '../utils/omit.js';
|
|
13
13
|
export { pick } from '../utils/pick.js';
|
|
14
14
|
export type { AcceptPrismaTypes, PrismaDecimalLike, SerializationConfig, SerializedTypes, TypeTransformer, } from '../utils/serialize-prisma-types.js';
|
|
15
|
-
export { defaultConfig, serializePrismaTypes } from '../utils/serialize-prisma-types.js';
|
|
15
|
+
export { createSerializationConfig, defaultConfig, serializePrismaTypes, } from '../utils/serialize-prisma-types.js';
|
|
16
16
|
export { bootstrap } from './bootstrap.js';
|
|
17
17
|
export { generateOpenAPI } from './contract.js';
|
|
18
|
-
export {
|
|
19
|
-
export type {
|
|
18
|
+
export { ProviderNotAvailableError } from './errors.js';
|
|
19
|
+
export type { DecimalSerialization, GlassworkConfig } from './glasswork-config.js';
|
|
20
|
+
export { defineModule, forwardRef } from './module.js';
|
|
21
|
+
export { inspectModuleGraph, type ModuleGraph, type ModuleGraphNode, type ModuleGraphProvider, moduleGraphToMermaid, } from './module-inspection.js';
|
|
22
|
+
export type { BootstrapOptions, BootstrapResult, Constructor, Environment, ExceptionTrackingOptions, ForwardReference, LoggerOptions, MiddlewareOptions, ModuleConfig, OnModuleDestroy, OnModuleInit, OpenAPIDocumentation, OpenAPIOptions, OpenAPIProcessorContext, OpenAPIResponseObject, OpenAPIResponseProcessor, ProviderConfig, ProviderOverride, RateLimitOptions, RateLimitStorage, RouteConfigExtensions, RouteHandlers, SerializationOptions, ServiceScope, } from './types.js';
|
|
20
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,yBAAyB,EACzB,YAAY,EACZ,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,kBAAkB,EACvB,WAAW,EACX,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,kBAAkB,EACvB,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,yBAAyB,EACzB,YAAY,EACZ,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,kBAAkB,EACvB,WAAW,EACX,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,kBAAkB,EACvB,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,MAAM,GACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC"}
|