imposters 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/Program/package.json +6 -0
- package/README.md +365 -0
- package/api/AdminApi/package.json +6 -0
- package/api/ApiErrors/package.json +6 -0
- package/api/ApiSchemas/package.json +6 -0
- package/api/Conversions/package.json +6 -0
- package/api/ImpostersGroup/package.json +6 -0
- package/api/ImpostersHandlers/package.json +6 -0
- package/api/SystemGroup/package.json +6 -0
- package/api/SystemHandlers/package.json +6 -0
- package/bin/imposters +47 -0
- package/cli/Commands/package.json +6 -0
- package/cli/ConfigLoader/package.json +6 -0
- package/client/HandlerHttpClient/package.json +6 -0
- package/client/ImpostersClient/package.json +6 -0
- package/client/testing/package.json +6 -0
- package/dist/cjs/Program.js +4 -0
- package/dist/cjs/Program.js.map +1 -0
- package/dist/cjs/api/AdminApi.js +11 -0
- package/dist/cjs/api/AdminApi.js.map +1 -0
- package/dist/cjs/api/ApiErrors.js +30 -0
- package/dist/cjs/api/ApiErrors.js.map +1 -0
- package/dist/cjs/api/ApiSchemas.js +36 -0
- package/dist/cjs/api/ApiSchemas.js.map +1 -0
- package/dist/cjs/api/Conversions.js +41 -0
- package/dist/cjs/api/Conversions.js.map +1 -0
- package/dist/cjs/api/ImpostersGroup.js +37 -0
- package/dist/cjs/api/ImpostersGroup.js.map +1 -0
- package/dist/cjs/api/ImpostersHandlers.js +361 -0
- package/dist/cjs/api/ImpostersHandlers.js.map +1 -0
- package/dist/cjs/api/SystemGroup.js +12 -0
- package/dist/cjs/api/SystemGroup.js.map +1 -0
- package/dist/cjs/api/SystemHandlers.js +74 -0
- package/dist/cjs/api/SystemHandlers.js.map +1 -0
- package/dist/cjs/cli/Commands.js +104 -0
- package/dist/cjs/cli/Commands.js.map +1 -0
- package/dist/cjs/cli/ConfigLoader.js +34 -0
- package/dist/cjs/cli/ConfigLoader.js.map +1 -0
- package/dist/cjs/client/HandlerHttpClient.js +50 -0
- package/dist/cjs/client/HandlerHttpClient.js.map +1 -0
- package/dist/cjs/client/ImpostersClient.js +20 -0
- package/dist/cjs/client/ImpostersClient.js.map +1 -0
- package/dist/cjs/client/index.js +57 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/client/testing.js +94 -0
- package/dist/cjs/client/testing.js.map +1 -0
- package/dist/cjs/domain/imposter.js +125 -0
- package/dist/cjs/domain/imposter.js.map +1 -0
- package/dist/cjs/domain/route.js +185 -0
- package/dist/cjs/domain/route.js.map +1 -0
- package/dist/cjs/index.js +106 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/layers/ApiLayer.js +18 -0
- package/dist/cjs/layers/ApiLayer.js.map +1 -0
- package/dist/cjs/layers/MainLayer.js +27 -0
- package/dist/cjs/layers/MainLayer.js.map +1 -0
- package/dist/cjs/matching/ExpressionEvaluator.js +103 -0
- package/dist/cjs/matching/ExpressionEvaluator.js.map +1 -0
- package/dist/cjs/matching/RequestMatcher.js +145 -0
- package/dist/cjs/matching/RequestMatcher.js.map +1 -0
- package/dist/cjs/matching/ResponseGenerator.js +80 -0
- package/dist/cjs/matching/ResponseGenerator.js.map +1 -0
- package/dist/cjs/matching/TemplateEngine.js +55 -0
- package/dist/cjs/matching/TemplateEngine.js.map +1 -0
- package/dist/cjs/repositories/ImposterRepository.js +118 -0
- package/dist/cjs/repositories/ImposterRepository.js.map +1 -0
- package/dist/cjs/schemas/ConfigFileSchema.js +44 -0
- package/dist/cjs/schemas/ConfigFileSchema.js.map +1 -0
- package/dist/cjs/schemas/ImposterSchema.js +202 -0
- package/dist/cjs/schemas/ImposterSchema.js.map +1 -0
- package/dist/cjs/schemas/RequestLogSchema.js +51 -0
- package/dist/cjs/schemas/RequestLogSchema.js.map +1 -0
- package/dist/cjs/schemas/StubSchema.js +84 -0
- package/dist/cjs/schemas/StubSchema.js.map +1 -0
- package/dist/cjs/schemas/common.js +67 -0
- package/dist/cjs/schemas/common.js.map +1 -0
- package/dist/cjs/server/AdminServer.js +36 -0
- package/dist/cjs/server/AdminServer.js.map +1 -0
- package/dist/cjs/server/BunServer.js +13 -0
- package/dist/cjs/server/BunServer.js.map +1 -0
- package/dist/cjs/server/FiberManager.js +21 -0
- package/dist/cjs/server/FiberManager.js.map +1 -0
- package/dist/cjs/server/ImposterServer.js +234 -0
- package/dist/cjs/server/ImposterServer.js.map +1 -0
- package/dist/cjs/services/AppConfig.js +18 -0
- package/dist/cjs/services/AppConfig.js.map +1 -0
- package/dist/cjs/services/MetricsService.js +113 -0
- package/dist/cjs/services/MetricsService.js.map +1 -0
- package/dist/cjs/services/PortAllocator.js +50 -0
- package/dist/cjs/services/PortAllocator.js.map +1 -0
- package/dist/cjs/services/ProxyService.js +109 -0
- package/dist/cjs/services/ProxyService.js.map +1 -0
- package/dist/cjs/services/RequestLogger.js +60 -0
- package/dist/cjs/services/RequestLogger.js.map +1 -0
- package/dist/cjs/services/Uuid.js +10 -0
- package/dist/cjs/services/Uuid.js.map +1 -0
- package/dist/cjs/services/UuidLive.js +16 -0
- package/dist/cjs/services/UuidLive.js.map +1 -0
- package/dist/cjs/ui/UiRouter.js +242 -0
- package/dist/cjs/ui/UiRouter.js.map +1 -0
- package/dist/cjs/ui/admin/AdminLayout.js +36 -0
- package/dist/cjs/ui/admin/AdminLayout.js.map +1 -0
- package/dist/cjs/ui/admin/AdminUiRouter.js +155 -0
- package/dist/cjs/ui/admin/AdminUiRouter.js.map +1 -0
- package/dist/cjs/ui/admin/pages/AdminDashboard.js +55 -0
- package/dist/cjs/ui/admin/pages/AdminDashboard.js.map +1 -0
- package/dist/cjs/ui/admin/partials.js +64 -0
- package/dist/cjs/ui/admin/partials.js.map +1 -0
- package/dist/cjs/ui/html.js +42 -0
- package/dist/cjs/ui/html.js.map +1 -0
- package/dist/cjs/ui/layout.js +39 -0
- package/dist/cjs/ui/layout.js.map +1 -0
- package/dist/cjs/ui/pages/dashboard.js +51 -0
- package/dist/cjs/ui/pages/dashboard.js.map +1 -0
- package/dist/cjs/ui/pages/request-detail.js +119 -0
- package/dist/cjs/ui/pages/request-detail.js.map +1 -0
- package/dist/cjs/ui/pages/requests.js +120 -0
- package/dist/cjs/ui/pages/requests.js.map +1 -0
- package/dist/cjs/ui/pages/stubs.js +46 -0
- package/dist/cjs/ui/pages/stubs.js.map +1 -0
- package/dist/cjs/ui/partials.js +104 -0
- package/dist/cjs/ui/partials.js.map +1 -0
- package/dist/dts/Program.d.ts +2 -0
- package/dist/dts/Program.d.ts.map +1 -0
- package/dist/dts/api/AdminApi.d.ts +490 -0
- package/dist/dts/api/AdminApi.d.ts.map +1 -0
- package/dist/dts/api/ApiErrors.d.ts +26 -0
- package/dist/dts/api/ApiErrors.d.ts.map +1 -0
- package/dist/dts/api/ApiSchemas.d.ts +36 -0
- package/dist/dts/api/ApiSchemas.d.ts.map +1 -0
- package/dist/dts/api/Conversions.d.ts +7 -0
- package/dist/dts/api/Conversions.d.ts.map +1 -0
- package/dist/dts/api/ImpostersGroup.d.ts +448 -0
- package/dist/dts/api/ImpostersGroup.d.ts.map +1 -0
- package/dist/dts/api/ImpostersHandlers.d.ts +9 -0
- package/dist/dts/api/ImpostersHandlers.d.ts.map +1 -0
- package/dist/dts/api/SystemGroup.d.ts +46 -0
- package/dist/dts/api/SystemGroup.d.ts.map +1 -0
- package/dist/dts/api/SystemHandlers.d.ts +4 -0
- package/dist/dts/api/SystemHandlers.d.ts.map +1 -0
- package/dist/dts/cli/Commands.d.ts +4 -0
- package/dist/dts/cli/Commands.d.ts.map +1 -0
- package/dist/dts/cli/ConfigLoader.d.ts +13 -0
- package/dist/dts/cli/ConfigLoader.d.ts.map +1 -0
- package/dist/dts/client/HandlerHttpClient.d.ts +5 -0
- package/dist/dts/client/HandlerHttpClient.d.ts.map +1 -0
- package/dist/dts/client/ImpostersClient.d.ts +1868 -0
- package/dist/dts/client/ImpostersClient.d.ts.map +1 -0
- package/dist/dts/client/index.d.ts +6 -0
- package/dist/dts/client/index.d.ts.map +1 -0
- package/dist/dts/client/testing.d.ts +35 -0
- package/dist/dts/client/testing.d.ts.map +1 -0
- package/dist/dts/domain/imposter.d.ts +123 -0
- package/dist/dts/domain/imposter.d.ts.map +1 -0
- package/dist/dts/domain/route.d.ts +128 -0
- package/dist/dts/domain/route.d.ts.map +1 -0
- package/dist/dts/index.d.ts +60 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/layers/ApiLayer.d.ts +3 -0
- package/dist/dts/layers/ApiLayer.d.ts.map +1 -0
- package/dist/dts/layers/MainLayer.d.ts +3 -0
- package/dist/dts/layers/MainLayer.d.ts.map +1 -0
- package/dist/dts/matching/ExpressionEvaluator.d.ts +11 -0
- package/dist/dts/matching/ExpressionEvaluator.d.ts.map +1 -0
- package/dist/dts/matching/RequestMatcher.d.ts +13 -0
- package/dist/dts/matching/RequestMatcher.d.ts.map +1 -0
- package/dist/dts/matching/ResponseGenerator.d.ts +9 -0
- package/dist/dts/matching/ResponseGenerator.d.ts.map +1 -0
- package/dist/dts/matching/TemplateEngine.d.ts +4 -0
- package/dist/dts/matching/TemplateEngine.d.ts.map +1 -0
- package/dist/dts/repositories/ImposterRepository.d.ts +33 -0
- package/dist/dts/repositories/ImposterRepository.d.ts.map +1 -0
- package/dist/dts/schemas/ConfigFileSchema.d.ts +142 -0
- package/dist/dts/schemas/ConfigFileSchema.d.ts.map +1 -0
- package/dist/dts/schemas/ImposterSchema.d.ts +368 -0
- package/dist/dts/schemas/ImposterSchema.d.ts.map +1 -0
- package/dist/dts/schemas/RequestLogSchema.d.ts +36 -0
- package/dist/dts/schemas/RequestLogSchema.d.ts.map +1 -0
- package/dist/dts/schemas/StubSchema.d.ts +112 -0
- package/dist/dts/schemas/StubSchema.d.ts.map +1 -0
- package/dist/dts/schemas/common.d.ts +56 -0
- package/dist/dts/schemas/common.d.ts.map +1 -0
- package/dist/dts/server/AdminServer.d.ts +11 -0
- package/dist/dts/server/AdminServer.d.ts.map +1 -0
- package/dist/dts/server/BunServer.d.ts +17 -0
- package/dist/dts/server/BunServer.d.ts.map +1 -0
- package/dist/dts/server/FiberManager.d.ts +12 -0
- package/dist/dts/server/FiberManager.d.ts.map +1 -0
- package/dist/dts/server/ImposterServer.d.ts +29 -0
- package/dist/dts/server/ImposterServer.d.ts.map +1 -0
- package/dist/dts/services/AppConfig.d.ts +14 -0
- package/dist/dts/services/AppConfig.d.ts.map +1 -0
- package/dist/dts/services/MetricsService.d.ts +26 -0
- package/dist/dts/services/MetricsService.d.ts.map +1 -0
- package/dist/dts/services/PortAllocator.d.ts +29 -0
- package/dist/dts/services/PortAllocator.d.ts.map +1 -0
- package/dist/dts/services/ProxyService.d.ts +24 -0
- package/dist/dts/services/ProxyService.d.ts.map +1 -0
- package/dist/dts/services/RequestLogger.d.ts +23 -0
- package/dist/dts/services/RequestLogger.d.ts.map +1 -0
- package/dist/dts/services/Uuid.d.ts +9 -0
- package/dist/dts/services/Uuid.d.ts.map +1 -0
- package/dist/dts/services/UuidLive.d.ts +4 -0
- package/dist/dts/services/UuidLive.d.ts.map +1 -0
- package/dist/dts/ui/UiRouter.d.ts +15 -0
- package/dist/dts/ui/UiRouter.d.ts.map +1 -0
- package/dist/dts/ui/admin/AdminLayout.d.ts +7 -0
- package/dist/dts/ui/admin/AdminLayout.d.ts.map +1 -0
- package/dist/dts/ui/admin/AdminUiRouter.d.ts +6 -0
- package/dist/dts/ui/admin/AdminUiRouter.d.ts.map +1 -0
- package/dist/dts/ui/admin/pages/AdminDashboard.d.ts +7 -0
- package/dist/dts/ui/admin/pages/AdminDashboard.d.ts.map +1 -0
- package/dist/dts/ui/admin/partials.d.ts +14 -0
- package/dist/dts/ui/admin/partials.d.ts.map +1 -0
- package/dist/dts/ui/html.d.ts +12 -0
- package/dist/dts/ui/html.d.ts.map +1 -0
- package/dist/dts/ui/layout.d.ts +9 -0
- package/dist/dts/ui/layout.d.ts.map +1 -0
- package/dist/dts/ui/pages/dashboard.d.ts +10 -0
- package/dist/dts/ui/pages/dashboard.d.ts.map +1 -0
- package/dist/dts/ui/pages/request-detail.d.ts +11 -0
- package/dist/dts/ui/pages/request-detail.d.ts.map +1 -0
- package/dist/dts/ui/pages/requests.d.ts +15 -0
- package/dist/dts/ui/pages/requests.d.ts.map +1 -0
- package/dist/dts/ui/pages/stubs.d.ts +8 -0
- package/dist/dts/ui/pages/stubs.d.ts.map +1 -0
- package/dist/dts/ui/partials.d.ts +13 -0
- package/dist/dts/ui/partials.d.ts.map +1 -0
- package/dist/esm/Program.js +2 -0
- package/dist/esm/Program.js.map +1 -0
- package/dist/esm/api/AdminApi.js +5 -0
- package/dist/esm/api/AdminApi.js.map +1 -0
- package/dist/esm/api/ApiErrors.js +20 -0
- package/dist/esm/api/ApiErrors.js.map +1 -0
- package/dist/esm/api/ApiSchemas.js +29 -0
- package/dist/esm/api/ApiSchemas.js.map +1 -0
- package/dist/esm/api/Conversions.js +32 -0
- package/dist/esm/api/Conversions.js.map +1 -0
- package/dist/esm/api/ImpostersGroup.js +30 -0
- package/dist/esm/api/ImpostersGroup.js.map +1 -0
- package/dist/esm/api/ImpostersHandlers.js +354 -0
- package/dist/esm/api/ImpostersHandlers.js.map +1 -0
- package/dist/esm/api/SystemGroup.js +6 -0
- package/dist/esm/api/SystemGroup.js.map +1 -0
- package/dist/esm/api/SystemHandlers.js +67 -0
- package/dist/esm/api/SystemHandlers.js.map +1 -0
- package/dist/esm/cli/Commands.js +98 -0
- package/dist/esm/cli/Commands.js.map +1 -0
- package/dist/esm/cli/ConfigLoader.js +25 -0
- package/dist/esm/cli/ConfigLoader.js.map +1 -0
- package/dist/esm/client/HandlerHttpClient.js +42 -0
- package/dist/esm/client/HandlerHttpClient.js.map +1 -0
- package/dist/esm/client/ImpostersClient.js +10 -0
- package/dist/esm/client/ImpostersClient.js.map +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/client/testing.js +86 -0
- package/dist/esm/client/testing.js.map +1 -0
- package/dist/esm/domain/imposter.js +103 -0
- package/dist/esm/domain/imposter.js.map +1 -0
- package/dist/esm/domain/route.js +164 -0
- package/dist/esm/domain/route.js.map +1 -0
- package/dist/esm/index.js +60 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/layers/ApiLayer.js +11 -0
- package/dist/esm/layers/ApiLayer.js.map +1 -0
- package/dist/esm/layers/MainLayer.js +20 -0
- package/dist/esm/layers/MainLayer.js.map +1 -0
- package/dist/esm/matching/ExpressionEvaluator.js +94 -0
- package/dist/esm/matching/ExpressionEvaluator.js.map +1 -0
- package/dist/esm/matching/RequestMatcher.js +135 -0
- package/dist/esm/matching/RequestMatcher.js.map +1 -0
- package/dist/esm/matching/ResponseGenerator.js +71 -0
- package/dist/esm/matching/ResponseGenerator.js.map +1 -0
- package/dist/esm/matching/TemplateEngine.js +47 -0
- package/dist/esm/matching/TemplateEngine.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/repositories/ImposterRepository.js +110 -0
- package/dist/esm/repositories/ImposterRepository.js.map +1 -0
- package/dist/esm/schemas/ConfigFileSchema.js +37 -0
- package/dist/esm/schemas/ConfigFileSchema.js.map +1 -0
- package/dist/esm/schemas/ImposterSchema.js +195 -0
- package/dist/esm/schemas/ImposterSchema.js.map +1 -0
- package/dist/esm/schemas/RequestLogSchema.js +44 -0
- package/dist/esm/schemas/RequestLogSchema.js.map +1 -0
- package/dist/esm/schemas/StubSchema.js +77 -0
- package/dist/esm/schemas/StubSchema.js.map +1 -0
- package/dist/esm/schemas/common.js +59 -0
- package/dist/esm/schemas/common.js.map +1 -0
- package/dist/esm/server/AdminServer.js +27 -0
- package/dist/esm/server/AdminServer.js.map +1 -0
- package/dist/esm/server/BunServer.js +6 -0
- package/dist/esm/server/BunServer.js.map +1 -0
- package/dist/esm/server/FiberManager.js +14 -0
- package/dist/esm/server/FiberManager.js.map +1 -0
- package/dist/esm/server/ImposterServer.js +225 -0
- package/dist/esm/server/ImposterServer.js.map +1 -0
- package/dist/esm/services/AppConfig.js +11 -0
- package/dist/esm/services/AppConfig.js.map +1 -0
- package/dist/esm/services/MetricsService.js +105 -0
- package/dist/esm/services/MetricsService.js.map +1 -0
- package/dist/esm/services/PortAllocator.js +41 -0
- package/dist/esm/services/PortAllocator.js.map +1 -0
- package/dist/esm/services/ProxyService.js +101 -0
- package/dist/esm/services/ProxyService.js.map +1 -0
- package/dist/esm/services/RequestLogger.js +53 -0
- package/dist/esm/services/RequestLogger.js.map +1 -0
- package/dist/esm/services/Uuid.js +3 -0
- package/dist/esm/services/Uuid.js.map +1 -0
- package/dist/esm/services/UuidLive.js +9 -0
- package/dist/esm/services/UuidLive.js.map +1 -0
- package/dist/esm/ui/UiRouter.js +235 -0
- package/dist/esm/ui/UiRouter.js.map +1 -0
- package/dist/esm/ui/admin/AdminLayout.js +29 -0
- package/dist/esm/ui/admin/AdminLayout.js.map +1 -0
- package/dist/esm/ui/admin/AdminUiRouter.js +148 -0
- package/dist/esm/ui/admin/AdminUiRouter.js.map +1 -0
- package/dist/esm/ui/admin/pages/AdminDashboard.js +48 -0
- package/dist/esm/ui/admin/pages/AdminDashboard.js.map +1 -0
- package/dist/esm/ui/admin/partials.js +54 -0
- package/dist/esm/ui/admin/partials.js.map +1 -0
- package/dist/esm/ui/html.js +32 -0
- package/dist/esm/ui/html.js.map +1 -0
- package/dist/esm/ui/layout.js +32 -0
- package/dist/esm/ui/layout.js.map +1 -0
- package/dist/esm/ui/pages/dashboard.js +44 -0
- package/dist/esm/ui/pages/dashboard.js.map +1 -0
- package/dist/esm/ui/pages/request-detail.js +112 -0
- package/dist/esm/ui/pages/request-detail.js.map +1 -0
- package/dist/esm/ui/pages/requests.js +112 -0
- package/dist/esm/ui/pages/requests.js.map +1 -0
- package/dist/esm/ui/pages/stubs.js +39 -0
- package/dist/esm/ui/pages/stubs.js.map +1 -0
- package/dist/esm/ui/partials.js +91 -0
- package/dist/esm/ui/partials.js.map +1 -0
- package/domain/imposter/package.json +6 -0
- package/domain/route/package.json +6 -0
- package/layers/ApiLayer/package.json +6 -0
- package/layers/MainLayer/package.json +6 -0
- package/matching/ExpressionEvaluator/package.json +6 -0
- package/matching/RequestMatcher/package.json +6 -0
- package/matching/ResponseGenerator/package.json +6 -0
- package/matching/TemplateEngine/package.json +6 -0
- package/package.json +435 -0
- package/repositories/ImposterRepository/package.json +6 -0
- package/schemas/ConfigFileSchema/package.json +6 -0
- package/schemas/ImposterSchema/package.json +6 -0
- package/schemas/RequestLogSchema/package.json +6 -0
- package/schemas/StubSchema/package.json +6 -0
- package/schemas/common/package.json +6 -0
- package/server/AdminServer/package.json +6 -0
- package/server/BunServer/package.json +6 -0
- package/server/FiberManager/package.json +6 -0
- package/server/ImposterServer/package.json +6 -0
- package/services/AppConfig/package.json +6 -0
- package/services/MetricsService/package.json +6 -0
- package/services/PortAllocator/package.json +6 -0
- package/services/ProxyService/package.json +6 -0
- package/services/RequestLogger/package.json +6 -0
- package/services/Uuid/package.json +6 -0
- package/services/UuidLive/package.json +6 -0
- package/src/Program.ts +1 -0
- package/src/api/AdminApi.ts +7 -0
- package/src/api/ApiErrors.ts +20 -0
- package/src/api/ApiSchemas.ts +36 -0
- package/src/api/Conversions.ts +34 -0
- package/src/api/ImpostersGroup.ts +103 -0
- package/src/api/ImpostersHandlers.ts +387 -0
- package/src/api/SystemGroup.ts +12 -0
- package/src/api/SystemHandlers.ts +76 -0
- package/src/cli/Commands.ts +119 -0
- package/src/cli/ConfigLoader.ts +41 -0
- package/src/client/HandlerHttpClient.ts +50 -0
- package/src/client/ImpostersClient.ts +21 -0
- package/src/client/index.ts +9 -0
- package/src/client/testing.ts +105 -0
- package/src/domain/imposter.ts +186 -0
- package/src/domain/route.ts +255 -0
- package/src/index.ts +153 -0
- package/src/layers/ApiLayer.ts +21 -0
- package/src/layers/MainLayer.ts +43 -0
- package/src/matching/ExpressionEvaluator.ts +102 -0
- package/src/matching/RequestMatcher.ts +162 -0
- package/src/matching/ResponseGenerator.ts +86 -0
- package/src/matching/TemplateEngine.ts +54 -0
- package/src/repositories/ImposterRepository.ts +145 -0
- package/src/schemas/ConfigFileSchema.ts +32 -0
- package/src/schemas/ImposterSchema.ts +232 -0
- package/src/schemas/RequestLogSchema.ts +38 -0
- package/src/schemas/StubSchema.ts +90 -0
- package/src/schemas/common.ts +95 -0
- package/src/server/AdminServer.ts +22 -0
- package/src/server/BunServer.ts +19 -0
- package/src/server/FiberManager.ts +25 -0
- package/src/server/ImposterServer.ts +244 -0
- package/src/services/AppConfig.ts +22 -0
- package/src/services/MetricsService.ts +157 -0
- package/src/services/PortAllocator.ts +68 -0
- package/src/services/ProxyService.ts +139 -0
- package/src/services/RequestLogger.ts +87 -0
- package/src/services/Uuid.ts +9 -0
- package/src/services/UuidLive.ts +9 -0
- package/src/types/bun.d.ts +6 -0
- package/src/ui/UiRouter.ts +278 -0
- package/src/ui/admin/AdminLayout.ts +36 -0
- package/src/ui/admin/AdminUiRouter.ts +170 -0
- package/src/ui/admin/pages/AdminDashboard.ts +54 -0
- package/src/ui/admin/partials.ts +83 -0
- package/src/ui/html.ts +37 -0
- package/src/ui/layout.ts +44 -0
- package/src/ui/pages/dashboard.ts +64 -0
- package/src/ui/pages/request-detail.ts +142 -0
- package/src/ui/pages/requests.ts +141 -0
- package/src/ui/pages/stubs.ts +52 -0
- package/src/ui/partials.ts +133 -0
- package/ui/UiRouter/package.json +6 -0
- package/ui/admin/AdminLayout/package.json +6 -0
- package/ui/admin/AdminUiRouter/package.json +6 -0
- package/ui/admin/pages/AdminDashboard/package.json +6 -0
- package/ui/admin/partials/package.json +6 -0
- package/ui/html/package.json +6 -0
- package/ui/layout/package.json +6 -0
- package/ui/pages/dashboard/package.json +6 -0
- package/ui/pages/requests/package.json +6 -0
- package/ui/pages/stubs/package.json +6 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { substituteParams } from "../domain/route";
|
|
2
|
+
import { processExpressions } from "./ExpressionEvaluator";
|
|
3
|
+
const flattenObject = (obj, prefix, result) => {
|
|
4
|
+
if (obj === null || obj === undefined) return;
|
|
5
|
+
if (typeof obj === "string") {
|
|
6
|
+
result[prefix] = obj;
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (typeof obj === "number" || typeof obj === "boolean") {
|
|
10
|
+
result[prefix] = String(obj);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(obj)) {
|
|
14
|
+
result[prefix] = JSON.stringify(obj);
|
|
15
|
+
obj.forEach((item, i) => flattenObject(item, `${prefix}.${i}`, result));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (typeof obj === "object") {
|
|
19
|
+
result[prefix] = JSON.stringify(obj);
|
|
20
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
21
|
+
flattenObject(val, `${prefix}.${key}`, result);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export const flattenRequestContext = ctx => {
|
|
26
|
+
const result = {
|
|
27
|
+
"request.method": ctx.method,
|
|
28
|
+
"request.path": ctx.path
|
|
29
|
+
};
|
|
30
|
+
for (const [key, val] of Object.entries(ctx.headers)) {
|
|
31
|
+
result[`request.headers.${key}`] = val;
|
|
32
|
+
}
|
|
33
|
+
for (const [key, val] of Object.entries(ctx.query)) {
|
|
34
|
+
result[`request.query.${key}`] = val;
|
|
35
|
+
}
|
|
36
|
+
if (ctx.body !== undefined && ctx.body !== null) {
|
|
37
|
+
flattenObject(ctx.body, "request.body", result);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
export const applyTemplates = async (ctx, data) => {
|
|
42
|
+
// Step 1: Apply {{key}} substitution
|
|
43
|
+
const substituted = substituteParams(flattenRequestContext(ctx))(data);
|
|
44
|
+
// Step 2: Apply ${expr} JSONata evaluation
|
|
45
|
+
return processExpressions(ctx, substituted);
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=TemplateEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateEngine.js","names":["substituteParams","processExpressions","flattenObject","obj","prefix","result","undefined","String","Array","isArray","JSON","stringify","forEach","item","i","key","val","Object","entries","flattenRequestContext","ctx","method","path","headers","query","body","applyTemplates","data","substituted"],"sources":["../../../src/matching/TemplateEngine.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,SAASC,kBAAkB,QAAQ,uBAAuB;AAG1D,MAAMC,aAAa,GAAGA,CAACC,GAAY,EAAEC,MAAc,EAAEC,MAA8B,KAAU;EAC3F,IAAIF,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKG,SAAS,EAAE;EACvC,IAAI,OAAOH,GAAG,KAAK,QAAQ,EAAE;IAC3BE,MAAM,CAACD,MAAM,CAAC,GAAGD,GAAG;IACpB;EACF;EACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,KAAK,SAAS,EAAE;IACvDE,MAAM,CAACD,MAAM,CAAC,GAAGG,MAAM,CAACJ,GAAG,CAAC;IAC5B;EACF;EACA,IAAIK,KAAK,CAACC,OAAO,CAACN,GAAG,CAAC,EAAE;IACtBE,MAAM,CAACD,MAAM,CAAC,GAAGM,IAAI,CAACC,SAAS,CAACR,GAAG,CAAC;IACpCA,GAAG,CAACS,OAAO,CAAC,CAACC,IAAI,EAAEC,CAAC,KAAKZ,aAAa,CAACW,IAAI,EAAE,GAAGT,MAAM,IAAIU,CAAC,EAAE,EAAET,MAAM,CAAC,CAAC;IACvE;EACF;EACA,IAAI,OAAOF,GAAG,KAAK,QAAQ,EAAE;IAC3BE,MAAM,CAACD,MAAM,CAAC,GAAGM,IAAI,CAACC,SAAS,CAACR,GAAG,CAAC;IACpC,KAAK,MAAM,CAACY,GAAG,EAAEC,GAAG,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACf,GAA8B,CAAC,EAAE;MACvED,aAAa,CAACc,GAAG,EAAE,GAAGZ,MAAM,IAAIW,GAAG,EAAE,EAAEV,MAAM,CAAC;IAChD;EACF;AACF,CAAC;AAED,OAAO,MAAMc,qBAAqB,GAAIC,GAAmB,IAA4B;EACnF,MAAMf,MAAM,GAA2B;IACrC,gBAAgB,EAAEe,GAAG,CAACC,MAAM;IAC5B,cAAc,EAAED,GAAG,CAACE;GACrB;EAED,KAAK,MAAM,CAACP,GAAG,EAAEC,GAAG,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACE,GAAG,CAACG,OAAO,CAAC,EAAE;IACpDlB,MAAM,CAAC,mBAAmBU,GAAG,EAAE,CAAC,GAAGC,GAAG;EACxC;EAEA,KAAK,MAAM,CAACD,GAAG,EAAEC,GAAG,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACE,GAAG,CAACI,KAAK,CAAC,EAAE;IAClDnB,MAAM,CAAC,iBAAiBU,GAAG,EAAE,CAAC,GAAGC,GAAG;EACtC;EAEA,IAAII,GAAG,CAACK,IAAI,KAAKnB,SAAS,IAAIc,GAAG,CAACK,IAAI,KAAK,IAAI,EAAE;IAC/CvB,aAAa,CAACkB,GAAG,CAACK,IAAI,EAAE,cAAc,EAAEpB,MAAM,CAAC;EACjD;EAEA,OAAOA,MAAM;AACf,CAAC;AAED,OAAO,MAAMqB,cAAc,GAAG,MAAAA,CAAON,GAAmB,EAAEO,IAAa,KAAsB;EAC3F;EACA,MAAMC,WAAW,GAAG5B,gBAAgB,CAACmB,qBAAqB,CAACC,GAAG,CAAC,CAAC,CAACO,IAAI,CAAC;EACtE;EACA,OAAO1B,kBAAkB,CAACmB,GAAG,EAAEQ,WAAW,CAAC;AAC7C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Context, Data, Effect, HashMap, Layer, Ref } from "effect";
|
|
2
|
+
import { ImposterNotFoundError } from "../domain/imposter";
|
|
3
|
+
export class StubNotFoundError extends Data.TaggedError("StubNotFoundError") {}
|
|
4
|
+
export class ImposterRepository extends Context.Tag("ImposterRepository")() {}
|
|
5
|
+
export const ImposterRepositoryLive = /*#__PURE__*/Layer.effect(ImposterRepository, /*#__PURE__*/Effect.gen(function* () {
|
|
6
|
+
const storeRef = yield* Ref.make(HashMap.empty());
|
|
7
|
+
const getRecord = id => Ref.get(storeRef).pipe(Effect.flatMap(store => {
|
|
8
|
+
const record = HashMap.get(store, id);
|
|
9
|
+
return record._tag === "Some" ? Effect.succeed(record.value) : Effect.fail(new ImposterNotFoundError({
|
|
10
|
+
id
|
|
11
|
+
}));
|
|
12
|
+
}));
|
|
13
|
+
const create = config => {
|
|
14
|
+
const record = {
|
|
15
|
+
config,
|
|
16
|
+
stubs: []
|
|
17
|
+
};
|
|
18
|
+
return Ref.modify(storeRef, store => [Effect.succeed(record), HashMap.set(store, config.id, record)]).pipe(Effect.flatten);
|
|
19
|
+
};
|
|
20
|
+
const get = id => getRecord(id);
|
|
21
|
+
const getAll = Ref.get(storeRef).pipe(Effect.map(store => Array.from(HashMap.values(store))));
|
|
22
|
+
const update = (id, fn) => Ref.modify(storeRef, store => {
|
|
23
|
+
const existing = HashMap.get(store, id);
|
|
24
|
+
if (existing._tag === "None") {
|
|
25
|
+
return [Effect.fail(new ImposterNotFoundError({
|
|
26
|
+
id
|
|
27
|
+
})), store];
|
|
28
|
+
}
|
|
29
|
+
const updated = fn(existing.value);
|
|
30
|
+
return [Effect.succeed(updated), HashMap.set(store, id, updated)];
|
|
31
|
+
}).pipe(Effect.flatten);
|
|
32
|
+
const remove = id => Ref.modify(storeRef, store => {
|
|
33
|
+
const existing = HashMap.get(store, id);
|
|
34
|
+
if (existing._tag === "None") {
|
|
35
|
+
return [Effect.fail(new ImposterNotFoundError({
|
|
36
|
+
id
|
|
37
|
+
})), store];
|
|
38
|
+
}
|
|
39
|
+
return [Effect.succeed(existing.value), HashMap.remove(store, id)];
|
|
40
|
+
}).pipe(Effect.flatten);
|
|
41
|
+
const addStub = (imposterId, stub) => Ref.modify(storeRef, store => {
|
|
42
|
+
const existing = HashMap.get(store, imposterId);
|
|
43
|
+
if (existing._tag === "None") {
|
|
44
|
+
return [Effect.fail(new ImposterNotFoundError({
|
|
45
|
+
id: imposterId
|
|
46
|
+
})), store];
|
|
47
|
+
}
|
|
48
|
+
const updated = {
|
|
49
|
+
...existing.value,
|
|
50
|
+
stubs: [...existing.value.stubs, stub]
|
|
51
|
+
};
|
|
52
|
+
return [Effect.succeed(stub), HashMap.set(store, imposterId, updated)];
|
|
53
|
+
}).pipe(Effect.flatten);
|
|
54
|
+
const getStubs = imposterId => getRecord(imposterId).pipe(Effect.map(r => r.stubs));
|
|
55
|
+
const updateStub = (imposterId, stubId, fn) => Ref.modify(storeRef, store => {
|
|
56
|
+
const existing = HashMap.get(store, imposterId);
|
|
57
|
+
if (existing._tag === "None") {
|
|
58
|
+
return [Effect.fail(new ImposterNotFoundError({
|
|
59
|
+
id: imposterId
|
|
60
|
+
})), store];
|
|
61
|
+
}
|
|
62
|
+
const stubIndex = existing.value.stubs.findIndex(s => s.id === stubId);
|
|
63
|
+
if (stubIndex === -1) {
|
|
64
|
+
return [Effect.fail(new StubNotFoundError({
|
|
65
|
+
imposterId,
|
|
66
|
+
stubId
|
|
67
|
+
})), store];
|
|
68
|
+
}
|
|
69
|
+
const updatedStub = fn(existing.value.stubs[stubIndex]);
|
|
70
|
+
const newStubs = [...existing.value.stubs];
|
|
71
|
+
newStubs[stubIndex] = updatedStub;
|
|
72
|
+
const updated = {
|
|
73
|
+
...existing.value,
|
|
74
|
+
stubs: newStubs
|
|
75
|
+
};
|
|
76
|
+
return [Effect.succeed(updatedStub), HashMap.set(store, imposterId, updated)];
|
|
77
|
+
}).pipe(Effect.flatten);
|
|
78
|
+
const removeStub = (imposterId, stubId) => Ref.modify(storeRef, store => {
|
|
79
|
+
const existing = HashMap.get(store, imposterId);
|
|
80
|
+
if (existing._tag === "None") {
|
|
81
|
+
return [Effect.fail(new ImposterNotFoundError({
|
|
82
|
+
id: imposterId
|
|
83
|
+
})), store];
|
|
84
|
+
}
|
|
85
|
+
const stub = existing.value.stubs.find(s => s.id === stubId);
|
|
86
|
+
if (!stub) {
|
|
87
|
+
return [Effect.fail(new StubNotFoundError({
|
|
88
|
+
imposterId,
|
|
89
|
+
stubId
|
|
90
|
+
})), store];
|
|
91
|
+
}
|
|
92
|
+
const updated = {
|
|
93
|
+
...existing.value,
|
|
94
|
+
stubs: existing.value.stubs.filter(s => s.id !== stubId)
|
|
95
|
+
};
|
|
96
|
+
return [Effect.succeed(stub), HashMap.set(store, imposterId, updated)];
|
|
97
|
+
}).pipe(Effect.flatten);
|
|
98
|
+
return {
|
|
99
|
+
create,
|
|
100
|
+
get,
|
|
101
|
+
getAll,
|
|
102
|
+
update,
|
|
103
|
+
remove,
|
|
104
|
+
addStub,
|
|
105
|
+
getStubs,
|
|
106
|
+
updateStub,
|
|
107
|
+
removeStub
|
|
108
|
+
};
|
|
109
|
+
}));
|
|
110
|
+
//# sourceMappingURL=ImposterRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImposterRepository.js","names":["Context","Data","Effect","HashMap","Layer","Ref","ImposterNotFoundError","StubNotFoundError","TaggedError","ImposterRepository","Tag","ImposterRepositoryLive","effect","gen","storeRef","make","empty","getRecord","id","get","pipe","flatMap","store","record","_tag","succeed","value","fail","create","config","stubs","modify","set","flatten","getAll","map","Array","from","values","update","fn","existing","updated","remove","addStub","imposterId","stub","getStubs","r","updateStub","stubId","stubIndex","findIndex","s","updatedStub","newStubs","removeStub","find","filter"],"sources":["../../../src/repositories/ImposterRepository.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { NonEmptyString, PortNumber } from "./common";
|
|
3
|
+
import { CreateStubRequest, ProxyConfig } from "./StubSchema";
|
|
4
|
+
export const ImposterConfig = /*#__PURE__*/Schema.Struct({
|
|
5
|
+
name: /*#__PURE__*/Schema.optional(NonEmptyString),
|
|
6
|
+
port: PortNumber,
|
|
7
|
+
stubs: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(CreateStubRequest), {
|
|
8
|
+
default: () => []
|
|
9
|
+
}),
|
|
10
|
+
proxy: /*#__PURE__*/Schema.optional(ProxyConfig)
|
|
11
|
+
});
|
|
12
|
+
export const AdminConfig = /*#__PURE__*/Schema.Struct({
|
|
13
|
+
port: /*#__PURE__*/Schema.optionalWith(PortNumber, {
|
|
14
|
+
default: () => 2525
|
|
15
|
+
}),
|
|
16
|
+
portRangeMin: /*#__PURE__*/Schema.optionalWith(PortNumber, {
|
|
17
|
+
default: () => 3000
|
|
18
|
+
}),
|
|
19
|
+
portRangeMax: /*#__PURE__*/Schema.optionalWith(PortNumber, {
|
|
20
|
+
default: () => 4000
|
|
21
|
+
}),
|
|
22
|
+
maxImposters: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()), {
|
|
23
|
+
default: () => 100
|
|
24
|
+
}),
|
|
25
|
+
logLevel: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Literal("debug", "info", "warn", "error"), {
|
|
26
|
+
default: () => "info"
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
export const ConfigFile = /*#__PURE__*/Schema.Struct({
|
|
30
|
+
admin: /*#__PURE__*/Schema.optionalWith(AdminConfig, {
|
|
31
|
+
default: () => Schema.decodeSync(AdminConfig)({})
|
|
32
|
+
}),
|
|
33
|
+
imposters: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(ImposterConfig), {
|
|
34
|
+
default: () => []
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=ConfigFileSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigFileSchema.js","names":["Schema","NonEmptyString","PortNumber","CreateStubRequest","ProxyConfig","ImposterConfig","Struct","name","optional","port","stubs","optionalWith","Array","default","proxy","AdminConfig","portRangeMin","portRangeMax","maxImposters","Number","pipe","int","positive","logLevel","Literal","ConfigFile","admin","decodeSync","imposters"],"sources":["../../../src/schemas/ConfigFileSchema.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,SAASC,cAAc,EAAEC,UAAU,QAAQ,UAAU;AACrD,SAASC,iBAAiB,EAAEC,WAAW,QAAQ,cAAc;AAE7D,OAAO,MAAMC,cAAc,gBAAGL,MAAM,CAACM,MAAM,CAAC;EAC1CC,IAAI,eAAEP,MAAM,CAACQ,QAAQ,CAACP,cAAc,CAAC;EACrCQ,IAAI,EAAEP,UAAU;EAChBQ,KAAK,eAAEV,MAAM,CAACW,YAAY,cAACX,MAAM,CAACY,KAAK,CAACT,iBAAiB,CAAC,EAAE;IAAEU,OAAO,EAAEA,CAAA,KAAM;EAAE,CAAE,CAAC;EAClFC,KAAK,eAAEd,MAAM,CAACQ,QAAQ,CAACJ,WAAW;CACnC,CAAC;AAGF,OAAO,MAAMW,WAAW,gBAAGf,MAAM,CAACM,MAAM,CAAC;EACvCG,IAAI,eAAET,MAAM,CAACW,YAAY,CAACT,UAAU,EAAE;IAAEW,OAAO,EAAEA,CAAA,KAAM;EAA6C,CAAE,CAAC;EACvGG,YAAY,eAAEhB,MAAM,CAACW,YAAY,CAACT,UAAU,EAAE;IAAEW,OAAO,EAAEA,CAAA,KAAM;EAA6C,CAAE,CAAC;EAC/GI,YAAY,eAAEjB,MAAM,CAACW,YAAY,CAACT,UAAU,EAAE;IAAEW,OAAO,EAAEA,CAAA,KAAM;EAA6C,CAAE,CAAC;EAC/GK,YAAY,eAAElB,MAAM,CAACW,YAAY,cAC/BX,MAAM,CAACmB,MAAM,CAACC,IAAI,cAACpB,MAAM,CAACqB,GAAG,EAAE,eAAErB,MAAM,CAACsB,QAAQ,EAAE,CAAC,EACnD;IAAET,OAAO,EAAEA,CAAA,KAAM;EAAG,CAAE,CACvB;EACDU,QAAQ,eAAEvB,MAAM,CAACW,YAAY,cAC3BX,MAAM,CAACwB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAChD;IAAEX,OAAO,EAAEA,CAAA,KAAM;EAAe,CAAE;CAErC,CAAC;AAGF,OAAO,MAAMY,UAAU,gBAAGzB,MAAM,CAACM,MAAM,CAAC;EACtCoB,KAAK,eAAE1B,MAAM,CAACW,YAAY,CAACI,WAAW,EAAE;IAAEF,OAAO,EAAEA,CAAA,KAAMb,MAAM,CAAC2B,UAAU,CAACZ,WAAW,CAAC,CAAC,EAAE;EAAC,CAAE,CAAC;EAC9Fa,SAAS,eAAE5B,MAAM,CAACW,YAAY,cAACX,MAAM,CAACY,KAAK,CAACP,cAAc,CAAC,EAAE;IAAEQ,OAAO,EAAEA,CAAA,KAAM;EAAE,CAAE;CACnF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { ImposterStatus, NonEmptyString, PaginationMeta, PaginationQuery, PortNumber, Protocol, ProtocolFilter, StatusFilter } from "./common";
|
|
3
|
+
import { ProxyConfig } from "./StubSchema";
|
|
4
|
+
// Create Imposter Request Schema - POST /imposters
|
|
5
|
+
export const CreateImposterRequest = /*#__PURE__*/Schema.Struct({
|
|
6
|
+
name: /*#__PURE__*/Schema.optional(NonEmptyString),
|
|
7
|
+
port: /*#__PURE__*/Schema.optional(PortNumber),
|
|
8
|
+
protocol: /*#__PURE__*/Schema.optionalWith(Protocol, {
|
|
9
|
+
default: () => "HTTP"
|
|
10
|
+
}),
|
|
11
|
+
adminPath: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.startsWith("/")), {
|
|
12
|
+
default: () => "/_admin"
|
|
13
|
+
}),
|
|
14
|
+
proxy: /*#__PURE__*/Schema.optional(ProxyConfig)
|
|
15
|
+
});
|
|
16
|
+
// Update Imposter Request Schema - PATCH /imposters/{id}
|
|
17
|
+
export const UpdateImposterRequest = /*#__PURE__*/Schema.Struct({
|
|
18
|
+
name: /*#__PURE__*/Schema.optional(NonEmptyString),
|
|
19
|
+
status: /*#__PURE__*/Schema.optional(ImposterStatus),
|
|
20
|
+
port: /*#__PURE__*/Schema.optional(PortNumber),
|
|
21
|
+
adminPath: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.startsWith("/"))),
|
|
22
|
+
proxy: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.NullOr(ProxyConfig))
|
|
23
|
+
});
|
|
24
|
+
// List Imposters Query Schema - GET /imposters query params
|
|
25
|
+
export const ListImpostersQuery = /*#__PURE__*/Schema.Struct({
|
|
26
|
+
...PaginationQuery.fields,
|
|
27
|
+
status: StatusFilter,
|
|
28
|
+
protocol: ProtocolFilter
|
|
29
|
+
});
|
|
30
|
+
// Route API Schemas
|
|
31
|
+
export const CreateRouteRequest = /*#__PURE__*/Schema.Struct({
|
|
32
|
+
path: /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.startsWith("/")),
|
|
33
|
+
method: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Literal("GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"), {
|
|
34
|
+
default: () => "GET"
|
|
35
|
+
}),
|
|
36
|
+
response: /*#__PURE__*/Schema.Struct({
|
|
37
|
+
status: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 599)), {
|
|
38
|
+
default: () => 200
|
|
39
|
+
}),
|
|
40
|
+
headers: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
|
|
41
|
+
key: Schema.String,
|
|
42
|
+
value: Schema.String
|
|
43
|
+
})),
|
|
44
|
+
body: /*#__PURE__*/Schema.optional(Schema.Unknown)
|
|
45
|
+
}),
|
|
46
|
+
delay: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(0, 60000)))
|
|
47
|
+
});
|
|
48
|
+
export const RouteResponse = /*#__PURE__*/Schema.Struct({
|
|
49
|
+
id: NonEmptyString,
|
|
50
|
+
path: NonEmptyString,
|
|
51
|
+
method: /*#__PURE__*/Schema.Literal("GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"),
|
|
52
|
+
response: /*#__PURE__*/Schema.Struct({
|
|
53
|
+
status: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 599)),
|
|
54
|
+
headers: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
|
|
55
|
+
key: Schema.String,
|
|
56
|
+
value: Schema.String
|
|
57
|
+
})),
|
|
58
|
+
body: /*#__PURE__*/Schema.optional(Schema.Unknown)
|
|
59
|
+
}),
|
|
60
|
+
delay: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(0, 60000))),
|
|
61
|
+
createdAt: Schema.DateTimeUtc
|
|
62
|
+
});
|
|
63
|
+
export const ListRoutesResponse = /*#__PURE__*/Schema.Struct({
|
|
64
|
+
routes: /*#__PURE__*/Schema.Array(RouteResponse),
|
|
65
|
+
pagination: PaginationMeta
|
|
66
|
+
});
|
|
67
|
+
// Endpoint Summary Schema (for imposter responses)
|
|
68
|
+
export const EndpointSummary = /*#__PURE__*/Schema.Struct({
|
|
69
|
+
id: NonEmptyString,
|
|
70
|
+
path: NonEmptyString,
|
|
71
|
+
method: NonEmptyString,
|
|
72
|
+
status: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 599)),
|
|
73
|
+
hasDelay: Schema.Boolean,
|
|
74
|
+
delayMs: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()))
|
|
75
|
+
});
|
|
76
|
+
// Statistics Schema
|
|
77
|
+
export const Statistics = /*#__PURE__*/Schema.Struct({
|
|
78
|
+
totalRequests: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
|
|
79
|
+
requestsPerMinute: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.nonNegative()),
|
|
80
|
+
averageResponseTime: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.nonNegative()),
|
|
81
|
+
errorRate: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.between(0, 1)),
|
|
82
|
+
requestsByMethod: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Record({
|
|
83
|
+
key: Schema.String,
|
|
84
|
+
value: Schema.Number
|
|
85
|
+
}), {
|
|
86
|
+
default: () => ({})
|
|
87
|
+
}),
|
|
88
|
+
requestsByStatusCode: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Record({
|
|
89
|
+
key: Schema.String,
|
|
90
|
+
value: Schema.Number
|
|
91
|
+
}), {
|
|
92
|
+
default: () => ({})
|
|
93
|
+
}),
|
|
94
|
+
lastRequestAt: /*#__PURE__*/Schema.optional(Schema.DateTimeUtc),
|
|
95
|
+
p50ResponseTime: /*#__PURE__*/Schema.optional(Schema.Number),
|
|
96
|
+
p95ResponseTime: /*#__PURE__*/Schema.optional(Schema.Number),
|
|
97
|
+
p99ResponseTime: /*#__PURE__*/Schema.optional(Schema.Number)
|
|
98
|
+
});
|
|
99
|
+
// Core Imposter Response Schema
|
|
100
|
+
export const ImposterResponse = /*#__PURE__*/Schema.Struct({
|
|
101
|
+
id: NonEmptyString,
|
|
102
|
+
name: NonEmptyString,
|
|
103
|
+
port: PortNumber,
|
|
104
|
+
protocol: Protocol,
|
|
105
|
+
status: ImposterStatus,
|
|
106
|
+
endpointCount: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
|
|
107
|
+
createdAt: Schema.DateTimeUtc,
|
|
108
|
+
adminUrl: NonEmptyString,
|
|
109
|
+
adminPath: NonEmptyString,
|
|
110
|
+
uptime: /*#__PURE__*/Schema.optional(Schema.String),
|
|
111
|
+
// Formatted duration string
|
|
112
|
+
endpoints: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Array(EndpointSummary)),
|
|
113
|
+
statistics: /*#__PURE__*/Schema.optional(Statistics),
|
|
114
|
+
proxy: /*#__PURE__*/Schema.optional(ProxyConfig)
|
|
115
|
+
});
|
|
116
|
+
// List Imposters Response Schema - GET /imposters
|
|
117
|
+
export const ListImpostersResponse = /*#__PURE__*/Schema.Struct({
|
|
118
|
+
imposters: /*#__PURE__*/Schema.Array(ImposterResponse),
|
|
119
|
+
pagination: PaginationMeta
|
|
120
|
+
});
|
|
121
|
+
// Delete Imposter Query Schema - DELETE /imposters/{id}
|
|
122
|
+
export const DeleteImposterQuery = /*#__PURE__*/Schema.Struct({
|
|
123
|
+
force: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
|
|
124
|
+
default: () => false
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
// Delete Imposter Response Schema
|
|
128
|
+
export const DeleteImposterResponse = /*#__PURE__*/Schema.Struct({
|
|
129
|
+
message: NonEmptyString,
|
|
130
|
+
id: NonEmptyString,
|
|
131
|
+
deletedAt: Schema.DateTimeUtc
|
|
132
|
+
});
|
|
133
|
+
// System Memory Info Schema
|
|
134
|
+
export const MemoryInfo = /*#__PURE__*/Schema.Struct({
|
|
135
|
+
used: NonEmptyString,
|
|
136
|
+
free: NonEmptyString
|
|
137
|
+
});
|
|
138
|
+
// System Imposters Summary Schema
|
|
139
|
+
export const ImpostersSummary = /*#__PURE__*/Schema.Struct({
|
|
140
|
+
total: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
|
|
141
|
+
running: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
|
|
142
|
+
stopped: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative())
|
|
143
|
+
});
|
|
144
|
+
// System Ports Summary Schema
|
|
145
|
+
export const PortsSummary = /*#__PURE__*/Schema.Struct({
|
|
146
|
+
available: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
|
|
147
|
+
allocated: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative())
|
|
148
|
+
});
|
|
149
|
+
// System Info Schema (for health endpoint)
|
|
150
|
+
export const SystemInfo = /*#__PURE__*/Schema.Struct({
|
|
151
|
+
memory: MemoryInfo,
|
|
152
|
+
imposters: ImpostersSummary,
|
|
153
|
+
ports: PortsSummary
|
|
154
|
+
});
|
|
155
|
+
// Health Response Schema - GET /health
|
|
156
|
+
export const HealthResponse = /*#__PURE__*/Schema.Struct({
|
|
157
|
+
status: /*#__PURE__*/Schema.Literal("healthy", "unhealthy"),
|
|
158
|
+
timestamp: Schema.DateTimeUtc,
|
|
159
|
+
version: NonEmptyString,
|
|
160
|
+
uptime: Schema.String,
|
|
161
|
+
// Formatted duration
|
|
162
|
+
system: SystemInfo
|
|
163
|
+
});
|
|
164
|
+
// Server Configuration Schema
|
|
165
|
+
export const ServerConfiguration = /*#__PURE__*/Schema.Struct({
|
|
166
|
+
maxImposters: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()),
|
|
167
|
+
portRange: /*#__PURE__*/Schema.Struct({
|
|
168
|
+
min: PortNumber,
|
|
169
|
+
max: PortNumber
|
|
170
|
+
}),
|
|
171
|
+
defaultTimeout: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()),
|
|
172
|
+
logLevel: /*#__PURE__*/Schema.Literal("debug", "info", "warn", "error")
|
|
173
|
+
});
|
|
174
|
+
// Server Features Schema
|
|
175
|
+
export const ServerFeatures = /*#__PURE__*/Schema.Struct({
|
|
176
|
+
openApiGeneration: Schema.Boolean,
|
|
177
|
+
clientGeneration: Schema.Boolean,
|
|
178
|
+
authentication: Schema.Boolean,
|
|
179
|
+
clustering: Schema.Boolean
|
|
180
|
+
});
|
|
181
|
+
// Server Info Schema
|
|
182
|
+
export const ServerInfo = /*#__PURE__*/Schema.Struct({
|
|
183
|
+
name: NonEmptyString,
|
|
184
|
+
version: NonEmptyString,
|
|
185
|
+
buildTime: Schema.DateTimeUtc,
|
|
186
|
+
platform: NonEmptyString,
|
|
187
|
+
protocols: /*#__PURE__*/Schema.Array(Protocol)
|
|
188
|
+
});
|
|
189
|
+
// Server Info Response Schema - GET /info
|
|
190
|
+
export const ServerInfoResponse = /*#__PURE__*/Schema.Struct({
|
|
191
|
+
server: ServerInfo,
|
|
192
|
+
configuration: ServerConfiguration,
|
|
193
|
+
features: ServerFeatures
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=ImposterSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImposterSchema.js","names":["Schema","ImposterStatus","NonEmptyString","PaginationMeta","PaginationQuery","PortNumber","Protocol","ProtocolFilter","StatusFilter","ProxyConfig","CreateImposterRequest","Struct","name","optional","port","protocol","optionalWith","default","adminPath","String","pipe","startsWith","proxy","UpdateImposterRequest","status","NullOr","ListImpostersQuery","fields","CreateRouteRequest","path","method","Literal","response","Number","int","between","headers","Record","key","value","body","Unknown","delay","RouteResponse","id","createdAt","DateTimeUtc","ListRoutesResponse","routes","Array","pagination","EndpointSummary","hasDelay","Boolean","delayMs","nonNegative","Statistics","totalRequests","requestsPerMinute","averageResponseTime","errorRate","requestsByMethod","requestsByStatusCode","lastRequestAt","p50ResponseTime","p95ResponseTime","p99ResponseTime","ImposterResponse","endpointCount","adminUrl","uptime","endpoints","statistics","ListImpostersResponse","imposters","DeleteImposterQuery","force","DeleteImposterResponse","message","deletedAt","MemoryInfo","used","free","ImpostersSummary","total","running","stopped","PortsSummary","available","allocated","SystemInfo","memory","ports","HealthResponse","timestamp","version","system","ServerConfiguration","maxImposters","positive","portRange","min","max","defaultTimeout","logLevel","ServerFeatures","openApiGeneration","clientGeneration","authentication","clustering","ServerInfo","buildTime","platform","protocols","ServerInfoResponse","server","configuration","features"],"sources":["../../../src/schemas/ImposterSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { NonEmptyString } from "./common";
|
|
3
|
+
export const RequestLogEntry = /*#__PURE__*/Schema.Struct({
|
|
4
|
+
id: NonEmptyString,
|
|
5
|
+
imposterId: NonEmptyString,
|
|
6
|
+
timestamp: Schema.DateTimeUtc,
|
|
7
|
+
request: /*#__PURE__*/Schema.Struct({
|
|
8
|
+
method: Schema.String,
|
|
9
|
+
path: Schema.String,
|
|
10
|
+
headers: /*#__PURE__*/Schema.Record({
|
|
11
|
+
key: Schema.String,
|
|
12
|
+
value: Schema.String
|
|
13
|
+
}),
|
|
14
|
+
query: /*#__PURE__*/Schema.Record({
|
|
15
|
+
key: Schema.String,
|
|
16
|
+
value: Schema.String
|
|
17
|
+
}),
|
|
18
|
+
body: /*#__PURE__*/Schema.optional(Schema.Unknown)
|
|
19
|
+
}),
|
|
20
|
+
response: /*#__PURE__*/Schema.Struct({
|
|
21
|
+
status: Schema.Number,
|
|
22
|
+
headers: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Record({
|
|
23
|
+
key: Schema.String,
|
|
24
|
+
value: Schema.String
|
|
25
|
+
}), {
|
|
26
|
+
default: () => ({})
|
|
27
|
+
}),
|
|
28
|
+
body: /*#__PURE__*/Schema.optional(Schema.String),
|
|
29
|
+
matchedStubId: /*#__PURE__*/Schema.optional(NonEmptyString),
|
|
30
|
+
proxied: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
|
|
31
|
+
default: () => false
|
|
32
|
+
})
|
|
33
|
+
}),
|
|
34
|
+
duration: Schema.Number
|
|
35
|
+
});
|
|
36
|
+
export const ListRequestsUrlParams = /*#__PURE__*/Schema.Struct({
|
|
37
|
+
limit: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.NumberFromString.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()), {
|
|
38
|
+
default: () => 50
|
|
39
|
+
}),
|
|
40
|
+
method: /*#__PURE__*/Schema.optional(Schema.String),
|
|
41
|
+
path: /*#__PURE__*/Schema.optional(Schema.String),
|
|
42
|
+
status: /*#__PURE__*/Schema.optional(Schema.NumberFromString)
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=RequestLogSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestLogSchema.js","names":["Schema","NonEmptyString","RequestLogEntry","Struct","id","imposterId","timestamp","DateTimeUtc","request","method","String","path","headers","Record","key","value","query","body","optional","Unknown","response","status","Number","optionalWith","default","matchedStubId","proxied","Boolean","duration","ListRequestsUrlParams","limit","NumberFromString","pipe","int","positive"],"sources":["../../../src/schemas/RequestLogSchema.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,SAASC,cAAc,QAAQ,UAAU;AAEzC,OAAO,MAAMC,eAAe,gBAAGF,MAAM,CAACG,MAAM,CAAC;EAC3CC,EAAE,EAAEH,cAAc;EAClBI,UAAU,EAAEJ,cAAc;EAC1BK,SAAS,EAAEN,MAAM,CAACO,WAAW;EAC7BC,OAAO,eAAER,MAAM,CAACG,MAAM,CAAC;IACrBM,MAAM,EAAET,MAAM,CAACU,MAAM;IACrBC,IAAI,EAAEX,MAAM,CAACU,MAAM;IACnBE,OAAO,eAAEZ,MAAM,CAACa,MAAM,CAAC;MAAEC,GAAG,EAAEd,MAAM,CAACU,MAAM;MAAEK,KAAK,EAAEf,MAAM,CAACU;IAAM,CAAE,CAAC;IACpEM,KAAK,eAAEhB,MAAM,CAACa,MAAM,CAAC;MAAEC,GAAG,EAAEd,MAAM,CAACU,MAAM;MAAEK,KAAK,EAAEf,MAAM,CAACU;IAAM,CAAE,CAAC;IAClEO,IAAI,eAAEjB,MAAM,CAACkB,QAAQ,CAAClB,MAAM,CAACmB,OAAO;GACrC,CAAC;EACFC,QAAQ,eAAEpB,MAAM,CAACG,MAAM,CAAC;IACtBkB,MAAM,EAAErB,MAAM,CAACsB,MAAM;IACrBV,OAAO,eAAEZ,MAAM,CAACuB,YAAY,cAC1BvB,MAAM,CAACa,MAAM,CAAC;MAAEC,GAAG,EAAEd,MAAM,CAACU,MAAM;MAAEK,KAAK,EAAEf,MAAM,CAACU;IAAM,CAAE,CAAC,EAC3D;MAAEc,OAAO,EAAEA,CAAA,MAAO,EAAE;IAAC,CAAE,CACxB;IACDP,IAAI,eAAEjB,MAAM,CAACkB,QAAQ,CAAClB,MAAM,CAACU,MAAM,CAAC;IACpCe,aAAa,eAAEzB,MAAM,CAACkB,QAAQ,CAACjB,cAAc,CAAC;IAC9CyB,OAAO,eAAE1B,MAAM,CAACuB,YAAY,CAACvB,MAAM,CAAC2B,OAAO,EAAE;MAAEH,OAAO,EAAEA,CAAA,KAAM;IAAK,CAAE;GACtE,CAAC;EACFI,QAAQ,EAAE5B,MAAM,CAACsB;CAClB,CAAC;AAGF,OAAO,MAAMO,qBAAqB,gBAAG7B,MAAM,CAACG,MAAM,CAAC;EACjD2B,KAAK,eAAE9B,MAAM,CAACuB,YAAY,cACxBvB,MAAM,CAAC+B,gBAAgB,CAACC,IAAI,cAAChC,MAAM,CAACiC,GAAG,EAAE,eAAEjC,MAAM,CAACkC,QAAQ,EAAE,CAAC,EAC7D;IAAEV,OAAO,EAAEA,CAAA,KAAM;EAAE,CAAE,CACtB;EACDf,MAAM,eAAET,MAAM,CAACkB,QAAQ,CAAClB,MAAM,CAACU,MAAM,CAAC;EACtCC,IAAI,eAAEX,MAAM,CAACkB,QAAQ,CAAClB,MAAM,CAACU,MAAM,CAAC;EACpCW,MAAM,eAAErB,MAAM,CAACkB,QAAQ,CAAClB,MAAM,CAAC+B,gBAAgB;CAChD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { NonEmptyString } from "./common";
|
|
3
|
+
// Proxy Mode
|
|
4
|
+
export const ProxyMode = /*#__PURE__*/Schema.Literal("passthrough", "record");
|
|
5
|
+
// Proxy Configuration
|
|
6
|
+
export const ProxyConfig = /*#__PURE__*/Schema.Struct({
|
|
7
|
+
targetUrl: /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.pattern(/^https?:\/\//)),
|
|
8
|
+
mode: /*#__PURE__*/Schema.optionalWith(ProxyMode, {
|
|
9
|
+
default: () => "passthrough"
|
|
10
|
+
}),
|
|
11
|
+
addHeaders: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
|
|
12
|
+
key: Schema.String,
|
|
13
|
+
value: Schema.String
|
|
14
|
+
})),
|
|
15
|
+
removeHeaders: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(Schema.String), {
|
|
16
|
+
default: () => []
|
|
17
|
+
}),
|
|
18
|
+
followRedirects: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
|
|
19
|
+
default: () => true
|
|
20
|
+
}),
|
|
21
|
+
timeout: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 60000)), {
|
|
22
|
+
default: () => 10000
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
// Predicate operators for matching incoming requests
|
|
26
|
+
export const PredicateOperator = /*#__PURE__*/Schema.Literal("equals", "contains", "startsWith", "matches", "exists");
|
|
27
|
+
// Which part of the request to match against
|
|
28
|
+
export const PredicateField = /*#__PURE__*/Schema.Literal("method", "path", "headers", "query", "body");
|
|
29
|
+
// A single predicate matcher
|
|
30
|
+
export const Predicate = /*#__PURE__*/Schema.Struct({
|
|
31
|
+
field: PredicateField,
|
|
32
|
+
operator: PredicateOperator,
|
|
33
|
+
value: Schema.Unknown,
|
|
34
|
+
caseSensitive: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
|
|
35
|
+
default: () => true
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
// How to cycle through responses
|
|
39
|
+
export const ResponseMode = /*#__PURE__*/Schema.Literal("sequential", "random", "repeat");
|
|
40
|
+
// A single response configuration
|
|
41
|
+
export const ResponseConfig = /*#__PURE__*/Schema.Struct({
|
|
42
|
+
status: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 599)), {
|
|
43
|
+
default: () => 200
|
|
44
|
+
}),
|
|
45
|
+
headers: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
|
|
46
|
+
key: Schema.String,
|
|
47
|
+
value: Schema.String
|
|
48
|
+
})),
|
|
49
|
+
body: /*#__PURE__*/Schema.optional(Schema.Unknown),
|
|
50
|
+
delay: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(0, 60000)))
|
|
51
|
+
});
|
|
52
|
+
// A stub: predicates (AND-combined) + responses (cycled)
|
|
53
|
+
export const Stub = /*#__PURE__*/Schema.Struct({
|
|
54
|
+
id: NonEmptyString,
|
|
55
|
+
predicates: /*#__PURE__*/Schema.Array(Predicate),
|
|
56
|
+
responses: /*#__PURE__*/Schema.NonEmptyArray(ResponseConfig),
|
|
57
|
+
responseMode: /*#__PURE__*/Schema.optionalWith(ResponseMode, {
|
|
58
|
+
default: () => "sequential"
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
// API request to create a stub (id is auto-generated)
|
|
62
|
+
export const CreateStubRequest = /*#__PURE__*/Schema.Struct({
|
|
63
|
+
predicates: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(Predicate), {
|
|
64
|
+
default: () => []
|
|
65
|
+
}),
|
|
66
|
+
responses: /*#__PURE__*/Schema.NonEmptyArray(ResponseConfig),
|
|
67
|
+
responseMode: /*#__PURE__*/Schema.optionalWith(ResponseMode, {
|
|
68
|
+
default: () => "sequential"
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
// API request to update a stub
|
|
72
|
+
export const UpdateStubRequest = /*#__PURE__*/Schema.Struct({
|
|
73
|
+
predicates: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Array(Predicate)),
|
|
74
|
+
responses: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.NonEmptyArray(ResponseConfig)),
|
|
75
|
+
responseMode: /*#__PURE__*/Schema.optional(ResponseMode)
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=StubSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StubSchema.js","names":["Schema","NonEmptyString","ProxyMode","Literal","ProxyConfig","Struct","targetUrl","String","pipe","pattern","mode","optionalWith","default","addHeaders","optional","Record","key","value","removeHeaders","Array","followRedirects","Boolean","timeout","Number","int","between","PredicateOperator","PredicateField","Predicate","field","operator","Unknown","caseSensitive","ResponseMode","ResponseConfig","status","headers","body","delay","Stub","id","predicates","responses","NonEmptyArray","responseMode","CreateStubRequest","UpdateStubRequest"],"sources":["../../../src/schemas/StubSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|