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,142 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { PortNumber } from "./common";
3
+ export declare const ImposterConfig: Schema.Struct<{
4
+ name: Schema.optional<Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">>;
5
+ port: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
6
+ stubs: Schema.optionalWith<Schema.Array$<Schema.Struct<{
7
+ predicates: Schema.optionalWith<Schema.Array$<Schema.Struct<{
8
+ field: Schema.Literal<["method", "path", "headers", "query", "body"]>;
9
+ operator: Schema.Literal<["equals", "contains", "startsWith", "matches", "exists"]>;
10
+ value: typeof Schema.Unknown;
11
+ caseSensitive: Schema.optionalWith<typeof Schema.Boolean, {
12
+ default: () => true;
13
+ }>;
14
+ }>>, {
15
+ default: () => readonly [];
16
+ }>;
17
+ responses: Schema.NonEmptyArray<Schema.Struct<{
18
+ status: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
19
+ default: () => number;
20
+ }>;
21
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
22
+ body: Schema.optional<typeof Schema.Unknown>;
23
+ delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
24
+ }>>;
25
+ responseMode: Schema.optionalWith<Schema.Literal<["sequential", "random", "repeat"]>, {
26
+ default: () => "sequential";
27
+ }>;
28
+ }>>, {
29
+ default: () => never[];
30
+ }>;
31
+ proxy: Schema.optional<Schema.Struct<{
32
+ targetUrl: Schema.filter<typeof Schema.String>;
33
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
34
+ default: () => "passthrough";
35
+ }>;
36
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
37
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
38
+ default: () => readonly [];
39
+ }>;
40
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
41
+ default: () => true;
42
+ }>;
43
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
44
+ default: () => number;
45
+ }>;
46
+ }>>;
47
+ }>;
48
+ export type ImposterConfig = Schema.Schema.Type<typeof ImposterConfig>;
49
+ export declare const AdminConfig: Schema.Struct<{
50
+ port: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
51
+ default: () => Schema.Schema.Type<typeof PortNumber>;
52
+ }>;
53
+ portRangeMin: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
54
+ default: () => Schema.Schema.Type<typeof PortNumber>;
55
+ }>;
56
+ portRangeMax: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
57
+ default: () => Schema.Schema.Type<typeof PortNumber>;
58
+ }>;
59
+ maxImposters: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
60
+ default: () => number;
61
+ }>;
62
+ logLevel: Schema.optionalWith<Schema.Literal<["debug", "info", "warn", "error"]>, {
63
+ default: () => "info";
64
+ }>;
65
+ }>;
66
+ export type AdminConfig = Schema.Schema.Type<typeof AdminConfig>;
67
+ export declare const ConfigFile: Schema.Struct<{
68
+ admin: Schema.optionalWith<Schema.Struct<{
69
+ port: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
70
+ default: () => Schema.Schema.Type<typeof PortNumber>;
71
+ }>;
72
+ portRangeMin: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
73
+ default: () => Schema.Schema.Type<typeof PortNumber>;
74
+ }>;
75
+ portRangeMax: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">, {
76
+ default: () => Schema.Schema.Type<typeof PortNumber>;
77
+ }>;
78
+ maxImposters: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
79
+ default: () => number;
80
+ }>;
81
+ logLevel: Schema.optionalWith<Schema.Literal<["debug", "info", "warn", "error"]>, {
82
+ default: () => "info";
83
+ }>;
84
+ }>, {
85
+ default: () => {
86
+ readonly port: number & import("effect/Brand").Brand<"PortNumber">;
87
+ readonly maxImposters: number;
88
+ readonly logLevel: "error" | "debug" | "info" | "warn";
89
+ readonly portRangeMin: number & import("effect/Brand").Brand<"PortNumber">;
90
+ readonly portRangeMax: number & import("effect/Brand").Brand<"PortNumber">;
91
+ };
92
+ }>;
93
+ imposters: Schema.optionalWith<Schema.Array$<Schema.Struct<{
94
+ name: Schema.optional<Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">>;
95
+ port: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
96
+ stubs: Schema.optionalWith<Schema.Array$<Schema.Struct<{
97
+ predicates: Schema.optionalWith<Schema.Array$<Schema.Struct<{
98
+ field: Schema.Literal<["method", "path", "headers", "query", "body"]>;
99
+ operator: Schema.Literal<["equals", "contains", "startsWith", "matches", "exists"]>;
100
+ value: typeof Schema.Unknown;
101
+ caseSensitive: Schema.optionalWith<typeof Schema.Boolean, {
102
+ default: () => true;
103
+ }>;
104
+ }>>, {
105
+ default: () => readonly [];
106
+ }>;
107
+ responses: Schema.NonEmptyArray<Schema.Struct<{
108
+ status: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
109
+ default: () => number;
110
+ }>;
111
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
112
+ body: Schema.optional<typeof Schema.Unknown>;
113
+ delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
114
+ }>>;
115
+ responseMode: Schema.optionalWith<Schema.Literal<["sequential", "random", "repeat"]>, {
116
+ default: () => "sequential";
117
+ }>;
118
+ }>>, {
119
+ default: () => never[];
120
+ }>;
121
+ proxy: Schema.optional<Schema.Struct<{
122
+ targetUrl: Schema.filter<typeof Schema.String>;
123
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
124
+ default: () => "passthrough";
125
+ }>;
126
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
127
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
128
+ default: () => readonly [];
129
+ }>;
130
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
131
+ default: () => true;
132
+ }>;
133
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
134
+ default: () => number;
135
+ }>;
136
+ }>>;
137
+ }>>, {
138
+ default: () => never[];
139
+ }>;
140
+ }>;
141
+ export type ConfigFile = Schema.Schema.Type<typeof ConfigFile>;
142
+ //# sourceMappingURL=ConfigFileSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigFileSchema.d.ts","sourceRoot":"","sources":["../../../src/schemas/ConfigFileSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAkB,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKzB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA;AAEtE,eAAO,MAAM,WAAW;;uBACyC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;uBAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;uBACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;;;;;;EAS5G,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAA;AAEhE,eAAO,MAAM,UAAU;;;2BAd0C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;2BAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;2BACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe5G,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,CAAA"}
@@ -0,0 +1,368 @@
1
+ import * as Schema from "effect/Schema";
2
+ export declare const CreateImposterRequest: Schema.Struct<{
3
+ name: Schema.optional<Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">>;
4
+ port: Schema.optional<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">>;
5
+ protocol: Schema.optionalWith<Schema.Literal<["HTTP"]>, {
6
+ default: () => "HTTP";
7
+ }>;
8
+ adminPath: Schema.optionalWith<Schema.filter<typeof Schema.String>, {
9
+ default: () => string;
10
+ }>;
11
+ proxy: Schema.optional<Schema.Struct<{
12
+ targetUrl: Schema.filter<typeof Schema.String>;
13
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
14
+ default: () => "passthrough";
15
+ }>;
16
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
17
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
18
+ default: () => readonly [];
19
+ }>;
20
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
21
+ default: () => true;
22
+ }>;
23
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
24
+ default: () => number;
25
+ }>;
26
+ }>>;
27
+ }>;
28
+ export type CreateImposterRequest = Schema.Schema.Type<typeof CreateImposterRequest>;
29
+ export declare const UpdateImposterRequest: Schema.Struct<{
30
+ name: Schema.optional<Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">>;
31
+ status: Schema.optional<Schema.Literal<["running", "stopped", "starting", "stopping"]>>;
32
+ port: Schema.optional<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">>;
33
+ adminPath: Schema.optional<Schema.filter<typeof Schema.String>>;
34
+ proxy: Schema.optional<Schema.NullOr<Schema.Struct<{
35
+ targetUrl: Schema.filter<typeof Schema.String>;
36
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
37
+ default: () => "passthrough";
38
+ }>;
39
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
40
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
41
+ default: () => readonly [];
42
+ }>;
43
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
44
+ default: () => true;
45
+ }>;
46
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
47
+ default: () => number;
48
+ }>;
49
+ }>>>;
50
+ }>;
51
+ export type UpdateImposterRequest = Schema.Schema.Type<typeof UpdateImposterRequest>;
52
+ export declare const ListImpostersQuery: Schema.Struct<{
53
+ status: Schema.optional<Schema.Literal<["running", "stopped", "starting", "stopping"]>>;
54
+ protocol: Schema.optional<Schema.Literal<["HTTP"]>>;
55
+ limit: Schema.optionalWith<Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PositiveInteger">, {
56
+ default: () => number & import("effect/Brand").Brand<"PositiveInteger">;
57
+ }>;
58
+ offset: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
59
+ default: () => number;
60
+ }>;
61
+ }>;
62
+ export type ListImpostersQuery = Schema.Schema.Type<typeof ListImpostersQuery>;
63
+ export declare const CreateRouteRequest: Schema.Struct<{
64
+ path: Schema.filter<typeof Schema.String>;
65
+ method: Schema.optionalWith<Schema.Literal<["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]>, {
66
+ default: () => "GET";
67
+ }>;
68
+ response: Schema.Struct<{
69
+ status: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
70
+ default: () => number;
71
+ }>;
72
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
73
+ body: Schema.optional<typeof Schema.Unknown>;
74
+ }>;
75
+ delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
76
+ }>;
77
+ export type CreateRouteRequest = Schema.Schema.Type<typeof CreateRouteRequest>;
78
+ export declare const RouteResponse: Schema.Struct<{
79
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
80
+ path: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
81
+ method: Schema.Literal<["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]>;
82
+ response: Schema.Struct<{
83
+ status: Schema.filter<Schema.filter<typeof Schema.Number>>;
84
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
85
+ body: Schema.optional<typeof Schema.Unknown>;
86
+ }>;
87
+ delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
88
+ createdAt: typeof Schema.DateTimeUtc;
89
+ }>;
90
+ export type RouteResponse = Schema.Schema.Type<typeof RouteResponse>;
91
+ export declare const ListRoutesResponse: Schema.Struct<{
92
+ routes: Schema.Array$<Schema.Struct<{
93
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
94
+ path: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
95
+ method: Schema.Literal<["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]>;
96
+ response: Schema.Struct<{
97
+ status: Schema.filter<Schema.filter<typeof Schema.Number>>;
98
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
99
+ body: Schema.optional<typeof Schema.Unknown>;
100
+ }>;
101
+ delay: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
102
+ createdAt: typeof Schema.DateTimeUtc;
103
+ }>>;
104
+ pagination: Schema.Struct<{
105
+ total: Schema.filter<Schema.filter<typeof Schema.Number>>;
106
+ limit: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PositiveInteger">;
107
+ offset: Schema.filter<Schema.filter<typeof Schema.Number>>;
108
+ hasMore: typeof Schema.Boolean;
109
+ }>;
110
+ }>;
111
+ export type ListRoutesResponse = Schema.Schema.Type<typeof ListRoutesResponse>;
112
+ export declare const EndpointSummary: Schema.Struct<{
113
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
114
+ path: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
115
+ method: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
116
+ status: Schema.filter<Schema.filter<typeof Schema.Number>>;
117
+ hasDelay: typeof Schema.Boolean;
118
+ delayMs: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
119
+ }>;
120
+ export type EndpointSummary = Schema.Schema.Type<typeof EndpointSummary>;
121
+ export declare const Statistics: Schema.Struct<{
122
+ totalRequests: Schema.filter<Schema.filter<typeof Schema.Number>>;
123
+ requestsPerMinute: Schema.filter<typeof Schema.Number>;
124
+ averageResponseTime: Schema.filter<typeof Schema.Number>;
125
+ errorRate: Schema.filter<typeof Schema.Number>;
126
+ requestsByMethod: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
127
+ default: () => {};
128
+ }>;
129
+ requestsByStatusCode: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
130
+ default: () => {};
131
+ }>;
132
+ lastRequestAt: Schema.optional<typeof Schema.DateTimeUtc>;
133
+ p50ResponseTime: Schema.optional<typeof Schema.Number>;
134
+ p95ResponseTime: Schema.optional<typeof Schema.Number>;
135
+ p99ResponseTime: Schema.optional<typeof Schema.Number>;
136
+ }>;
137
+ export type Statistics = Schema.Schema.Type<typeof Statistics>;
138
+ export declare const ImposterResponse: Schema.Struct<{
139
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
140
+ name: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
141
+ port: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
142
+ protocol: Schema.Literal<["HTTP"]>;
143
+ status: Schema.Literal<["running", "stopped", "starting", "stopping"]>;
144
+ endpointCount: Schema.filter<Schema.filter<typeof Schema.Number>>;
145
+ createdAt: typeof Schema.DateTimeUtc;
146
+ adminUrl: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
147
+ adminPath: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
148
+ uptime: Schema.optional<typeof Schema.String>;
149
+ endpoints: Schema.optional<Schema.Array$<Schema.Struct<{
150
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
151
+ path: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
152
+ method: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
153
+ status: Schema.filter<Schema.filter<typeof Schema.Number>>;
154
+ hasDelay: typeof Schema.Boolean;
155
+ delayMs: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
156
+ }>>>;
157
+ statistics: Schema.optional<Schema.Struct<{
158
+ totalRequests: Schema.filter<Schema.filter<typeof Schema.Number>>;
159
+ requestsPerMinute: Schema.filter<typeof Schema.Number>;
160
+ averageResponseTime: Schema.filter<typeof Schema.Number>;
161
+ errorRate: Schema.filter<typeof Schema.Number>;
162
+ requestsByMethod: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
163
+ default: () => {};
164
+ }>;
165
+ requestsByStatusCode: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
166
+ default: () => {};
167
+ }>;
168
+ lastRequestAt: Schema.optional<typeof Schema.DateTimeUtc>;
169
+ p50ResponseTime: Schema.optional<typeof Schema.Number>;
170
+ p95ResponseTime: Schema.optional<typeof Schema.Number>;
171
+ p99ResponseTime: Schema.optional<typeof Schema.Number>;
172
+ }>>;
173
+ proxy: Schema.optional<Schema.Struct<{
174
+ targetUrl: Schema.filter<typeof Schema.String>;
175
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
176
+ default: () => "passthrough";
177
+ }>;
178
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
179
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
180
+ default: () => readonly [];
181
+ }>;
182
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
183
+ default: () => true;
184
+ }>;
185
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
186
+ default: () => number;
187
+ }>;
188
+ }>>;
189
+ }>;
190
+ export type ImposterResponse = Schema.Schema.Type<typeof ImposterResponse>;
191
+ export declare const ListImpostersResponse: Schema.Struct<{
192
+ imposters: Schema.Array$<Schema.Struct<{
193
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
194
+ name: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
195
+ port: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
196
+ protocol: Schema.Literal<["HTTP"]>;
197
+ status: Schema.Literal<["running", "stopped", "starting", "stopping"]>;
198
+ endpointCount: Schema.filter<Schema.filter<typeof Schema.Number>>;
199
+ createdAt: typeof Schema.DateTimeUtc;
200
+ adminUrl: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
201
+ adminPath: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
202
+ uptime: Schema.optional<typeof Schema.String>;
203
+ endpoints: Schema.optional<Schema.Array$<Schema.Struct<{
204
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
205
+ path: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
206
+ method: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
207
+ status: Schema.filter<Schema.filter<typeof Schema.Number>>;
208
+ hasDelay: typeof Schema.Boolean;
209
+ delayMs: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
210
+ }>>>;
211
+ statistics: Schema.optional<Schema.Struct<{
212
+ totalRequests: Schema.filter<Schema.filter<typeof Schema.Number>>;
213
+ requestsPerMinute: Schema.filter<typeof Schema.Number>;
214
+ averageResponseTime: Schema.filter<typeof Schema.Number>;
215
+ errorRate: Schema.filter<typeof Schema.Number>;
216
+ requestsByMethod: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
217
+ default: () => {};
218
+ }>;
219
+ requestsByStatusCode: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.Number>, {
220
+ default: () => {};
221
+ }>;
222
+ lastRequestAt: Schema.optional<typeof Schema.DateTimeUtc>;
223
+ p50ResponseTime: Schema.optional<typeof Schema.Number>;
224
+ p95ResponseTime: Schema.optional<typeof Schema.Number>;
225
+ p99ResponseTime: Schema.optional<typeof Schema.Number>;
226
+ }>>;
227
+ proxy: Schema.optional<Schema.Struct<{
228
+ targetUrl: Schema.filter<typeof Schema.String>;
229
+ mode: Schema.optionalWith<Schema.Literal<["passthrough", "record"]>, {
230
+ default: () => "passthrough";
231
+ }>;
232
+ addHeaders: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
233
+ removeHeaders: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
234
+ default: () => readonly [];
235
+ }>;
236
+ followRedirects: Schema.optionalWith<typeof Schema.Boolean, {
237
+ default: () => true;
238
+ }>;
239
+ timeout: Schema.optionalWith<Schema.filter<Schema.filter<typeof Schema.Number>>, {
240
+ default: () => number;
241
+ }>;
242
+ }>>;
243
+ }>>;
244
+ pagination: Schema.Struct<{
245
+ total: Schema.filter<Schema.filter<typeof Schema.Number>>;
246
+ limit: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PositiveInteger">;
247
+ offset: Schema.filter<Schema.filter<typeof Schema.Number>>;
248
+ hasMore: typeof Schema.Boolean;
249
+ }>;
250
+ }>;
251
+ export type ListImpostersResponse = Schema.Schema.Type<typeof ListImpostersResponse>;
252
+ export declare const DeleteImposterQuery: Schema.Struct<{
253
+ force: Schema.optionalWith<typeof Schema.Boolean, {
254
+ default: () => false;
255
+ }>;
256
+ }>;
257
+ export type DeleteImposterQuery = Schema.Schema.Type<typeof DeleteImposterQuery>;
258
+ export declare const DeleteImposterResponse: Schema.Struct<{
259
+ message: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
260
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
261
+ deletedAt: typeof Schema.DateTimeUtc;
262
+ }>;
263
+ export type DeleteImposterResponse = Schema.Schema.Type<typeof DeleteImposterResponse>;
264
+ export declare const MemoryInfo: Schema.Struct<{
265
+ used: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
266
+ free: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
267
+ }>;
268
+ export type MemoryInfo = Schema.Schema.Type<typeof MemoryInfo>;
269
+ export declare const ImpostersSummary: Schema.Struct<{
270
+ total: Schema.filter<Schema.filter<typeof Schema.Number>>;
271
+ running: Schema.filter<Schema.filter<typeof Schema.Number>>;
272
+ stopped: Schema.filter<Schema.filter<typeof Schema.Number>>;
273
+ }>;
274
+ export type ImpostersSummary = Schema.Schema.Type<typeof ImpostersSummary>;
275
+ export declare const PortsSummary: Schema.Struct<{
276
+ available: Schema.filter<Schema.filter<typeof Schema.Number>>;
277
+ allocated: Schema.filter<Schema.filter<typeof Schema.Number>>;
278
+ }>;
279
+ export type PortsSummary = Schema.Schema.Type<typeof PortsSummary>;
280
+ export declare const SystemInfo: Schema.Struct<{
281
+ memory: Schema.Struct<{
282
+ used: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
283
+ free: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
284
+ }>;
285
+ imposters: Schema.Struct<{
286
+ total: Schema.filter<Schema.filter<typeof Schema.Number>>;
287
+ running: Schema.filter<Schema.filter<typeof Schema.Number>>;
288
+ stopped: Schema.filter<Schema.filter<typeof Schema.Number>>;
289
+ }>;
290
+ ports: Schema.Struct<{
291
+ available: Schema.filter<Schema.filter<typeof Schema.Number>>;
292
+ allocated: Schema.filter<Schema.filter<typeof Schema.Number>>;
293
+ }>;
294
+ }>;
295
+ export type SystemInfo = Schema.Schema.Type<typeof SystemInfo>;
296
+ export declare const HealthResponse: Schema.Struct<{
297
+ status: Schema.Literal<["healthy", "unhealthy"]>;
298
+ timestamp: typeof Schema.DateTimeUtc;
299
+ version: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
300
+ uptime: typeof Schema.String;
301
+ system: Schema.Struct<{
302
+ memory: Schema.Struct<{
303
+ used: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
304
+ free: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
305
+ }>;
306
+ imposters: Schema.Struct<{
307
+ total: Schema.filter<Schema.filter<typeof Schema.Number>>;
308
+ running: Schema.filter<Schema.filter<typeof Schema.Number>>;
309
+ stopped: Schema.filter<Schema.filter<typeof Schema.Number>>;
310
+ }>;
311
+ ports: Schema.Struct<{
312
+ available: Schema.filter<Schema.filter<typeof Schema.Number>>;
313
+ allocated: Schema.filter<Schema.filter<typeof Schema.Number>>;
314
+ }>;
315
+ }>;
316
+ }>;
317
+ export type HealthResponse = Schema.Schema.Type<typeof HealthResponse>;
318
+ export declare const ServerConfiguration: Schema.Struct<{
319
+ maxImposters: Schema.filter<Schema.filter<typeof Schema.Number>>;
320
+ portRange: Schema.Struct<{
321
+ min: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
322
+ max: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
323
+ }>;
324
+ defaultTimeout: Schema.filter<Schema.filter<typeof Schema.Number>>;
325
+ logLevel: Schema.Literal<["debug", "info", "warn", "error"]>;
326
+ }>;
327
+ export type ServerConfiguration = Schema.Schema.Type<typeof ServerConfiguration>;
328
+ export declare const ServerFeatures: Schema.Struct<{
329
+ openApiGeneration: typeof Schema.Boolean;
330
+ clientGeneration: typeof Schema.Boolean;
331
+ authentication: typeof Schema.Boolean;
332
+ clustering: typeof Schema.Boolean;
333
+ }>;
334
+ export type ServerFeatures = Schema.Schema.Type<typeof ServerFeatures>;
335
+ export declare const ServerInfo: Schema.Struct<{
336
+ name: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
337
+ version: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
338
+ buildTime: typeof Schema.DateTimeUtc;
339
+ platform: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
340
+ protocols: Schema.Array$<Schema.Literal<["HTTP"]>>;
341
+ }>;
342
+ export type ServerInfo = Schema.Schema.Type<typeof ServerInfo>;
343
+ export declare const ServerInfoResponse: Schema.Struct<{
344
+ server: Schema.Struct<{
345
+ name: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
346
+ version: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
347
+ buildTime: typeof Schema.DateTimeUtc;
348
+ platform: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
349
+ protocols: Schema.Array$<Schema.Literal<["HTTP"]>>;
350
+ }>;
351
+ configuration: Schema.Struct<{
352
+ maxImposters: Schema.filter<Schema.filter<typeof Schema.Number>>;
353
+ portRange: Schema.Struct<{
354
+ min: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
355
+ max: Schema.brand<Schema.filter<Schema.filter<typeof Schema.Number>>, "PortNumber">;
356
+ }>;
357
+ defaultTimeout: Schema.filter<Schema.filter<typeof Schema.Number>>;
358
+ logLevel: Schema.Literal<["debug", "info", "warn", "error"]>;
359
+ }>;
360
+ features: Schema.Struct<{
361
+ openApiGeneration: typeof Schema.Boolean;
362
+ clientGeneration: typeof Schema.Boolean;
363
+ authentication: typeof Schema.Boolean;
364
+ clustering: typeof Schema.Boolean;
365
+ }>;
366
+ }>;
367
+ export type ServerInfoResponse = Schema.Schema.Type<typeof ServerInfoResponse>;
368
+ //# sourceMappingURL=ImposterSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImposterSchema.d.ts","sourceRoot":"","sources":["../../../src/schemas/ImposterSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import * as Schema from "effect/Schema";
2
+ export declare const RequestLogEntry: Schema.Struct<{
3
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
4
+ imposterId: Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">;
5
+ timestamp: typeof Schema.DateTimeUtc;
6
+ request: Schema.Struct<{
7
+ method: typeof Schema.String;
8
+ path: typeof Schema.String;
9
+ headers: Schema.Record$<typeof Schema.String, typeof Schema.String>;
10
+ query: Schema.Record$<typeof Schema.String, typeof Schema.String>;
11
+ body: Schema.optional<typeof Schema.Unknown>;
12
+ }>;
13
+ response: Schema.Struct<{
14
+ status: typeof Schema.Number;
15
+ headers: Schema.optionalWith<Schema.Record$<typeof Schema.String, typeof Schema.String>, {
16
+ default: () => {};
17
+ }>;
18
+ body: Schema.optional<typeof Schema.String>;
19
+ matchedStubId: Schema.optional<Schema.brand<Schema.filter<typeof Schema.String>, "NonEmptyString">>;
20
+ proxied: Schema.optionalWith<typeof Schema.Boolean, {
21
+ default: () => false;
22
+ }>;
23
+ }>;
24
+ duration: typeof Schema.Number;
25
+ }>;
26
+ export type RequestLogEntry = Schema.Schema.Type<typeof RequestLogEntry>;
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=RequestLogSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestLogSchema.d.ts","sourceRoot":"","sources":["../../../src/schemas/RequestLogSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;EAsB1B,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,qBAAqB;;;;;;;EAQhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAA"}