@c9up/ream 0.1.3
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/LICENSE +21 -0
- package/README.md +70 -0
- package/dist/Application.d.ts +71 -0
- package/dist/Application.d.ts.map +1 -0
- package/dist/Application.js +151 -0
- package/dist/Application.js.map +1 -0
- package/dist/Codemods.d.ts +16 -0
- package/dist/Codemods.d.ts.map +1 -0
- package/dist/Codemods.js +277 -0
- package/dist/Codemods.js.map +1 -0
- package/dist/ConfigLoader.d.ts +29 -0
- package/dist/ConfigLoader.d.ts.map +1 -0
- package/dist/ConfigLoader.js +43 -0
- package/dist/ConfigLoader.js.map +1 -0
- package/dist/ErrorBoundary.d.ts +51 -0
- package/dist/ErrorBoundary.d.ts.map +1 -0
- package/dist/ErrorBoundary.js +122 -0
- package/dist/ErrorBoundary.js.map +1 -0
- package/dist/GracefulShutdown.d.ts +28 -0
- package/dist/GracefulShutdown.d.ts.map +1 -0
- package/dist/GracefulShutdown.js +55 -0
- package/dist/GracefulShutdown.js.map +1 -0
- package/dist/HealthCheck.d.ts +42 -0
- package/dist/HealthCheck.d.ts.map +1 -0
- package/dist/HealthCheck.js +65 -0
- package/dist/HealthCheck.js.map +1 -0
- package/dist/HotReload.d.ts +28 -0
- package/dist/HotReload.d.ts.map +1 -0
- package/dist/HotReload.js +60 -0
- package/dist/HotReload.js.map +1 -0
- package/dist/HttpKernel.d.ts +62 -0
- package/dist/HttpKernel.d.ts.map +1 -0
- package/dist/HttpKernel.js +210 -0
- package/dist/HttpKernel.js.map +1 -0
- package/dist/Ignitor.d.ts +195 -0
- package/dist/Ignitor.d.ts.map +1 -0
- package/dist/Ignitor.js +505 -0
- package/dist/Ignitor.js.map +1 -0
- package/dist/Provider.d.ts +54 -0
- package/dist/Provider.d.ts.map +1 -0
- package/dist/Provider.js +37 -0
- package/dist/Provider.js.map +1 -0
- package/dist/bodyparser/BodyParserMiddleware.d.ts +38 -0
- package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -0
- package/dist/bodyparser/BodyParserMiddleware.js +143 -0
- package/dist/bodyparser/BodyParserMiddleware.js.map +1 -0
- package/dist/bodyparser/MultipartFile.d.ts +77 -0
- package/dist/bodyparser/MultipartFile.d.ts.map +1 -0
- package/dist/bodyparser/MultipartFile.js +138 -0
- package/dist/bodyparser/MultipartFile.js.map +1 -0
- package/dist/bodyparser/parseSize.d.ts +6 -0
- package/dist/bodyparser/parseSize.d.ts.map +1 -0
- package/dist/bodyparser/parseSize.js +21 -0
- package/dist/bodyparser/parseSize.js.map +1 -0
- package/dist/bootstrap/hyper-server.d.ts +27 -0
- package/dist/bootstrap/hyper-server.d.ts.map +1 -0
- package/dist/bootstrap/hyper-server.js +63 -0
- package/dist/bootstrap/hyper-server.js.map +1 -0
- package/dist/console/CommandRunner.d.ts +18 -0
- package/dist/console/CommandRunner.d.ts.map +1 -0
- package/dist/console/CommandRunner.js +65 -0
- package/dist/console/CommandRunner.js.map +1 -0
- package/dist/container/Container.d.ts +60 -0
- package/dist/container/Container.d.ts.map +1 -0
- package/dist/container/Container.js +329 -0
- package/dist/container/Container.js.map +1 -0
- package/dist/container/types.d.ts +25 -0
- package/dist/container/types.d.ts.map +1 -0
- package/dist/container/types.js +6 -0
- package/dist/container/types.js.map +1 -0
- package/dist/decorators/Lazy.d.ts +19 -0
- package/dist/decorators/Lazy.d.ts.map +1 -0
- package/dist/decorators/Lazy.js +53 -0
- package/dist/decorators/Lazy.js.map +1 -0
- package/dist/decorators/Service.d.ts +48 -0
- package/dist/decorators/Service.d.ts.map +1 -0
- package/dist/decorators/Service.js +70 -0
- package/dist/decorators/Service.js.map +1 -0
- package/dist/errors/FuzzyMatcher.d.ts +41 -0
- package/dist/errors/FuzzyMatcher.d.ts.map +1 -0
- package/dist/errors/FuzzyMatcher.js +81 -0
- package/dist/errors/FuzzyMatcher.js.map +1 -0
- package/dist/errors/ModuleErrors.d.ts +41 -0
- package/dist/errors/ModuleErrors.d.ts.map +1 -0
- package/dist/errors/ModuleErrors.js +65 -0
- package/dist/errors/ModuleErrors.js.map +1 -0
- package/dist/errors/PipelineStageError.d.ts +31 -0
- package/dist/errors/PipelineStageError.d.ts.map +1 -0
- package/dist/errors/PipelineStageError.js +77 -0
- package/dist/errors/PipelineStageError.js.map +1 -0
- package/dist/errors/ReamError.d.ts +50 -0
- package/dist/errors/ReamError.d.ts.map +1 -0
- package/dist/errors/ReamError.js +108 -0
- package/dist/errors/ReamError.js.map +1 -0
- package/dist/events/Emitter.d.ts +124 -0
- package/dist/events/Emitter.d.ts.map +1 -0
- package/dist/events/Emitter.js +271 -0
- package/dist/events/Emitter.js.map +1 -0
- package/dist/events/EventsProvider.d.ts +28 -0
- package/dist/events/EventsProvider.d.ts.map +1 -0
- package/dist/events/EventsProvider.js +36 -0
- package/dist/events/EventsProvider.js.map +1 -0
- package/dist/events/config.d.ts +8 -0
- package/dist/events/config.d.ts.map +1 -0
- package/dist/events/config.js +4 -0
- package/dist/events/config.js.map +1 -0
- package/dist/events/configure.d.ts +10 -0
- package/dist/events/configure.d.ts.map +1 -0
- package/dist/events/configure.js +11 -0
- package/dist/events/configure.js.map +1 -0
- package/dist/events/helix/helpers.d.ts +62 -0
- package/dist/events/helix/helpers.d.ts.map +1 -0
- package/dist/events/helix/helpers.js +187 -0
- package/dist/events/helix/helpers.js.map +1 -0
- package/dist/events/index.d.ts +17 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +15 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/native.d.ts +21 -0
- package/dist/events/native.d.ts.map +1 -0
- package/dist/events/native.js +17 -0
- package/dist/events/native.js.map +1 -0
- package/dist/events/services/main.d.ts +18 -0
- package/dist/events/services/main.d.ts.map +1 -0
- package/dist/events/services/main.js +31 -0
- package/dist/events/services/main.js.map +1 -0
- package/dist/events/testing/FakeBus.d.ts +66 -0
- package/dist/events/testing/FakeBus.d.ts.map +1 -0
- package/dist/events/testing/FakeBus.js +356 -0
- package/dist/events/testing/FakeBus.js.map +1 -0
- package/dist/graphql/GraphQLEngine.d.ts +69 -0
- package/dist/graphql/GraphQLEngine.d.ts.map +1 -0
- package/dist/graphql/GraphQLEngine.js +309 -0
- package/dist/graphql/GraphQLEngine.js.map +1 -0
- package/dist/graphql/GraphQLProvider.d.ts +32 -0
- package/dist/graphql/GraphQLProvider.d.ts.map +1 -0
- package/dist/graphql/GraphQLProvider.js +49 -0
- package/dist/graphql/GraphQLProvider.js.map +1 -0
- package/dist/helpers/base64.d.ts +40 -0
- package/dist/helpers/base64.d.ts.map +1 -0
- package/dist/helpers/base64.js +70 -0
- package/dist/helpers/base64.js.map +1 -0
- package/dist/helpers/index.d.ts +7 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +5 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/is.d.ts +101 -0
- package/dist/helpers/is.d.ts.map +1 -0
- package/dist/helpers/is.js +151 -0
- package/dist/helpers/is.js.map +1 -0
- package/dist/helpers/napi-loader.d.ts +46 -0
- package/dist/helpers/napi-loader.d.ts.map +1 -0
- package/dist/helpers/napi-loader.js +69 -0
- package/dist/helpers/napi-loader.js.map +1 -0
- package/dist/helpers/safeEqual.d.ts +9 -0
- package/dist/helpers/safeEqual.d.ts.map +1 -0
- package/dist/helpers/safeEqual.js +16 -0
- package/dist/helpers/safeEqual.js.map +1 -0
- package/dist/helpers/string.d.ts +161 -0
- package/dist/helpers/string.d.ts.map +1 -0
- package/dist/helpers/string.js +429 -0
- package/dist/helpers/string.js.map +1 -0
- package/dist/helpers/types.d.ts +83 -0
- package/dist/helpers/types.d.ts.map +1 -0
- package/dist/helpers/types.js +6 -0
- package/dist/helpers/types.js.map +1 -0
- package/dist/http/Exception.d.ts +103 -0
- package/dist/http/Exception.d.ts.map +1 -0
- package/dist/http/Exception.js +228 -0
- package/dist/http/Exception.js.map +1 -0
- package/dist/http/HttpContext.d.ts +69 -0
- package/dist/http/HttpContext.d.ts.map +1 -0
- package/dist/http/HttpContext.js +55 -0
- package/dist/http/HttpContext.js.map +1 -0
- package/dist/http/RedirectBuilder.d.ts +31 -0
- package/dist/http/RedirectBuilder.d.ts.map +1 -0
- package/dist/http/RedirectBuilder.js +75 -0
- package/dist/http/RedirectBuilder.js.map +1 -0
- package/dist/http/Request.d.ts +160 -0
- package/dist/http/Request.d.ts.map +1 -0
- package/dist/http/Request.js +484 -0
- package/dist/http/Request.js.map +1 -0
- package/dist/http/Response.d.ts +114 -0
- package/dist/http/Response.d.ts.map +1 -0
- package/dist/http/Response.js +303 -0
- package/dist/http/Response.js.map +1 -0
- package/dist/http/SseStream.d.ts +89 -0
- package/dist/http/SseStream.d.ts.map +1 -0
- package/dist/http/SseStream.js +228 -0
- package/dist/http/SseStream.js.map +1 -0
- package/dist/http/urlDecode.d.ts +8 -0
- package/dist/http/urlDecode.d.ts.map +1 -0
- package/dist/http/urlDecode.js +18 -0
- package/dist/http/urlDecode.js.map +1 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/Pipeline.d.ts +36 -0
- package/dist/middleware/Pipeline.d.ts.map +1 -0
- package/dist/middleware/Pipeline.js +104 -0
- package/dist/middleware/Pipeline.js.map +1 -0
- package/dist/openapi/OpenApiGenerator.d.ts +58 -0
- package/dist/openapi/OpenApiGenerator.d.ts.map +1 -0
- package/dist/openapi/OpenApiGenerator.js +192 -0
- package/dist/openapi/OpenApiGenerator.js.map +1 -0
- package/dist/openapi/OpenApiMiddleware.d.ts +24 -0
- package/dist/openapi/OpenApiMiddleware.d.ts.map +1 -0
- package/dist/openapi/OpenApiMiddleware.js +78 -0
- package/dist/openapi/OpenApiMiddleware.js.map +1 -0
- package/dist/openapi/OpenApiProvider.d.ts +36 -0
- package/dist/openapi/OpenApiProvider.d.ts.map +1 -0
- package/dist/openapi/OpenApiProvider.js +42 -0
- package/dist/openapi/OpenApiProvider.js.map +1 -0
- package/dist/resources/ApiResource.d.ts +45 -0
- package/dist/resources/ApiResource.d.ts.map +1 -0
- package/dist/resources/ApiResource.js +58 -0
- package/dist/resources/ApiResource.js.map +1 -0
- package/dist/router/Router.d.ts +205 -0
- package/dist/router/Router.d.ts.map +1 -0
- package/dist/router/Router.js +552 -0
- package/dist/router/Router.js.map +1 -0
- package/dist/rpc/RpcProvider.d.ts +34 -0
- package/dist/rpc/RpcProvider.d.ts.map +1 -0
- package/dist/rpc/RpcProvider.js +37 -0
- package/dist/rpc/RpcProvider.js.map +1 -0
- package/dist/rpc/RpcRouter.d.ts +61 -0
- package/dist/rpc/RpcRouter.d.ts.map +1 -0
- package/dist/rpc/RpcRouter.js +187 -0
- package/dist/rpc/RpcRouter.js.map +1 -0
- package/dist/scheduler/Schedule.d.ts +53 -0
- package/dist/scheduler/Schedule.d.ts.map +1 -0
- package/dist/scheduler/Schedule.js +76 -0
- package/dist/scheduler/Schedule.js.map +1 -0
- package/dist/scheduler/ScheduleProvider.d.ts +56 -0
- package/dist/scheduler/ScheduleProvider.d.ts.map +1 -0
- package/dist/scheduler/ScheduleProvider.js +145 -0
- package/dist/scheduler/ScheduleProvider.js.map +1 -0
- package/dist/scheduler/Scheduler.d.ts +209 -0
- package/dist/scheduler/Scheduler.d.ts.map +1 -0
- package/dist/scheduler/Scheduler.js +432 -0
- package/dist/scheduler/Scheduler.js.map +1 -0
- package/dist/scheduler/index.d.ts +14 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +6 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/locks/LockBackend.d.ts +37 -0
- package/dist/scheduler/locks/LockBackend.d.ts.map +1 -0
- package/dist/scheduler/locks/LockBackend.js +13 -0
- package/dist/scheduler/locks/LockBackend.js.map +1 -0
- package/dist/scheduler/locks/MemoryLockBackend.d.ts +39 -0
- package/dist/scheduler/locks/MemoryLockBackend.d.ts.map +1 -0
- package/dist/scheduler/locks/MemoryLockBackend.js +71 -0
- package/dist/scheduler/locks/MemoryLockBackend.js.map +1 -0
- package/dist/scheduler/observability/ErrorReporter.d.ts +15 -0
- package/dist/scheduler/observability/ErrorReporter.d.ts.map +1 -0
- package/dist/scheduler/observability/ErrorReporter.js +13 -0
- package/dist/scheduler/observability/ErrorReporter.js.map +1 -0
- package/dist/scheduler/observability/ScheduleEvent.d.ts +57 -0
- package/dist/scheduler/observability/ScheduleEvent.d.ts.map +1 -0
- package/dist/scheduler/observability/ScheduleEvent.js +12 -0
- package/dist/scheduler/observability/ScheduleEvent.js.map +1 -0
- package/dist/scheduler/observability/ScheduleEventSink.d.ts +20 -0
- package/dist/scheduler/observability/ScheduleEventSink.d.ts.map +1 -0
- package/dist/scheduler/observability/ScheduleEventSink.js +17 -0
- package/dist/scheduler/observability/ScheduleEventSink.js.map +1 -0
- package/dist/scheduler/observability/StatsTracker.d.ts +50 -0
- package/dist/scheduler/observability/StatsTracker.d.ts.map +1 -0
- package/dist/scheduler/observability/StatsTracker.js +96 -0
- package/dist/scheduler/observability/StatsTracker.js.map +1 -0
- package/dist/security/CookieSigner.d.ts +13 -0
- package/dist/security/CookieSigner.d.ts.map +1 -0
- package/dist/security/CookieSigner.js +51 -0
- package/dist/security/CookieSigner.js.map +1 -0
- package/dist/security/SignedUrl.d.ts +17 -0
- package/dist/security/SignedUrl.d.ts.map +1 -0
- package/dist/security/SignedUrl.js +63 -0
- package/dist/security/SignedUrl.js.map +1 -0
- package/dist/security/crypto.d.ts +25 -0
- package/dist/security/crypto.d.ts.map +1 -0
- package/dist/security/crypto.js +82 -0
- package/dist/security/crypto.js.map +1 -0
- package/dist/server/HyperServer.d.ts +64 -0
- package/dist/server/HyperServer.d.ts.map +1 -0
- package/dist/server/HyperServer.js +54 -0
- package/dist/server/HyperServer.js.map +1 -0
- package/dist/server/Server.d.ts +68 -0
- package/dist/server/Server.d.ts.map +1 -0
- package/dist/server/Server.js +113 -0
- package/dist/server/Server.js.map +1 -0
- package/dist/services/app.d.ts +14 -0
- package/dist/services/app.d.ts.map +1 -0
- package/dist/services/app.js +27 -0
- package/dist/services/app.js.map +1 -0
- package/dist/services/router.d.ts +21 -0
- package/dist/services/router.d.ts.map +1 -0
- package/dist/services/router.js +36 -0
- package/dist/services/router.js.map +1 -0
- package/dist/services/server.d.ts +16 -0
- package/dist/services/server.d.ts.map +1 -0
- package/dist/services/server.js +32 -0
- package/dist/services/server.js.map +1 -0
- package/dist/session/Session.d.ts +88 -0
- package/dist/session/Session.d.ts.map +1 -0
- package/dist/session/Session.js +186 -0
- package/dist/session/Session.js.map +1 -0
- package/dist/session/SessionMiddleware.d.ts +16 -0
- package/dist/session/SessionMiddleware.d.ts.map +1 -0
- package/dist/session/SessionMiddleware.js +132 -0
- package/dist/session/SessionMiddleware.js.map +1 -0
- package/dist/session/drivers/CookieDriver.d.ts +17 -0
- package/dist/session/drivers/CookieDriver.d.ts.map +1 -0
- package/dist/session/drivers/CookieDriver.js +42 -0
- package/dist/session/drivers/CookieDriver.js.map +1 -0
- package/dist/session/drivers/MemoryDriver.d.ts +9 -0
- package/dist/session/drivers/MemoryDriver.d.ts.map +1 -0
- package/dist/session/drivers/MemoryDriver.js +24 -0
- package/dist/session/drivers/MemoryDriver.js.map +1 -0
- package/dist/storage/S3Driver.d.ts +27 -0
- package/dist/storage/S3Driver.d.ts.map +1 -0
- package/dist/storage/S3Driver.js +135 -0
- package/dist/storage/S3Driver.js.map +1 -0
- package/dist/storage/StaticMiddleware.d.ts +27 -0
- package/dist/storage/StaticMiddleware.d.ts.map +1 -0
- package/dist/storage/StaticMiddleware.js +153 -0
- package/dist/storage/StaticMiddleware.js.map +1 -0
- package/dist/storage/StaticProvider.d.ts +26 -0
- package/dist/storage/StaticProvider.d.ts.map +1 -0
- package/dist/storage/StaticProvider.js +31 -0
- package/dist/storage/StaticProvider.js.map +1 -0
- package/dist/storage/StorageManager.d.ts +31 -0
- package/dist/storage/StorageManager.d.ts.map +1 -0
- package/dist/storage/StorageManager.js +120 -0
- package/dist/storage/StorageManager.js.map +1 -0
- package/dist/testing/RequestBuilder.d.ts +67 -0
- package/dist/testing/RequestBuilder.d.ts.map +1 -0
- package/dist/testing/RequestBuilder.js +202 -0
- package/dist/testing/RequestBuilder.js.map +1 -0
- package/dist/testing/TestClient.d.ts +96 -0
- package/dist/testing/TestClient.d.ts.map +1 -0
- package/dist/testing/TestClient.js +263 -0
- package/dist/testing/TestClient.js.map +1 -0
- package/dist/types/helpers.d.ts +47 -0
- package/dist/types/helpers.d.ts.map +1 -0
- package/dist/types/helpers.js +5 -0
- package/dist/types/helpers.js.map +1 -0
- package/events.darwin-arm64.node +0 -0
- package/events.darwin-x64.node +0 -0
- package/events.linux-arm64-gnu.node +0 -0
- package/events.linux-x64-gnu.node +0 -0
- package/events.win32-x64-msvc.node +0 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +106 -0
- package/scheduler.darwin-arm64.node +0 -0
- package/scheduler.darwin-x64.node +0 -0
- package/scheduler.linux-arm64-gnu.node +0 -0
- package/scheduler.linux-x64-gnu.node +0 -0
- package/scheduler.win32-x64-msvc.node +0 -0
- package/scripts/copy-napi.mjs +113 -0
- package/src/Application.ts +177 -0
- package/src/Codemods.ts +343 -0
- package/src/ConfigLoader.ts +49 -0
- package/src/ErrorBoundary.ts +157 -0
- package/src/GracefulShutdown.ts +80 -0
- package/src/HealthCheck.ts +96 -0
- package/src/HotReload.ts +78 -0
- package/src/HttpKernel.ts +305 -0
- package/src/Ignitor.ts +656 -0
- package/src/Provider.ts +74 -0
- package/src/bodyparser/BodyParserMiddleware.ts +183 -0
- package/src/bodyparser/MultipartFile.ts +181 -0
- package/src/bodyparser/parseSize.ts +19 -0
- package/src/bootstrap/hyper-server.ts +78 -0
- package/src/console/CommandRunner.ts +82 -0
- package/src/container/Container.ts +383 -0
- package/src/container/types.ts +30 -0
- package/src/decorators/Lazy.ts +57 -0
- package/src/decorators/Service.ts +85 -0
- package/src/errors/FuzzyMatcher.ts +93 -0
- package/src/errors/ModuleErrors.ts +73 -0
- package/src/errors/PipelineStageError.ts +97 -0
- package/src/errors/ReamError.ts +138 -0
- package/src/events/Emitter.ts +333 -0
- package/src/events/EventsProvider.ts +58 -0
- package/src/events/config.ts +10 -0
- package/src/events/configure.ts +19 -0
- package/src/events/helix/helpers.ts +260 -0
- package/src/events/index.ts +22 -0
- package/src/events/native.ts +37 -0
- package/src/events/services/main.ts +39 -0
- package/src/events/testing/FakeBus.ts +420 -0
- package/src/graphql/GraphQLEngine.ts +421 -0
- package/src/graphql/GraphQLProvider.ts +59 -0
- package/src/helpers/base64.ts +72 -0
- package/src/helpers/index.ts +6 -0
- package/src/helpers/is.ts +162 -0
- package/src/helpers/napi-loader.ts +106 -0
- package/src/helpers/safeEqual.ts +15 -0
- package/src/helpers/string.ts +469 -0
- package/src/helpers/types.ts +100 -0
- package/src/http/Exception.ts +272 -0
- package/src/http/HttpContext.ts +108 -0
- package/src/http/RedirectBuilder.ts +89 -0
- package/src/http/Request.ts +540 -0
- package/src/http/Response.ts +351 -0
- package/src/http/SseStream.ts +250 -0
- package/src/http/urlDecode.ts +18 -0
- package/src/index.ts +263 -0
- package/src/middleware/Pipeline.ts +136 -0
- package/src/openapi/OpenApiGenerator.ts +254 -0
- package/src/openapi/OpenApiMiddleware.ts +101 -0
- package/src/openapi/OpenApiProvider.ts +67 -0
- package/src/resources/ApiResource.ts +79 -0
- package/src/router/Router.ts +733 -0
- package/src/rpc/RpcProvider.ts +54 -0
- package/src/rpc/RpcRouter.ts +243 -0
- package/src/scheduler/Schedule.ts +96 -0
- package/src/scheduler/ScheduleProvider.ts +177 -0
- package/src/scheduler/Scheduler.ts +601 -0
- package/src/scheduler/index.ts +24 -0
- package/src/scheduler/locks/LockBackend.ts +38 -0
- package/src/scheduler/locks/MemoryLockBackend.ts +85 -0
- package/src/scheduler/observability/ErrorReporter.ts +13 -0
- package/src/scheduler/observability/ScheduleEvent.ts +61 -0
- package/src/scheduler/observability/ScheduleEventSink.ts +21 -0
- package/src/scheduler/observability/StatsTracker.ts +134 -0
- package/src/security/CookieSigner.ts +54 -0
- package/src/security/SignedUrl.ts +71 -0
- package/src/security/crypto.ts +98 -0
- package/src/server/HyperServer.ts +121 -0
- package/src/server/Server.ts +147 -0
- package/src/services/app.ts +34 -0
- package/src/services/router.ts +44 -0
- package/src/services/server.ts +40 -0
- package/src/session/Session.ts +231 -0
- package/src/session/SessionMiddleware.ts +153 -0
- package/src/session/drivers/CookieDriver.ts +48 -0
- package/src/session/drivers/MemoryDriver.ts +29 -0
- package/src/storage/S3Driver.ts +171 -0
- package/src/storage/StaticMiddleware.ts +182 -0
- package/src/storage/StaticProvider.ts +40 -0
- package/src/storage/StorageManager.ts +142 -0
- package/src/testing/RequestBuilder.ts +275 -0
- package/src/testing/TestClient.ts +344 -0
- package/src/types/helpers.ts +52 -0
- package/swcrc.app.json +17 -0
- package/tsconfig.app.json +21 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HttpKernel — bridges HyperServer NAPI with Router + Middleware Pipeline + ExceptionHandler.
|
|
3
|
+
*
|
|
4
|
+
* Request flow (like AdonisJS):
|
|
5
|
+
* 1. Parse JSON from Rust NAPI
|
|
6
|
+
* 2. Create HttpContext
|
|
7
|
+
* 3. Onion pipeline: Server MW → Router MW → Route MW → Guards → Handler
|
|
8
|
+
* 4. ExceptionHandler for any errors
|
|
9
|
+
*
|
|
10
|
+
* @implements FR21, FR22, FR23, FR24
|
|
11
|
+
*/
|
|
12
|
+
import { E_ROUTE_NOT_FOUND, ExceptionHandler } from './http/Exception.js';
|
|
13
|
+
import { HttpContext } from './http/HttpContext.js';
|
|
14
|
+
import { compose } from './middleware/Pipeline.js';
|
|
15
|
+
export function createHttpKernel(config) {
|
|
16
|
+
// Debug mode requires explicit opt-in — never leak stack traces by default
|
|
17
|
+
const handler = config.exceptionHandler ?? new ExceptionHandler(config.debug === true);
|
|
18
|
+
const serverMw = config.serverMiddleware ?? [];
|
|
19
|
+
const routerMw = config.routerMiddleware ?? [];
|
|
20
|
+
// Pipeline cache: compiled middleware chain per route key (PERF-7)
|
|
21
|
+
// Cleared when router.clear() is called (hot-reload).
|
|
22
|
+
const pipelineCache = new Map();
|
|
23
|
+
// Hook into router clear for cache invalidation
|
|
24
|
+
const origClear = config.router.clear.bind(config.router);
|
|
25
|
+
config.router.clear = () => {
|
|
26
|
+
origClear();
|
|
27
|
+
pipelineCache.clear();
|
|
28
|
+
};
|
|
29
|
+
// Resolve the events emitter once, only when the app registered
|
|
30
|
+
// `EventsProvider`. Lazy + cached: the binding may not exist yet at kernel
|
|
31
|
+
// creation, and `has()` avoids loading the native bus for apps without events.
|
|
32
|
+
let eventsEmitter;
|
|
33
|
+
let eventsResolved = false;
|
|
34
|
+
const resolveEvents = () => {
|
|
35
|
+
if (!eventsResolved) {
|
|
36
|
+
eventsResolved = true;
|
|
37
|
+
if (config.container?.has('events')) {
|
|
38
|
+
eventsEmitter = config.container.resolve('events');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return eventsEmitter;
|
|
42
|
+
};
|
|
43
|
+
return async (reqData) => {
|
|
44
|
+
// The Rust HyperServer hands the request as a typed JS object via napi
|
|
45
|
+
// `to_js_value` (no JSON intermediate). Serverless adapters that pass a
|
|
46
|
+
// JSON string must `JSON.parse` themselves before invoking the kernel.
|
|
47
|
+
// 2. Correlation ID
|
|
48
|
+
const CORR_ID_RE = /^[A-Za-z0-9\-_]{8,128}$/;
|
|
49
|
+
const rawCorrId = reqData.headers['x-request-id'] ?? reqData.headers['x-correlation-id'] ?? '';
|
|
50
|
+
const correlationId = CORR_ID_RE.test(rawCorrId) ? rawCorrId : crypto.randomUUID();
|
|
51
|
+
// 3. Match route (pass host for domain-based routing).
|
|
52
|
+
// The Rust HyperServer lowercases every header name before handing
|
|
53
|
+
// the request over (see crates/ream-http/src/request.rs — `headers`
|
|
54
|
+
// is documented "lowercased"). Looking up `host` is therefore the
|
|
55
|
+
// only correct key; the previous PascalCase fallback was dead code.
|
|
56
|
+
const host = reqData.headers.host;
|
|
57
|
+
const match = config.router.match(reqData.method, reqData.path, host);
|
|
58
|
+
const routeInfo = match
|
|
59
|
+
? {
|
|
60
|
+
pattern: match.route.path,
|
|
61
|
+
name: match.route.name,
|
|
62
|
+
middleware: match.route.middleware,
|
|
63
|
+
// Forward the controller class + method name onto the public
|
|
64
|
+
// RouteInfo so middleware (Warden's @Guard, Photon's @Meta) can
|
|
65
|
+
// read decorator metadata via Reflect. Absent for inline-arrow
|
|
66
|
+
// route handlers — that's intentional, decorators only apply
|
|
67
|
+
// to controller methods.
|
|
68
|
+
controller: match.route.controller?.target.prototype,
|
|
69
|
+
action: match.route.controller?.method,
|
|
70
|
+
}
|
|
71
|
+
: { pattern: '', middleware: [] };
|
|
72
|
+
// 4. Create HttpContext
|
|
73
|
+
const ctx = new HttpContext(correlationId, reqData, match?.params ?? {}, routeInfo);
|
|
74
|
+
ctx.setRouteUrlResolver((name, params) => config.router.makeUrl(name, params));
|
|
75
|
+
ctx.events = resolveEvents();
|
|
76
|
+
// Wire the streaming backend so `ctx.response.sse()` can talk to
|
|
77
|
+
// the HyperServer NAPI. Falls back silently when no backend is
|
|
78
|
+
// available (mock server, websocket-only host) — the SSE helper
|
|
79
|
+
// throws a clean error in that case.
|
|
80
|
+
const backend = config.streamBackend?.();
|
|
81
|
+
if (backend) {
|
|
82
|
+
ctx.response.setStreamBackend(backend);
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
// 5. Build the FULL onion pipeline:
|
|
86
|
+
// Server MW → [route match check] → Router MW → Route named MW → Route inline MW → Guards → Handler
|
|
87
|
+
const coreHandler = async (innerCtx) => {
|
|
88
|
+
if (!match) {
|
|
89
|
+
throw new E_ROUTE_NOT_FOUND(reqData.method, reqData.path);
|
|
90
|
+
}
|
|
91
|
+
// Cache key: method + path pattern (static per route definition)
|
|
92
|
+
const cacheKey = `${match.route.method}:${match.route.path}`;
|
|
93
|
+
let cached = pipelineCache.get(cacheKey);
|
|
94
|
+
if (!cached) {
|
|
95
|
+
// Resolve handler (once per route)
|
|
96
|
+
let routeHandler;
|
|
97
|
+
if (match.route.controller) {
|
|
98
|
+
routeHandler = createControllerHandler(match.route.controller, config.container);
|
|
99
|
+
}
|
|
100
|
+
else if (match.route.handler) {
|
|
101
|
+
routeHandler = match.route.handler;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error(`Route ${match.route.method} ${match.route.path} has neither controller nor handler`);
|
|
105
|
+
}
|
|
106
|
+
// Merge route-level guards with controller method decorator metadata (once)
|
|
107
|
+
let guards = [...match.route.guards];
|
|
108
|
+
let roles = [...match.route.roles];
|
|
109
|
+
let permissions = [...match.route.permissions];
|
|
110
|
+
if (match.route.controller) {
|
|
111
|
+
const meta = readControllerGuardMetadata(match.route.controller.target, match.route.controller.method);
|
|
112
|
+
guards = [...guards, ...meta.guards];
|
|
113
|
+
roles = [...roles, ...meta.roles];
|
|
114
|
+
permissions = [...permissions, ...meta.permissions];
|
|
115
|
+
}
|
|
116
|
+
// Compile pipeline once
|
|
117
|
+
const chain = config.middleware.buildChain(match.route.middleware, [...routerMw, ...match.route.inlineMiddleware], async (c) => {
|
|
118
|
+
await routeHandler(c);
|
|
119
|
+
}, { guards, roles, permissions });
|
|
120
|
+
cached = { chain };
|
|
121
|
+
pipelineCache.set(cacheKey, cached);
|
|
122
|
+
}
|
|
123
|
+
// API versioning headers (per-request, cheap)
|
|
124
|
+
if (match.route.version) {
|
|
125
|
+
innerCtx.response.header('x-api-version', match.route.version);
|
|
126
|
+
}
|
|
127
|
+
if (match.route.deprecates) {
|
|
128
|
+
innerCtx.response.header('deprecation', 'true');
|
|
129
|
+
innerCtx.response.header('x-deprecated-version', match.route.deprecates.version);
|
|
130
|
+
if (match.route.deprecates.sunset) {
|
|
131
|
+
innerCtx.response.header('sunset', match.route.deprecates.sunset);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
await cached.chain(innerCtx, async () => { });
|
|
135
|
+
};
|
|
136
|
+
// Compose: server middleware wraps everything (onion)
|
|
137
|
+
const fullPipeline = compose([...serverMw, coreHandler]);
|
|
138
|
+
await fullPipeline(ctx, async () => { });
|
|
139
|
+
return serializeResponse(ctx);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
// If the handler opened an SSE stream via `response.sse()` and
|
|
143
|
+
// THEN threw, the reserved stream id is still on the response.
|
|
144
|
+
// Tear it down before building the error response — otherwise
|
|
145
|
+
// serializeResponse emits `streamId` next to an error body and
|
|
146
|
+
// the HyperServer keeps feeding a dead stream slot forever.
|
|
147
|
+
await ctx.response.abortStream();
|
|
148
|
+
try {
|
|
149
|
+
await handler.handle(error, ctx);
|
|
150
|
+
await handler.report(error, ctx);
|
|
151
|
+
}
|
|
152
|
+
catch (handlerError) {
|
|
153
|
+
console.error('ExceptionHandler failed:', handlerError);
|
|
154
|
+
ctx.response
|
|
155
|
+
.status(500)
|
|
156
|
+
.json({ error: { code: 'E_HANDLER_FAILURE', message: 'An internal error occurred' } });
|
|
157
|
+
}
|
|
158
|
+
if (config.onError) {
|
|
159
|
+
config.onError(error, ctx);
|
|
160
|
+
}
|
|
161
|
+
// Core domain event: a request raised an exception. Fire-and-forget
|
|
162
|
+
// through the bus when events are wired (error path only — zero cost on
|
|
163
|
+
// the happy path). Emitter isolates listener failures from the response.
|
|
164
|
+
ctx.events?.emit('exception', {
|
|
165
|
+
id: ctx.id,
|
|
166
|
+
method: reqData.method,
|
|
167
|
+
path: reqData.path,
|
|
168
|
+
error: error instanceof Error ? error.message : String(error),
|
|
169
|
+
});
|
|
170
|
+
return serializeResponse(ctx);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function createControllerHandler(
|
|
175
|
+
// biome-ignore lint/suspicious/noExplicitAny: see ControllerAction type — IoC resolves constructor params
|
|
176
|
+
controller, container) {
|
|
177
|
+
return async (ctx) => {
|
|
178
|
+
const instance = container ? container.make(controller.target) : new controller.target();
|
|
179
|
+
const method = instance[controller.method];
|
|
180
|
+
if (typeof method !== 'function') {
|
|
181
|
+
throw new Error(`Controller method '${controller.method}' not found on ${controller.target.name}`);
|
|
182
|
+
}
|
|
183
|
+
await method.call(instance, ctx);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Read @Guard, @Role, @Permission metadata from a controller method.
|
|
188
|
+
* Returns empty arrays if no decorators are present.
|
|
189
|
+
*/
|
|
190
|
+
function readControllerGuardMetadata(target, method) {
|
|
191
|
+
try {
|
|
192
|
+
const guards = Reflect.getMetadata(Symbol.for('warden:guard'), target.prototype, method) ?? [];
|
|
193
|
+
const roles = Reflect.getMetadata(Symbol.for('warden:role'), target.prototype, method) ?? [];
|
|
194
|
+
const permissions = Reflect.getMetadata(Symbol.for('warden:permission'), target.prototype, method) ?? [];
|
|
195
|
+
return { guards, roles, permissions };
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return { guards: [], roles: [], permissions: [] };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function serializeResponse(ctx) {
|
|
202
|
+
const streamId = ctx.response.getStreamId();
|
|
203
|
+
return {
|
|
204
|
+
status: ctx.response.getStatus(),
|
|
205
|
+
headers: ctx.response.getHeaders(),
|
|
206
|
+
body: ctx.response.getBody(),
|
|
207
|
+
...(streamId !== undefined ? { streamId } : {}),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=HttpKernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpKernel.js","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ignitor — AdonisJS-compatible application bootstrap.
|
|
3
|
+
*
|
|
4
|
+
* Usage (like AdonisJS):
|
|
5
|
+
* new Ignitor(APP_ROOT, { importer: IMPORTER })
|
|
6
|
+
* .tap((app) => {
|
|
7
|
+
* app.booting(async () => { await import('#start/env') })
|
|
8
|
+
* app.listen('SIGTERM', () => app.terminate())
|
|
9
|
+
* })
|
|
10
|
+
* .httpServer()
|
|
11
|
+
* .start()
|
|
12
|
+
*
|
|
13
|
+
* @implements FR17, FR20, FR23
|
|
14
|
+
*/
|
|
15
|
+
import { Application } from './Application.js';
|
|
16
|
+
import type { ErrorEvent } from './ErrorBoundary.js';
|
|
17
|
+
import type { HttpKernelRequest, HttpKernelResponse } from './HttpKernel.js';
|
|
18
|
+
import type { MiddlewareFunction } from './middleware/Pipeline.js';
|
|
19
|
+
import type { AppContext, ProviderContract } from './Provider.js';
|
|
20
|
+
import { Router } from './router/Router.js';
|
|
21
|
+
import { Server } from './server/Server.js';
|
|
22
|
+
/** Application environment. */
|
|
23
|
+
export type AppEnvironment = 'web' | 'console' | 'test' | 'unknown';
|
|
24
|
+
/**
|
|
25
|
+
* Reamrc config — like AdonisJS adonisrc.ts with defineConfig().
|
|
26
|
+
*/
|
|
27
|
+
export interface ReamrcConfig {
|
|
28
|
+
providers?: Array<(() => Promise<{
|
|
29
|
+
default: new (app: AppContext) => ProviderContract;
|
|
30
|
+
}>) | {
|
|
31
|
+
file: () => Promise<{
|
|
32
|
+
default: new (app: AppContext) => ProviderContract;
|
|
33
|
+
}>;
|
|
34
|
+
environment?: string[];
|
|
35
|
+
}>;
|
|
36
|
+
preloads?: Array<(() => Promise<unknown>) | {
|
|
37
|
+
file: () => Promise<unknown>;
|
|
38
|
+
environment?: string[];
|
|
39
|
+
}>;
|
|
40
|
+
commands?: Array<() => Promise<unknown>>;
|
|
41
|
+
modules?: {
|
|
42
|
+
/** Path to the modules directory (relative to app root). Default: './app/modules' */
|
|
43
|
+
path?: string;
|
|
44
|
+
/** Auto-loaded files in each module directory. Default: ['routes'] */
|
|
45
|
+
autoload?: string[];
|
|
46
|
+
};
|
|
47
|
+
tests?: {
|
|
48
|
+
suites?: Array<{
|
|
49
|
+
name: string;
|
|
50
|
+
files: string[];
|
|
51
|
+
timeout?: number;
|
|
52
|
+
}>;
|
|
53
|
+
forceExit?: boolean;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** defineConfig helper — like AdonisJS defineConfig(). */
|
|
57
|
+
export declare function defineConfig(config: ReamrcConfig): ReamrcConfig;
|
|
58
|
+
/** Minimal interface for the HTTP server (NAPI or mock). */
|
|
59
|
+
export interface HyperServerLike {
|
|
60
|
+
onRequest(callback: (request: HttpKernelRequest) => Promise<HttpKernelResponse>): void;
|
|
61
|
+
/**
|
|
62
|
+
* Optional — present on the real `HyperServer` (Rust-backed), absent on
|
|
63
|
+
* trivial test mocks. Ignitor only calls it when a shield config is set.
|
|
64
|
+
*/
|
|
65
|
+
configureShield?(config: {
|
|
66
|
+
pathTraversal: boolean;
|
|
67
|
+
paramPollution: boolean;
|
|
68
|
+
}): void;
|
|
69
|
+
/** Optional — same lifecycle as `configureShield`. */
|
|
70
|
+
configureTrustedProxies?(cidrs: string[]): void;
|
|
71
|
+
/** Optional — same lifecycle as `configureShield`. */
|
|
72
|
+
configureRateLimit?(config: {
|
|
73
|
+
max: number;
|
|
74
|
+
windowSecs: number;
|
|
75
|
+
} | null): void;
|
|
76
|
+
listen(): Promise<void>;
|
|
77
|
+
port(): Promise<number>;
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
registerStream?(streamId: string): Promise<boolean>;
|
|
80
|
+
writeStream?(streamId: string, chunk: string): Promise<boolean>;
|
|
81
|
+
closeStream?(streamId: string): Promise<boolean>;
|
|
82
|
+
onStreamDisconnect?(streamId: string, callback: () => void): void;
|
|
83
|
+
}
|
|
84
|
+
export interface IgnitorConfig {
|
|
85
|
+
port?: number;
|
|
86
|
+
serverFactory?: (port: number) => HyperServerLike;
|
|
87
|
+
importer?: (filePath: string) => Promise<unknown>;
|
|
88
|
+
watchDirs?: string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Ignitor — boots and wires the Ream framework.
|
|
92
|
+
*
|
|
93
|
+
* Lifecycle: register → boot → start → ready → shutdown
|
|
94
|
+
*/
|
|
95
|
+
export declare class Ignitor {
|
|
96
|
+
private app;
|
|
97
|
+
private router;
|
|
98
|
+
private server;
|
|
99
|
+
private middleware;
|
|
100
|
+
private errorBoundary;
|
|
101
|
+
private _httpServer?;
|
|
102
|
+
private config;
|
|
103
|
+
private appRoot?;
|
|
104
|
+
private environment;
|
|
105
|
+
private reamrc?;
|
|
106
|
+
private providers;
|
|
107
|
+
private errorListeners;
|
|
108
|
+
private phase;
|
|
109
|
+
private hotReloadCleanup?;
|
|
110
|
+
private inlineRoutes?;
|
|
111
|
+
private inlineMiddleware;
|
|
112
|
+
private inlineNamedMiddleware;
|
|
113
|
+
private inlineProviderFactories;
|
|
114
|
+
/**
|
|
115
|
+
* Create the Ignitor.
|
|
116
|
+
*
|
|
117
|
+
* AdonisJS-style:
|
|
118
|
+
* new Ignitor(APP_ROOT, { importer: IMPORTER })
|
|
119
|
+
*
|
|
120
|
+
* Simple-style:
|
|
121
|
+
* new Ignitor({ port: 3000, serverFactory: ... })
|
|
122
|
+
*/
|
|
123
|
+
constructor(appRootOrConfig?: URL | IgnitorConfig, config?: IgnitorConfig);
|
|
124
|
+
/**
|
|
125
|
+
* Access the Application instance before start.
|
|
126
|
+
* Like AdonisJS: .tap((app) => { app.booting(...) })
|
|
127
|
+
*/
|
|
128
|
+
tap(callback: (app: Application) => void): this;
|
|
129
|
+
/** Set the application environment. */
|
|
130
|
+
setEnvironment(env: AppEnvironment): this;
|
|
131
|
+
getEnvironment(): AppEnvironment;
|
|
132
|
+
/**
|
|
133
|
+
* Load the reamrc config (equivalent to adonisrc.ts).
|
|
134
|
+
*/
|
|
135
|
+
useRcFile(reamrc: ReamrcConfig): this;
|
|
136
|
+
/** Define routes inline (simple mode). */
|
|
137
|
+
routes(callback: (router: Router) => void): this;
|
|
138
|
+
/** Add global middleware inline. */
|
|
139
|
+
use(mw: MiddlewareFunction): this;
|
|
140
|
+
/** Register a named middleware inline. */
|
|
141
|
+
named(name: string, mw: MiddlewareFunction): this;
|
|
142
|
+
/** Register a provider inline (for testing or simple apps). */
|
|
143
|
+
provider(factory: (app: Application) => ProviderContract): this;
|
|
144
|
+
/** Listen for error events. */
|
|
145
|
+
onError(listener: (event: ErrorEvent) => void): this;
|
|
146
|
+
/** Set a config value. */
|
|
147
|
+
configure(key: string, value: unknown): this;
|
|
148
|
+
/** Configure for HTTP server mode. */
|
|
149
|
+
httpServer(): this;
|
|
150
|
+
/** Configure for CLI/console mode. Returns a ConsoleKernel for dispatching commands. */
|
|
151
|
+
console(): ConsoleKernel;
|
|
152
|
+
/** Configure for test mode. */
|
|
153
|
+
testMode(): this;
|
|
154
|
+
start(): Promise<Ignitor>;
|
|
155
|
+
private phaseRegister;
|
|
156
|
+
private phaseBoot;
|
|
157
|
+
private phaseStart;
|
|
158
|
+
private phaseReady;
|
|
159
|
+
/**
|
|
160
|
+
* Auto-load config/*.ts files into app.config store.
|
|
161
|
+
* Each file's default export is stored under its filename (without extension).
|
|
162
|
+
* e.g. config/database.ts → app.config.get('database')
|
|
163
|
+
*/
|
|
164
|
+
private autoloadConfig;
|
|
165
|
+
/**
|
|
166
|
+
* Auto-load module files (routes.ts, etc.) from the modules directory.
|
|
167
|
+
* Scans modules.path for subdirectories and imports matching files.
|
|
168
|
+
*/
|
|
169
|
+
private autoloadModules;
|
|
170
|
+
/** Graceful shutdown. */
|
|
171
|
+
stop(): Promise<void>;
|
|
172
|
+
port(): Promise<number>;
|
|
173
|
+
getApp(): Application;
|
|
174
|
+
getRouter(): Router;
|
|
175
|
+
getServer(): Server;
|
|
176
|
+
/** Get the kernel callback (for serverless / testing). */
|
|
177
|
+
getKernel(): (request: HttpKernelRequest) => Promise<HttpKernelResponse>;
|
|
178
|
+
isDevMode(): boolean;
|
|
179
|
+
getPhase(): string;
|
|
180
|
+
private handleError;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Pretty-print an error (like AdonisJS prettyPrintError).
|
|
184
|
+
*/
|
|
185
|
+
export declare function prettyPrintError(error: unknown): void;
|
|
186
|
+
/**
|
|
187
|
+
* ConsoleKernel — handles CLI command dispatching.
|
|
188
|
+
* Like AdonisJS: new Ignitor(...).console().handle(process.argv.splice(2))
|
|
189
|
+
*/
|
|
190
|
+
export declare class ConsoleKernel {
|
|
191
|
+
private ignitor;
|
|
192
|
+
constructor(ignitor: Ignitor);
|
|
193
|
+
handle(argv: string[]): Promise<void>;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=Ignitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ignitor.d.ts","sourceRoot":"","sources":["../src/Ignitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAKpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAG5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAK3C,+BAA+B;AAC/B,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,KAAK,CACb,CAAC,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,GAAG,EAAE,UAAU,KAAK,gBAAgB,CAAA;KAAE,CAAC,CAAC,GACvE;QACE,IAAI,EAAE,MAAM,OAAO,CAAC;YAAE,OAAO,EAAE,KAAK,GAAG,EAAE,UAAU,KAAK,gBAAgB,CAAA;SAAE,CAAC,CAAA;QAC3E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KACvB,CACJ,CAAA;IACD,QAAQ,CAAC,EAAE,KAAK,CACZ,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GACxB;QACE,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KACvB,CACJ,CAAA;IACD,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,EAAE;QACR,qFAAqF;QACrF,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,sEAAsE;QACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACnE,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;IACtF;;;OAGG;IACH,eAAe,CAAC,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnF,sDAAsD;IACtD,uBAAuB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/C,sDAAsD;IACtD,kBAAkB,CAAC,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAC7E,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAItB,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/D,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAClE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAA;IACjD,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAK;IACrB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,KAAK,CAAoF;IACjG,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAGrC,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,qBAAqB,CAA0C;IACvE,OAAO,CAAC,uBAAuB,CAAoD;IAEnF;;;;;;;;OAQG;gBACS,eAAe,CAAC,EAAE,GAAG,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IAoCzE;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAK/C,uCAAuC;IACvC,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAKzC,cAAc,IAAI,cAAc;IAIhC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAOrC,0CAA0C;IAC1C,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAKhD,oCAAoC;IACpC,GAAG,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAKjC,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAKjD,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,gBAAgB,GAAG,IAAI;IAK/D,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAKpD,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAO5C,sCAAsC;IACtC,UAAU,IAAI,IAAI;IAKlB,wFAAwF;IACxF,OAAO,IAAI,aAAa;IAKxB,+BAA+B;IAC/B,QAAQ,IAAI,IAAI;IAOV,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;YAQjB,aAAa;YAgCb,SAAS;YAKT,UAAU;YAqCV,UAAU;IAuHxB;;;;OAIG;YACW,cAAc;IAsB5B;;;OAGG;YACW,eAAe;IAkC7B,yBAAyB;IACnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,MAAM,IAAI,WAAW;IAIrB,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,MAAM;IAInB,0DAA0D;IAC1D,SAAS,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC;IAYxE,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,WAAW;CASpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CASrD;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,OAAO;IAItB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B5C"}
|