@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 @@
|
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/decorators/Service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kBAAkB,CAAA;AAGzB,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AACnD,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAKjD,0CAA0C;AAC1C,MAAM,eAAe,GAAyC,IAAI,GAAG,EAAE,CAAA;AAEvE,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,oBAAoB;IAClC,eAAe,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,UAAiD,EAAE;IACzE,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAoB;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW;YACnC,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAA;QACD,qIAAqI;QACrI,eAAe,CAAC,GAAG,CAAC,MAA+B,EAAE,QAAQ,CAAC,CAAA;QAC9D,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,CAAC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE;QAC9C,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAA;QAClE,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QACzC,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;IACrE,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,OAAO,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fuzzy Matcher — suggests corrections for typos using Levenshtein distance.
|
|
3
|
+
*
|
|
4
|
+
* @implements FR72
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Calculate Levenshtein distance between two strings.
|
|
8
|
+
*/
|
|
9
|
+
export declare function levenshtein(a: string, b: string): number;
|
|
10
|
+
/**
|
|
11
|
+
* Find the closest matches from a list of candidates.
|
|
12
|
+
*
|
|
13
|
+
* @param input - The typo'd string
|
|
14
|
+
* @param candidates - Available options
|
|
15
|
+
* @param maxDistance - Maximum Levenshtein distance to consider (default: 3)
|
|
16
|
+
* @param maxResults - Maximum suggestions to return (default: 3)
|
|
17
|
+
* @returns Sorted array of { candidate, distance }
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Find the closest matches from a list of candidates.
|
|
21
|
+
* Exact matches (distance 0) are excluded — this is for "did you mean" suggestions.
|
|
22
|
+
*
|
|
23
|
+
* @param input - The typo'd string (max 100 chars — longer inputs return empty)
|
|
24
|
+
* @param candidates - Available options
|
|
25
|
+
* @param maxDistance - Maximum Levenshtein distance to consider (default: 3)
|
|
26
|
+
* @param maxResults - Maximum suggestions to return (default: 3)
|
|
27
|
+
* @returns Sorted array of { candidate, distance }
|
|
28
|
+
*/
|
|
29
|
+
export declare function findClosestMatches(input: string, candidates: string[], maxDistance?: number, maxResults?: number): Array<{
|
|
30
|
+
candidate: string;
|
|
31
|
+
distance: number;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Format a "did you mean?" suggestion string.
|
|
35
|
+
*
|
|
36
|
+
* @param input - What the user typed
|
|
37
|
+
* @param candidates - Available options to match against
|
|
38
|
+
* @returns Formatted suggestion string, or empty string if no matches
|
|
39
|
+
*/
|
|
40
|
+
export declare function didYouMean(input: string, candidates: string[]): string;
|
|
41
|
+
//# sourceMappingURL=FuzzyMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FuzzyMatcher.d.ts","sourceRoot":"","sources":["../../src/errors/FuzzyMatcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBxD;AAED;;;;;;;;GAQG;AACH;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,SAAI,EACf,UAAU,SAAI,GACb,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAchD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAUtE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fuzzy Matcher — suggests corrections for typos using Levenshtein distance.
|
|
3
|
+
*
|
|
4
|
+
* @implements FR72
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Calculate Levenshtein distance between two strings.
|
|
8
|
+
*/
|
|
9
|
+
export function levenshtein(a, b) {
|
|
10
|
+
const m = a.length;
|
|
11
|
+
const n = b.length;
|
|
12
|
+
if (m === 0)
|
|
13
|
+
return n;
|
|
14
|
+
if (n === 0)
|
|
15
|
+
return m;
|
|
16
|
+
const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
|
|
17
|
+
for (let i = 0; i <= m; i++)
|
|
18
|
+
dp[i][0] = i;
|
|
19
|
+
for (let j = 0; j <= n; j++)
|
|
20
|
+
dp[0][j] = j;
|
|
21
|
+
for (let i = 1; i <= m; i++) {
|
|
22
|
+
for (let j = 1; j <= n; j++) {
|
|
23
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
24
|
+
dp[i][j] = Math.min(dp[i - 1][j] + 1, // deletion
|
|
25
|
+
dp[i][j - 1] + 1, // insertion
|
|
26
|
+
dp[i - 1][j - 1] + cost);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return dp[m][n];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Find the closest matches from a list of candidates.
|
|
33
|
+
*
|
|
34
|
+
* @param input - The typo'd string
|
|
35
|
+
* @param candidates - Available options
|
|
36
|
+
* @param maxDistance - Maximum Levenshtein distance to consider (default: 3)
|
|
37
|
+
* @param maxResults - Maximum suggestions to return (default: 3)
|
|
38
|
+
* @returns Sorted array of { candidate, distance }
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Find the closest matches from a list of candidates.
|
|
42
|
+
* Exact matches (distance 0) are excluded — this is for "did you mean" suggestions.
|
|
43
|
+
*
|
|
44
|
+
* @param input - The typo'd string (max 100 chars — longer inputs return empty)
|
|
45
|
+
* @param candidates - Available options
|
|
46
|
+
* @param maxDistance - Maximum Levenshtein distance to consider (default: 3)
|
|
47
|
+
* @param maxResults - Maximum suggestions to return (default: 3)
|
|
48
|
+
* @returns Sorted array of { candidate, distance }
|
|
49
|
+
*/
|
|
50
|
+
export function findClosestMatches(input, candidates, maxDistance = 3, maxResults = 3) {
|
|
51
|
+
// Guard against very long inputs to avoid O(m*n) allocation pressure
|
|
52
|
+
if (input.length > 100 || candidates.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
const results = candidates
|
|
55
|
+
.map((candidate) => ({
|
|
56
|
+
candidate,
|
|
57
|
+
distance: levenshtein(input.toLowerCase(), candidate.toLowerCase()),
|
|
58
|
+
}))
|
|
59
|
+
.filter((r) => r.distance <= maxDistance && r.distance > 0)
|
|
60
|
+
.sort((a, b) => a.distance - b.distance)
|
|
61
|
+
.slice(0, maxResults);
|
|
62
|
+
return results;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Format a "did you mean?" suggestion string.
|
|
66
|
+
*
|
|
67
|
+
* @param input - What the user typed
|
|
68
|
+
* @param candidates - Available options to match against
|
|
69
|
+
* @returns Formatted suggestion string, or empty string if no matches
|
|
70
|
+
*/
|
|
71
|
+
export function didYouMean(input, candidates) {
|
|
72
|
+
const matches = findClosestMatches(input, candidates);
|
|
73
|
+
if (matches.length === 0)
|
|
74
|
+
return '';
|
|
75
|
+
if (matches.length === 1) {
|
|
76
|
+
return `Did you mean '${matches[0].candidate}'?`;
|
|
77
|
+
}
|
|
78
|
+
const suggestions = matches.map((m) => `'${m.candidate}'`).join(', ');
|
|
79
|
+
return `Did you mean one of: ${suggestions}?`;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=FuzzyMatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FuzzyMatcher.js","sourceRoot":"","sources":["../../src/errors/FuzzyMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module-specific error subclasses.
|
|
3
|
+
*
|
|
4
|
+
* Each module gets its own error class with appropriate defaults.
|
|
5
|
+
*
|
|
6
|
+
* @implements FR71
|
|
7
|
+
*/
|
|
8
|
+
import { ReamError } from './ReamError.js';
|
|
9
|
+
/** Container / IoC errors */
|
|
10
|
+
export declare class ContainerError extends ReamError {
|
|
11
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
12
|
+
}
|
|
13
|
+
/** Router errors */
|
|
14
|
+
export declare class RouterError extends ReamError {
|
|
15
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
16
|
+
}
|
|
17
|
+
/** Pipeline / Middleware errors */
|
|
18
|
+
export declare class PipelineError extends ReamError {
|
|
19
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
20
|
+
}
|
|
21
|
+
/** Atlas ORM errors */
|
|
22
|
+
export declare class AtlasError extends ReamError {
|
|
23
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
24
|
+
}
|
|
25
|
+
/** Rune validation errors */
|
|
26
|
+
export declare class RuneError extends ReamError {
|
|
27
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
28
|
+
}
|
|
29
|
+
/** Warden auth errors */
|
|
30
|
+
export declare class WardenError extends ReamError {
|
|
31
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
32
|
+
}
|
|
33
|
+
/** Event bus errors */
|
|
34
|
+
export declare class EventsError extends ReamError {
|
|
35
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
36
|
+
}
|
|
37
|
+
/** Forge CLI errors */
|
|
38
|
+
export declare class ForgeError extends ReamError {
|
|
39
|
+
constructor(code: string, message: string, options?: ConstructorParameters<typeof ReamError>[2]);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ModuleErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleErrors.d.ts","sourceRoot":"","sources":["../../src/errors/ModuleErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,6BAA6B;AAC7B,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,oBAAoB;AACpB,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,mCAAmC;AACnC,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,uBAAuB;AACvB,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,6BAA6B;AAC7B,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,yBAAyB;AACzB,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,uBAAuB;AACvB,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG;AAED,uBAAuB;AACvB,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAIhG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module-specific error subclasses.
|
|
3
|
+
*
|
|
4
|
+
* Each module gets its own error class with appropriate defaults.
|
|
5
|
+
*
|
|
6
|
+
* @implements FR71
|
|
7
|
+
*/
|
|
8
|
+
import { ReamError } from './ReamError.js';
|
|
9
|
+
/** Container / IoC errors */
|
|
10
|
+
export class ContainerError extends ReamError {
|
|
11
|
+
constructor(code, message, options) {
|
|
12
|
+
super(`CONTAINER_${code}`, message, options);
|
|
13
|
+
this.name = 'ContainerError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Router errors */
|
|
17
|
+
export class RouterError extends ReamError {
|
|
18
|
+
constructor(code, message, options) {
|
|
19
|
+
super(`ROUTER_${code}`, message, options);
|
|
20
|
+
this.name = 'RouterError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Pipeline / Middleware errors */
|
|
24
|
+
export class PipelineError extends ReamError {
|
|
25
|
+
constructor(code, message, options) {
|
|
26
|
+
super(`PIPELINE_${code}`, message, options);
|
|
27
|
+
this.name = 'PipelineError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Atlas ORM errors */
|
|
31
|
+
export class AtlasError extends ReamError {
|
|
32
|
+
constructor(code, message, options) {
|
|
33
|
+
super(`ATLAS_${code}`, message, options);
|
|
34
|
+
this.name = 'AtlasError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Rune validation errors */
|
|
38
|
+
export class RuneError extends ReamError {
|
|
39
|
+
constructor(code, message, options) {
|
|
40
|
+
super(`RUNE_${code}`, message, options);
|
|
41
|
+
this.name = 'RuneError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Warden auth errors */
|
|
45
|
+
export class WardenError extends ReamError {
|
|
46
|
+
constructor(code, message, options) {
|
|
47
|
+
super(`WARDEN_${code}`, message, options);
|
|
48
|
+
this.name = 'WardenError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Event bus errors */
|
|
52
|
+
export class EventsError extends ReamError {
|
|
53
|
+
constructor(code, message, options) {
|
|
54
|
+
super(`EVENTS_${code}`, message, options);
|
|
55
|
+
this.name = 'EventsError';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Forge CLI errors */
|
|
59
|
+
export class ForgeError extends ReamError {
|
|
60
|
+
constructor(code, message, options) {
|
|
61
|
+
super(`FORGE_${code}`, message, options);
|
|
62
|
+
this.name = 'ForgeError';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ModuleErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleErrors.js","sourceRoot":"","sources":["../../src/errors/ModuleErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,6BAA6B;AAC7B,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AAED,oBAAoB;AACpB,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,mCAAmC;AACnC,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AAED,uBAAuB;AACvB,MAAM,OAAO,UAAW,SAAQ,SAAS;IACvC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;IACzB,CAAC;CACF;AAED,yBAAyB;AACzB,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,uBAAuB;AACvB,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,uBAAuB;AACvB,MAAM,OAAO,UAAW,SAAQ,SAAS;IACvC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAoD;QAC7F,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Stage Error — indicates which pipeline stage failed.
|
|
3
|
+
*
|
|
4
|
+
* @implements FR73
|
|
5
|
+
*/
|
|
6
|
+
import { ReamError } from './ReamError.js';
|
|
7
|
+
/** Pipeline stage names in execution order. */
|
|
8
|
+
export declare const PIPELINE_STAGES: readonly ["Security (Blackhole)", "Logging", "Global Middleware", "Named Middleware", "Guard", "Validate", "Transaction", "Handler", "After Middleware", "Response Logging"];
|
|
9
|
+
export type PipelineStageName = (typeof PIPELINE_STAGES)[number];
|
|
10
|
+
/**
|
|
11
|
+
* Create a pipeline stage error with position context.
|
|
12
|
+
*
|
|
13
|
+
* @param stageIndex - Zero-based index in PIPELINE_STAGES (clamped to valid range)
|
|
14
|
+
* @param originalError - The error that occurred
|
|
15
|
+
* @param context - Additional context
|
|
16
|
+
*/
|
|
17
|
+
export declare function createPipelineError(stageIndex: number, originalError: Error, context?: Record<string, string>): ReamError;
|
|
18
|
+
/**
|
|
19
|
+
* Validate pipeline configuration at boot time.
|
|
20
|
+
* Detects misconfiguration before accepting traffic.
|
|
21
|
+
*
|
|
22
|
+
* @implements FR74
|
|
23
|
+
*/
|
|
24
|
+
export declare function validatePipelineConfig(config: {
|
|
25
|
+
globalMiddleware?: unknown[];
|
|
26
|
+
namedMiddleware?: Record<string, unknown>;
|
|
27
|
+
routes?: Array<{
|
|
28
|
+
middleware?: string[];
|
|
29
|
+
}>;
|
|
30
|
+
}): ReamError[];
|
|
31
|
+
//# sourceMappingURL=PipelineStageError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineStageError.d.ts","sourceRoot":"","sources":["../../src/errors/PipelineStageError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,+CAA+C;AAC/C,eAAO,MAAM,eAAe,8KAWlB,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,KAAK,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,SAAS,CAsBX;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC1C,GAAG,SAAS,EAAE,CA2Bd"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Stage Error — indicates which pipeline stage failed.
|
|
3
|
+
*
|
|
4
|
+
* @implements FR73
|
|
5
|
+
*/
|
|
6
|
+
import { ReamError } from './ReamError.js';
|
|
7
|
+
/** Pipeline stage names in execution order. */
|
|
8
|
+
export const PIPELINE_STAGES = [
|
|
9
|
+
'Security (Blackhole)',
|
|
10
|
+
'Logging',
|
|
11
|
+
'Global Middleware',
|
|
12
|
+
'Named Middleware',
|
|
13
|
+
'Guard',
|
|
14
|
+
'Validate',
|
|
15
|
+
'Transaction',
|
|
16
|
+
'Handler',
|
|
17
|
+
'After Middleware',
|
|
18
|
+
'Response Logging',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Create a pipeline stage error with position context.
|
|
22
|
+
*
|
|
23
|
+
* @param stageIndex - Zero-based index in PIPELINE_STAGES (clamped to valid range)
|
|
24
|
+
* @param originalError - The error that occurred
|
|
25
|
+
* @param context - Additional context
|
|
26
|
+
*/
|
|
27
|
+
export function createPipelineError(stageIndex, originalError, context) {
|
|
28
|
+
const total = PIPELINE_STAGES.length;
|
|
29
|
+
const clampedIndex = Math.max(0, Math.min(stageIndex, total - 1));
|
|
30
|
+
const stageName = PIPELINE_STAGES[clampedIndex];
|
|
31
|
+
const position = `${clampedIndex + 1}/${total}`;
|
|
32
|
+
const nextStage = clampedIndex + 1 < total ? PIPELINE_STAGES[clampedIndex + 1] : '(end)';
|
|
33
|
+
const errorCode = originalError instanceof ReamError ? originalError.code : 'PIPELINE_ERROR';
|
|
34
|
+
return new ReamError(errorCode, originalError.message, {
|
|
35
|
+
pipelineStage: `${position} (${stageName})`,
|
|
36
|
+
hint: `Error occurred at pipeline stage ${position} (${stageName}). Next stage would have been: ${nextStage}.`,
|
|
37
|
+
context: {
|
|
38
|
+
...context,
|
|
39
|
+
stage: stageName,
|
|
40
|
+
position,
|
|
41
|
+
nextStage,
|
|
42
|
+
},
|
|
43
|
+
sourceFile: originalError instanceof ReamError ? originalError.sourceFile : undefined,
|
|
44
|
+
sourceLine: originalError instanceof ReamError ? originalError.sourceLine : undefined,
|
|
45
|
+
docsUrl: originalError instanceof ReamError ? originalError.docsUrl : undefined,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate pipeline configuration at boot time.
|
|
50
|
+
* Detects misconfiguration before accepting traffic.
|
|
51
|
+
*
|
|
52
|
+
* @implements FR74
|
|
53
|
+
*/
|
|
54
|
+
export function validatePipelineConfig(config) {
|
|
55
|
+
const errors = [];
|
|
56
|
+
// Check named middleware references exist (deduplicated)
|
|
57
|
+
if (config.routes && config.namedMiddleware) {
|
|
58
|
+
const registered = new Set(Object.keys(config.namedMiddleware));
|
|
59
|
+
const reported = new Set();
|
|
60
|
+
for (const route of config.routes) {
|
|
61
|
+
for (const mw of route.middleware ?? []) {
|
|
62
|
+
if (!registered.has(mw) && !reported.has(mw)) {
|
|
63
|
+
reported.add(mw);
|
|
64
|
+
errors.push(new ReamError('PIPELINE_UNKNOWN_MIDDLEWARE', `Middleware '${mw}' is not registered`, {
|
|
65
|
+
hint: `Register it with middleware.register('${mw}', handler) before using it on routes.`,
|
|
66
|
+
context: {
|
|
67
|
+
middleware: mw,
|
|
68
|
+
registered: [...registered].join(', '),
|
|
69
|
+
},
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return errors;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=PipelineStageError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineStageError.js","sourceRoot":"","sources":["../../src/errors/PipelineStageError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base ReamError class for TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* Parses structured JSON errors from Rust NAPI boundary and provides
|
|
5
|
+
* rich error context (code, hint, source location, docs URL).
|
|
6
|
+
*
|
|
7
|
+
* @implements FR71, FR72, FR73, FR77
|
|
8
|
+
*/
|
|
9
|
+
export declare class ReamError extends Error {
|
|
10
|
+
/** Error code (e.g., "ATLAS_QUERY_ERROR", "CONTAINER_NOT_FOUND") */
|
|
11
|
+
readonly code: string;
|
|
12
|
+
/** Additional context key-value pairs */
|
|
13
|
+
readonly context: Record<string, string>;
|
|
14
|
+
/** Actionable hint for the developer */
|
|
15
|
+
readonly hint?: string;
|
|
16
|
+
/** Source file where the error originated */
|
|
17
|
+
readonly sourceFile?: string;
|
|
18
|
+
/** Line number in the source file */
|
|
19
|
+
readonly sourceLine?: number;
|
|
20
|
+
/** URL to the error documentation page */
|
|
21
|
+
readonly docsUrl?: string;
|
|
22
|
+
/** Pipeline stage where the error occurred (if applicable) */
|
|
23
|
+
readonly pipelineStage?: string;
|
|
24
|
+
constructor(code: string, message: string, options?: {
|
|
25
|
+
context?: Record<string, string>;
|
|
26
|
+
hint?: string;
|
|
27
|
+
sourceFile?: string;
|
|
28
|
+
sourceLine?: number;
|
|
29
|
+
docsUrl?: string;
|
|
30
|
+
pipelineStage?: string;
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Parse a NAPI error message (JSON string from Rust ReamError) into a TS ReamError.
|
|
34
|
+
* Falls back to a generic error if parsing fails.
|
|
35
|
+
*/
|
|
36
|
+
static fromNapi(error: Error): ReamError;
|
|
37
|
+
/**
|
|
38
|
+
* Format for dev console — full box display with all details.
|
|
39
|
+
*/
|
|
40
|
+
toDevString(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Format for prod — code + message only.
|
|
43
|
+
*/
|
|
44
|
+
toProdString(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Auto-format based on NODE_ENV.
|
|
47
|
+
*/
|
|
48
|
+
toFormattedString(): string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ReamError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReamError.d.ts","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAExC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;gBAG7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB;IAaH;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS;IAoBxC;;OAEG;IACH,WAAW,IAAI,MAAM;IA2CrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base ReamError class for TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* Parses structured JSON errors from Rust NAPI boundary and provides
|
|
5
|
+
* rich error context (code, hint, source location, docs URL).
|
|
6
|
+
*
|
|
7
|
+
* @implements FR71, FR72, FR73, FR77
|
|
8
|
+
*/
|
|
9
|
+
export class ReamError extends Error {
|
|
10
|
+
/** Error code (e.g., "ATLAS_QUERY_ERROR", "CONTAINER_NOT_FOUND") */
|
|
11
|
+
code;
|
|
12
|
+
/** Additional context key-value pairs */
|
|
13
|
+
context;
|
|
14
|
+
/** Actionable hint for the developer */
|
|
15
|
+
hint;
|
|
16
|
+
/** Source file where the error originated */
|
|
17
|
+
sourceFile;
|
|
18
|
+
/** Line number in the source file */
|
|
19
|
+
sourceLine;
|
|
20
|
+
/** URL to the error documentation page */
|
|
21
|
+
docsUrl;
|
|
22
|
+
/** Pipeline stage where the error occurred (if applicable) */
|
|
23
|
+
pipelineStage;
|
|
24
|
+
constructor(code, message, options) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'ReamError';
|
|
27
|
+
this.code = code;
|
|
28
|
+
this.context = options?.context ?? {};
|
|
29
|
+
this.hint = options?.hint;
|
|
30
|
+
this.sourceFile = options?.sourceFile;
|
|
31
|
+
this.sourceLine = options?.sourceLine;
|
|
32
|
+
this.docsUrl = options?.docsUrl ?? `https://docs.ream.dev/errors/${code}`;
|
|
33
|
+
this.pipelineStage = options?.pipelineStage;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse a NAPI error message (JSON string from Rust ReamError) into a TS ReamError.
|
|
37
|
+
* Falls back to a generic error if parsing fails.
|
|
38
|
+
*/
|
|
39
|
+
static fromNapi(error) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(error.message);
|
|
42
|
+
if (typeof parsed !== 'object' || parsed === null || typeof parsed.code !== 'string') {
|
|
43
|
+
return new ReamError('UNKNOWN', error.message);
|
|
44
|
+
}
|
|
45
|
+
return new ReamError(parsed.code, parsed.message ?? error.message, {
|
|
46
|
+
context: typeof parsed.context === 'object' && parsed.context !== null ? parsed.context : {},
|
|
47
|
+
hint: typeof parsed.hint === 'string' ? parsed.hint : undefined,
|
|
48
|
+
sourceFile: typeof parsed.sourceFile === 'string' ? parsed.sourceFile : undefined,
|
|
49
|
+
sourceLine: typeof parsed.sourceLine === 'number' ? parsed.sourceLine : undefined,
|
|
50
|
+
docsUrl: typeof parsed.docsUrl === 'string' ? parsed.docsUrl : undefined,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Not a JSON error — wrap as generic
|
|
55
|
+
return new ReamError('UNKNOWN', error.message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Format for dev console — full box display with all details.
|
|
60
|
+
*/
|
|
61
|
+
toDevString() {
|
|
62
|
+
const content = [];
|
|
63
|
+
content.push(`[${this.code}] ${this.message}`);
|
|
64
|
+
if (this.pipelineStage) {
|
|
65
|
+
content.push(`Pipeline: ${this.pipelineStage}`);
|
|
66
|
+
}
|
|
67
|
+
if (this.sourceFile) {
|
|
68
|
+
content.push(`at ${this.sourceFile}${this.sourceLine ? `:${this.sourceLine}` : ''}`);
|
|
69
|
+
}
|
|
70
|
+
if (Object.keys(this.context).length > 0) {
|
|
71
|
+
content.push('');
|
|
72
|
+
for (const [key, value] of Object.entries(this.context)) {
|
|
73
|
+
// Escape newlines in values to prevent box corruption
|
|
74
|
+
const safeValue = String(value).replace(/\n/g, '\\n');
|
|
75
|
+
content.push(`${key}: ${safeValue}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (this.hint) {
|
|
79
|
+
content.push('');
|
|
80
|
+
content.push(`Hint: ${this.hint}`);
|
|
81
|
+
}
|
|
82
|
+
if (this.docsUrl) {
|
|
83
|
+
content.push(`Docs: ${this.docsUrl}`);
|
|
84
|
+
}
|
|
85
|
+
// Compute border width from the longest content line
|
|
86
|
+
const maxLen = Math.min(Math.max(...content.map((l) => l.length)) + 4, 80);
|
|
87
|
+
const border = '─'.repeat(maxLen);
|
|
88
|
+
const lines = [`┌${border}┐`];
|
|
89
|
+
for (const line of content) {
|
|
90
|
+
lines.push(`│ ${line}`);
|
|
91
|
+
}
|
|
92
|
+
lines.push(`└${border}┘`);
|
|
93
|
+
return lines.join('\n');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format for prod — code + message only.
|
|
97
|
+
*/
|
|
98
|
+
toProdString() {
|
|
99
|
+
return `[${this.code}] ${this.message}`;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Auto-format based on NODE_ENV.
|
|
103
|
+
*/
|
|
104
|
+
toFormattedString() {
|
|
105
|
+
return process.env.NODE_ENV === 'production' ? this.toProdString() : this.toDevString();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=ReamError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReamError.js","sourceRoot":"","sources":["../../src/errors/ReamError.ts"],"names":[],"mappings":"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"}
|