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.
Files changed (426) hide show
  1. package/LICENSE +21 -0
  2. package/Program/package.json +6 -0
  3. package/README.md +365 -0
  4. package/api/AdminApi/package.json +6 -0
  5. package/api/ApiErrors/package.json +6 -0
  6. package/api/ApiSchemas/package.json +6 -0
  7. package/api/Conversions/package.json +6 -0
  8. package/api/ImpostersGroup/package.json +6 -0
  9. package/api/ImpostersHandlers/package.json +6 -0
  10. package/api/SystemGroup/package.json +6 -0
  11. package/api/SystemHandlers/package.json +6 -0
  12. package/bin/imposters +47 -0
  13. package/cli/Commands/package.json +6 -0
  14. package/cli/ConfigLoader/package.json +6 -0
  15. package/client/HandlerHttpClient/package.json +6 -0
  16. package/client/ImpostersClient/package.json +6 -0
  17. package/client/testing/package.json +6 -0
  18. package/dist/cjs/Program.js +4 -0
  19. package/dist/cjs/Program.js.map +1 -0
  20. package/dist/cjs/api/AdminApi.js +11 -0
  21. package/dist/cjs/api/AdminApi.js.map +1 -0
  22. package/dist/cjs/api/ApiErrors.js +30 -0
  23. package/dist/cjs/api/ApiErrors.js.map +1 -0
  24. package/dist/cjs/api/ApiSchemas.js +36 -0
  25. package/dist/cjs/api/ApiSchemas.js.map +1 -0
  26. package/dist/cjs/api/Conversions.js +41 -0
  27. package/dist/cjs/api/Conversions.js.map +1 -0
  28. package/dist/cjs/api/ImpostersGroup.js +37 -0
  29. package/dist/cjs/api/ImpostersGroup.js.map +1 -0
  30. package/dist/cjs/api/ImpostersHandlers.js +361 -0
  31. package/dist/cjs/api/ImpostersHandlers.js.map +1 -0
  32. package/dist/cjs/api/SystemGroup.js +12 -0
  33. package/dist/cjs/api/SystemGroup.js.map +1 -0
  34. package/dist/cjs/api/SystemHandlers.js +74 -0
  35. package/dist/cjs/api/SystemHandlers.js.map +1 -0
  36. package/dist/cjs/cli/Commands.js +104 -0
  37. package/dist/cjs/cli/Commands.js.map +1 -0
  38. package/dist/cjs/cli/ConfigLoader.js +34 -0
  39. package/dist/cjs/cli/ConfigLoader.js.map +1 -0
  40. package/dist/cjs/client/HandlerHttpClient.js +50 -0
  41. package/dist/cjs/client/HandlerHttpClient.js.map +1 -0
  42. package/dist/cjs/client/ImpostersClient.js +20 -0
  43. package/dist/cjs/client/ImpostersClient.js.map +1 -0
  44. package/dist/cjs/client/index.js +57 -0
  45. package/dist/cjs/client/index.js.map +1 -0
  46. package/dist/cjs/client/testing.js +94 -0
  47. package/dist/cjs/client/testing.js.map +1 -0
  48. package/dist/cjs/domain/imposter.js +125 -0
  49. package/dist/cjs/domain/imposter.js.map +1 -0
  50. package/dist/cjs/domain/route.js +185 -0
  51. package/dist/cjs/domain/route.js.map +1 -0
  52. package/dist/cjs/index.js +106 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/layers/ApiLayer.js +18 -0
  55. package/dist/cjs/layers/ApiLayer.js.map +1 -0
  56. package/dist/cjs/layers/MainLayer.js +27 -0
  57. package/dist/cjs/layers/MainLayer.js.map +1 -0
  58. package/dist/cjs/matching/ExpressionEvaluator.js +103 -0
  59. package/dist/cjs/matching/ExpressionEvaluator.js.map +1 -0
  60. package/dist/cjs/matching/RequestMatcher.js +145 -0
  61. package/dist/cjs/matching/RequestMatcher.js.map +1 -0
  62. package/dist/cjs/matching/ResponseGenerator.js +80 -0
  63. package/dist/cjs/matching/ResponseGenerator.js.map +1 -0
  64. package/dist/cjs/matching/TemplateEngine.js +55 -0
  65. package/dist/cjs/matching/TemplateEngine.js.map +1 -0
  66. package/dist/cjs/repositories/ImposterRepository.js +118 -0
  67. package/dist/cjs/repositories/ImposterRepository.js.map +1 -0
  68. package/dist/cjs/schemas/ConfigFileSchema.js +44 -0
  69. package/dist/cjs/schemas/ConfigFileSchema.js.map +1 -0
  70. package/dist/cjs/schemas/ImposterSchema.js +202 -0
  71. package/dist/cjs/schemas/ImposterSchema.js.map +1 -0
  72. package/dist/cjs/schemas/RequestLogSchema.js +51 -0
  73. package/dist/cjs/schemas/RequestLogSchema.js.map +1 -0
  74. package/dist/cjs/schemas/StubSchema.js +84 -0
  75. package/dist/cjs/schemas/StubSchema.js.map +1 -0
  76. package/dist/cjs/schemas/common.js +67 -0
  77. package/dist/cjs/schemas/common.js.map +1 -0
  78. package/dist/cjs/server/AdminServer.js +36 -0
  79. package/dist/cjs/server/AdminServer.js.map +1 -0
  80. package/dist/cjs/server/BunServer.js +13 -0
  81. package/dist/cjs/server/BunServer.js.map +1 -0
  82. package/dist/cjs/server/FiberManager.js +21 -0
  83. package/dist/cjs/server/FiberManager.js.map +1 -0
  84. package/dist/cjs/server/ImposterServer.js +234 -0
  85. package/dist/cjs/server/ImposterServer.js.map +1 -0
  86. package/dist/cjs/services/AppConfig.js +18 -0
  87. package/dist/cjs/services/AppConfig.js.map +1 -0
  88. package/dist/cjs/services/MetricsService.js +113 -0
  89. package/dist/cjs/services/MetricsService.js.map +1 -0
  90. package/dist/cjs/services/PortAllocator.js +50 -0
  91. package/dist/cjs/services/PortAllocator.js.map +1 -0
  92. package/dist/cjs/services/ProxyService.js +109 -0
  93. package/dist/cjs/services/ProxyService.js.map +1 -0
  94. package/dist/cjs/services/RequestLogger.js +60 -0
  95. package/dist/cjs/services/RequestLogger.js.map +1 -0
  96. package/dist/cjs/services/Uuid.js +10 -0
  97. package/dist/cjs/services/Uuid.js.map +1 -0
  98. package/dist/cjs/services/UuidLive.js +16 -0
  99. package/dist/cjs/services/UuidLive.js.map +1 -0
  100. package/dist/cjs/ui/UiRouter.js +242 -0
  101. package/dist/cjs/ui/UiRouter.js.map +1 -0
  102. package/dist/cjs/ui/admin/AdminLayout.js +36 -0
  103. package/dist/cjs/ui/admin/AdminLayout.js.map +1 -0
  104. package/dist/cjs/ui/admin/AdminUiRouter.js +155 -0
  105. package/dist/cjs/ui/admin/AdminUiRouter.js.map +1 -0
  106. package/dist/cjs/ui/admin/pages/AdminDashboard.js +55 -0
  107. package/dist/cjs/ui/admin/pages/AdminDashboard.js.map +1 -0
  108. package/dist/cjs/ui/admin/partials.js +64 -0
  109. package/dist/cjs/ui/admin/partials.js.map +1 -0
  110. package/dist/cjs/ui/html.js +42 -0
  111. package/dist/cjs/ui/html.js.map +1 -0
  112. package/dist/cjs/ui/layout.js +39 -0
  113. package/dist/cjs/ui/layout.js.map +1 -0
  114. package/dist/cjs/ui/pages/dashboard.js +51 -0
  115. package/dist/cjs/ui/pages/dashboard.js.map +1 -0
  116. package/dist/cjs/ui/pages/request-detail.js +119 -0
  117. package/dist/cjs/ui/pages/request-detail.js.map +1 -0
  118. package/dist/cjs/ui/pages/requests.js +120 -0
  119. package/dist/cjs/ui/pages/requests.js.map +1 -0
  120. package/dist/cjs/ui/pages/stubs.js +46 -0
  121. package/dist/cjs/ui/pages/stubs.js.map +1 -0
  122. package/dist/cjs/ui/partials.js +104 -0
  123. package/dist/cjs/ui/partials.js.map +1 -0
  124. package/dist/dts/Program.d.ts +2 -0
  125. package/dist/dts/Program.d.ts.map +1 -0
  126. package/dist/dts/api/AdminApi.d.ts +490 -0
  127. package/dist/dts/api/AdminApi.d.ts.map +1 -0
  128. package/dist/dts/api/ApiErrors.d.ts +26 -0
  129. package/dist/dts/api/ApiErrors.d.ts.map +1 -0
  130. package/dist/dts/api/ApiSchemas.d.ts +36 -0
  131. package/dist/dts/api/ApiSchemas.d.ts.map +1 -0
  132. package/dist/dts/api/Conversions.d.ts +7 -0
  133. package/dist/dts/api/Conversions.d.ts.map +1 -0
  134. package/dist/dts/api/ImpostersGroup.d.ts +448 -0
  135. package/dist/dts/api/ImpostersGroup.d.ts.map +1 -0
  136. package/dist/dts/api/ImpostersHandlers.d.ts +9 -0
  137. package/dist/dts/api/ImpostersHandlers.d.ts.map +1 -0
  138. package/dist/dts/api/SystemGroup.d.ts +46 -0
  139. package/dist/dts/api/SystemGroup.d.ts.map +1 -0
  140. package/dist/dts/api/SystemHandlers.d.ts +4 -0
  141. package/dist/dts/api/SystemHandlers.d.ts.map +1 -0
  142. package/dist/dts/cli/Commands.d.ts +4 -0
  143. package/dist/dts/cli/Commands.d.ts.map +1 -0
  144. package/dist/dts/cli/ConfigLoader.d.ts +13 -0
  145. package/dist/dts/cli/ConfigLoader.d.ts.map +1 -0
  146. package/dist/dts/client/HandlerHttpClient.d.ts +5 -0
  147. package/dist/dts/client/HandlerHttpClient.d.ts.map +1 -0
  148. package/dist/dts/client/ImpostersClient.d.ts +1868 -0
  149. package/dist/dts/client/ImpostersClient.d.ts.map +1 -0
  150. package/dist/dts/client/index.d.ts +6 -0
  151. package/dist/dts/client/index.d.ts.map +1 -0
  152. package/dist/dts/client/testing.d.ts +35 -0
  153. package/dist/dts/client/testing.d.ts.map +1 -0
  154. package/dist/dts/domain/imposter.d.ts +123 -0
  155. package/dist/dts/domain/imposter.d.ts.map +1 -0
  156. package/dist/dts/domain/route.d.ts +128 -0
  157. package/dist/dts/domain/route.d.ts.map +1 -0
  158. package/dist/dts/index.d.ts +60 -0
  159. package/dist/dts/index.d.ts.map +1 -0
  160. package/dist/dts/layers/ApiLayer.d.ts +3 -0
  161. package/dist/dts/layers/ApiLayer.d.ts.map +1 -0
  162. package/dist/dts/layers/MainLayer.d.ts +3 -0
  163. package/dist/dts/layers/MainLayer.d.ts.map +1 -0
  164. package/dist/dts/matching/ExpressionEvaluator.d.ts +11 -0
  165. package/dist/dts/matching/ExpressionEvaluator.d.ts.map +1 -0
  166. package/dist/dts/matching/RequestMatcher.d.ts +13 -0
  167. package/dist/dts/matching/RequestMatcher.d.ts.map +1 -0
  168. package/dist/dts/matching/ResponseGenerator.d.ts +9 -0
  169. package/dist/dts/matching/ResponseGenerator.d.ts.map +1 -0
  170. package/dist/dts/matching/TemplateEngine.d.ts +4 -0
  171. package/dist/dts/matching/TemplateEngine.d.ts.map +1 -0
  172. package/dist/dts/repositories/ImposterRepository.d.ts +33 -0
  173. package/dist/dts/repositories/ImposterRepository.d.ts.map +1 -0
  174. package/dist/dts/schemas/ConfigFileSchema.d.ts +142 -0
  175. package/dist/dts/schemas/ConfigFileSchema.d.ts.map +1 -0
  176. package/dist/dts/schemas/ImposterSchema.d.ts +368 -0
  177. package/dist/dts/schemas/ImposterSchema.d.ts.map +1 -0
  178. package/dist/dts/schemas/RequestLogSchema.d.ts +36 -0
  179. package/dist/dts/schemas/RequestLogSchema.d.ts.map +1 -0
  180. package/dist/dts/schemas/StubSchema.d.ts +112 -0
  181. package/dist/dts/schemas/StubSchema.d.ts.map +1 -0
  182. package/dist/dts/schemas/common.d.ts +56 -0
  183. package/dist/dts/schemas/common.d.ts.map +1 -0
  184. package/dist/dts/server/AdminServer.d.ts +11 -0
  185. package/dist/dts/server/AdminServer.d.ts.map +1 -0
  186. package/dist/dts/server/BunServer.d.ts +17 -0
  187. package/dist/dts/server/BunServer.d.ts.map +1 -0
  188. package/dist/dts/server/FiberManager.d.ts +12 -0
  189. package/dist/dts/server/FiberManager.d.ts.map +1 -0
  190. package/dist/dts/server/ImposterServer.d.ts +29 -0
  191. package/dist/dts/server/ImposterServer.d.ts.map +1 -0
  192. package/dist/dts/services/AppConfig.d.ts +14 -0
  193. package/dist/dts/services/AppConfig.d.ts.map +1 -0
  194. package/dist/dts/services/MetricsService.d.ts +26 -0
  195. package/dist/dts/services/MetricsService.d.ts.map +1 -0
  196. package/dist/dts/services/PortAllocator.d.ts +29 -0
  197. package/dist/dts/services/PortAllocator.d.ts.map +1 -0
  198. package/dist/dts/services/ProxyService.d.ts +24 -0
  199. package/dist/dts/services/ProxyService.d.ts.map +1 -0
  200. package/dist/dts/services/RequestLogger.d.ts +23 -0
  201. package/dist/dts/services/RequestLogger.d.ts.map +1 -0
  202. package/dist/dts/services/Uuid.d.ts +9 -0
  203. package/dist/dts/services/Uuid.d.ts.map +1 -0
  204. package/dist/dts/services/UuidLive.d.ts +4 -0
  205. package/dist/dts/services/UuidLive.d.ts.map +1 -0
  206. package/dist/dts/ui/UiRouter.d.ts +15 -0
  207. package/dist/dts/ui/UiRouter.d.ts.map +1 -0
  208. package/dist/dts/ui/admin/AdminLayout.d.ts +7 -0
  209. package/dist/dts/ui/admin/AdminLayout.d.ts.map +1 -0
  210. package/dist/dts/ui/admin/AdminUiRouter.d.ts +6 -0
  211. package/dist/dts/ui/admin/AdminUiRouter.d.ts.map +1 -0
  212. package/dist/dts/ui/admin/pages/AdminDashboard.d.ts +7 -0
  213. package/dist/dts/ui/admin/pages/AdminDashboard.d.ts.map +1 -0
  214. package/dist/dts/ui/admin/partials.d.ts +14 -0
  215. package/dist/dts/ui/admin/partials.d.ts.map +1 -0
  216. package/dist/dts/ui/html.d.ts +12 -0
  217. package/dist/dts/ui/html.d.ts.map +1 -0
  218. package/dist/dts/ui/layout.d.ts +9 -0
  219. package/dist/dts/ui/layout.d.ts.map +1 -0
  220. package/dist/dts/ui/pages/dashboard.d.ts +10 -0
  221. package/dist/dts/ui/pages/dashboard.d.ts.map +1 -0
  222. package/dist/dts/ui/pages/request-detail.d.ts +11 -0
  223. package/dist/dts/ui/pages/request-detail.d.ts.map +1 -0
  224. package/dist/dts/ui/pages/requests.d.ts +15 -0
  225. package/dist/dts/ui/pages/requests.d.ts.map +1 -0
  226. package/dist/dts/ui/pages/stubs.d.ts +8 -0
  227. package/dist/dts/ui/pages/stubs.d.ts.map +1 -0
  228. package/dist/dts/ui/partials.d.ts +13 -0
  229. package/dist/dts/ui/partials.d.ts.map +1 -0
  230. package/dist/esm/Program.js +2 -0
  231. package/dist/esm/Program.js.map +1 -0
  232. package/dist/esm/api/AdminApi.js +5 -0
  233. package/dist/esm/api/AdminApi.js.map +1 -0
  234. package/dist/esm/api/ApiErrors.js +20 -0
  235. package/dist/esm/api/ApiErrors.js.map +1 -0
  236. package/dist/esm/api/ApiSchemas.js +29 -0
  237. package/dist/esm/api/ApiSchemas.js.map +1 -0
  238. package/dist/esm/api/Conversions.js +32 -0
  239. package/dist/esm/api/Conversions.js.map +1 -0
  240. package/dist/esm/api/ImpostersGroup.js +30 -0
  241. package/dist/esm/api/ImpostersGroup.js.map +1 -0
  242. package/dist/esm/api/ImpostersHandlers.js +354 -0
  243. package/dist/esm/api/ImpostersHandlers.js.map +1 -0
  244. package/dist/esm/api/SystemGroup.js +6 -0
  245. package/dist/esm/api/SystemGroup.js.map +1 -0
  246. package/dist/esm/api/SystemHandlers.js +67 -0
  247. package/dist/esm/api/SystemHandlers.js.map +1 -0
  248. package/dist/esm/cli/Commands.js +98 -0
  249. package/dist/esm/cli/Commands.js.map +1 -0
  250. package/dist/esm/cli/ConfigLoader.js +25 -0
  251. package/dist/esm/cli/ConfigLoader.js.map +1 -0
  252. package/dist/esm/client/HandlerHttpClient.js +42 -0
  253. package/dist/esm/client/HandlerHttpClient.js.map +1 -0
  254. package/dist/esm/client/ImpostersClient.js +10 -0
  255. package/dist/esm/client/ImpostersClient.js.map +1 -0
  256. package/dist/esm/client/index.js +4 -0
  257. package/dist/esm/client/index.js.map +1 -0
  258. package/dist/esm/client/testing.js +86 -0
  259. package/dist/esm/client/testing.js.map +1 -0
  260. package/dist/esm/domain/imposter.js +103 -0
  261. package/dist/esm/domain/imposter.js.map +1 -0
  262. package/dist/esm/domain/route.js +164 -0
  263. package/dist/esm/domain/route.js.map +1 -0
  264. package/dist/esm/index.js +60 -0
  265. package/dist/esm/index.js.map +1 -0
  266. package/dist/esm/layers/ApiLayer.js +11 -0
  267. package/dist/esm/layers/ApiLayer.js.map +1 -0
  268. package/dist/esm/layers/MainLayer.js +20 -0
  269. package/dist/esm/layers/MainLayer.js.map +1 -0
  270. package/dist/esm/matching/ExpressionEvaluator.js +94 -0
  271. package/dist/esm/matching/ExpressionEvaluator.js.map +1 -0
  272. package/dist/esm/matching/RequestMatcher.js +135 -0
  273. package/dist/esm/matching/RequestMatcher.js.map +1 -0
  274. package/dist/esm/matching/ResponseGenerator.js +71 -0
  275. package/dist/esm/matching/ResponseGenerator.js.map +1 -0
  276. package/dist/esm/matching/TemplateEngine.js +47 -0
  277. package/dist/esm/matching/TemplateEngine.js.map +1 -0
  278. package/dist/esm/package.json +4 -0
  279. package/dist/esm/repositories/ImposterRepository.js +110 -0
  280. package/dist/esm/repositories/ImposterRepository.js.map +1 -0
  281. package/dist/esm/schemas/ConfigFileSchema.js +37 -0
  282. package/dist/esm/schemas/ConfigFileSchema.js.map +1 -0
  283. package/dist/esm/schemas/ImposterSchema.js +195 -0
  284. package/dist/esm/schemas/ImposterSchema.js.map +1 -0
  285. package/dist/esm/schemas/RequestLogSchema.js +44 -0
  286. package/dist/esm/schemas/RequestLogSchema.js.map +1 -0
  287. package/dist/esm/schemas/StubSchema.js +77 -0
  288. package/dist/esm/schemas/StubSchema.js.map +1 -0
  289. package/dist/esm/schemas/common.js +59 -0
  290. package/dist/esm/schemas/common.js.map +1 -0
  291. package/dist/esm/server/AdminServer.js +27 -0
  292. package/dist/esm/server/AdminServer.js.map +1 -0
  293. package/dist/esm/server/BunServer.js +6 -0
  294. package/dist/esm/server/BunServer.js.map +1 -0
  295. package/dist/esm/server/FiberManager.js +14 -0
  296. package/dist/esm/server/FiberManager.js.map +1 -0
  297. package/dist/esm/server/ImposterServer.js +225 -0
  298. package/dist/esm/server/ImposterServer.js.map +1 -0
  299. package/dist/esm/services/AppConfig.js +11 -0
  300. package/dist/esm/services/AppConfig.js.map +1 -0
  301. package/dist/esm/services/MetricsService.js +105 -0
  302. package/dist/esm/services/MetricsService.js.map +1 -0
  303. package/dist/esm/services/PortAllocator.js +41 -0
  304. package/dist/esm/services/PortAllocator.js.map +1 -0
  305. package/dist/esm/services/ProxyService.js +101 -0
  306. package/dist/esm/services/ProxyService.js.map +1 -0
  307. package/dist/esm/services/RequestLogger.js +53 -0
  308. package/dist/esm/services/RequestLogger.js.map +1 -0
  309. package/dist/esm/services/Uuid.js +3 -0
  310. package/dist/esm/services/Uuid.js.map +1 -0
  311. package/dist/esm/services/UuidLive.js +9 -0
  312. package/dist/esm/services/UuidLive.js.map +1 -0
  313. package/dist/esm/ui/UiRouter.js +235 -0
  314. package/dist/esm/ui/UiRouter.js.map +1 -0
  315. package/dist/esm/ui/admin/AdminLayout.js +29 -0
  316. package/dist/esm/ui/admin/AdminLayout.js.map +1 -0
  317. package/dist/esm/ui/admin/AdminUiRouter.js +148 -0
  318. package/dist/esm/ui/admin/AdminUiRouter.js.map +1 -0
  319. package/dist/esm/ui/admin/pages/AdminDashboard.js +48 -0
  320. package/dist/esm/ui/admin/pages/AdminDashboard.js.map +1 -0
  321. package/dist/esm/ui/admin/partials.js +54 -0
  322. package/dist/esm/ui/admin/partials.js.map +1 -0
  323. package/dist/esm/ui/html.js +32 -0
  324. package/dist/esm/ui/html.js.map +1 -0
  325. package/dist/esm/ui/layout.js +32 -0
  326. package/dist/esm/ui/layout.js.map +1 -0
  327. package/dist/esm/ui/pages/dashboard.js +44 -0
  328. package/dist/esm/ui/pages/dashboard.js.map +1 -0
  329. package/dist/esm/ui/pages/request-detail.js +112 -0
  330. package/dist/esm/ui/pages/request-detail.js.map +1 -0
  331. package/dist/esm/ui/pages/requests.js +112 -0
  332. package/dist/esm/ui/pages/requests.js.map +1 -0
  333. package/dist/esm/ui/pages/stubs.js +39 -0
  334. package/dist/esm/ui/pages/stubs.js.map +1 -0
  335. package/dist/esm/ui/partials.js +91 -0
  336. package/dist/esm/ui/partials.js.map +1 -0
  337. package/domain/imposter/package.json +6 -0
  338. package/domain/route/package.json +6 -0
  339. package/layers/ApiLayer/package.json +6 -0
  340. package/layers/MainLayer/package.json +6 -0
  341. package/matching/ExpressionEvaluator/package.json +6 -0
  342. package/matching/RequestMatcher/package.json +6 -0
  343. package/matching/ResponseGenerator/package.json +6 -0
  344. package/matching/TemplateEngine/package.json +6 -0
  345. package/package.json +435 -0
  346. package/repositories/ImposterRepository/package.json +6 -0
  347. package/schemas/ConfigFileSchema/package.json +6 -0
  348. package/schemas/ImposterSchema/package.json +6 -0
  349. package/schemas/RequestLogSchema/package.json +6 -0
  350. package/schemas/StubSchema/package.json +6 -0
  351. package/schemas/common/package.json +6 -0
  352. package/server/AdminServer/package.json +6 -0
  353. package/server/BunServer/package.json +6 -0
  354. package/server/FiberManager/package.json +6 -0
  355. package/server/ImposterServer/package.json +6 -0
  356. package/services/AppConfig/package.json +6 -0
  357. package/services/MetricsService/package.json +6 -0
  358. package/services/PortAllocator/package.json +6 -0
  359. package/services/ProxyService/package.json +6 -0
  360. package/services/RequestLogger/package.json +6 -0
  361. package/services/Uuid/package.json +6 -0
  362. package/services/UuidLive/package.json +6 -0
  363. package/src/Program.ts +1 -0
  364. package/src/api/AdminApi.ts +7 -0
  365. package/src/api/ApiErrors.ts +20 -0
  366. package/src/api/ApiSchemas.ts +36 -0
  367. package/src/api/Conversions.ts +34 -0
  368. package/src/api/ImpostersGroup.ts +103 -0
  369. package/src/api/ImpostersHandlers.ts +387 -0
  370. package/src/api/SystemGroup.ts +12 -0
  371. package/src/api/SystemHandlers.ts +76 -0
  372. package/src/cli/Commands.ts +119 -0
  373. package/src/cli/ConfigLoader.ts +41 -0
  374. package/src/client/HandlerHttpClient.ts +50 -0
  375. package/src/client/ImpostersClient.ts +21 -0
  376. package/src/client/index.ts +9 -0
  377. package/src/client/testing.ts +105 -0
  378. package/src/domain/imposter.ts +186 -0
  379. package/src/domain/route.ts +255 -0
  380. package/src/index.ts +153 -0
  381. package/src/layers/ApiLayer.ts +21 -0
  382. package/src/layers/MainLayer.ts +43 -0
  383. package/src/matching/ExpressionEvaluator.ts +102 -0
  384. package/src/matching/RequestMatcher.ts +162 -0
  385. package/src/matching/ResponseGenerator.ts +86 -0
  386. package/src/matching/TemplateEngine.ts +54 -0
  387. package/src/repositories/ImposterRepository.ts +145 -0
  388. package/src/schemas/ConfigFileSchema.ts +32 -0
  389. package/src/schemas/ImposterSchema.ts +232 -0
  390. package/src/schemas/RequestLogSchema.ts +38 -0
  391. package/src/schemas/StubSchema.ts +90 -0
  392. package/src/schemas/common.ts +95 -0
  393. package/src/server/AdminServer.ts +22 -0
  394. package/src/server/BunServer.ts +19 -0
  395. package/src/server/FiberManager.ts +25 -0
  396. package/src/server/ImposterServer.ts +244 -0
  397. package/src/services/AppConfig.ts +22 -0
  398. package/src/services/MetricsService.ts +157 -0
  399. package/src/services/PortAllocator.ts +68 -0
  400. package/src/services/ProxyService.ts +139 -0
  401. package/src/services/RequestLogger.ts +87 -0
  402. package/src/services/Uuid.ts +9 -0
  403. package/src/services/UuidLive.ts +9 -0
  404. package/src/types/bun.d.ts +6 -0
  405. package/src/ui/UiRouter.ts +278 -0
  406. package/src/ui/admin/AdminLayout.ts +36 -0
  407. package/src/ui/admin/AdminUiRouter.ts +170 -0
  408. package/src/ui/admin/pages/AdminDashboard.ts +54 -0
  409. package/src/ui/admin/partials.ts +83 -0
  410. package/src/ui/html.ts +37 -0
  411. package/src/ui/layout.ts +44 -0
  412. package/src/ui/pages/dashboard.ts +64 -0
  413. package/src/ui/pages/request-detail.ts +142 -0
  414. package/src/ui/pages/requests.ts +141 -0
  415. package/src/ui/pages/stubs.ts +52 -0
  416. package/src/ui/partials.ts +133 -0
  417. package/ui/UiRouter/package.json +6 -0
  418. package/ui/admin/AdminLayout/package.json +6 -0
  419. package/ui/admin/AdminUiRouter/package.json +6 -0
  420. package/ui/admin/pages/AdminDashboard/package.json +6 -0
  421. package/ui/admin/partials/package.json +6 -0
  422. package/ui/html/package.json +6 -0
  423. package/ui/layout/package.json +6 -0
  424. package/ui/pages/dashboard/package.json +6 -0
  425. package/ui/pages/requests/package.json +6 -0
  426. package/ui/pages/stubs/package.json +6 -0
@@ -0,0 +1,490 @@
1
+ import { HttpApi } from "@effect/platform";
2
+ export declare const AdminApi: HttpApi.HttpApi<"admin", import("@effect/platform/HttpApiGroup").HttpApiGroup<"imposters", import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"createImposter", "POST", never, never, {
3
+ readonly name?: (string & import("effect/Brand").Brand<"NonEmptyString">) | undefined;
4
+ readonly port?: (number & import("effect/Brand").Brand<"PortNumber">) | undefined;
5
+ readonly protocol: "HTTP";
6
+ readonly adminPath: string;
7
+ readonly proxy?: {
8
+ readonly targetUrl: string;
9
+ readonly mode: "passthrough" | "record";
10
+ readonly addHeaders?: {
11
+ readonly [x: string]: string;
12
+ } | undefined;
13
+ readonly removeHeaders: readonly string[];
14
+ readonly followRedirects: boolean;
15
+ readonly timeout: number;
16
+ } | undefined;
17
+ }, never, {
18
+ readonly status: "running" | "stopped" | "starting" | "stopping";
19
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
20
+ readonly name: string & import("effect/Brand").Brand<"NonEmptyString">;
21
+ readonly port: number & import("effect/Brand").Brand<"PortNumber">;
22
+ readonly protocol: "HTTP";
23
+ readonly adminPath: string & import("effect/Brand").Brand<"NonEmptyString">;
24
+ readonly proxy?: {
25
+ readonly targetUrl: string;
26
+ readonly mode: "passthrough" | "record";
27
+ readonly addHeaders?: {
28
+ readonly [x: string]: string;
29
+ } | undefined;
30
+ readonly removeHeaders: readonly string[];
31
+ readonly followRedirects: boolean;
32
+ readonly timeout: number;
33
+ } | undefined;
34
+ readonly createdAt: import("effect/DateTime").Utc;
35
+ readonly endpointCount: number;
36
+ readonly adminUrl: string & import("effect/Brand").Brand<"NonEmptyString">;
37
+ readonly uptime?: string | undefined;
38
+ readonly endpoints?: readonly {
39
+ readonly method: string & import("effect/Brand").Brand<"NonEmptyString">;
40
+ readonly path: string & import("effect/Brand").Brand<"NonEmptyString">;
41
+ readonly status: number;
42
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
43
+ readonly hasDelay: boolean;
44
+ readonly delayMs?: number | undefined;
45
+ }[] | undefined;
46
+ readonly statistics?: {
47
+ readonly totalRequests: number;
48
+ readonly requestsPerMinute: number;
49
+ readonly averageResponseTime: number;
50
+ readonly errorRate: number;
51
+ readonly requestsByMethod: {
52
+ readonly [x: string]: number;
53
+ };
54
+ readonly requestsByStatusCode: {
55
+ readonly [x: string]: number;
56
+ };
57
+ readonly lastRequestAt?: import("effect/DateTime").Utc | undefined;
58
+ readonly p50ResponseTime?: number | undefined;
59
+ readonly p95ResponseTime?: number | undefined;
60
+ readonly p99ResponseTime?: number | undefined;
61
+ } | undefined;
62
+ }, import("./ApiErrors").ApiConflictError | import("./ApiErrors").ApiServiceError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"listImposters", "GET", never, {
63
+ readonly limit: number;
64
+ readonly offset: number;
65
+ readonly status?: "running" | "stopped" | "starting" | "stopping" | undefined;
66
+ readonly protocol?: "HTTP" | undefined;
67
+ }, never, never, {
68
+ readonly pagination: {
69
+ readonly limit: number & import("effect/Brand").Brand<"PositiveInteger">;
70
+ readonly offset: number;
71
+ readonly total: number;
72
+ readonly hasMore: boolean;
73
+ };
74
+ readonly imposters: readonly {
75
+ readonly status: "running" | "stopped" | "starting" | "stopping";
76
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
77
+ readonly name: string & import("effect/Brand").Brand<"NonEmptyString">;
78
+ readonly port: number & import("effect/Brand").Brand<"PortNumber">;
79
+ readonly protocol: "HTTP";
80
+ readonly adminPath: string & import("effect/Brand").Brand<"NonEmptyString">;
81
+ readonly proxy?: {
82
+ readonly targetUrl: string;
83
+ readonly mode: "passthrough" | "record";
84
+ readonly addHeaders?: {
85
+ readonly [x: string]: string;
86
+ } | undefined;
87
+ readonly removeHeaders: readonly string[];
88
+ readonly followRedirects: boolean;
89
+ readonly timeout: number;
90
+ } | undefined;
91
+ readonly createdAt: import("effect/DateTime").Utc;
92
+ readonly endpointCount: number;
93
+ readonly adminUrl: string & import("effect/Brand").Brand<"NonEmptyString">;
94
+ readonly uptime?: string | undefined;
95
+ readonly endpoints?: readonly {
96
+ readonly method: string & import("effect/Brand").Brand<"NonEmptyString">;
97
+ readonly path: string & import("effect/Brand").Brand<"NonEmptyString">;
98
+ readonly status: number;
99
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
100
+ readonly hasDelay: boolean;
101
+ readonly delayMs?: number | undefined;
102
+ }[] | undefined;
103
+ readonly statistics?: {
104
+ readonly totalRequests: number;
105
+ readonly requestsPerMinute: number;
106
+ readonly averageResponseTime: number;
107
+ readonly errorRate: number;
108
+ readonly requestsByMethod: {
109
+ readonly [x: string]: number;
110
+ };
111
+ readonly requestsByStatusCode: {
112
+ readonly [x: string]: number;
113
+ };
114
+ readonly lastRequestAt?: import("effect/DateTime").Utc | undefined;
115
+ readonly p50ResponseTime?: number | undefined;
116
+ readonly p95ResponseTime?: number | undefined;
117
+ readonly p99ResponseTime?: number | undefined;
118
+ } | undefined;
119
+ }[];
120
+ }, never, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"getImposter", "GET", {
121
+ readonly id: string;
122
+ }, never, never, never, {
123
+ readonly status: "running" | "stopped" | "starting" | "stopping";
124
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
125
+ readonly name: string & import("effect/Brand").Brand<"NonEmptyString">;
126
+ readonly port: number & import("effect/Brand").Brand<"PortNumber">;
127
+ readonly protocol: "HTTP";
128
+ readonly adminPath: string & import("effect/Brand").Brand<"NonEmptyString">;
129
+ readonly proxy?: {
130
+ readonly targetUrl: string;
131
+ readonly mode: "passthrough" | "record";
132
+ readonly addHeaders?: {
133
+ readonly [x: string]: string;
134
+ } | undefined;
135
+ readonly removeHeaders: readonly string[];
136
+ readonly followRedirects: boolean;
137
+ readonly timeout: number;
138
+ } | undefined;
139
+ readonly createdAt: import("effect/DateTime").Utc;
140
+ readonly endpointCount: number;
141
+ readonly adminUrl: string & import("effect/Brand").Brand<"NonEmptyString">;
142
+ readonly uptime?: string | undefined;
143
+ readonly endpoints?: readonly {
144
+ readonly method: string & import("effect/Brand").Brand<"NonEmptyString">;
145
+ readonly path: string & import("effect/Brand").Brand<"NonEmptyString">;
146
+ readonly status: number;
147
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
148
+ readonly hasDelay: boolean;
149
+ readonly delayMs?: number | undefined;
150
+ }[] | undefined;
151
+ readonly statistics?: {
152
+ readonly totalRequests: number;
153
+ readonly requestsPerMinute: number;
154
+ readonly averageResponseTime: number;
155
+ readonly errorRate: number;
156
+ readonly requestsByMethod: {
157
+ readonly [x: string]: number;
158
+ };
159
+ readonly requestsByStatusCode: {
160
+ readonly [x: string]: number;
161
+ };
162
+ readonly lastRequestAt?: import("effect/DateTime").Utc | undefined;
163
+ readonly p50ResponseTime?: number | undefined;
164
+ readonly p95ResponseTime?: number | undefined;
165
+ readonly p99ResponseTime?: number | undefined;
166
+ } | undefined;
167
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"updateImposter", "PATCH", {
168
+ readonly id: string;
169
+ }, never, {
170
+ readonly status?: "running" | "stopped" | "starting" | "stopping" | undefined;
171
+ readonly name?: (string & import("effect/Brand").Brand<"NonEmptyString">) | undefined;
172
+ readonly port?: (number & import("effect/Brand").Brand<"PortNumber">) | undefined;
173
+ readonly adminPath?: string | undefined;
174
+ readonly proxy?: {
175
+ readonly targetUrl: string;
176
+ readonly mode: "passthrough" | "record";
177
+ readonly addHeaders?: {
178
+ readonly [x: string]: string;
179
+ } | undefined;
180
+ readonly removeHeaders: readonly string[];
181
+ readonly followRedirects: boolean;
182
+ readonly timeout: number;
183
+ } | null | undefined;
184
+ }, never, {
185
+ readonly status: "running" | "stopped" | "starting" | "stopping";
186
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
187
+ readonly name: string & import("effect/Brand").Brand<"NonEmptyString">;
188
+ readonly port: number & import("effect/Brand").Brand<"PortNumber">;
189
+ readonly protocol: "HTTP";
190
+ readonly adminPath: string & import("effect/Brand").Brand<"NonEmptyString">;
191
+ readonly proxy?: {
192
+ readonly targetUrl: string;
193
+ readonly mode: "passthrough" | "record";
194
+ readonly addHeaders?: {
195
+ readonly [x: string]: string;
196
+ } | undefined;
197
+ readonly removeHeaders: readonly string[];
198
+ readonly followRedirects: boolean;
199
+ readonly timeout: number;
200
+ } | undefined;
201
+ readonly createdAt: import("effect/DateTime").Utc;
202
+ readonly endpointCount: number;
203
+ readonly adminUrl: string & import("effect/Brand").Brand<"NonEmptyString">;
204
+ readonly uptime?: string | undefined;
205
+ readonly endpoints?: readonly {
206
+ readonly method: string & import("effect/Brand").Brand<"NonEmptyString">;
207
+ readonly path: string & import("effect/Brand").Brand<"NonEmptyString">;
208
+ readonly status: number;
209
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
210
+ readonly hasDelay: boolean;
211
+ readonly delayMs?: number | undefined;
212
+ }[] | undefined;
213
+ readonly statistics?: {
214
+ readonly totalRequests: number;
215
+ readonly requestsPerMinute: number;
216
+ readonly averageResponseTime: number;
217
+ readonly errorRate: number;
218
+ readonly requestsByMethod: {
219
+ readonly [x: string]: number;
220
+ };
221
+ readonly requestsByStatusCode: {
222
+ readonly [x: string]: number;
223
+ };
224
+ readonly lastRequestAt?: import("effect/DateTime").Utc | undefined;
225
+ readonly p50ResponseTime?: number | undefined;
226
+ readonly p95ResponseTime?: number | undefined;
227
+ readonly p99ResponseTime?: number | undefined;
228
+ } | undefined;
229
+ }, import("./ApiErrors").ApiNotFoundError | import("./ApiErrors").ApiConflictError | import("./ApiErrors").ApiServiceError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"deleteImposter", "DELETE", {
230
+ readonly id: string;
231
+ }, {
232
+ readonly force: boolean;
233
+ }, never, never, {
234
+ readonly message: string & import("effect/Brand").Brand<"NonEmptyString">;
235
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
236
+ readonly deletedAt: import("effect/DateTime").Utc;
237
+ }, import("./ApiErrors").ApiNotFoundError | import("./ApiErrors").ApiConflictError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"addStub", "POST", {
238
+ readonly imposterId: string;
239
+ }, never, {
240
+ readonly predicates: readonly {
241
+ readonly field: "method" | "headers" | "body" | "path" | "query";
242
+ readonly value: unknown;
243
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
244
+ readonly caseSensitive: boolean;
245
+ }[];
246
+ readonly responses: readonly [{
247
+ readonly headers?: {
248
+ readonly [x: string]: string;
249
+ } | undefined;
250
+ readonly body?: unknown;
251
+ readonly status: number;
252
+ readonly delay?: number | undefined;
253
+ }, ...{
254
+ readonly headers?: {
255
+ readonly [x: string]: string;
256
+ } | undefined;
257
+ readonly body?: unknown;
258
+ readonly status: number;
259
+ readonly delay?: number | undefined;
260
+ }[]];
261
+ readonly responseMode: "sequential" | "random" | "repeat";
262
+ }, never, {
263
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
264
+ readonly predicates: readonly {
265
+ readonly field: "method" | "headers" | "body" | "path" | "query";
266
+ readonly value: unknown;
267
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
268
+ readonly caseSensitive: boolean;
269
+ }[];
270
+ readonly responses: readonly [{
271
+ readonly headers?: {
272
+ readonly [x: string]: string;
273
+ } | undefined;
274
+ readonly body?: unknown;
275
+ readonly status: number;
276
+ readonly delay?: number | undefined;
277
+ }, ...{
278
+ readonly headers?: {
279
+ readonly [x: string]: string;
280
+ } | undefined;
281
+ readonly body?: unknown;
282
+ readonly status: number;
283
+ readonly delay?: number | undefined;
284
+ }[]];
285
+ readonly responseMode: "sequential" | "random" | "repeat";
286
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"listStubs", "GET", {
287
+ readonly imposterId: string;
288
+ }, never, never, never, readonly {
289
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
290
+ readonly predicates: readonly {
291
+ readonly field: "method" | "headers" | "body" | "path" | "query";
292
+ readonly value: unknown;
293
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
294
+ readonly caseSensitive: boolean;
295
+ }[];
296
+ readonly responses: readonly [{
297
+ readonly headers?: {
298
+ readonly [x: string]: string;
299
+ } | undefined;
300
+ readonly body?: unknown;
301
+ readonly status: number;
302
+ readonly delay?: number | undefined;
303
+ }, ...{
304
+ readonly headers?: {
305
+ readonly [x: string]: string;
306
+ } | undefined;
307
+ readonly body?: unknown;
308
+ readonly status: number;
309
+ readonly delay?: number | undefined;
310
+ }[]];
311
+ readonly responseMode: "sequential" | "random" | "repeat";
312
+ }[], import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"updateStub", "PUT", {
313
+ readonly imposterId: string;
314
+ readonly stubId: string;
315
+ }, never, {
316
+ readonly predicates?: readonly {
317
+ readonly field: "method" | "headers" | "body" | "path" | "query";
318
+ readonly value: unknown;
319
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
320
+ readonly caseSensitive: boolean;
321
+ }[] | undefined;
322
+ readonly responses?: readonly [{
323
+ readonly headers?: {
324
+ readonly [x: string]: string;
325
+ } | undefined;
326
+ readonly body?: unknown;
327
+ readonly status: number;
328
+ readonly delay?: number | undefined;
329
+ }, ...{
330
+ readonly headers?: {
331
+ readonly [x: string]: string;
332
+ } | undefined;
333
+ readonly body?: unknown;
334
+ readonly status: number;
335
+ readonly delay?: number | undefined;
336
+ }[]] | undefined;
337
+ readonly responseMode?: "sequential" | "random" | "repeat" | undefined;
338
+ }, never, {
339
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
340
+ readonly predicates: readonly {
341
+ readonly field: "method" | "headers" | "body" | "path" | "query";
342
+ readonly value: unknown;
343
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
344
+ readonly caseSensitive: boolean;
345
+ }[];
346
+ readonly responses: readonly [{
347
+ readonly headers?: {
348
+ readonly [x: string]: string;
349
+ } | undefined;
350
+ readonly body?: unknown;
351
+ readonly status: number;
352
+ readonly delay?: number | undefined;
353
+ }, ...{
354
+ readonly headers?: {
355
+ readonly [x: string]: string;
356
+ } | undefined;
357
+ readonly body?: unknown;
358
+ readonly status: number;
359
+ readonly delay?: number | undefined;
360
+ }[]];
361
+ readonly responseMode: "sequential" | "random" | "repeat";
362
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"deleteStub", "DELETE", {
363
+ readonly imposterId: string;
364
+ readonly stubId: string;
365
+ }, never, never, never, {
366
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
367
+ readonly predicates: readonly {
368
+ readonly field: "method" | "headers" | "body" | "path" | "query";
369
+ readonly value: unknown;
370
+ readonly operator: "equals" | "contains" | "startsWith" | "matches" | "exists";
371
+ readonly caseSensitive: boolean;
372
+ }[];
373
+ readonly responses: readonly [{
374
+ readonly headers?: {
375
+ readonly [x: string]: string;
376
+ } | undefined;
377
+ readonly body?: unknown;
378
+ readonly status: number;
379
+ readonly delay?: number | undefined;
380
+ }, ...{
381
+ readonly headers?: {
382
+ readonly [x: string]: string;
383
+ } | undefined;
384
+ readonly body?: unknown;
385
+ readonly status: number;
386
+ readonly delay?: number | undefined;
387
+ }[]];
388
+ readonly responseMode: "sequential" | "random" | "repeat";
389
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"listRequests", "GET", {
390
+ readonly id: string;
391
+ }, {
392
+ readonly method?: string | undefined;
393
+ readonly limit: number;
394
+ readonly path?: string | undefined;
395
+ readonly status?: number | undefined;
396
+ }, never, never, readonly {
397
+ readonly id: string & import("effect/Brand").Brand<"NonEmptyString">;
398
+ readonly response: {
399
+ readonly headers: {
400
+ readonly [x: string]: string;
401
+ };
402
+ readonly body?: string | undefined;
403
+ readonly status: number;
404
+ readonly matchedStubId?: (string & import("effect/Brand").Brand<"NonEmptyString">) | undefined;
405
+ readonly proxied: boolean;
406
+ };
407
+ readonly timestamp: import("effect/DateTime").Utc;
408
+ readonly imposterId: string & import("effect/Brand").Brand<"NonEmptyString">;
409
+ readonly request: {
410
+ readonly method: string;
411
+ readonly headers: {
412
+ readonly [x: string]: string;
413
+ };
414
+ readonly body?: unknown;
415
+ readonly path: string;
416
+ readonly query: {
417
+ readonly [x: string]: string;
418
+ };
419
+ };
420
+ readonly duration: number;
421
+ }[], import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"clearRequests", "DELETE", {
422
+ readonly id: string;
423
+ }, never, never, never, {
424
+ readonly message: string;
425
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"getImposterStats", "GET", {
426
+ readonly id: string;
427
+ }, never, never, never, {
428
+ readonly totalRequests: number;
429
+ readonly requestsPerMinute: number;
430
+ readonly averageResponseTime: number;
431
+ readonly errorRate: number;
432
+ readonly requestsByMethod: {
433
+ readonly [x: string]: number;
434
+ };
435
+ readonly requestsByStatusCode: {
436
+ readonly [x: string]: number;
437
+ };
438
+ readonly lastRequestAt?: import("effect/DateTime").Utc | undefined;
439
+ readonly p50ResponseTime?: number | undefined;
440
+ readonly p95ResponseTime?: number | undefined;
441
+ readonly p99ResponseTime?: number | undefined;
442
+ }, import("./ApiErrors").ApiNotFoundError, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"resetImposterStats", "DELETE", {
443
+ readonly id: string;
444
+ }, never, never, never, {
445
+ readonly message: string;
446
+ }, import("./ApiErrors").ApiNotFoundError, never, never>, never, never, false> | import("@effect/platform/HttpApiGroup").HttpApiGroup<"system", import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"healthCheck", "GET", never, never, never, never, {
447
+ readonly status: "healthy" | "unhealthy";
448
+ readonly uptime: string;
449
+ readonly timestamp: import("effect/DateTime").Utc;
450
+ readonly version: string & import("effect/Brand").Brand<"NonEmptyString">;
451
+ readonly system: {
452
+ readonly imposters: {
453
+ readonly running: number;
454
+ readonly stopped: number;
455
+ readonly total: number;
456
+ };
457
+ readonly memory: {
458
+ readonly used: string & import("effect/Brand").Brand<"NonEmptyString">;
459
+ readonly free: string & import("effect/Brand").Brand<"NonEmptyString">;
460
+ };
461
+ readonly ports: {
462
+ readonly available: number;
463
+ readonly allocated: number;
464
+ };
465
+ };
466
+ }, never, never, never> | import("@effect/platform/HttpApiEndpoint").HttpApiEndpoint<"serverInfo", "GET", never, never, never, never, {
467
+ readonly server: {
468
+ readonly name: string & import("effect/Brand").Brand<"NonEmptyString">;
469
+ readonly version: string & import("effect/Brand").Brand<"NonEmptyString">;
470
+ readonly buildTime: import("effect/DateTime").Utc;
471
+ readonly platform: string & import("effect/Brand").Brand<"NonEmptyString">;
472
+ readonly protocols: readonly "HTTP"[];
473
+ };
474
+ readonly configuration: {
475
+ readonly maxImposters: number;
476
+ readonly portRange: {
477
+ readonly min: number & import("effect/Brand").Brand<"PortNumber">;
478
+ readonly max: number & import("effect/Brand").Brand<"PortNumber">;
479
+ };
480
+ readonly defaultTimeout: number;
481
+ readonly logLevel: "error" | "debug" | "info" | "warn";
482
+ };
483
+ readonly features: {
484
+ readonly openApiGeneration: boolean;
485
+ readonly clientGeneration: boolean;
486
+ readonly authentication: boolean;
487
+ readonly clustering: boolean;
488
+ };
489
+ }, never, never, never>, never, never, true>, import("@effect/platform/HttpApiError").HttpApiDecodeError, never>;
490
+ //# sourceMappingURL=AdminApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminApi.d.ts","sourceRoot":"","sources":["../../../src/api/AdminApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAI1C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gHAEF,CAAA"}
@@ -0,0 +1,26 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const ApiNotFoundError_base: Schema.TaggedErrorClass<ApiNotFoundError, "ApiNotFoundError", {
3
+ readonly _tag: Schema.tag<"ApiNotFoundError">;
4
+ } & {
5
+ message: typeof Schema.String;
6
+ resourceType: typeof Schema.String;
7
+ resourceId: typeof Schema.String;
8
+ }>;
9
+ export declare class ApiNotFoundError extends ApiNotFoundError_base {
10
+ }
11
+ declare const ApiConflictError_base: Schema.TaggedErrorClass<ApiConflictError, "ApiConflictError", {
12
+ readonly _tag: Schema.tag<"ApiConflictError">;
13
+ } & {
14
+ message: typeof Schema.String;
15
+ }>;
16
+ export declare class ApiConflictError extends ApiConflictError_base {
17
+ }
18
+ declare const ApiServiceError_base: Schema.TaggedErrorClass<ApiServiceError, "ApiServiceError", {
19
+ readonly _tag: Schema.tag<"ApiServiceError">;
20
+ } & {
21
+ message: typeof Schema.String;
22
+ }>;
23
+ export declare class ApiServiceError extends ApiServiceError_base {
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=ApiErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiErrors.d.ts","sourceRoot":"","sources":["../../../src/api/ApiErrors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;;;;AAEvC,qBAAa,gBAAiB,SAAQ,qBAIrC;CAAG;;;;;;AAEJ,qBAAa,gBAAiB,SAAQ,qBAIrC;CAAG;;;;;;AAEJ,qBAAa,eAAgB,SAAQ,oBAIpC;CAAG"}
@@ -0,0 +1,36 @@
1
+ import * as Schema from "effect/Schema";
2
+ export declare const PaginationUrlParams: Schema.Struct<{
3
+ limit: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.NumberFromString>>, {
4
+ default: () => number;
5
+ }>;
6
+ offset: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.NumberFromString>>, {
7
+ default: () => number;
8
+ }>;
9
+ }>;
10
+ export declare const ListImpostersUrlParams: Schema.Struct<{
11
+ status: Schema.optional<Schema.Literal<["running", "stopped", "starting", "stopping"]>>;
12
+ protocol: Schema.optional<Schema.Literal<["HTTP"]>>;
13
+ limit: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.NumberFromString>>, {
14
+ default: () => number;
15
+ }>;
16
+ offset: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.NumberFromString>>, {
17
+ default: () => number;
18
+ }>;
19
+ }>;
20
+ export type ListImpostersUrlParams = Schema.Schema.Type<typeof ListImpostersUrlParams>;
21
+ export declare const DeleteImposterUrlParams: Schema.Struct<{
22
+ force: Schema.optionalWith<typeof Schema.BooleanFromString, {
23
+ default: () => false;
24
+ }>;
25
+ }>;
26
+ export type DeleteImposterUrlParams = Schema.Schema.Type<typeof DeleteImposterUrlParams>;
27
+ export declare const ListRequestsUrlParams: Schema.Struct<{
28
+ limit: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.NumberFromString>>, {
29
+ default: () => number;
30
+ }>;
31
+ method: Schema.optional<typeof Schema.String>;
32
+ path: Schema.optional<typeof Schema.String>;
33
+ status: Schema.optional<typeof Schema.NumberFromString>;
34
+ }>;
35
+ export type ListRequestsUrlParams = Schema.Schema.Type<typeof ListRequestsUrlParams>;
36
+ //# sourceMappingURL=ApiSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiSchemas.d.ts","sourceRoot":"","sources":["../../../src/api/ApiSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,eAAO,MAAM,mBAAmB;;;;;;;EAS9B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAIjC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAEtF,eAAO,MAAM,uBAAuB;;;;EAElC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAExF,eAAO,MAAM,qBAAqB;;;;;;;EAQhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { ImposterRecord } from "../repositories/ImposterRepository";
3
+ import { type PaginationMeta } from "../schemas/common";
4
+ import type { ImposterResponse } from "../schemas/ImposterSchema";
5
+ export declare const toImposterResponse: (record: ImposterRecord) => Effect.Effect<ImposterResponse>;
6
+ export declare const buildPaginationMeta: (total: number, limit: number, offset: number) => PaginationMeta;
7
+ //# sourceMappingURL=Conversions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Conversions.d.ts","sourceRoot":"","sources":["../../../src/api/Conversions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAkB,KAAK,cAAc,EAA+B,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,eAAO,MAAM,kBAAkB,GAAI,QAAQ,cAAc,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAkBtF,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,cAKjF,CAAA"}