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 @@
|
|
|
1
|
+
{"version":3,"file":"ImpostersClient.d.ts","sourceRoot":"","sources":["../../../src/client/ImpostersClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { HandlerHttpClientLive, makeHandlerHttpClient } from "./HandlerHttpClient";
|
|
2
|
+
export { ImpostersClient, ImpostersClientFetchLive, ImpostersClientLive, makeImpostersClient } from "./ImpostersClient";
|
|
3
|
+
export type { ImpostersClientShape } from "./ImpostersClient";
|
|
4
|
+
export { makeTestServer, withImposter } from "./testing";
|
|
5
|
+
export type { ImposterTestContext, StubConfig, WithImposterConfig } from "./testing";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAElF,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvH,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExD,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Effect, Layer } from "effect";
|
|
2
|
+
import { ImpostersClient } from "./ImpostersClient";
|
|
3
|
+
export interface StubConfig {
|
|
4
|
+
readonly predicates?: ReadonlyArray<{
|
|
5
|
+
readonly field: "method" | "path" | "headers" | "query" | "body";
|
|
6
|
+
readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
|
|
7
|
+
readonly value: unknown;
|
|
8
|
+
readonly caseSensitive?: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
readonly responses: readonly [ResponseConfigInput, ...ReadonlyArray<ResponseConfigInput>];
|
|
11
|
+
readonly responseMode?: "sequential" | "random" | "repeat";
|
|
12
|
+
}
|
|
13
|
+
interface ResponseConfigInput {
|
|
14
|
+
readonly status?: number;
|
|
15
|
+
readonly headers?: Record<string, string>;
|
|
16
|
+
readonly body?: unknown;
|
|
17
|
+
readonly delay?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface WithImposterConfig {
|
|
20
|
+
readonly port?: number;
|
|
21
|
+
readonly name?: string;
|
|
22
|
+
readonly stubs?: ReadonlyArray<StubConfig>;
|
|
23
|
+
}
|
|
24
|
+
export interface ImposterTestContext {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly port: number;
|
|
27
|
+
}
|
|
28
|
+
export declare const withImposter: <A, E>(config: WithImposterConfig, testFn: (ctx: ImposterTestContext) => Effect.Effect<A, E, ImpostersClient>) => Effect.Effect<A, E | Error, ImpostersClient>;
|
|
29
|
+
export declare const makeTestServer: (fullLayer: Layer.Layer<any, any, never>) => {
|
|
30
|
+
handler: (request: Request, context?: import("effect/Context").Context<never> | undefined) => Promise<Response>;
|
|
31
|
+
dispose: () => Promise<void>;
|
|
32
|
+
clientLayer: Layer.Layer<ImpostersClient, never, never>;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/client/testing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAItC,OAAO,EAAE,eAAe,EAAuB,MAAM,mBAAmB,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;QAChE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;QAC9E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;QACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KACjC,CAAC,CAAA;IACF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,mBAAmB,EAAE,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACzF,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAC3D;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAqBD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAC/B,QAAQ,kBAAkB,EAC1B,QAAQ,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,KACzE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,eAAe,CAsC3C,CAAA;AAEH,eAAO,MAAM,cAAc,GAAI,WAAW,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;;;;CAMrE,CAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as Data from "effect/Data";
|
|
2
|
+
import * as DateTime from "effect/DateTime";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import type * as ParseResult from "effect/ParseResult";
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
import { Uuid } from "../services/Uuid";
|
|
8
|
+
type ImposterStatus = "running" | "stopped" | "starting" | "stopping";
|
|
9
|
+
declare const CreateImposterRequestSchema: Schema.Struct<{
|
|
10
|
+
name: Schema.optional<Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>>;
|
|
11
|
+
port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
|
|
12
|
+
}>;
|
|
13
|
+
export interface ProxyConfigDomain {
|
|
14
|
+
readonly targetUrl: string;
|
|
15
|
+
readonly mode: "passthrough" | "record";
|
|
16
|
+
readonly addHeaders?: Record<string, string> | undefined;
|
|
17
|
+
readonly removeHeaders: ReadonlyArray<string>;
|
|
18
|
+
readonly followRedirects: boolean;
|
|
19
|
+
readonly timeout: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ImposterConfig {
|
|
22
|
+
readonly _tag: "ImposterConfig";
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly port: number;
|
|
26
|
+
readonly status: ImposterStatus;
|
|
27
|
+
readonly createdAt: DateTime.Utc;
|
|
28
|
+
readonly proxy?: ProxyConfigDomain | undefined;
|
|
29
|
+
}
|
|
30
|
+
export declare const ImposterConfig: Data.Case.Constructor<ImposterConfig, "_tag">;
|
|
31
|
+
export interface CreateImposterRequest {
|
|
32
|
+
readonly _tag: "CreateImposterRequest";
|
|
33
|
+
readonly name?: string;
|
|
34
|
+
readonly port?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare const CreateImposterRequest: Data.Case.Constructor<CreateImposterRequest, "_tag">;
|
|
37
|
+
export interface ImposterRef {
|
|
38
|
+
readonly _tag: "ImposterRef";
|
|
39
|
+
readonly config: ImposterConfig;
|
|
40
|
+
readonly startTime: DateTime.Utc;
|
|
41
|
+
readonly endpointCount: number;
|
|
42
|
+
}
|
|
43
|
+
export declare const ImposterRef: Data.Case.Constructor<ImposterRef, "_tag">;
|
|
44
|
+
declare const ImposterError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
45
|
+
readonly _tag: "ImposterError";
|
|
46
|
+
} & Readonly<A>;
|
|
47
|
+
export declare class ImposterError extends ImposterError_base<{
|
|
48
|
+
readonly reason: string;
|
|
49
|
+
readonly cause?: unknown;
|
|
50
|
+
}> {
|
|
51
|
+
}
|
|
52
|
+
declare const PortInUseError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
53
|
+
readonly _tag: "PortInUseError";
|
|
54
|
+
} & Readonly<A>;
|
|
55
|
+
export declare class PortInUseError extends PortInUseError_base<{
|
|
56
|
+
readonly port: number;
|
|
57
|
+
}> {
|
|
58
|
+
}
|
|
59
|
+
declare const ImposterNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
60
|
+
readonly _tag: "ImposterNotFoundError";
|
|
61
|
+
} & Readonly<A>;
|
|
62
|
+
export declare class ImposterNotFoundError extends ImposterNotFoundError_base<{
|
|
63
|
+
readonly id: string;
|
|
64
|
+
}> {
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses and validates imposter creation request
|
|
68
|
+
*/
|
|
69
|
+
export declare const parseCreateImposterRequest: (input: unknown) => Effect.Effect<typeof CreateImposterRequestSchema.Type, ParseResult.ParseError>;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a new imposter configuration from validated input
|
|
72
|
+
*/
|
|
73
|
+
export declare const createImposterConfig: (validatedInput: typeof CreateImposterRequestSchema.Type) => Effect.Effect<ImposterConfig, never, Uuid>;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a new imposter from raw input (parse + create)
|
|
76
|
+
*/
|
|
77
|
+
export declare const newImposterConfig: (input: unknown) => Effect.Effect<ImposterConfig, ParseResult.ParseError, Uuid>;
|
|
78
|
+
/**
|
|
79
|
+
* Updates imposter status
|
|
80
|
+
*/
|
|
81
|
+
export declare const updateImposterStatus: (status: ImposterStatus) => (config: ImposterConfig) => ImposterConfig;
|
|
82
|
+
/**
|
|
83
|
+
* Updates imposter port
|
|
84
|
+
*/
|
|
85
|
+
export declare const updateImposterPort: (port: number) => (config: ImposterConfig) => ImposterConfig;
|
|
86
|
+
/**
|
|
87
|
+
* Calculates imposter uptime using Effect's Duration
|
|
88
|
+
*/
|
|
89
|
+
export declare const calculateUptime: (startTime: DateTime.Utc) => Effect.Effect<Duration.Duration, never, never>;
|
|
90
|
+
/**
|
|
91
|
+
* Creates an ImposterRef from config and runtime info
|
|
92
|
+
*/
|
|
93
|
+
export declare const createImposterRef: (startTime: DateTime.Utc) => (endpointCount: number) => (config: ImposterConfig) => ImposterRef;
|
|
94
|
+
/**
|
|
95
|
+
* Extracts imposter summary for API responses
|
|
96
|
+
*/
|
|
97
|
+
export declare const toImposterSummary: (ref: ImposterRef) => Effect.Effect<{
|
|
98
|
+
id: string;
|
|
99
|
+
name: string;
|
|
100
|
+
port: number;
|
|
101
|
+
status: ImposterStatus;
|
|
102
|
+
endpointCount: number;
|
|
103
|
+
createdAt: string;
|
|
104
|
+
uptime: string;
|
|
105
|
+
}, never, never>;
|
|
106
|
+
/**
|
|
107
|
+
* Gets uptime in human readable format
|
|
108
|
+
*/
|
|
109
|
+
export declare const getUptimeFormatted: (ref: ImposterRef) => Effect.Effect<string, never, never>;
|
|
110
|
+
/**
|
|
111
|
+
* Checks if imposter is running
|
|
112
|
+
*/
|
|
113
|
+
export declare const isRunning: (config: ImposterConfig) => boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Checks if imposter can be started
|
|
116
|
+
*/
|
|
117
|
+
export declare const canStart: (config: ImposterConfig) => boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Checks if imposter can be stopped
|
|
120
|
+
*/
|
|
121
|
+
export declare const canStop: (config: ImposterConfig) => boolean;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=imposter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imposter.d.ts","sourceRoot":"","sources":["../../../src/domain/imposter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as Data from "effect/Data";
|
|
2
|
+
import * as DateTime from "effect/DateTime";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Option from "effect/Option";
|
|
6
|
+
import type * as ParseResult from "effect/ParseResult";
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
8
|
+
import { Uuid } from "../services/Uuid";
|
|
9
|
+
declare const HttpMethodSchema: Schema.Literal<["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]>;
|
|
10
|
+
declare const CreateRouteRequestSchema: Schema.Struct<{
|
|
11
|
+
id: Schema.optional<typeof Schema.String>;
|
|
12
|
+
path: Schema.filter<Schema.filter<typeof Schema.String>>;
|
|
13
|
+
method: Schema.optionalWith<Schema.Literal<["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]>, {
|
|
14
|
+
default: () => "GET";
|
|
15
|
+
}>;
|
|
16
|
+
response: Schema.Struct<{
|
|
17
|
+
status: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
|
|
18
|
+
default: () => number;
|
|
19
|
+
}>;
|
|
20
|
+
headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
|
|
21
|
+
body: typeof Schema.Unknown;
|
|
22
|
+
}>;
|
|
23
|
+
delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
|
|
24
|
+
}>;
|
|
25
|
+
export interface Route {
|
|
26
|
+
readonly _tag: "Route";
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly path: string;
|
|
29
|
+
readonly method: typeof HttpMethodSchema.Type;
|
|
30
|
+
readonly response: Response;
|
|
31
|
+
readonly delay: Option.Option<Duration.Duration>;
|
|
32
|
+
readonly createdAt: DateTime.Utc;
|
|
33
|
+
}
|
|
34
|
+
export declare const Route: Data.Case.Constructor<Route, "_tag">;
|
|
35
|
+
export interface Response {
|
|
36
|
+
readonly _tag: "Response";
|
|
37
|
+
readonly status: number;
|
|
38
|
+
readonly headers: Option.Option<Record<string, string>>;
|
|
39
|
+
readonly body: unknown;
|
|
40
|
+
}
|
|
41
|
+
export declare const Response: Data.Case.Constructor<Response, "_tag">;
|
|
42
|
+
export interface CreateRouteRequest {
|
|
43
|
+
readonly _tag: "CreateRouteRequest";
|
|
44
|
+
readonly id?: string;
|
|
45
|
+
readonly path: string;
|
|
46
|
+
readonly method?: string;
|
|
47
|
+
readonly response: {
|
|
48
|
+
readonly status?: number;
|
|
49
|
+
readonly headers?: Record<string, string>;
|
|
50
|
+
readonly body: unknown;
|
|
51
|
+
};
|
|
52
|
+
readonly delay?: number;
|
|
53
|
+
}
|
|
54
|
+
export declare const CreateRouteRequest: Data.Case.Constructor<CreateRouteRequest, "_tag">;
|
|
55
|
+
declare const RouteError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
56
|
+
readonly _tag: "RouteError";
|
|
57
|
+
} & Readonly<A>;
|
|
58
|
+
export declare class RouteError extends RouteError_base<{
|
|
59
|
+
readonly reason: string;
|
|
60
|
+
readonly field?: string;
|
|
61
|
+
readonly value?: unknown;
|
|
62
|
+
}> {
|
|
63
|
+
}
|
|
64
|
+
declare const RouteNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
65
|
+
readonly _tag: "RouteNotFoundError";
|
|
66
|
+
} & Readonly<A>;
|
|
67
|
+
export declare class RouteNotFoundError extends RouteNotFoundError_base<{
|
|
68
|
+
readonly id: string;
|
|
69
|
+
}> {
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parses and validates route creation request
|
|
73
|
+
*/
|
|
74
|
+
export declare const parseCreateRouteRequest: (input: unknown) => Effect.Effect<typeof CreateRouteRequestSchema.Type, ParseResult.ParseError>;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a new route from validated input
|
|
77
|
+
*/
|
|
78
|
+
export declare const createRoute: (validatedInput: typeof CreateRouteRequestSchema.Type) => Effect.Effect<Route, never, Uuid>;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a new route from raw input (parse + create)
|
|
81
|
+
*/
|
|
82
|
+
export declare const newRoute: (input: unknown) => Effect.Effect<Route, ParseResult.ParseError, Uuid>;
|
|
83
|
+
/**
|
|
84
|
+
* Updates a route preserving creation time and ID
|
|
85
|
+
*/
|
|
86
|
+
export declare const updateRoute: (updates: Partial<typeof CreateRouteRequestSchema.Type>) => (existingRoute: Route) => Effect.Effect<Route, never, Uuid>;
|
|
87
|
+
/**
|
|
88
|
+
* Recursively substitutes parameters in unknown data structure
|
|
89
|
+
*/
|
|
90
|
+
export declare const substituteParams: (params: Record<string, string>) => (body: unknown) => unknown;
|
|
91
|
+
/**
|
|
92
|
+
* Creates a response with substituted parameters
|
|
93
|
+
*/
|
|
94
|
+
export declare const createResponseWithParams: (params: Record<string, string>) => (response: Response) => Response;
|
|
95
|
+
/**
|
|
96
|
+
* Extracts route summary for API responses
|
|
97
|
+
*/
|
|
98
|
+
export declare const toRouteSummary: (route: Route) => {
|
|
99
|
+
id: string;
|
|
100
|
+
path: string;
|
|
101
|
+
method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
|
|
102
|
+
status: number;
|
|
103
|
+
hasDelay: boolean;
|
|
104
|
+
delayMs: number | undefined;
|
|
105
|
+
createdAt: string;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Gets delay in milliseconds for compatibility
|
|
109
|
+
*/
|
|
110
|
+
export declare const getDelayMillis: (route: Route) => Option.Option<number>;
|
|
111
|
+
/**
|
|
112
|
+
* Checks if route has custom headers
|
|
113
|
+
*/
|
|
114
|
+
export declare const hasCustomHeaders: (route: Route) => boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Gets headers as record or empty object
|
|
117
|
+
*/
|
|
118
|
+
export declare const getHeaders: (route: Route) => Record<string, string>;
|
|
119
|
+
/**
|
|
120
|
+
* Checks if route has delay configured
|
|
121
|
+
*/
|
|
122
|
+
export declare const hasDelay: (route: Route) => boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Creates a minimal route for testing
|
|
125
|
+
*/
|
|
126
|
+
export declare const createMinimalRoute: (path: string) => (method?: typeof HttpMethodSchema.Type) => Effect.Effect<Route, never, Uuid>;
|
|
127
|
+
export {};
|
|
128
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/domain/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export * as Program from "./Program.js";
|
|
2
|
+
export * as AdminApi from "./api/AdminApi.js";
|
|
3
|
+
export * as ApiErrors from "./api/ApiErrors.js";
|
|
4
|
+
export * as ApiSchemas from "./api/ApiSchemas.js";
|
|
5
|
+
export * as Conversions from "./api/Conversions.js";
|
|
6
|
+
export * as ImpostersGroup from "./api/ImpostersGroup.js";
|
|
7
|
+
export * as ImpostersHandlers from "./api/ImpostersHandlers.js";
|
|
8
|
+
export * as SystemGroup from "./api/SystemGroup.js";
|
|
9
|
+
export * as SystemHandlers from "./api/SystemHandlers.js";
|
|
10
|
+
export * as Commands from "./cli/Commands.js";
|
|
11
|
+
export * as ConfigLoader from "./cli/ConfigLoader.js";
|
|
12
|
+
export * as HandlerHttpClient from "./client/HandlerHttpClient.js";
|
|
13
|
+
export * as ImpostersClient from "./client/ImpostersClient.js";
|
|
14
|
+
export * as testing from "./client/testing.js";
|
|
15
|
+
/**
|
|
16
|
+
* Parses and validates imposter creation request
|
|
17
|
+
*/
|
|
18
|
+
export * as imposter from "./domain/imposter.js";
|
|
19
|
+
/**
|
|
20
|
+
* Parses and validates route creation request
|
|
21
|
+
*/
|
|
22
|
+
export * as route from "./domain/route.js";
|
|
23
|
+
export * as ApiLayer from "./layers/ApiLayer.js";
|
|
24
|
+
export * as MainLayer from "./layers/MainLayer.js";
|
|
25
|
+
/**
|
|
26
|
+
* Extract expression content from a ${...} pattern using brace-depth counting.
|
|
27
|
+
* Returns [expressionContent, endIndex] or null if no valid expression found.
|
|
28
|
+
*/
|
|
29
|
+
export * as ExpressionEvaluator from "./matching/ExpressionEvaluator.js";
|
|
30
|
+
export * as RequestMatcher from "./matching/RequestMatcher.js";
|
|
31
|
+
export * as ResponseGenerator from "./matching/ResponseGenerator.js";
|
|
32
|
+
export * as TemplateEngine from "./matching/TemplateEngine.js";
|
|
33
|
+
export * as ImposterRepository from "./repositories/ImposterRepository.js";
|
|
34
|
+
export * as ConfigFileSchema from "./schemas/ConfigFileSchema.js";
|
|
35
|
+
export * as ImposterSchema from "./schemas/ImposterSchema.js";
|
|
36
|
+
export * as RequestLogSchema from "./schemas/RequestLogSchema.js";
|
|
37
|
+
export * as StubSchema from "./schemas/StubSchema.js";
|
|
38
|
+
export * as common from "./schemas/common.js";
|
|
39
|
+
export * as AdminServer from "./server/AdminServer.js";
|
|
40
|
+
export * as BunServer from "./server/BunServer.js";
|
|
41
|
+
export * as FiberManager from "./server/FiberManager.js";
|
|
42
|
+
export * as ImposterServer from "./server/ImposterServer.js";
|
|
43
|
+
export * as AppConfig from "./services/AppConfig.js";
|
|
44
|
+
export * as MetricsService from "./services/MetricsService.js";
|
|
45
|
+
export * as PortAllocator from "./services/PortAllocator.js";
|
|
46
|
+
export * as ProxyService from "./services/ProxyService.js";
|
|
47
|
+
export * as RequestLogger from "./services/RequestLogger.js";
|
|
48
|
+
export * as Uuid from "./services/Uuid.js";
|
|
49
|
+
export * as UuidLive from "./services/UuidLive.js";
|
|
50
|
+
export * as UiRouter from "./ui/UiRouter.js";
|
|
51
|
+
export * as AdminLayout from "./ui/admin/AdminLayout.js";
|
|
52
|
+
export * as AdminUiRouter from "./ui/admin/AdminUiRouter.js";
|
|
53
|
+
export * as AdminDashboard from "./ui/admin/pages/AdminDashboard.js";
|
|
54
|
+
export * as partials from "./ui/admin/partials.js";
|
|
55
|
+
export * as html from "./ui/html.js";
|
|
56
|
+
export * as layout from "./ui/layout.js";
|
|
57
|
+
export * as dashboard from "./ui/pages/dashboard.js";
|
|
58
|
+
export * as requests from "./ui/pages/requests.js";
|
|
59
|
+
export * as stubs from "./ui/pages/stubs.js";
|
|
60
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AAGjD,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AAGzD,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAG/D,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AAGzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AAGrD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAA;AAGlE,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAA;AAG9D,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAE9C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAEhD;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAG1C,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGhD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAElD;;;GAGG;AACH,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAA;AAGxE,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAG9D,OAAO,KAAK,iBAAiB,MAAM,iCAAiC,CAAA;AAGpE,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAG9D,OAAO,KAAK,kBAAkB,MAAM,sCAAsC,CAAA;AAG1E,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AAGjE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAG7D,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AAGjE,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAGrD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAG7C,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAA;AAGtD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAA;AAGxD,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAA;AAG5D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AAGpD,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAG9D,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAA;AAG5D,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAG1D,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAA;AAG5D,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAG1C,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAGlD,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AAG5C,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAA;AAG5D,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAA;AAGpE,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAGlD,OAAO,KAAK,IAAI,MAAM,cAAc,CAAA;AAGpC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAGxC,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AAGpD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAGlD,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
export declare const ApiLayer: Layer.Layer<import("@effect/platform/HttpPlatform").HttpPlatform | import("@effect/platform/Etag").Generator | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("@effect/platform/HttpApi").Api, never, import("../services/Uuid").Uuid | import("../repositories/ImposterRepository").ImposterRepository | import("../services/MetricsService").MetricsService | import("../services/RequestLogger").RequestLogger | import("../server/ImposterServer").ImposterServer | import("../services/AppConfig").AppConfig | import("../services/PortAllocator").PortAllocator>;
|
|
3
|
+
//# sourceMappingURL=ApiLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiLayer.d.ts","sourceRoot":"","sources":["../../../src/layers/ApiLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAerC,eAAO,MAAM,QAAQ,0lBAIpB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
export declare const MainLayer: Layer.Layer<import("../services/Uuid").Uuid | import("../repositories/ImposterRepository").ImposterRepository | import("../services/MetricsService").MetricsService | import("../services/RequestLogger").RequestLogger | import("../server/FiberManager").FiberManager | import("../server/ImposterServer").ImposterServer | import("../services/AppConfig").AppConfig | import("../services/PortAllocator").PortAllocator, import("effect/ConfigError").ConfigError, never>;
|
|
3
|
+
//# sourceMappingURL=MainLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainLayer.d.ts","sourceRoot":"","sources":["../../../src/layers/MainLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAiCrC,eAAO,MAAM,SAAS,+cASrB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RequestContext } from "./RequestMatcher";
|
|
2
|
+
/**
|
|
3
|
+
* Evaluate a single JSONata expression against the request context.
|
|
4
|
+
* Returns the result or undefined on error.
|
|
5
|
+
*/
|
|
6
|
+
export declare const evaluateExpression: (expr: string, ctx: RequestContext) => Promise<unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* Recursively walk data structures, processing ${...} expressions in strings.
|
|
9
|
+
*/
|
|
10
|
+
export declare const processExpressions: (ctx: RequestContext, data: unknown) => Promise<unknown>;
|
|
11
|
+
//# sourceMappingURL=ExpressionEvaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpressionEvaluator.d.ts","sourceRoot":"","sources":["../../../src/matching/ExpressionEvaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAuBtD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,OAAO,CAQ3F,CAAA;AAgDD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAU,KAAK,cAAc,EAAE,MAAM,OAAO,KAAG,OAAO,CAAC,OAAO,CAc5F,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Predicate, Stub } from "../schemas/StubSchema";
|
|
2
|
+
export interface RequestContext {
|
|
3
|
+
readonly method: string;
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly headers: Record<string, string>;
|
|
6
|
+
readonly query: Record<string, string>;
|
|
7
|
+
readonly body: unknown;
|
|
8
|
+
}
|
|
9
|
+
export declare const extractRequestContext: (request: Request) => Promise<RequestContext>;
|
|
10
|
+
export declare const evaluatePredicate: (ctx: RequestContext, predicate: Predicate) => boolean;
|
|
11
|
+
export declare const evaluatePredicates: (ctx: RequestContext, predicates: ReadonlyArray<Predicate>) => boolean;
|
|
12
|
+
export declare const findMatchingStub: (ctx: RequestContext, stubs: ReadonlyArray<Stub>) => Stub | undefined;
|
|
13
|
+
//# sourceMappingURL=RequestMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestMatcher.d.ts","sourceRoot":"","sources":["../../../src/matching/RequestMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,qBAAqB,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,cAAc,CA+BpF,CAAA;AAoGD,eAAO,MAAM,iBAAiB,GAAI,KAAK,cAAc,EAAE,WAAW,SAAS,KAAG,OAc7E,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,cAAc,EAAE,YAAY,aAAa,CAAC,SAAS,CAAC,KAAG,OAChB,CAAA;AAE/E,eAAO,MAAM,gBAAgB,GAAI,KAAK,cAAc,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC,KAAG,IAAI,GAAG,SAC1B,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type { ResponseConfig, ResponseMode } from "../schemas/StubSchema";
|
|
3
|
+
import type { RequestContext } from "./RequestMatcher";
|
|
4
|
+
export declare const makeResponseState: () => Effect.Effect<{
|
|
5
|
+
getNextIndex: (imposterId: string, stubId: string, count: number, mode: ResponseMode) => Effect.Effect<number>;
|
|
6
|
+
reset: (imposterId: string) => Effect.Effect<void>;
|
|
7
|
+
}, never, never>;
|
|
8
|
+
export declare const buildResponse: (config: ResponseConfig, ctx: RequestContext) => Promise<Response>;
|
|
9
|
+
//# sourceMappingURL=ResponseGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseGenerator.d.ts","sourceRoot":"","sources":["../../../src/matching/ResponseGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMtD,eAAO,MAAM,iBAAiB;+BAKZ,MAAM,UACV,MAAM,SACP,MAAM,QACP,YAAY,KACjB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;wBAsBG,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAYvD,CAAA;AAEJ,eAAO,MAAM,aAAa,GAAU,QAAQ,cAAc,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,QAAQ,CA8BjG,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RequestContext } from "./RequestMatcher";
|
|
2
|
+
export declare const flattenRequestContext: (ctx: RequestContext) => Record<string, string>;
|
|
3
|
+
export declare const applyTemplates: (ctx: RequestContext, data: unknown) => Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=TemplateEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../../src/matching/TemplateEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAyBtD,eAAO,MAAM,qBAAqB,GAAI,KAAK,cAAc,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBhF,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,KAAK,cAAc,EAAE,MAAM,OAAO,KAAG,OAAO,CAAC,OAAO,CAKxF,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import type { ImposterConfig } from "../domain/imposter";
|
|
3
|
+
import { ImposterNotFoundError } from "../domain/imposter";
|
|
4
|
+
import type { Stub } from "../schemas/StubSchema";
|
|
5
|
+
declare const StubNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
6
|
+
readonly _tag: "StubNotFoundError";
|
|
7
|
+
} & Readonly<A>;
|
|
8
|
+
export declare class StubNotFoundError extends StubNotFoundError_base<{
|
|
9
|
+
readonly imposterId: string;
|
|
10
|
+
readonly stubId: string;
|
|
11
|
+
}> {
|
|
12
|
+
}
|
|
13
|
+
export interface ImposterRecord {
|
|
14
|
+
readonly config: ImposterConfig;
|
|
15
|
+
readonly stubs: ReadonlyArray<Stub>;
|
|
16
|
+
}
|
|
17
|
+
export interface ImposterRepositoryShape {
|
|
18
|
+
readonly create: (config: ImposterConfig) => Effect.Effect<ImposterRecord>;
|
|
19
|
+
readonly get: (id: string) => Effect.Effect<ImposterRecord, ImposterNotFoundError>;
|
|
20
|
+
readonly getAll: Effect.Effect<ReadonlyArray<ImposterRecord>>;
|
|
21
|
+
readonly update: (id: string, fn: (r: ImposterRecord) => ImposterRecord) => Effect.Effect<ImposterRecord, ImposterNotFoundError>;
|
|
22
|
+
readonly remove: (id: string) => Effect.Effect<ImposterRecord, ImposterNotFoundError>;
|
|
23
|
+
readonly addStub: (imposterId: string, stub: Stub) => Effect.Effect<Stub, ImposterNotFoundError>;
|
|
24
|
+
readonly getStubs: (imposterId: string) => Effect.Effect<ReadonlyArray<Stub>, ImposterNotFoundError>;
|
|
25
|
+
readonly updateStub: (imposterId: string, stubId: string, fn: (s: Stub) => Stub) => Effect.Effect<Stub, ImposterNotFoundError | StubNotFoundError>;
|
|
26
|
+
readonly removeStub: (imposterId: string, stubId: string) => Effect.Effect<Stub, ImposterNotFoundError | StubNotFoundError>;
|
|
27
|
+
}
|
|
28
|
+
declare const ImposterRepository_base: Context.TagClass<ImposterRepository, "ImposterRepository", ImposterRepositoryShape>;
|
|
29
|
+
export declare class ImposterRepository extends ImposterRepository_base {
|
|
30
|
+
}
|
|
31
|
+
export declare const ImposterRepositoryLive: Layer.Layer<ImposterRepository, never, never>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=ImposterRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImposterRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/ImposterRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,EAAW,KAAK,EAAO,MAAM,QAAQ,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;;;;AAEjD,qBAAa,iBAAkB,SAAQ,uBAAsC;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAC;CAAG;AAEL,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC1E,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAA;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,MAAM,EAAE,CACf,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,cAAc,KACtC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAA;IACzD,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAA;IACrF,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;IAChG,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACpG,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAAC,CAAA;IACnE,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAAC,CAAA;CACpE;;AAED,qBAAa,kBAAmB,SAAQ,uBAGrC;CAAG;AAEN,eAAO,MAAM,sBAAsB,+CAsGlC,CAAA"}
|