@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,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory `EventBus` substitute for tests — captures every
|
|
3
|
+
* `emit(name, data)` / `request(name, data)` call and exposes
|
|
4
|
+
* `assertEmitted` / `assertNotEmitted` helpers in the same shape as
|
|
5
|
+
* Rover's `FakeMail`, Bay's `FakeQueue`, Storage's `FakeStorage`,
|
|
6
|
+
* Nova's `FakeNova`, and Relay's `FakeRelay`.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors the public `EventBus` surface (`emit`, `subscribe`,
|
|
9
|
+
* `unsubscribe`, `onRequest`, `request`, `matchesWildcard`,
|
|
10
|
+
* `subscriptionCount`) with pure-TS, NAPI-free semantics. Wildcard
|
|
11
|
+
* matching is ported from `crates/ream-events/src/router.rs` — the
|
|
12
|
+
* Rust router is authoritative; any divergence is a bug here.
|
|
13
|
+
*
|
|
14
|
+
* Reach via `@c9up/ream/events/testing` (NOT the main barrel).
|
|
15
|
+
*/
|
|
16
|
+
export class FakeBus {
|
|
17
|
+
#emitted = [];
|
|
18
|
+
#requests = [];
|
|
19
|
+
#subscribers = new Map();
|
|
20
|
+
#requestHandlers = new Map();
|
|
21
|
+
#nextSubId = 1;
|
|
22
|
+
emit(name, data) {
|
|
23
|
+
const { parsedData, correlationId, causationId } = parseEmitData(data);
|
|
24
|
+
const entry = {
|
|
25
|
+
kind: 'emit',
|
|
26
|
+
name,
|
|
27
|
+
data,
|
|
28
|
+
parsedData,
|
|
29
|
+
correlationId,
|
|
30
|
+
causationId,
|
|
31
|
+
};
|
|
32
|
+
this.#emitted.push(entry);
|
|
33
|
+
// Snapshot subscribers so a callback adding/removing during dispatch
|
|
34
|
+
// can't perturb the in-flight iteration — matches the router.rs
|
|
35
|
+
// "clone matching handlers; release lock; call without holding lock"
|
|
36
|
+
// pattern.
|
|
37
|
+
const targets = [];
|
|
38
|
+
for (const sub of this.#subscribers.values()) {
|
|
39
|
+
if (this.matchesWildcard(sub.pattern, name))
|
|
40
|
+
targets.push(sub);
|
|
41
|
+
}
|
|
42
|
+
const payloadJson = buildEventJson(entry);
|
|
43
|
+
for (const sub of targets) {
|
|
44
|
+
// Subscribers can be sync (`(json) => void`) or async (`(json) =>
|
|
45
|
+
// Promise<void>`). Sync throws surface via the `try/catch`; async
|
|
46
|
+
// rejections would otherwise escape to `unhandledRejection`. Wrap
|
|
47
|
+
// both paths so a misbehaving subscriber logs loudly instead of
|
|
48
|
+
// crashing the test process — mirror of the request-handler error
|
|
49
|
+
// surface at `onError` below.
|
|
50
|
+
try {
|
|
51
|
+
const ret = sub.callback(payloadJson);
|
|
52
|
+
if (isThenable(ret)) {
|
|
53
|
+
ret.then(undefined, (err) => {
|
|
54
|
+
console.error(`[FakeBus] subscriber for "${sub.pattern}" rejected on event "${name}":`, err);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(`[FakeBus] subscriber for "${sub.pattern}" threw on event "${name}":`, err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return Promise.resolve('ok');
|
|
63
|
+
}
|
|
64
|
+
subscribe(pattern, callback) {
|
|
65
|
+
const id = this.#nextSubId++;
|
|
66
|
+
this.#subscribers.set(id, { pattern, callback });
|
|
67
|
+
return id;
|
|
68
|
+
}
|
|
69
|
+
unsubscribe(subscriptionId) {
|
|
70
|
+
this.#subscribers.delete(subscriptionId);
|
|
71
|
+
return Promise.resolve();
|
|
72
|
+
}
|
|
73
|
+
onRequest(name, callback) {
|
|
74
|
+
if (this.#requestHandlers.has(name)) {
|
|
75
|
+
throw new Error(`FakeBus.onRequest: a handler is already registered for "${name}". Call reset() between registrations.`);
|
|
76
|
+
}
|
|
77
|
+
this.#requestHandlers.set(name, callback);
|
|
78
|
+
}
|
|
79
|
+
request(name, data, timeoutMs = 5000) {
|
|
80
|
+
const handler = this.#requestHandlers.get(name);
|
|
81
|
+
if (!handler) {
|
|
82
|
+
return Promise.reject(new Error(`FakeBus: no request handler registered for "${name}"`));
|
|
83
|
+
}
|
|
84
|
+
// Only log requests the bus accepted. A handler-missing rejection
|
|
85
|
+
// represents "code-under-test attempted a request the system was
|
|
86
|
+
// not configured for" — that's a setup bug, not a bus call, and it
|
|
87
|
+
// should not poison `getRequests()` symmetry with `getEmitted()`.
|
|
88
|
+
const { parsedData } = parseEmitData(data);
|
|
89
|
+
this.#requests.push({ kind: 'request', name, data, parsedData });
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
let settled = false;
|
|
92
|
+
const timer = setTimeout(() => {
|
|
93
|
+
if (settled)
|
|
94
|
+
return;
|
|
95
|
+
settled = true;
|
|
96
|
+
reject(new Error(`FakeBus.request: handler for "${name}" did not reply within ${timeoutMs}ms`));
|
|
97
|
+
}, timeoutMs);
|
|
98
|
+
// Fake-timers note: `vi.useFakeTimers()` mocks the `setTimeout`
|
|
99
|
+
// scheduled above. The happy-path resolve via `reply(...)` does
|
|
100
|
+
// not depend on timer advancement, but the rejection branch does
|
|
101
|
+
// — call `vi.advanceTimersByTime(timeoutMs)` to surface the
|
|
102
|
+
// timeout when fake timers are active.
|
|
103
|
+
const reply = (response) => {
|
|
104
|
+
if (settled)
|
|
105
|
+
return;
|
|
106
|
+
settled = true;
|
|
107
|
+
clearTimeout(timer);
|
|
108
|
+
resolve(response);
|
|
109
|
+
};
|
|
110
|
+
const onError = (err) => {
|
|
111
|
+
if (settled) {
|
|
112
|
+
console.error(`[FakeBus] request handler for "${name}" threw after reply:`, err);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
settled = true;
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
reject(err instanceof Error ? err : new Error(String(err)));
|
|
118
|
+
};
|
|
119
|
+
try {
|
|
120
|
+
const ret = handler(data, reply);
|
|
121
|
+
if (isThenable(ret))
|
|
122
|
+
ret.then(undefined, onError);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
onError(err);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
matchesWildcard(pattern, eventName) {
|
|
130
|
+
return wildcardMatches(pattern, eventName);
|
|
131
|
+
}
|
|
132
|
+
subscriptionCount() {
|
|
133
|
+
return Promise.resolve(this.#subscribers.size);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Defensive clone of the captured emits. **Clone is lossy** for
|
|
137
|
+
* non-cloneable values: `structuredClone` is tried first, JSON
|
|
138
|
+
* round-trip is the fallback. BigInt, functions, and other
|
|
139
|
+
* non-stringifiable payloads collapse to `undefined` in the fallback
|
|
140
|
+
* path (with a `[FakeBus] non-cloneable capture` `console.warn`).
|
|
141
|
+
* Internal assertions (`assertEmitted` etc.) read the live capture,
|
|
142
|
+
* not the clone, so this caveat only affects external readers.
|
|
143
|
+
*/
|
|
144
|
+
getEmitted() {
|
|
145
|
+
return this.#emitted.map(cloneEmit);
|
|
146
|
+
}
|
|
147
|
+
/** See `getEmitted` — same lossy-clone caveat for non-cloneable values. */
|
|
148
|
+
getRequests() {
|
|
149
|
+
return this.#requests.map(cloneRequest);
|
|
150
|
+
}
|
|
151
|
+
reset() {
|
|
152
|
+
this.#emitted = [];
|
|
153
|
+
this.#requests = [];
|
|
154
|
+
this.#subscribers.clear();
|
|
155
|
+
this.#requestHandlers.clear();
|
|
156
|
+
this.#nextSubId = 1;
|
|
157
|
+
}
|
|
158
|
+
assertEmitted(name, predicate) {
|
|
159
|
+
const match = makeMatcher(name, predicate);
|
|
160
|
+
if (this.#emitted.some(match))
|
|
161
|
+
return;
|
|
162
|
+
throw new Error(`FakeBus.assertEmitted('${name}'${describePredicate(predicate)}) failed — no captured emit matches.\n${describeCaptured(this.#emitted)}`);
|
|
163
|
+
}
|
|
164
|
+
assertNotEmitted(name, predicate) {
|
|
165
|
+
const match = makeMatcher(name, predicate);
|
|
166
|
+
if (!this.#emitted.some(match))
|
|
167
|
+
return;
|
|
168
|
+
throw new Error(`FakeBus.assertNotEmitted('${name}'${describePredicate(predicate)}) failed — at least one captured emit matches.\n${describeCaptured(this.#emitted)}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** Port of `wildcard_matches` from `crates/ream-events/src/router.rs`.
|
|
172
|
+
* Authoritative source is the Rust router; any divergence is a bug. */
|
|
173
|
+
function wildcardMatches(pattern, eventName) {
|
|
174
|
+
if (pattern === '**')
|
|
175
|
+
return true;
|
|
176
|
+
if (pattern === '*')
|
|
177
|
+
return !eventName.includes('.');
|
|
178
|
+
const patternParts = pattern.split('.');
|
|
179
|
+
const nameParts = eventName.split('.');
|
|
180
|
+
const last = patternParts[patternParts.length - 1];
|
|
181
|
+
if (last === '**') {
|
|
182
|
+
const prefix = patternParts.slice(0, patternParts.length - 1);
|
|
183
|
+
if (nameParts.length < prefix.length)
|
|
184
|
+
return false;
|
|
185
|
+
for (let i = 0; i < prefix.length; i += 1) {
|
|
186
|
+
if (prefix[i] !== nameParts[i])
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
if (patternParts.length !== nameParts.length)
|
|
192
|
+
return false;
|
|
193
|
+
for (let i = 0; i < patternParts.length; i += 1) {
|
|
194
|
+
const p = patternParts[i];
|
|
195
|
+
if (p !== '*' && p !== nameParts[i])
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
function parseEmitData(data) {
|
|
201
|
+
let parsed;
|
|
202
|
+
try {
|
|
203
|
+
parsed = JSON.parse(data);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return {};
|
|
207
|
+
}
|
|
208
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
209
|
+
return { parsedData: parsed };
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
parsedData: parsed,
|
|
213
|
+
correlationId: readStringField(parsed, 'correlationId'),
|
|
214
|
+
causationId: readStringField(parsed, 'causationId'),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function readStringField(source, key) {
|
|
218
|
+
const record = source;
|
|
219
|
+
const value = record[key];
|
|
220
|
+
return typeof value === 'string' ? value : undefined;
|
|
221
|
+
}
|
|
222
|
+
function buildEventJson(entry) {
|
|
223
|
+
// Mirror the Rust `Event` envelope shape (`crates/ream-events/src/event.rs` —
|
|
224
|
+
// serde `rename_all = "camelCase"`): `{ id, name, data, correlationId,
|
|
225
|
+
// causationId?, timestamp, sourceService, nodeId, ttl }`. `data` stays the
|
|
226
|
+
// raw payload string the caller passed to `emit`, so subscribers using
|
|
227
|
+
// `JSON.parse(event.data)` after `JSON.parse(eventJson)` work the same
|
|
228
|
+
// against the fake as against the real bus. The five envelope-metadata
|
|
229
|
+
// fields (`id`, `timestamp`, `sourceService`, `nodeId`, `ttl`) are
|
|
230
|
+
// stubbed to the same defaults `Event::new` sets in Rust — synthetic but
|
|
231
|
+
// type-shape complete, so code-under-test reading them does not branch
|
|
232
|
+
// differently fake-vs-prod.
|
|
233
|
+
const generatedId = globalThis.crypto.randomUUID();
|
|
234
|
+
const envelope = {
|
|
235
|
+
id: generatedId,
|
|
236
|
+
name: entry.name,
|
|
237
|
+
data: entry.data,
|
|
238
|
+
correlationId: entry.correlationId ?? generatedId,
|
|
239
|
+
timestamp: new Date().toISOString(),
|
|
240
|
+
sourceService: '',
|
|
241
|
+
nodeId: 'local',
|
|
242
|
+
ttl: 255,
|
|
243
|
+
};
|
|
244
|
+
if (entry.causationId !== undefined)
|
|
245
|
+
envelope.causationId = entry.causationId;
|
|
246
|
+
return JSON.stringify(envelope);
|
|
247
|
+
}
|
|
248
|
+
function cloneEmit(entry) {
|
|
249
|
+
try {
|
|
250
|
+
return structuredClone(entry);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
console.warn(`[FakeBus] non-cloneable capture for "${entry.name}"; falling back to JSON round-trip.`);
|
|
254
|
+
return {
|
|
255
|
+
kind: 'emit',
|
|
256
|
+
name: entry.name,
|
|
257
|
+
data: entry.data,
|
|
258
|
+
parsedData: cloneViaJson(entry.parsedData),
|
|
259
|
+
correlationId: entry.correlationId,
|
|
260
|
+
causationId: entry.causationId,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function cloneRequest(entry) {
|
|
265
|
+
try {
|
|
266
|
+
return structuredClone(entry);
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
console.warn(`[FakeBus] non-cloneable capture for "${entry.name}"; falling back to JSON round-trip.`);
|
|
270
|
+
return {
|
|
271
|
+
kind: 'request',
|
|
272
|
+
name: entry.name,
|
|
273
|
+
data: entry.data,
|
|
274
|
+
parsedData: cloneViaJson(entry.parsedData),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function cloneViaJson(value) {
|
|
279
|
+
try {
|
|
280
|
+
return JSON.parse(JSON.stringify(value));
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function makeMatcher(name, predicate) {
|
|
287
|
+
if (typeof predicate === 'function') {
|
|
288
|
+
return (e) => wildcardMatches(name, e.name) && predicate(e);
|
|
289
|
+
}
|
|
290
|
+
if (predicate === undefined) {
|
|
291
|
+
return (e) => wildcardMatches(name, e.name);
|
|
292
|
+
}
|
|
293
|
+
return (e) => {
|
|
294
|
+
if (!wildcardMatches(name, e.name))
|
|
295
|
+
return false;
|
|
296
|
+
if (predicate.name !== undefined && !wildcardMatches(predicate.name, e.name))
|
|
297
|
+
return false;
|
|
298
|
+
if (predicate.correlationId !== undefined && e.correlationId !== predicate.correlationId)
|
|
299
|
+
return false;
|
|
300
|
+
if (predicate.causationId !== undefined && e.causationId !== predicate.causationId)
|
|
301
|
+
return false;
|
|
302
|
+
if (predicate.dataMatches) {
|
|
303
|
+
const arg = e.parsedData !== undefined ? e.parsedData : e.data;
|
|
304
|
+
if (!predicate.dataMatches(arg))
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
return true;
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
function describePredicate(predicate) {
|
|
311
|
+
if (predicate === undefined)
|
|
312
|
+
return '';
|
|
313
|
+
if (typeof predicate === 'function')
|
|
314
|
+
return ', <function predicate>';
|
|
315
|
+
if (Object.keys(predicate).length === 0) {
|
|
316
|
+
return ', <empty predicate>';
|
|
317
|
+
}
|
|
318
|
+
return `, ${safeStringify(predicate)}`;
|
|
319
|
+
}
|
|
320
|
+
function describeCaptured(captured) {
|
|
321
|
+
if (captured.length === 0)
|
|
322
|
+
return 'Captured: (none)';
|
|
323
|
+
const lines = captured.map((c, i) => ` [${i}] name="${c.name}" data=${safeStringify(c.parsedData ?? c.data)}` +
|
|
324
|
+
(c.correlationId !== undefined ? ` correlationId="${c.correlationId}"` : '') +
|
|
325
|
+
(c.causationId !== undefined ? ` causationId="${c.causationId}"` : ''));
|
|
326
|
+
return `Captured (${captured.length}):\n${lines.join('\n')}`;
|
|
327
|
+
}
|
|
328
|
+
function safeStringify(value) {
|
|
329
|
+
// JSON.stringify already detects true cycles and throws TypeError —
|
|
330
|
+
// the outer catch handles that. A previous manual WeakSet walk
|
|
331
|
+
// mis-labelled DAG sibling references as `<circular>` because it
|
|
332
|
+
// never released entries on subtree exit.
|
|
333
|
+
try {
|
|
334
|
+
return JSON.stringify(value, (_key, v) => {
|
|
335
|
+
if (typeof v === 'function')
|
|
336
|
+
return '<function>';
|
|
337
|
+
// JSON.stringify throws on BigInt; preserve the value lossy-but-
|
|
338
|
+
// readable so a single BigInt in a captured payload does not
|
|
339
|
+
// collapse the whole failure message to "<unstringifiable>".
|
|
340
|
+
if (typeof v === 'bigint')
|
|
341
|
+
return `${v}n`;
|
|
342
|
+
return v;
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
return '<unstringifiable>';
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function isThenable(value) {
|
|
350
|
+
if (value === null || typeof value !== 'object')
|
|
351
|
+
return false;
|
|
352
|
+
if (!('then' in value))
|
|
353
|
+
return false;
|
|
354
|
+
return typeof value.then === 'function';
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=FakeBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeBus.js","sourceRoot":"","sources":["../../../src/events/testing/FakeBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphQLEngine — schema-first GraphQL with Rust query validation.
|
|
3
|
+
*
|
|
4
|
+
* - Schema parsed from .graphql files at boot
|
|
5
|
+
* - Queries validated by Rust before NAPI crossing (when available)
|
|
6
|
+
* - Resolvers are IoC-injected controller-like classes
|
|
7
|
+
* - @Guard/@Role enforced per TOP-LEVEL resolver field (nested fields are
|
|
8
|
+
* projected from the resolver's return value, not independently resolved —
|
|
9
|
+
* so they carry no per-field guard; don't return guarded data from an
|
|
10
|
+
* unguarded resolver and rely on a nested field guard to hide it).
|
|
11
|
+
* - The response is pruned to the client's selection set, so a resolver may
|
|
12
|
+
* safely return a rich object (e.g. an ORM entity): fields the client did
|
|
13
|
+
* not select are dropped before serialization.
|
|
14
|
+
* - Zero non-null assertions — types guaranteed by schema validation
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* const engine = new GraphQLEngine({ schemaPath: './app/graphql/schema.graphql' })
|
|
18
|
+
* engine.resolver('Query', 'tasks', TaskResolver, 'tasks')
|
|
19
|
+
* engine.resolver('Mutation', 'createTask', TaskResolver, 'createTask', { guard: 'jwt', role: 'cs_member' })
|
|
20
|
+
*
|
|
21
|
+
* @implements MISS-28
|
|
22
|
+
*/
|
|
23
|
+
import type { HttpContext } from '../http/HttpContext.js';
|
|
24
|
+
export interface GraphQLConfig {
|
|
25
|
+
/** Path to .graphql schema file. */
|
|
26
|
+
schemaPath: string;
|
|
27
|
+
/** Endpoint path (default: /graphql). */
|
|
28
|
+
path?: string;
|
|
29
|
+
/** Enable playground/introspection in dev (default: true when NODE_ENV !== 'production'). */
|
|
30
|
+
playground?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface ResolverOptions {
|
|
33
|
+
guard?: string;
|
|
34
|
+
guards?: string[];
|
|
35
|
+
role?: string;
|
|
36
|
+
roles?: string[];
|
|
37
|
+
permissions?: string[];
|
|
38
|
+
}
|
|
39
|
+
/** A parsed field with its (possibly nested) selection set. */
|
|
40
|
+
export interface SelectionField {
|
|
41
|
+
name: string;
|
|
42
|
+
alias?: string;
|
|
43
|
+
args: Record<string, unknown>;
|
|
44
|
+
selection: SelectionField[];
|
|
45
|
+
}
|
|
46
|
+
export declare class GraphQLEngine {
|
|
47
|
+
#private;
|
|
48
|
+
readonly path: string;
|
|
49
|
+
constructor(config: GraphQLConfig);
|
|
50
|
+
/** Set IoC container for resolver instantiation. */
|
|
51
|
+
useContainer(container: {
|
|
52
|
+
make<T>(target: new (...args: unknown[]) => T): T;
|
|
53
|
+
}): void;
|
|
54
|
+
/** Register a resolver for a type.field. */
|
|
55
|
+
resolver(typeName: string, fieldName: string, handlerClass: new (...args: unknown[]) => Record<string, (...args: unknown[]) => unknown>, methodName: string, options?: ResolverOptions): void;
|
|
56
|
+
/** Handle a GraphQL HTTP request. */
|
|
57
|
+
handle(ctx: HttpContext): Promise<void>;
|
|
58
|
+
/** Get the raw schema source for introspection. */
|
|
59
|
+
getSchemaSource(): string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Project a resolver result onto the client's selection set. A field with an
|
|
63
|
+
* empty selection (a scalar leaf) is returned untouched; an object is reduced
|
|
64
|
+
* to only the selected keys (recursing into nested selections); an array maps
|
|
65
|
+
* the projection over its items. This is what stops a resolver that returns a
|
|
66
|
+
* rich object (ORM entity, etc.) from leaking unselected fields.
|
|
67
|
+
*/
|
|
68
|
+
export declare function pruneToSelection(value: unknown, selection: SelectionField[]): unknown;
|
|
69
|
+
//# sourceMappingURL=GraphQLEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphQLEngine.d.ts","sourceRoot":"","sources":["../../src/graphql/GraphQLEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAoDzD,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAgBD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,SAAS,EAAE,cAAc,EAAE,CAAA;CAC5B;AAED,qBAAa,aAAa;;IAIxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBAGT,MAAM,EAAE,aAAa;IASjC,oDAAoD;IACpD,YAAY,CAAC,SAAS,EAAE;QAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,IAAI;IAIpF,4CAA4C;IAC5C,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,EACzF,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,IAAI;IAWP,qCAAqC;IAC/B,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoN7C,mDAAmD;IACnD,eAAe,IAAI,MAAM;CAG1B;AA8BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAWrF"}
|