@engjts/nexus 0.1.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/README.md +164 -0
- package/dist/advanced/cache/InMemoryCacheStore.d.ts +18 -0
- package/dist/advanced/cache/InMemoryCacheStore.d.ts.map +1 -0
- package/dist/advanced/cache/InMemoryCacheStore.js +60 -0
- package/dist/advanced/cache/InMemoryCacheStore.js.map +1 -0
- package/dist/advanced/cache/MultiTierCache.d.ts +55 -0
- package/dist/advanced/cache/MultiTierCache.d.ts.map +1 -0
- package/dist/advanced/cache/MultiTierCache.js +159 -0
- package/dist/advanced/cache/MultiTierCache.js.map +1 -0
- package/dist/advanced/cache/RedisCacheStore.d.ts +153 -0
- package/dist/advanced/cache/RedisCacheStore.d.ts.map +1 -0
- package/dist/advanced/cache/RedisCacheStore.js +247 -0
- package/dist/advanced/cache/RedisCacheStore.js.map +1 -0
- package/dist/advanced/cache/index.d.ts +6 -0
- package/dist/advanced/cache/index.d.ts.map +1 -0
- package/dist/advanced/cache/index.js +26 -0
- package/dist/advanced/cache/index.js.map +1 -0
- package/dist/advanced/cache/types.d.ts +35 -0
- package/dist/advanced/cache/types.d.ts.map +1 -0
- package/dist/advanced/cache/types.js +3 -0
- package/dist/advanced/cache/types.js.map +1 -0
- package/dist/advanced/graphql/SimpleDataLoader.d.ts +8 -0
- package/dist/advanced/graphql/SimpleDataLoader.d.ts.map +1 -0
- package/dist/advanced/graphql/SimpleDataLoader.js +43 -0
- package/dist/advanced/graphql/SimpleDataLoader.js.map +1 -0
- package/dist/advanced/graphql/index.d.ts +15 -0
- package/dist/advanced/graphql/index.d.ts.map +1 -0
- package/dist/advanced/graphql/index.js +19 -0
- package/dist/advanced/graphql/index.js.map +1 -0
- package/dist/advanced/graphql/server.d.ts +23 -0
- package/dist/advanced/graphql/server.d.ts.map +1 -0
- package/dist/advanced/graphql/server.js +208 -0
- package/dist/advanced/graphql/server.js.map +1 -0
- package/dist/advanced/graphql/types.d.ts +45 -0
- package/dist/advanced/graphql/types.d.ts.map +1 -0
- package/dist/advanced/graphql/types.js +3 -0
- package/dist/advanced/graphql/types.js.map +1 -0
- package/dist/advanced/jobs/InMemoryQueueStore.d.ts +14 -0
- package/dist/advanced/jobs/InMemoryQueueStore.d.ts.map +1 -0
- package/dist/advanced/jobs/InMemoryQueueStore.js +59 -0
- package/dist/advanced/jobs/InMemoryQueueStore.js.map +1 -0
- package/dist/advanced/jobs/JobQueue.d.ts +178 -0
- package/dist/advanced/jobs/JobQueue.d.ts.map +1 -0
- package/dist/advanced/jobs/JobQueue.js +440 -0
- package/dist/advanced/jobs/JobQueue.js.map +1 -0
- package/dist/advanced/jobs/RedisQueueStore.d.ts +157 -0
- package/dist/advanced/jobs/RedisQueueStore.d.ts.map +1 -0
- package/dist/advanced/jobs/RedisQueueStore.js +264 -0
- package/dist/advanced/jobs/RedisQueueStore.js.map +1 -0
- package/dist/advanced/jobs/index.d.ts +6 -0
- package/dist/advanced/jobs/index.d.ts.map +1 -0
- package/dist/advanced/jobs/index.js +26 -0
- package/dist/advanced/jobs/index.js.map +1 -0
- package/dist/advanced/jobs/types.d.ts +64 -0
- package/dist/advanced/jobs/types.d.ts.map +1 -0
- package/dist/advanced/jobs/types.js +3 -0
- package/dist/advanced/jobs/types.js.map +1 -0
- package/dist/advanced/observability/APMManager.d.ts +64 -0
- package/dist/advanced/observability/APMManager.d.ts.map +1 -0
- package/dist/advanced/observability/APMManager.js +150 -0
- package/dist/advanced/observability/APMManager.js.map +1 -0
- package/dist/advanced/observability/AlertManager.d.ts +30 -0
- package/dist/advanced/observability/AlertManager.d.ts.map +1 -0
- package/dist/advanced/observability/AlertManager.js +98 -0
- package/dist/advanced/observability/AlertManager.js.map +1 -0
- package/dist/advanced/observability/MetricRegistry.d.ts +37 -0
- package/dist/advanced/observability/MetricRegistry.d.ts.map +1 -0
- package/dist/advanced/observability/MetricRegistry.js +129 -0
- package/dist/advanced/observability/MetricRegistry.js.map +1 -0
- package/dist/advanced/observability/ObservabilityCenter.d.ts +113 -0
- package/dist/advanced/observability/ObservabilityCenter.d.ts.map +1 -0
- package/dist/advanced/observability/ObservabilityCenter.js +266 -0
- package/dist/advanced/observability/ObservabilityCenter.js.map +1 -0
- package/dist/advanced/observability/StructuredLogger.d.ts +25 -0
- package/dist/advanced/observability/StructuredLogger.d.ts.map +1 -0
- package/dist/advanced/observability/StructuredLogger.js +137 -0
- package/dist/advanced/observability/StructuredLogger.js.map +1 -0
- package/dist/advanced/observability/TracingManager.d.ts +31 -0
- package/dist/advanced/observability/TracingManager.d.ts.map +1 -0
- package/dist/advanced/observability/TracingManager.js +105 -0
- package/dist/advanced/observability/TracingManager.js.map +1 -0
- package/dist/advanced/observability/adapters.d.ts +134 -0
- package/dist/advanced/observability/adapters.d.ts.map +1 -0
- package/dist/advanced/observability/adapters.js +257 -0
- package/dist/advanced/observability/adapters.js.map +1 -0
- package/dist/advanced/observability/createObservabilityMiddleware.d.ts +8 -0
- package/dist/advanced/observability/createObservabilityMiddleware.d.ts.map +1 -0
- package/dist/advanced/observability/createObservabilityMiddleware.js +46 -0
- package/dist/advanced/observability/createObservabilityMiddleware.js.map +1 -0
- package/dist/advanced/observability/index.d.ts +2 -0
- package/dist/advanced/observability/index.d.ts.map +1 -0
- package/dist/advanced/observability/index.js +13 -0
- package/dist/advanced/observability/index.js.map +1 -0
- package/dist/advanced/observability/types.d.ts +182 -0
- package/dist/advanced/observability/types.d.ts.map +1 -0
- package/dist/advanced/observability/types.js +3 -0
- package/dist/advanced/observability/types.js.map +1 -0
- package/dist/advanced/playground/extractPathParams.d.ts +4 -0
- package/dist/advanced/playground/extractPathParams.d.ts.map +1 -0
- package/dist/advanced/playground/extractPathParams.js +8 -0
- package/dist/advanced/playground/extractPathParams.js.map +1 -0
- package/dist/advanced/playground/generateFieldExample.d.ts +2 -0
- package/dist/advanced/playground/generateFieldExample.d.ts.map +1 -0
- package/dist/advanced/playground/generateFieldExample.js +40 -0
- package/dist/advanced/playground/generateFieldExample.js.map +1 -0
- package/dist/advanced/playground/generatePlaygroundHTML.d.ts +3 -0
- package/dist/advanced/playground/generatePlaygroundHTML.d.ts.map +1 -0
- package/dist/advanced/playground/generatePlaygroundHTML.js +1848 -0
- package/dist/advanced/playground/generatePlaygroundHTML.js.map +1 -0
- package/dist/advanced/playground/generateSummary.d.ts +3 -0
- package/dist/advanced/playground/generateSummary.d.ts.map +1 -0
- package/dist/advanced/playground/generateSummary.js +19 -0
- package/dist/advanced/playground/generateSummary.js.map +1 -0
- package/dist/advanced/playground/getTagFromPath.d.ts +2 -0
- package/dist/advanced/playground/getTagFromPath.d.ts.map +1 -0
- package/dist/advanced/playground/getTagFromPath.js +11 -0
- package/dist/advanced/playground/getTagFromPath.js.map +1 -0
- package/dist/advanced/playground/index.d.ts +7 -0
- package/dist/advanced/playground/index.d.ts.map +1 -0
- package/dist/advanced/playground/index.js +10 -0
- package/dist/advanced/playground/index.js.map +1 -0
- package/dist/advanced/playground/playground.d.ts +4 -0
- package/dist/advanced/playground/playground.d.ts.map +1 -0
- package/dist/advanced/playground/playground.js +139 -0
- package/dist/advanced/playground/playground.js.map +1 -0
- package/dist/advanced/playground/types.d.ts +18 -0
- package/dist/advanced/playground/types.d.ts.map +1 -0
- package/dist/advanced/playground/types.js +3 -0
- package/dist/advanced/playground/types.js.map +1 -0
- package/dist/advanced/playground/zodToExample.d.ts +2 -0
- package/dist/advanced/playground/zodToExample.d.ts.map +1 -0
- package/dist/advanced/playground/zodToExample.js +22 -0
- package/dist/advanced/playground/zodToExample.js.map +1 -0
- package/dist/advanced/playground/zodToParams.d.ts +5 -0
- package/dist/advanced/playground/zodToParams.d.ts.map +1 -0
- package/dist/advanced/playground/zodToParams.js +18 -0
- package/dist/advanced/playground/zodToParams.js.map +1 -0
- package/dist/advanced/postman/buildAuth.d.ts +3 -0
- package/dist/advanced/postman/buildAuth.d.ts.map +1 -0
- package/dist/advanced/postman/buildAuth.js +32 -0
- package/dist/advanced/postman/buildAuth.js.map +1 -0
- package/dist/advanced/postman/buildBody.d.ts +3 -0
- package/dist/advanced/postman/buildBody.d.ts.map +1 -0
- package/dist/advanced/postman/buildBody.js +15 -0
- package/dist/advanced/postman/buildBody.js.map +1 -0
- package/dist/advanced/postman/buildQueryParams.d.ts +3 -0
- package/dist/advanced/postman/buildQueryParams.d.ts.map +1 -0
- package/dist/advanced/postman/buildQueryParams.js +26 -0
- package/dist/advanced/postman/buildQueryParams.js.map +1 -0
- package/dist/advanced/postman/buildRequestItem.d.ts +3 -0
- package/dist/advanced/postman/buildRequestItem.d.ts.map +1 -0
- package/dist/advanced/postman/buildRequestItem.js +33 -0
- package/dist/advanced/postman/buildRequestItem.js.map +1 -0
- package/dist/advanced/postman/buildResponses.d.ts +3 -0
- package/dist/advanced/postman/buildResponses.d.ts.map +1 -0
- package/dist/advanced/postman/buildResponses.js +12 -0
- package/dist/advanced/postman/buildResponses.js.map +1 -0
- package/dist/advanced/postman/buildUrl.d.ts +3 -0
- package/dist/advanced/postman/buildUrl.d.ts.map +1 -0
- package/dist/advanced/postman/buildUrl.js +30 -0
- package/dist/advanced/postman/buildUrl.js.map +1 -0
- package/dist/advanced/postman/capitalize.d.ts +2 -0
- package/dist/advanced/postman/capitalize.d.ts.map +1 -0
- package/dist/advanced/postman/capitalize.js +7 -0
- package/dist/advanced/postman/capitalize.js.map +1 -0
- package/dist/advanced/postman/generateCollection.d.ts +3 -0
- package/dist/advanced/postman/generateCollection.d.ts.map +1 -0
- package/dist/advanced/postman/generateCollection.js +50 -0
- package/dist/advanced/postman/generateCollection.js.map +1 -0
- package/dist/advanced/postman/generateEnvironment.d.ts +3 -0
- package/dist/advanced/postman/generateEnvironment.d.ts.map +1 -0
- package/dist/advanced/postman/generateEnvironment.js +33 -0
- package/dist/advanced/postman/generateEnvironment.js.map +1 -0
- package/dist/advanced/postman/generateExampleFromZod.d.ts +2 -0
- package/dist/advanced/postman/generateExampleFromZod.d.ts.map +1 -0
- package/dist/advanced/postman/generateExampleFromZod.js +22 -0
- package/dist/advanced/postman/generateExampleFromZod.js.map +1 -0
- package/dist/advanced/postman/generateFieldExample.d.ts +2 -0
- package/dist/advanced/postman/generateFieldExample.d.ts.map +1 -0
- package/dist/advanced/postman/generateFieldExample.js +55 -0
- package/dist/advanced/postman/generateFieldExample.js.map +1 -0
- package/dist/advanced/postman/generateName.d.ts +3 -0
- package/dist/advanced/postman/generateName.d.ts.map +1 -0
- package/dist/advanced/postman/generateName.js +19 -0
- package/dist/advanced/postman/generateName.js.map +1 -0
- package/dist/advanced/postman/generateUUID.d.ts +2 -0
- package/dist/advanced/postman/generateUUID.d.ts.map +1 -0
- package/dist/advanced/postman/generateUUID.js +14 -0
- package/dist/advanced/postman/generateUUID.js.map +1 -0
- package/dist/advanced/postman/getTagFromPath.d.ts +2 -0
- package/dist/advanced/postman/getTagFromPath.d.ts.map +1 -0
- package/dist/advanced/postman/getTagFromPath.js +12 -0
- package/dist/advanced/postman/getTagFromPath.js.map +1 -0
- package/dist/advanced/postman/index.d.ts +28 -0
- package/dist/advanced/postman/index.d.ts.map +1 -0
- package/dist/advanced/postman/index.js +30 -0
- package/dist/advanced/postman/index.js.map +1 -0
- package/dist/advanced/postman/postman.d.ts +7 -0
- package/dist/advanced/postman/postman.d.ts.map +1 -0
- package/dist/advanced/postman/postman.js +138 -0
- package/dist/advanced/postman/postman.js.map +1 -0
- package/dist/advanced/postman/slugify.d.ts +2 -0
- package/dist/advanced/postman/slugify.d.ts.map +1 -0
- package/dist/advanced/postman/slugify.js +10 -0
- package/dist/advanced/postman/slugify.js.map +1 -0
- package/dist/advanced/postman/types.d.ts +133 -0
- package/dist/advanced/postman/types.d.ts.map +1 -0
- package/dist/advanced/postman/types.js +3 -0
- package/dist/advanced/postman/types.js.map +1 -0
- package/dist/advanced/realtime/index.d.ts +13 -0
- package/dist/advanced/realtime/index.d.ts.map +1 -0
- package/dist/advanced/realtime/index.js +17 -0
- package/dist/advanced/realtime/index.js.map +1 -0
- package/dist/advanced/realtime/websocket.d.ts +60 -0
- package/dist/advanced/realtime/websocket.d.ts.map +1 -0
- package/dist/advanced/realtime/websocket.js +197 -0
- package/dist/advanced/realtime/websocket.js.map +1 -0
- package/dist/advanced/sentry/index.d.ts +287 -0
- package/dist/advanced/sentry/index.d.ts.map +1 -0
- package/dist/advanced/sentry/index.js +1002 -0
- package/dist/advanced/sentry/index.js.map +1 -0
- package/dist/advanced/sentry/types.d.ts +298 -0
- package/dist/advanced/sentry/types.d.ts.map +1 -0
- package/dist/advanced/sentry/types.js +6 -0
- package/dist/advanced/sentry/types.js.map +1 -0
- package/dist/advanced/static/generateDirectoryListing.d.ts +5 -0
- package/dist/advanced/static/generateDirectoryListing.d.ts.map +1 -0
- package/dist/advanced/static/generateDirectoryListing.js +44 -0
- package/dist/advanced/static/generateDirectoryListing.js.map +1 -0
- package/dist/advanced/static/generateETag.d.ts +8 -0
- package/dist/advanced/static/generateETag.d.ts.map +1 -0
- package/dist/advanced/static/generateETag.js +10 -0
- package/dist/advanced/static/generateETag.js.map +1 -0
- package/dist/advanced/static/getMimeType.d.ts +5 -0
- package/dist/advanced/static/getMimeType.d.ts.map +1 -0
- package/dist/advanced/static/getMimeType.js +11 -0
- package/dist/advanced/static/getMimeType.js.map +1 -0
- package/dist/advanced/static/index.d.ts +30 -0
- package/dist/advanced/static/index.d.ts.map +1 -0
- package/dist/advanced/static/index.js +33 -0
- package/dist/advanced/static/index.js.map +1 -0
- package/dist/advanced/static/isSafePath.d.ts +5 -0
- package/dist/advanced/static/isSafePath.d.ts.map +1 -0
- package/dist/advanced/static/isSafePath.js +14 -0
- package/dist/advanced/static/isSafePath.js.map +1 -0
- package/dist/advanced/static/publicDir.d.ts +12 -0
- package/dist/advanced/static/publicDir.d.ts.map +1 -0
- package/dist/advanced/static/publicDir.js +22 -0
- package/dist/advanced/static/publicDir.js.map +1 -0
- package/dist/advanced/static/serveStatic.d.ts +7 -0
- package/dist/advanced/static/serveStatic.d.ts.map +1 -0
- package/dist/advanced/static/serveStatic.js +198 -0
- package/dist/advanced/static/serveStatic.js.map +1 -0
- package/dist/advanced/static/spa.d.ts +14 -0
- package/dist/advanced/static/spa.d.ts.map +1 -0
- package/dist/advanced/static/spa.js +23 -0
- package/dist/advanced/static/spa.js.map +1 -0
- package/dist/advanced/static/types.d.ts +78 -0
- package/dist/advanced/static/types.d.ts.map +1 -0
- package/dist/advanced/static/types.js +67 -0
- package/dist/advanced/static/types.js.map +1 -0
- package/dist/advanced/swagger/SwaggerGenerator.d.ts +19 -0
- package/dist/advanced/swagger/SwaggerGenerator.d.ts.map +1 -0
- package/dist/advanced/swagger/SwaggerGenerator.js +59 -0
- package/dist/advanced/swagger/SwaggerGenerator.js.map +1 -0
- package/dist/advanced/swagger/buildOperation.d.ts +6 -0
- package/dist/advanced/swagger/buildOperation.d.ts.map +1 -0
- package/dist/advanced/swagger/buildOperation.js +54 -0
- package/dist/advanced/swagger/buildOperation.js.map +1 -0
- package/dist/advanced/swagger/buildParameters.d.ts +6 -0
- package/dist/advanced/swagger/buildParameters.d.ts.map +1 -0
- package/dist/advanced/swagger/buildParameters.js +57 -0
- package/dist/advanced/swagger/buildParameters.js.map +1 -0
- package/dist/advanced/swagger/buildRequestBody.d.ts +7 -0
- package/dist/advanced/swagger/buildRequestBody.d.ts.map +1 -0
- package/dist/advanced/swagger/buildRequestBody.js +19 -0
- package/dist/advanced/swagger/buildRequestBody.js.map +1 -0
- package/dist/advanced/swagger/buildResponses.d.ts +7 -0
- package/dist/advanced/swagger/buildResponses.d.ts.map +1 -0
- package/dist/advanced/swagger/buildResponses.js +48 -0
- package/dist/advanced/swagger/buildResponses.js.map +1 -0
- package/dist/advanced/swagger/capitalize.d.ts +2 -0
- package/dist/advanced/swagger/capitalize.d.ts.map +1 -0
- package/dist/advanced/swagger/capitalize.js +7 -0
- package/dist/advanced/swagger/capitalize.js.map +1 -0
- package/dist/advanced/swagger/convertPath.d.ts +6 -0
- package/dist/advanced/swagger/convertPath.d.ts.map +1 -0
- package/dist/advanced/swagger/convertPath.js +11 -0
- package/dist/advanced/swagger/convertPath.js.map +1 -0
- package/dist/advanced/swagger/createSwagger.d.ts +8 -0
- package/dist/advanced/swagger/createSwagger.d.ts.map +1 -0
- package/dist/advanced/swagger/createSwagger.js +12 -0
- package/dist/advanced/swagger/createSwagger.js.map +1 -0
- package/dist/advanced/swagger/generateOperationId.d.ts +6 -0
- package/dist/advanced/swagger/generateOperationId.d.ts.map +1 -0
- package/dist/advanced/swagger/generateOperationId.js +20 -0
- package/dist/advanced/swagger/generateOperationId.js.map +1 -0
- package/dist/advanced/swagger/generateSpec.d.ts +6 -0
- package/dist/advanced/swagger/generateSpec.d.ts.map +1 -0
- package/dist/advanced/swagger/generateSpec.js +85 -0
- package/dist/advanced/swagger/generateSpec.js.map +1 -0
- package/dist/advanced/swagger/generateSummary.d.ts +6 -0
- package/dist/advanced/swagger/generateSummary.d.ts.map +1 -0
- package/dist/advanced/swagger/generateSummary.js +22 -0
- package/dist/advanced/swagger/generateSummary.js.map +1 -0
- package/dist/advanced/swagger/generateSwaggerUI.d.ts +6 -0
- package/dist/advanced/swagger/generateSwaggerUI.d.ts.map +1 -0
- package/dist/advanced/swagger/generateSwaggerUI.js +69 -0
- package/dist/advanced/swagger/generateSwaggerUI.js.map +1 -0
- package/dist/advanced/swagger/generateThemeCss.d.ts +6 -0
- package/dist/advanced/swagger/generateThemeCss.d.ts.map +1 -0
- package/dist/advanced/swagger/generateThemeCss.js +53 -0
- package/dist/advanced/swagger/generateThemeCss.js.map +1 -0
- package/dist/advanced/swagger/index.d.ts +23 -0
- package/dist/advanced/swagger/index.d.ts.map +1 -0
- package/dist/advanced/swagger/index.js +26 -0
- package/dist/advanced/swagger/index.js.map +1 -0
- package/dist/advanced/swagger/swagger.d.ts +36 -0
- package/dist/advanced/swagger/swagger.d.ts.map +1 -0
- package/dist/advanced/swagger/swagger.js +198 -0
- package/dist/advanced/swagger/swagger.js.map +1 -0
- package/dist/advanced/swagger/types.d.ts +210 -0
- package/dist/advanced/swagger/types.d.ts.map +1 -0
- package/dist/advanced/swagger/types.js +3 -0
- package/dist/advanced/swagger/types.js.map +1 -0
- package/dist/advanced/swagger/zodFieldToOpenAPI.d.ts +6 -0
- package/dist/advanced/swagger/zodFieldToOpenAPI.d.ts.map +1 -0
- package/dist/advanced/swagger/zodFieldToOpenAPI.js +86 -0
- package/dist/advanced/swagger/zodFieldToOpenAPI.js.map +1 -0
- package/dist/advanced/swagger/zodSchemaToOpenAPI.d.ts +6 -0
- package/dist/advanced/swagger/zodSchemaToOpenAPI.d.ts.map +1 -0
- package/dist/advanced/swagger/zodSchemaToOpenAPI.js +44 -0
- package/dist/advanced/swagger/zodSchemaToOpenAPI.js.map +1 -0
- package/dist/advanced/swagger/zodToOpenAPI.d.ts +6 -0
- package/dist/advanced/swagger/zodToOpenAPI.d.ts.map +1 -0
- package/dist/advanced/swagger/zodToOpenAPI.js +22 -0
- package/dist/advanced/swagger/zodToOpenAPI.js.map +1 -0
- package/dist/advanced/testing/factory.d.ts +206 -0
- package/dist/advanced/testing/factory.d.ts.map +1 -0
- package/dist/advanced/testing/factory.js +433 -0
- package/dist/advanced/testing/factory.js.map +1 -0
- package/dist/advanced/testing/harness.d.ts +181 -0
- package/dist/advanced/testing/harness.d.ts.map +1 -0
- package/dist/advanced/testing/harness.js +481 -0
- package/dist/advanced/testing/harness.js.map +1 -0
- package/dist/advanced/testing/index.d.ts +235 -0
- package/dist/advanced/testing/index.d.ts.map +1 -0
- package/dist/advanced/testing/index.js +306 -0
- package/dist/advanced/testing/index.js.map +1 -0
- package/dist/advanced/testing/load-test.d.ts +148 -0
- package/dist/advanced/testing/load-test.d.ts.map +1 -0
- package/dist/advanced/testing/load-test.js +490 -0
- package/dist/advanced/testing/load-test.js.map +1 -0
- package/dist/advanced/testing/mock-server.d.ts +166 -0
- package/dist/advanced/testing/mock-server.d.ts.map +1 -0
- package/dist/advanced/testing/mock-server.js +424 -0
- package/dist/advanced/testing/mock-server.js.map +1 -0
- package/dist/advanced/testing/mock.d.ts +248 -0
- package/dist/advanced/testing/mock.d.ts.map +1 -0
- package/dist/advanced/testing/mock.js +549 -0
- package/dist/advanced/testing/mock.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/cli.d.ts +24 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +131 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/build.d.ts +20 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +63 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/create.d.ts +13 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +142 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +15 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +77 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +13 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +80 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/help.d.ts +13 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +83 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/init.d.ts +11 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +76 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/version.d.ts +9 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +35 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/templates/generators.d.ts +22 -0
- package/dist/cli/templates/generators.d.ts.map +1 -0
- package/dist/cli/templates/generators.js +282 -0
- package/dist/cli/templates/generators.js.map +1 -0
- package/dist/cli/templates/index.d.ts +27 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +651 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/utils/exec.d.ts +12 -0
- package/dist/cli/utils/exec.d.ts.map +1 -0
- package/dist/cli/utils/exec.js +37 -0
- package/dist/cli/utils/exec.js.map +1 -0
- package/dist/cli/utils/file-system.d.ts +15 -0
- package/dist/cli/utils/file-system.d.ts.map +1 -0
- package/dist/cli/utils/file-system.js +105 -0
- package/dist/cli/utils/file-system.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +40 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +100 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/core/adapter.d.ts +73 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +27 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/application.d.ts +540 -0
- package/dist/core/application.d.ts.map +1 -0
- package/dist/core/application.js +1111 -0
- package/dist/core/application.js.map +1 -0
- package/dist/core/context-pool.d.ts +52 -0
- package/dist/core/context-pool.d.ts.map +1 -0
- package/dist/core/context-pool.js +111 -0
- package/dist/core/context-pool.js.map +1 -0
- package/dist/core/context.d.ts +148 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +367 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +77 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/middleware.d.ts +49 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +215 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/performance/buffer-pool.d.ts +47 -0
- package/dist/core/performance/buffer-pool.d.ts.map +1 -0
- package/dist/core/performance/buffer-pool.js +97 -0
- package/dist/core/performance/buffer-pool.js.map +1 -0
- package/dist/core/performance/jit-compiler.d.ts +73 -0
- package/dist/core/performance/jit-compiler.d.ts.map +1 -0
- package/dist/core/performance/jit-compiler.js +145 -0
- package/dist/core/performance/jit-compiler.js.map +1 -0
- package/dist/core/performance/middleware-optimizer.d.ts +73 -0
- package/dist/core/performance/middleware-optimizer.d.ts.map +1 -0
- package/dist/core/performance/middleware-optimizer.js +138 -0
- package/dist/core/performance/middleware-optimizer.js.map +1 -0
- package/dist/core/plugin/PluginManager.d.ts +93 -0
- package/dist/core/plugin/PluginManager.d.ts.map +1 -0
- package/dist/core/plugin/PluginManager.js +351 -0
- package/dist/core/plugin/PluginManager.js.map +1 -0
- package/dist/core/plugin/builder.d.ts +192 -0
- package/dist/core/plugin/builder.d.ts.map +1 -0
- package/dist/core/plugin/builder.js +319 -0
- package/dist/core/plugin/builder.js.map +1 -0
- package/dist/core/plugin/index.d.ts +31 -0
- package/dist/core/plugin/index.d.ts.map +1 -0
- package/dist/core/plugin/index.js +41 -0
- package/dist/core/plugin/index.js.map +1 -0
- package/dist/core/plugin/types.d.ts +184 -0
- package/dist/core/plugin/types.d.ts.map +1 -0
- package/dist/core/plugin/types.js +17 -0
- package/dist/core/plugin/types.js.map +1 -0
- package/dist/core/router/file-router.d.ts +173 -0
- package/dist/core/router/file-router.d.ts.map +1 -0
- package/dist/core/router/file-router.js +498 -0
- package/dist/core/router/file-router.js.map +1 -0
- package/dist/core/router/index.d.ts +44 -0
- package/dist/core/router/index.d.ts.map +1 -0
- package/dist/core/router/index.js +145 -0
- package/dist/core/router/index.js.map +1 -0
- package/dist/core/router/radix-tree.d.ts +69 -0
- package/dist/core/router/radix-tree.d.ts.map +1 -0
- package/dist/core/router/radix-tree.js +196 -0
- package/dist/core/router/radix-tree.js.map +1 -0
- package/dist/core/store/index.d.ts +15 -0
- package/dist/core/store/index.d.ts.map +1 -0
- package/dist/core/store/index.js +23 -0
- package/dist/core/store/index.js.map +1 -0
- package/dist/core/store/registry.d.ts +80 -0
- package/dist/core/store/registry.d.ts.map +1 -0
- package/dist/core/store/registry.js +156 -0
- package/dist/core/store/registry.js.map +1 -0
- package/dist/core/store/request-store.d.ts +138 -0
- package/dist/core/store/request-store.d.ts.map +1 -0
- package/dist/core/store/request-store.js +209 -0
- package/dist/core/store/request-store.js.map +1 -0
- package/dist/core/store/types.d.ts +140 -0
- package/dist/core/store/types.d.ts.map +1 -0
- package/dist/core/store/types.js +176 -0
- package/dist/core/store/types.js.map +1 -0
- package/dist/core/types.d.ts +470 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +106 -0
- package/dist/core/types.js.map +1 -0
- package/dist/database/adapter.d.ts +32 -0
- package/dist/database/adapter.d.ts.map +1 -0
- package/dist/database/adapter.js +3 -0
- package/dist/database/adapter.js.map +1 -0
- package/dist/database/adapters/index.d.ts +2 -0
- package/dist/database/adapters/index.d.ts.map +1 -0
- package/dist/database/adapters/index.js +18 -0
- package/dist/database/adapters/index.js.map +1 -0
- package/dist/database/adapters/mysql.d.ts +160 -0
- package/dist/database/adapters/mysql.d.ts.map +1 -0
- package/dist/database/adapters/mysql.js +501 -0
- package/dist/database/adapters/mysql.js.map +1 -0
- package/dist/database/database.d.ts +27 -0
- package/dist/database/database.d.ts.map +1 -0
- package/dist/database/database.js +59 -0
- package/dist/database/database.js.map +1 -0
- package/dist/database/dialect.d.ts +110 -0
- package/dist/database/dialect.d.ts.map +1 -0
- package/dist/database/dialect.js +269 -0
- package/dist/database/dialect.js.map +1 -0
- package/dist/database/index.d.ts +12 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +28 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/migrations.d.ts +22 -0
- package/dist/database/migrations.d.ts.map +1 -0
- package/dist/database/migrations.js +73 -0
- package/dist/database/migrations.js.map +1 -0
- package/dist/database/optimizer.d.ts +25 -0
- package/dist/database/optimizer.d.ts.map +1 -0
- package/dist/database/optimizer.js +97 -0
- package/dist/database/optimizer.js.map +1 -0
- package/dist/database/query-builder.d.ts +49 -0
- package/dist/database/query-builder.d.ts.map +1 -0
- package/dist/database/query-builder.js +319 -0
- package/dist/database/query-builder.js.map +1 -0
- package/dist/database/realtime.d.ts +24 -0
- package/dist/database/realtime.d.ts.map +1 -0
- package/dist/database/realtime.js +38 -0
- package/dist/database/realtime.js.map +1 -0
- package/dist/database/schema.d.ts +27 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +47 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/database/transactions.d.ts +13 -0
- package/dist/database/transactions.d.ts.map +1 -0
- package/dist/database/transactions.js +51 -0
- package/dist/database/transactions.js.map +1 -0
- package/dist/database/types.d.ts +68 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +3 -0
- package/dist/database/types.js.map +1 -0
- package/dist/deployment/cluster.d.ts +161 -0
- package/dist/deployment/cluster.d.ts.map +1 -0
- package/dist/deployment/cluster.js +336 -0
- package/dist/deployment/cluster.js.map +1 -0
- package/dist/deployment/config.d.ts +209 -0
- package/dist/deployment/config.d.ts.map +1 -0
- package/dist/deployment/config.js +263 -0
- package/dist/deployment/config.js.map +1 -0
- package/dist/deployment/docker.d.ts +168 -0
- package/dist/deployment/docker.d.ts.map +1 -0
- package/dist/deployment/docker.js +437 -0
- package/dist/deployment/docker.js.map +1 -0
- package/dist/deployment/graceful-shutdown.d.ts +130 -0
- package/dist/deployment/graceful-shutdown.d.ts.map +1 -0
- package/dist/deployment/graceful-shutdown.js +271 -0
- package/dist/deployment/graceful-shutdown.js.map +1 -0
- package/dist/deployment/index.d.ts +14 -0
- package/dist/deployment/index.d.ts.map +1 -0
- package/dist/deployment/index.js +33 -0
- package/dist/deployment/index.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +174 -0
- package/dist/index.js.map +1 -0
- package/dist/security/adapter.d.ts +144 -0
- package/dist/security/adapter.d.ts.map +1 -0
- package/dist/security/adapter.js +159 -0
- package/dist/security/adapter.js.map +1 -0
- package/dist/security/auth/JWTPlugin.d.ts +105 -0
- package/dist/security/auth/JWTPlugin.d.ts.map +1 -0
- package/dist/security/auth/JWTPlugin.js +146 -0
- package/dist/security/auth/JWTPlugin.js.map +1 -0
- package/dist/security/auth/JWTProvider.d.ts +104 -0
- package/dist/security/auth/JWTProvider.d.ts.map +1 -0
- package/dist/security/auth/JWTProvider.js +288 -0
- package/dist/security/auth/JWTProvider.js.map +1 -0
- package/dist/security/auth/adapter.d.ts +8 -0
- package/dist/security/auth/adapter.d.ts.map +1 -0
- package/dist/security/auth/adapter.js +29 -0
- package/dist/security/auth/adapter.js.map +1 -0
- package/dist/security/auth/jwt.d.ts +55 -0
- package/dist/security/auth/jwt.d.ts.map +1 -0
- package/dist/security/auth/jwt.js +198 -0
- package/dist/security/auth/jwt.js.map +1 -0
- package/dist/security/auth/middleware.d.ts +64 -0
- package/dist/security/auth/middleware.d.ts.map +1 -0
- package/dist/security/auth/middleware.js +161 -0
- package/dist/security/auth/middleware.js.map +1 -0
- package/dist/security/csrf.d.ts +41 -0
- package/dist/security/csrf.d.ts.map +1 -0
- package/dist/security/csrf.js +185 -0
- package/dist/security/csrf.js.map +1 -0
- package/dist/security/headers.d.ts +34 -0
- package/dist/security/headers.d.ts.map +1 -0
- package/dist/security/headers.js +95 -0
- package/dist/security/headers.js.map +1 -0
- package/dist/security/index.d.ts +19 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +65 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/rate-limit/adapter.d.ts +7 -0
- package/dist/security/rate-limit/adapter.d.ts.map +1 -0
- package/dist/security/rate-limit/adapter.js +8 -0
- package/dist/security/rate-limit/adapter.js.map +1 -0
- package/dist/security/rate-limit/memory.d.ts +28 -0
- package/dist/security/rate-limit/memory.d.ts.map +1 -0
- package/dist/security/rate-limit/memory.js +85 -0
- package/dist/security/rate-limit/memory.js.map +1 -0
- package/dist/security/rate-limit/middleware.d.ts +32 -0
- package/dist/security/rate-limit/middleware.d.ts.map +1 -0
- package/dist/security/rate-limit/middleware.js +159 -0
- package/dist/security/rate-limit/middleware.js.map +1 -0
- package/dist/security/sanitization.d.ts +29 -0
- package/dist/security/sanitization.d.ts.map +1 -0
- package/dist/security/sanitization.js +66 -0
- package/dist/security/sanitization.js.map +1 -0
- package/dist/security/types.d.ts +205 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/types.js +8 -0
- package/dist/security/types.js.map +1 -0
- package/dist/security/utils.d.ts +19 -0
- package/dist/security/utils.d.ts.map +1 -0
- package/dist/security/utils.js +43 -0
- package/dist/security/utils.js.map +1 -0
- package/documentation/01-getting-started.md +240 -0
- package/documentation/02-context.md +335 -0
- package/documentation/03-routing.md +397 -0
- package/documentation/04-middleware.md +483 -0
- package/documentation/05-validation.md +514 -0
- package/documentation/06-error-handling.md +465 -0
- package/documentation/07-performance.md +364 -0
- package/documentation/08-adapters.md +470 -0
- package/documentation/09-api-reference.md +548 -0
- package/documentation/10-examples.md +582 -0
- package/documentation/11-deployment.md +477 -0
- package/documentation/12-sentry.md +620 -0
- package/documentation/13-sentry-data-storage.md +996 -0
- package/documentation/14-sentry-data-reference.md +457 -0
- package/documentation/15-sentry-summary.md +409 -0
- package/documentation/16-alerts-system.md +745 -0
- package/documentation/17-alert-adapters.md +696 -0
- package/documentation/18-alerts-implementation-summary.md +385 -0
- package/documentation/19-class-based-routing.md +840 -0
- package/documentation/20-websocket-realtime.md +813 -0
- package/documentation/21-cache-system.md +510 -0
- package/documentation/22-job-queue.md +772 -0
- package/documentation/23-sentry-plugin.md +551 -0
- package/documentation/24-testing-utilities.md +1287 -0
- package/documentation/25-api-versioning.md +533 -0
- package/documentation/26-context-store.md +607 -0
- package/documentation/27-dependency-injection.md +329 -0
- package/documentation/28-lifecycle-hooks.md +521 -0
- package/documentation/29-package-structure.md +196 -0
- package/documentation/30-plugin-system.md +414 -0
- package/documentation/31-jwt-authentication.md +597 -0
- package/documentation/32-cli.md +268 -0
- package/documentation/ALERTS-COMPLETE-SUMMARY.md +429 -0
- package/documentation/ALERTS-INDEX.md +330 -0
- package/documentation/ALERTS-QUICK-REFERENCE.md +286 -0
- package/documentation/README.md +178 -0
- package/documentation/index.html +34 -0
- package/modern_framework_paper.md +1870 -0
- package/package.json +178 -0
- package/public/css/style.css +87 -0
- package/public/index.html +34 -0
- package/public/js/app.js +27 -0
- package/src/advanced/cache/InMemoryCacheStore.ts +68 -0
- package/src/advanced/cache/MultiTierCache.ts +194 -0
- package/src/advanced/cache/RedisCacheStore.ts +341 -0
- package/src/advanced/cache/index.ts +5 -0
- package/src/advanced/cache/types.ts +40 -0
- package/src/advanced/graphql/SimpleDataLoader.ts +42 -0
- package/src/advanced/graphql/index.ts +22 -0
- package/src/advanced/graphql/server.ts +252 -0
- package/src/advanced/graphql/types.ts +42 -0
- package/src/advanced/jobs/InMemoryQueueStore.ts +68 -0
- package/src/advanced/jobs/JobQueue.ts +556 -0
- package/src/advanced/jobs/RedisQueueStore.ts +367 -0
- package/src/advanced/jobs/index.ts +5 -0
- package/src/advanced/jobs/types.ts +70 -0
- package/src/advanced/observability/APMManager.ts +163 -0
- package/src/advanced/observability/AlertManager.ts +109 -0
- package/src/advanced/observability/MetricRegistry.ts +151 -0
- package/src/advanced/observability/ObservabilityCenter.ts +304 -0
- package/src/advanced/observability/StructuredLogger.ts +154 -0
- package/src/advanced/observability/TracingManager.ts +117 -0
- package/src/advanced/observability/adapters.ts +304 -0
- package/src/advanced/observability/createObservabilityMiddleware.ts +63 -0
- package/src/advanced/observability/index.ts +11 -0
- package/src/advanced/observability/types.ts +174 -0
- package/src/advanced/playground/extractPathParams.ts +6 -0
- package/src/advanced/playground/generateFieldExample.ts +31 -0
- package/src/advanced/playground/generatePlaygroundHTML.ts +1849 -0
- package/src/advanced/playground/generateSummary.ts +19 -0
- package/src/advanced/playground/getTagFromPath.ts +9 -0
- package/src/advanced/playground/index.ts +8 -0
- package/src/advanced/playground/playground.ts +170 -0
- package/src/advanced/playground/types.ts +20 -0
- package/src/advanced/playground/zodToExample.ts +16 -0
- package/src/advanced/playground/zodToParams.ts +15 -0
- package/src/advanced/postman/buildAuth.ts +31 -0
- package/src/advanced/postman/buildBody.ts +15 -0
- package/src/advanced/postman/buildQueryParams.ts +27 -0
- package/src/advanced/postman/buildRequestItem.ts +36 -0
- package/src/advanced/postman/buildResponses.ts +11 -0
- package/src/advanced/postman/buildUrl.ts +33 -0
- package/src/advanced/postman/capitalize.ts +4 -0
- package/src/advanced/postman/generateCollection.ts +59 -0
- package/src/advanced/postman/generateEnvironment.ts +34 -0
- package/src/advanced/postman/generateExampleFromZod.ts +21 -0
- package/src/advanced/postman/generateFieldExample.ts +45 -0
- package/src/advanced/postman/generateName.ts +20 -0
- package/src/advanced/postman/generateUUID.ts +11 -0
- package/src/advanced/postman/getTagFromPath.ts +10 -0
- package/src/advanced/postman/index.ts +28 -0
- package/src/advanced/postman/postman.ts +156 -0
- package/src/advanced/postman/slugify.ts +7 -0
- package/src/advanced/postman/types.ts +140 -0
- package/src/advanced/realtime/index.ts +18 -0
- package/src/advanced/realtime/websocket.ts +211 -0
- package/src/advanced/sentry/index.ts +1236 -0
- package/src/advanced/sentry/types.ts +355 -0
- package/src/advanced/static/generateDirectoryListing.ts +47 -0
- package/src/advanced/static/generateETag.ts +7 -0
- package/src/advanced/static/getMimeType.ts +9 -0
- package/src/advanced/static/index.ts +32 -0
- package/src/advanced/static/isSafePath.ts +13 -0
- package/src/advanced/static/publicDir.ts +21 -0
- package/src/advanced/static/serveStatic.ts +225 -0
- package/src/advanced/static/spa.ts +24 -0
- package/src/advanced/static/types.ts +159 -0
- package/src/advanced/swagger/SwaggerGenerator.ts +66 -0
- package/src/advanced/swagger/buildOperation.ts +61 -0
- package/src/advanced/swagger/buildParameters.ts +61 -0
- package/src/advanced/swagger/buildRequestBody.ts +21 -0
- package/src/advanced/swagger/buildResponses.ts +54 -0
- package/src/advanced/swagger/capitalize.ts +5 -0
- package/src/advanced/swagger/convertPath.ts +9 -0
- package/src/advanced/swagger/createSwagger.ts +12 -0
- package/src/advanced/swagger/generateOperationId.ts +21 -0
- package/src/advanced/swagger/generateSpec.ts +105 -0
- package/src/advanced/swagger/generateSummary.ts +24 -0
- package/src/advanced/swagger/generateSwaggerUI.ts +70 -0
- package/src/advanced/swagger/generateThemeCss.ts +53 -0
- package/src/advanced/swagger/index.ts +25 -0
- package/src/advanced/swagger/swagger.ts +237 -0
- package/src/advanced/swagger/types.ts +206 -0
- package/src/advanced/swagger/zodFieldToOpenAPI.ts +94 -0
- package/src/advanced/swagger/zodSchemaToOpenAPI.ts +50 -0
- package/src/advanced/swagger/zodToOpenAPI.ts +22 -0
- package/src/advanced/testing/factory.ts +509 -0
- package/src/advanced/testing/harness.ts +612 -0
- package/src/advanced/testing/index.ts +430 -0
- package/src/advanced/testing/load-test.ts +618 -0
- package/src/advanced/testing/mock-server.ts +498 -0
- package/src/advanced/testing/mock.ts +670 -0
- package/src/cli/bin.ts +9 -0
- package/src/cli/cli.ts +155 -0
- package/src/cli/commands/build.ts +73 -0
- package/src/cli/commands/create.ts +166 -0
- package/src/cli/commands/dev.ts +85 -0
- package/src/cli/commands/generate.ts +97 -0
- package/src/cli/commands/help.ts +95 -0
- package/src/cli/commands/init.ts +91 -0
- package/src/cli/commands/version.ts +38 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/templates/generators.ts +309 -0
- package/src/cli/templates/index.ts +679 -0
- package/src/cli/utils/exec.ts +52 -0
- package/src/cli/utils/file-system.ts +78 -0
- package/src/cli/utils/logger.ts +111 -0
- package/src/core/adapter.ts +88 -0
- package/src/core/application.ts +1283 -0
- package/src/core/context-pool.ts +127 -0
- package/src/core/context.ts +412 -0
- package/src/core/index.ts +80 -0
- package/src/core/middleware.ts +262 -0
- package/src/core/performance/buffer-pool.ts +108 -0
- package/src/core/performance/middleware-optimizer.ts +162 -0
- package/src/core/plugin/PluginManager.ts +435 -0
- package/src/core/plugin/builder.ts +358 -0
- package/src/core/plugin/index.ts +50 -0
- package/src/core/plugin/types.ts +214 -0
- package/src/core/router/file-router.ts +594 -0
- package/src/core/router/index.ts +182 -0
- package/src/core/router/radix-tree.ts +226 -0
- package/src/core/store/index.ts +30 -0
- package/src/core/store/registry.ts +178 -0
- package/src/core/store/request-store.ts +240 -0
- package/src/core/store/types.ts +233 -0
- package/src/core/types.ts +574 -0
- package/src/database/adapter.ts +35 -0
- package/src/database/adapters/index.ts +1 -0
- package/src/database/adapters/mysql.ts +669 -0
- package/src/database/database.ts +70 -0
- package/src/database/dialect.ts +388 -0
- package/src/database/index.ts +12 -0
- package/src/database/migrations.ts +86 -0
- package/src/database/optimizer.ts +125 -0
- package/src/database/query-builder.ts +404 -0
- package/src/database/realtime.ts +53 -0
- package/src/database/schema.ts +71 -0
- package/src/database/transactions.ts +56 -0
- package/src/database/types.ts +87 -0
- package/src/deployment/cluster.ts +471 -0
- package/src/deployment/config.ts +454 -0
- package/src/deployment/docker.ts +599 -0
- package/src/deployment/graceful-shutdown.ts +373 -0
- package/src/deployment/index.ts +56 -0
- package/src/index.ts +264 -0
- package/src/security/adapter.ts +318 -0
- package/src/security/auth/JWTPlugin.ts +234 -0
- package/src/security/auth/JWTProvider.ts +316 -0
- package/src/security/auth/adapter.ts +12 -0
- package/src/security/auth/jwt.ts +234 -0
- package/src/security/auth/middleware.ts +188 -0
- package/src/security/csrf.ts +220 -0
- package/src/security/headers.ts +108 -0
- package/src/security/index.ts +60 -0
- package/src/security/rate-limit/adapter.ts +7 -0
- package/src/security/rate-limit/memory.ts +108 -0
- package/src/security/rate-limit/middleware.ts +181 -0
- package/src/security/sanitization.ts +75 -0
- package/src/security/types.ts +240 -0
- package/src/security/utils.ts +52 -0
- package/tsconfig.json +39 -0
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for the Nexus Framework
|
|
3
|
+
* Provides type-safe interfaces for requests, responses, middleware, and routing
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
7
|
+
import { ZodSchema } from 'zod';
|
|
8
|
+
import { Application } from './application';
|
|
9
|
+
import { ContextStore, StoreConstructor, StoreRegistry, RequestStore, RequestStoreConstructor } from './store';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* HTTP methods supported by the framework
|
|
13
|
+
*/
|
|
14
|
+
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* HTTP headers type-safe wrapper
|
|
18
|
+
*/
|
|
19
|
+
export interface Headers {
|
|
20
|
+
[key: string]: string | string[] | undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Cookie parser and manager
|
|
25
|
+
*/
|
|
26
|
+
export interface Cookies {
|
|
27
|
+
get(name: string): string | undefined;
|
|
28
|
+
set(name: string, value: string, options?: CookieOptions): void;
|
|
29
|
+
delete(name: string): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Cookie configuration options
|
|
34
|
+
*/
|
|
35
|
+
export interface CookieOptions {
|
|
36
|
+
maxAge?: number;
|
|
37
|
+
expires?: Date;
|
|
38
|
+
path?: string;
|
|
39
|
+
domain?: string;
|
|
40
|
+
secure?: boolean;
|
|
41
|
+
httpOnly?: boolean;
|
|
42
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Response builder for fluent API
|
|
47
|
+
*/
|
|
48
|
+
export interface ResponseBuilder {
|
|
49
|
+
status(code: number): ResponseBuilder;
|
|
50
|
+
header(name: string, value: string): ResponseBuilder;
|
|
51
|
+
json<T>(data: T): Response;
|
|
52
|
+
html(content: string): Response;
|
|
53
|
+
text(content: string): Response;
|
|
54
|
+
redirect(url: string, status?: number): Response;
|
|
55
|
+
stream(readable: NodeJS.ReadableStream): Response;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Framework response object
|
|
60
|
+
*/
|
|
61
|
+
export interface Response {
|
|
62
|
+
statusCode: number;
|
|
63
|
+
headers: Headers;
|
|
64
|
+
body: any;
|
|
65
|
+
stream?: NodeJS.ReadableStream;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Unified context object containing request and response data
|
|
70
|
+
* This replaces the traditional req/res pattern with an immutable context
|
|
71
|
+
*/
|
|
72
|
+
export interface Context {
|
|
73
|
+
// Request metadata
|
|
74
|
+
method: HTTPMethod;
|
|
75
|
+
path: string;
|
|
76
|
+
url: URL;
|
|
77
|
+
|
|
78
|
+
// Request data
|
|
79
|
+
params: Record<string, string>;
|
|
80
|
+
query: Record<string, any>;
|
|
81
|
+
body: any;
|
|
82
|
+
headers: Headers;
|
|
83
|
+
cookies: Cookies;
|
|
84
|
+
|
|
85
|
+
// Raw Node.js objects for advanced use cases
|
|
86
|
+
raw: {
|
|
87
|
+
req: IncomingMessage;
|
|
88
|
+
res: ServerResponse;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// Response builder
|
|
92
|
+
response: ResponseBuilder;
|
|
93
|
+
|
|
94
|
+
// Store access
|
|
95
|
+
/** Access a registered global store by its class (singleton, persist across requests) */
|
|
96
|
+
store<T extends ContextStore<any>>(StoreClass: StoreConstructor<T>): T;
|
|
97
|
+
|
|
98
|
+
/** Access a request-scoped store by its class (per-request, disposed after response) */
|
|
99
|
+
requestStore<T extends RequestStore<any>>(StoreClass: RequestStoreConstructor<T>): T;
|
|
100
|
+
|
|
101
|
+
// Request-scoped data (simple key-value storage)
|
|
102
|
+
/** Set a value in request-scoped storage */
|
|
103
|
+
set<T = any>(key: string, value: T): void;
|
|
104
|
+
|
|
105
|
+
/** Get a value from request-scoped storage */
|
|
106
|
+
get<T = any>(key: string): T | undefined;
|
|
107
|
+
|
|
108
|
+
// Utility methods
|
|
109
|
+
json<T>(data: T, status?: number): Response;
|
|
110
|
+
html(content: string, status?: number): Response;
|
|
111
|
+
text(content: string, status?: number): Response;
|
|
112
|
+
redirect(url: string, status?: number): Response;
|
|
113
|
+
stream(readable: NodeJS.ReadableStream): Response;
|
|
114
|
+
|
|
115
|
+
// Custom properties added by middleware
|
|
116
|
+
[key: string]: any;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Next function for middleware chain
|
|
121
|
+
*/
|
|
122
|
+
export type Next<TContext = Context> = (ctx: TContext) => Promise<Response>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Middleware function signature
|
|
126
|
+
* Middleware can transform the context and pass it to the next handler
|
|
127
|
+
* Now supports optional dependency injection as the third parameter.
|
|
128
|
+
*
|
|
129
|
+
* @template TIn - Input context type
|
|
130
|
+
* @template TOut - Output context type (after transformation)
|
|
131
|
+
* @template TDeps - Dependencies type (injected from app.provide())
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* // Simple middleware (no deps)
|
|
136
|
+
* const loggerMiddleware: Middleware = async (ctx, next) => {
|
|
137
|
+
* console.log(`${ctx.method} ${ctx.path}`);
|
|
138
|
+
* return next(ctx);
|
|
139
|
+
* };
|
|
140
|
+
*
|
|
141
|
+
* // Middleware with dependencies
|
|
142
|
+
* const authMiddleware: Middleware<Context, Context, { jwt: JWTService; db: Database }> =
|
|
143
|
+
* async (ctx, next, { jwt, db }) => {
|
|
144
|
+
* const token = ctx.headers.authorization?.replace('Bearer ', '');
|
|
145
|
+
* const payload = await jwt.verify(token);
|
|
146
|
+
* ctx.user = await db.findUser(payload.userId);
|
|
147
|
+
* return next(ctx);
|
|
148
|
+
* };
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
export type Middleware<TIn = Context, TOut = Context, TDeps = any> = (
|
|
152
|
+
ctx: TIn,
|
|
153
|
+
next: Next<TOut>,
|
|
154
|
+
deps: TDeps
|
|
155
|
+
) => Promise<Response>;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Route handler function signature
|
|
159
|
+
* Handlers can return data directly or a Response object
|
|
160
|
+
*/
|
|
161
|
+
export type Handler<TContext = Context, TDeps = any> = (
|
|
162
|
+
ctx: TContext,
|
|
163
|
+
deps: TDeps
|
|
164
|
+
) => Promise<Response | any>;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Dependency container type
|
|
168
|
+
* Maps dependency names to their instances
|
|
169
|
+
*/
|
|
170
|
+
export type DependencyContainer = Record<string, any>;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Extract dependency types from container
|
|
174
|
+
*/
|
|
175
|
+
export type ExtractDeps<T extends DependencyContainer, K extends keyof T> = {
|
|
176
|
+
[P in K]: T[P];
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Route configuration with dependency injection
|
|
181
|
+
*/
|
|
182
|
+
export interface InjectedRouteConfig<
|
|
183
|
+
TContext = Context,
|
|
184
|
+
TDeps extends DependencyContainer = DependencyContainer,
|
|
185
|
+
TKeys extends keyof TDeps = keyof TDeps
|
|
186
|
+
> {
|
|
187
|
+
/** Dependencies to inject into handler */
|
|
188
|
+
inject?: TKeys[];
|
|
189
|
+
/** Route handler with injected dependencies */
|
|
190
|
+
handler: (ctx: TContext, deps: Pick<TDeps, TKeys>) => Promise<Response | any>;
|
|
191
|
+
/** Middleware chain */
|
|
192
|
+
middlewares?: Middleware<any, any>[];
|
|
193
|
+
/** Schema validation */
|
|
194
|
+
schema?: SchemaConfig;
|
|
195
|
+
/** Route metadata */
|
|
196
|
+
meta?: RouteMeta;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Validation error detail from Zod
|
|
201
|
+
*/
|
|
202
|
+
export interface ValidationErrorDetail {
|
|
203
|
+
path: (string | number)[];
|
|
204
|
+
message: string;
|
|
205
|
+
code: string;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Custom validation error handler
|
|
210
|
+
*/
|
|
211
|
+
export type ValidationErrorHandler = (
|
|
212
|
+
errors: ValidationErrorDetail[],
|
|
213
|
+
ctx: Context
|
|
214
|
+
) => Response | any;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Schema validation configuration
|
|
218
|
+
*/
|
|
219
|
+
export interface SchemaConfig {
|
|
220
|
+
params?: ZodSchema;
|
|
221
|
+
query?: ZodSchema;
|
|
222
|
+
body?: ZodSchema;
|
|
223
|
+
headers?: ZodSchema;
|
|
224
|
+
onValidationError?: ValidationErrorHandler;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Route metadata for documentation and API generation
|
|
229
|
+
*/
|
|
230
|
+
export interface RouteMeta {
|
|
231
|
+
description?: string;
|
|
232
|
+
tags?: string[];
|
|
233
|
+
responses?: Record<number, string>;
|
|
234
|
+
deprecated?: boolean;
|
|
235
|
+
summary?: string;
|
|
236
|
+
example?: string;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Route configuration object
|
|
241
|
+
*/
|
|
242
|
+
export interface RouteConfig<TContext = Context> {
|
|
243
|
+
method: HTTPMethod;
|
|
244
|
+
path: string;
|
|
245
|
+
handler: Handler<TContext>;
|
|
246
|
+
middlewares?: Middleware<any, any>[];
|
|
247
|
+
schema?: SchemaConfig;
|
|
248
|
+
meta?: RouteMeta;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Route match result from router
|
|
253
|
+
*/
|
|
254
|
+
export interface RouteMatch {
|
|
255
|
+
handler: Handler;
|
|
256
|
+
params: Record<string, string>;
|
|
257
|
+
middlewares: Middleware[];
|
|
258
|
+
schema?: SchemaConfig;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Error handler function signature
|
|
263
|
+
*/
|
|
264
|
+
export type ErrorHandler = (
|
|
265
|
+
error: Error,
|
|
266
|
+
ctx: Context
|
|
267
|
+
) => Response | Promise<Response>;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Application configuration options
|
|
271
|
+
*/
|
|
272
|
+
export interface AppConfig {
|
|
273
|
+
// Performance options
|
|
274
|
+
contextPoolSize?: number;
|
|
275
|
+
enableJIT?: boolean;
|
|
276
|
+
|
|
277
|
+
// Error handling
|
|
278
|
+
onError?: ErrorHandler;
|
|
279
|
+
|
|
280
|
+
// Development options
|
|
281
|
+
debug?: boolean;
|
|
282
|
+
logRequests?: boolean;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Plugin interface for extensibility
|
|
287
|
+
*/
|
|
288
|
+
export interface Plugin {
|
|
289
|
+
name: string;
|
|
290
|
+
version: string;
|
|
291
|
+
install: (app: Application) => void | Promise<void>;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Base interface for class-based route definitions
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```typescript
|
|
299
|
+
* class UserRegister implements RouteBase {
|
|
300
|
+
* pathName = '/api/users/register';
|
|
301
|
+
*
|
|
302
|
+
* schema() {
|
|
303
|
+
* return { body: z.object({ email: z.string().email() }) };
|
|
304
|
+
* }
|
|
305
|
+
*
|
|
306
|
+
* meta() {
|
|
307
|
+
* return { summary: 'Register user', tags: ['Users'] };
|
|
308
|
+
* }
|
|
309
|
+
*
|
|
310
|
+
* async handler(ctx: Context) {
|
|
311
|
+
* return { success: true };
|
|
312
|
+
* }
|
|
313
|
+
* }
|
|
314
|
+
*
|
|
315
|
+
* app.post(new UserRegister());
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
export interface RouteBase<TContext = Context> {
|
|
319
|
+
/** The route path (e.g., '/api/users/:id') - Optional for file-based routing */
|
|
320
|
+
pathName?: string;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* HTTP method(s) this route handles - Optional for file-based routing
|
|
324
|
+
* When using file-based routing, you can define method handlers (GET, POST, etc.) as methods
|
|
325
|
+
*/
|
|
326
|
+
method?: HTTPMethod | HTTPMethod[];
|
|
327
|
+
|
|
328
|
+
/** Optional schema validation */
|
|
329
|
+
schema?: () => SchemaConfig;
|
|
330
|
+
|
|
331
|
+
/** Optional route metadata for documentation */
|
|
332
|
+
meta?: () => RouteMeta;
|
|
333
|
+
|
|
334
|
+
/** Optional route-specific middlewares */
|
|
335
|
+
middlewares?: () => Middleware<any, any>[];
|
|
336
|
+
|
|
337
|
+
/** The route handler (can be omitted if using method-named handlers like GET, POST, etc.) */
|
|
338
|
+
handler?: Handler<TContext>;
|
|
339
|
+
|
|
340
|
+
/** Method-specific handlers for file-based routing */
|
|
341
|
+
GET?: Handler<TContext>;
|
|
342
|
+
POST?: Handler<TContext>;
|
|
343
|
+
PUT?: Handler<TContext>;
|
|
344
|
+
DELETE?: Handler<TContext>;
|
|
345
|
+
PATCH?: Handler<TContext>;
|
|
346
|
+
HEAD?: Handler<TContext>;
|
|
347
|
+
OPTIONS?: Handler<TContext>;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Abstract base class for class-based routes with REQUIRED handler implementation.
|
|
352
|
+
* Use this when you want TypeScript to enforce that the handler method is implemented.
|
|
353
|
+
* Also provides lifecycle hooks for request processing and dependency injection.
|
|
354
|
+
*
|
|
355
|
+
* @example
|
|
356
|
+
* ```typescript
|
|
357
|
+
* // With dependency injection
|
|
358
|
+
* class UserRegister extends Route<Context, { db: Database; cache: Redis }> {
|
|
359
|
+
* pathName = '/api/users/register';
|
|
360
|
+
*
|
|
361
|
+
* // Optional: run before handler (with deps)
|
|
362
|
+
* async onBefore(ctx: Context, { db }: { db: Database }) {
|
|
363
|
+
* console.log('Before handler, db connected:', db.isConnected);
|
|
364
|
+
* }
|
|
365
|
+
*
|
|
366
|
+
* // Optional: transform response after handler (with deps)
|
|
367
|
+
* async onAfter(ctx: Context, result: any, { cache }: { cache: Redis }) {
|
|
368
|
+
* await cache.set('last-register', JSON.stringify(result));
|
|
369
|
+
* return { ...result, timestamp: Date.now() };
|
|
370
|
+
* }
|
|
371
|
+
*
|
|
372
|
+
* // Optional: custom error handling (with deps)
|
|
373
|
+
* async onError(ctx: Context, error: Error, deps) {
|
|
374
|
+
* return { error: error.message, code: 'CUSTOM_ERROR' };
|
|
375
|
+
* }
|
|
376
|
+
*
|
|
377
|
+
* // REQUIRED: handler with dependencies
|
|
378
|
+
* async handler(ctx: Context, { db, cache }) {
|
|
379
|
+
* const user = await db.query('INSERT INTO users...');
|
|
380
|
+
* await cache.set(`user:${user.id}`, user);
|
|
381
|
+
* return { success: true, user };
|
|
382
|
+
* }
|
|
383
|
+
* }
|
|
384
|
+
*
|
|
385
|
+
* app.provide({ db, cache }).post(new UserRegister());
|
|
386
|
+
* ```
|
|
387
|
+
*/
|
|
388
|
+
export abstract class Route<TContext = Context, TDeps = any> {
|
|
389
|
+
pathName?: string;
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* The main route handler - REQUIRED!
|
|
393
|
+
* TypeScript will enforce this is implemented.
|
|
394
|
+
* @param ctx - Request context
|
|
395
|
+
* @param deps - Injected dependencies from app.provide()
|
|
396
|
+
*/
|
|
397
|
+
abstract handler(ctx: TContext, deps: TDeps): Promise<any> | any;
|
|
398
|
+
|
|
399
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
400
|
+
// Helper Methods for cleaner response handling
|
|
401
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Return a successful JSON response
|
|
405
|
+
* @param data - The response data to send
|
|
406
|
+
* @returns Object with success: true merged with data
|
|
407
|
+
*
|
|
408
|
+
* @example
|
|
409
|
+
* ```typescript
|
|
410
|
+
* return this.ok({ user: { id: 1, name: 'John' } });
|
|
411
|
+
* // Returns: { success: true, user: { id: 1, name: 'John' } }
|
|
412
|
+
* ```
|
|
413
|
+
*/
|
|
414
|
+
protected ok<T extends Record<string, any>>(data: T): { success: true } & T {
|
|
415
|
+
return { success: true, ...data };
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Return a failed JSON response with status code
|
|
420
|
+
* @param ctx - The request context
|
|
421
|
+
* @param status - HTTP status code (e.g., 400, 404, 500)
|
|
422
|
+
* @param message - Error message
|
|
423
|
+
* @param data - Optional additional error data
|
|
424
|
+
* @returns Response object with error details
|
|
425
|
+
*
|
|
426
|
+
* @example
|
|
427
|
+
* ```typescript
|
|
428
|
+
* return this.fail(ctx, 404, 'User not found');
|
|
429
|
+
* // Returns 404 with: { success: false, message: 'User not found' }
|
|
430
|
+
*
|
|
431
|
+
* return this.fail(ctx, 400, 'Validation failed', { errors: [...] });
|
|
432
|
+
* // Returns 400 with: { success: false, message: 'Validation failed', data: { errors: [...] } }
|
|
433
|
+
* ```
|
|
434
|
+
*/
|
|
435
|
+
protected fail(ctx: TContext, status: number, message: string, data?: any): Response {
|
|
436
|
+
return (ctx as Context).response
|
|
437
|
+
.status(status)
|
|
438
|
+
.json({ success: false, message, ...(data !== undefined ? { data } : {}) });
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* HTTP method(s) this route handles - Optional
|
|
443
|
+
* When using file-based routing, you can also define method handlers (GET, POST, etc.)
|
|
444
|
+
*/
|
|
445
|
+
method?: HTTPMethod | HTTPMethod[];
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Hook: Called BEFORE the handler.
|
|
449
|
+
* - Return undefined/void to continue to handler
|
|
450
|
+
* - Return a value to skip handler and use that as response
|
|
451
|
+
* - Throw an error to trigger onError
|
|
452
|
+
* @param ctx - Request context
|
|
453
|
+
* @param deps - Injected dependencies from app.provide()
|
|
454
|
+
*/
|
|
455
|
+
onBefore?(ctx: TContext, deps: TDeps): Promise<any | void> | any | void;
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Hook: Called AFTER the handler completes successfully.
|
|
459
|
+
* - Receives the handler result
|
|
460
|
+
* - Can transform/modify the response
|
|
461
|
+
* - Return the (modified) result
|
|
462
|
+
* @param ctx - Request context
|
|
463
|
+
* @param result - Handler result
|
|
464
|
+
* @param deps - Injected dependencies from app.provide()
|
|
465
|
+
*/
|
|
466
|
+
onAfter?(ctx: TContext, result: any, deps: TDeps): Promise<any> | any;
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Hook: Called when handler or onBefore throws an error.
|
|
470
|
+
* - Can return a custom error response
|
|
471
|
+
* - If not defined, error propagates to global error handler
|
|
472
|
+
* @param ctx - Request context
|
|
473
|
+
* @param error - Error thrown
|
|
474
|
+
* @param deps - Injected dependencies from app.provide()
|
|
475
|
+
*/
|
|
476
|
+
onError?(ctx: TContext, error: Error, deps: TDeps): Promise<any> | any;
|
|
477
|
+
|
|
478
|
+
/** Optional schema validation */
|
|
479
|
+
schema?(): SchemaConfig;
|
|
480
|
+
|
|
481
|
+
/** Optional route metadata for documentation */
|
|
482
|
+
meta?(): RouteMeta;
|
|
483
|
+
|
|
484
|
+
/** Optional route-specific middlewares */
|
|
485
|
+
middlewares?(): Middleware<any, any>[];
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Type guard to check if a route is a Route class instance (with hooks support)
|
|
490
|
+
*/
|
|
491
|
+
export function isRouteClass(route: RouteBase | Route): route is Route {
|
|
492
|
+
return route instanceof Route ||
|
|
493
|
+
(typeof (route as Route).handler === 'function' &&
|
|
494
|
+
'pathName' in route &&
|
|
495
|
+
(typeof (route as Route).onBefore === 'function' ||
|
|
496
|
+
typeof (route as Route).onAfter === 'function' ||
|
|
497
|
+
typeof (route as Route).onError === 'function'));
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Lifecycle hooks for request processing
|
|
502
|
+
*
|
|
503
|
+
* @example
|
|
504
|
+
* ```typescript
|
|
505
|
+
* app.hooks({
|
|
506
|
+
* onRequest: async (ctx) => {
|
|
507
|
+
* ctx.requestId = crypto.randomUUID();
|
|
508
|
+
* },
|
|
509
|
+
* beforeHandler: async (ctx) => {
|
|
510
|
+
* ctx.user = await getUser(ctx.headers.authorization);
|
|
511
|
+
* },
|
|
512
|
+
* afterHandler: async (ctx, result) => {
|
|
513
|
+
* return { ...result, timestamp: Date.now() };
|
|
514
|
+
* },
|
|
515
|
+
* onError: async (ctx, error) => {
|
|
516
|
+
* await logToSentry(error);
|
|
517
|
+
* }
|
|
518
|
+
* });
|
|
519
|
+
* ```
|
|
520
|
+
*/
|
|
521
|
+
export interface LifecycleHooks {
|
|
522
|
+
/** Called when request is received, before any processing */
|
|
523
|
+
onRequest?: (ctx: Context) => Promise<void | Response> | void | Response;
|
|
524
|
+
|
|
525
|
+
/** Called before schema validation */
|
|
526
|
+
beforeValidation?: (ctx: Context) => Promise<void | Response> | void | Response;
|
|
527
|
+
|
|
528
|
+
/** Called after schema validation succeeds (ctx.body, ctx.query, ctx.params are validated) */
|
|
529
|
+
afterValidation?: (ctx: Context) => Promise<void | Response> | void | Response;
|
|
530
|
+
|
|
531
|
+
/** Called before route handler executes */
|
|
532
|
+
beforeHandler?: (ctx: Context) => Promise<void | Response> | void | Response;
|
|
533
|
+
|
|
534
|
+
/** Called after handler, can transform result. Return new result to override */
|
|
535
|
+
afterHandler?: (ctx: Context, result: any) => Promise<any> | any;
|
|
536
|
+
|
|
537
|
+
/** Called when an error occurs. Can return Response to handle error */
|
|
538
|
+
onError?: (ctx: Context, error: Error) => Promise<void | Response> | void | Response;
|
|
539
|
+
|
|
540
|
+
/** Called before response is sent (after all processing) */
|
|
541
|
+
onResponse?: (ctx: Context, response: Response) => Promise<void | Response> | void | Response;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Versioning strategy types
|
|
546
|
+
*/
|
|
547
|
+
export type VersioningStrategy = 'path' | 'header' | 'query';
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Versioning configuration for API versioning
|
|
551
|
+
*
|
|
552
|
+
* @example
|
|
553
|
+
* ```typescript
|
|
554
|
+
* app.configVersions({
|
|
555
|
+
* strategies: ['header', 'query'],
|
|
556
|
+
* header: 'api-version',
|
|
557
|
+
* queryParam: 'v',
|
|
558
|
+
* defaultVersion: 'v1',
|
|
559
|
+
* register: ['v1', 'v2']
|
|
560
|
+
* });
|
|
561
|
+
* ```
|
|
562
|
+
*/
|
|
563
|
+
export interface VersioningConfig {
|
|
564
|
+
/** Versioning strategies to use */
|
|
565
|
+
strategies: VersioningStrategy[];
|
|
566
|
+
/** Header name for version (default: 'api-version') */
|
|
567
|
+
header?: string;
|
|
568
|
+
/** Query param name for version (default: 'v') */
|
|
569
|
+
queryParam?: string;
|
|
570
|
+
/** Default version when not specified */
|
|
571
|
+
defaultVersion: string;
|
|
572
|
+
/** List of versions to register */
|
|
573
|
+
register: string[];
|
|
574
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { QueryContext } from './types';
|
|
2
|
+
|
|
3
|
+
export interface QueryResult<T = unknown> {
|
|
4
|
+
rows: T[];
|
|
5
|
+
rowCount: number;
|
|
6
|
+
fields?: string[];
|
|
7
|
+
meta?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface DatabaseAdapter {
|
|
11
|
+
name: string;
|
|
12
|
+
connect(): Promise<void>;
|
|
13
|
+
disconnect(): Promise<void>;
|
|
14
|
+
query<T = unknown>(sql: string, params?: unknown[], context?: QueryContext): Promise<QueryResult<T>>;
|
|
15
|
+
stream?<T = unknown>(sql: string, params?: unknown[], context?: QueryContext): AsyncGenerator<T, void, unknown>;
|
|
16
|
+
beginTransaction?(): Promise<void>;
|
|
17
|
+
commitTransaction?(): Promise<void>;
|
|
18
|
+
rollbackTransaction?(savepoint?: string): Promise<void>;
|
|
19
|
+
createSavepoint?(name: string): Promise<void>;
|
|
20
|
+
releaseSavepoint?(name: string): Promise<void>;
|
|
21
|
+
listen?(channel: string): Promise<void>;
|
|
22
|
+
notify?(channel: string, payload: unknown): Promise<void>;
|
|
23
|
+
capabilities?: {
|
|
24
|
+
json?: boolean;
|
|
25
|
+
streaming?: boolean;
|
|
26
|
+
realtime?: boolean;
|
|
27
|
+
transactional?: boolean;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface MigrationAdapter extends DatabaseAdapter {
|
|
32
|
+
runMigration(sql: string): Promise<void>;
|
|
33
|
+
ensureMigrationsTable(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './mysql';
|