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,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RequestLogEntry = exports.ListRequestsUrlParams = void 0;
7
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
8
+ var _common = require("./common");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ const RequestLogEntry = exports.RequestLogEntry = /*#__PURE__*/Schema.Struct({
11
+ id: _common.NonEmptyString,
12
+ imposterId: _common.NonEmptyString,
13
+ timestamp: Schema.DateTimeUtc,
14
+ request: /*#__PURE__*/Schema.Struct({
15
+ method: Schema.String,
16
+ path: Schema.String,
17
+ headers: /*#__PURE__*/Schema.Record({
18
+ key: Schema.String,
19
+ value: Schema.String
20
+ }),
21
+ query: /*#__PURE__*/Schema.Record({
22
+ key: Schema.String,
23
+ value: Schema.String
24
+ }),
25
+ body: /*#__PURE__*/Schema.optional(Schema.Unknown)
26
+ }),
27
+ response: /*#__PURE__*/Schema.Struct({
28
+ status: Schema.Number,
29
+ headers: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Record({
30
+ key: Schema.String,
31
+ value: Schema.String
32
+ }), {
33
+ default: () => ({})
34
+ }),
35
+ body: /*#__PURE__*/Schema.optional(Schema.String),
36
+ matchedStubId: /*#__PURE__*/Schema.optional(_common.NonEmptyString),
37
+ proxied: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
38
+ default: () => false
39
+ })
40
+ }),
41
+ duration: Schema.Number
42
+ });
43
+ const ListRequestsUrlParams = exports.ListRequestsUrlParams = /*#__PURE__*/Schema.Struct({
44
+ limit: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.NumberFromString.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()), {
45
+ default: () => 50
46
+ }),
47
+ method: /*#__PURE__*/Schema.optional(Schema.String),
48
+ path: /*#__PURE__*/Schema.optional(Schema.String),
49
+ status: /*#__PURE__*/Schema.optional(Schema.NumberFromString)
50
+ });
51
+ //# sourceMappingURL=RequestLogSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestLogSchema.js","names":["Schema","_interopRequireWildcard","require","_common","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RequestLogEntry","exports","Struct","id","NonEmptyString","imposterId","timestamp","DateTimeUtc","request","method","String","path","headers","Record","key","value","query","body","optional","Unknown","response","status","Number","optionalWith","matchedStubId","proxied","Boolean","duration","ListRequestsUrlParams","limit","NumberFromString","pipe","int","positive"],"sources":["../../../src/schemas/RequestLogSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UpdateStubRequest = exports.Stub = exports.ResponseMode = exports.ResponseConfig = exports.ProxyMode = exports.ProxyConfig = exports.PredicateOperator = exports.PredicateField = exports.Predicate = exports.CreateStubRequest = void 0;
7
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
8
+ var _common = require("./common");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ // Proxy Mode
11
+ const ProxyMode = exports.ProxyMode = /*#__PURE__*/Schema.Literal("passthrough", "record");
12
+ // Proxy Configuration
13
+ const ProxyConfig = exports.ProxyConfig = /*#__PURE__*/Schema.Struct({
14
+ targetUrl: /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.pattern(/^https?:\/\//)),
15
+ mode: /*#__PURE__*/Schema.optionalWith(ProxyMode, {
16
+ default: () => "passthrough"
17
+ }),
18
+ addHeaders: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
19
+ key: Schema.String,
20
+ value: Schema.String
21
+ })),
22
+ removeHeaders: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(Schema.String), {
23
+ default: () => []
24
+ }),
25
+ followRedirects: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
26
+ default: () => true
27
+ }),
28
+ timeout: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 60000)), {
29
+ default: () => 10000
30
+ })
31
+ });
32
+ // Predicate operators for matching incoming requests
33
+ const PredicateOperator = exports.PredicateOperator = /*#__PURE__*/Schema.Literal("equals", "contains", "startsWith", "matches", "exists");
34
+ // Which part of the request to match against
35
+ const PredicateField = exports.PredicateField = /*#__PURE__*/Schema.Literal("method", "path", "headers", "query", "body");
36
+ // A single predicate matcher
37
+ const Predicate = exports.Predicate = /*#__PURE__*/Schema.Struct({
38
+ field: PredicateField,
39
+ operator: PredicateOperator,
40
+ value: Schema.Unknown,
41
+ caseSensitive: /*#__PURE__*/Schema.optionalWith(Schema.Boolean, {
42
+ default: () => true
43
+ })
44
+ });
45
+ // How to cycle through responses
46
+ const ResponseMode = exports.ResponseMode = /*#__PURE__*/Schema.Literal("sequential", "random", "repeat");
47
+ // A single response configuration
48
+ const ResponseConfig = exports.ResponseConfig = /*#__PURE__*/Schema.Struct({
49
+ status: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(100, 599)), {
50
+ default: () => 200
51
+ }),
52
+ headers: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
53
+ key: Schema.String,
54
+ value: Schema.String
55
+ })),
56
+ body: /*#__PURE__*/Schema.optional(Schema.Unknown),
57
+ delay: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(0, 60000)))
58
+ });
59
+ // A stub: predicates (AND-combined) + responses (cycled)
60
+ const Stub = exports.Stub = /*#__PURE__*/Schema.Struct({
61
+ id: _common.NonEmptyString,
62
+ predicates: /*#__PURE__*/Schema.Array(Predicate),
63
+ responses: /*#__PURE__*/Schema.NonEmptyArray(ResponseConfig),
64
+ responseMode: /*#__PURE__*/Schema.optionalWith(ResponseMode, {
65
+ default: () => "sequential"
66
+ })
67
+ });
68
+ // API request to create a stub (id is auto-generated)
69
+ const CreateStubRequest = exports.CreateStubRequest = /*#__PURE__*/Schema.Struct({
70
+ predicates: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Array(Predicate), {
71
+ default: () => []
72
+ }),
73
+ responses: /*#__PURE__*/Schema.NonEmptyArray(ResponseConfig),
74
+ responseMode: /*#__PURE__*/Schema.optionalWith(ResponseMode, {
75
+ default: () => "sequential"
76
+ })
77
+ });
78
+ // API request to update a stub
79
+ const UpdateStubRequest = exports.UpdateStubRequest = /*#__PURE__*/Schema.Struct({
80
+ predicates: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Array(Predicate)),
81
+ responses: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.NonEmptyArray(ResponseConfig)),
82
+ responseMode: /*#__PURE__*/Schema.optional(ResponseMode)
83
+ });
84
+ //# sourceMappingURL=StubSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StubSchema.js","names":["Schema","_interopRequireWildcard","require","_common","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ProxyMode","exports","Literal","ProxyConfig","Struct","targetUrl","String","pipe","pattern","mode","optionalWith","addHeaders","optional","Record","key","value","removeHeaders","Array","followRedirects","Boolean","timeout","Number","int","between","PredicateOperator","PredicateField","Predicate","field","operator","Unknown","caseSensitive","ResponseMode","ResponseConfig","status","headers","body","delay","Stub","id","NonEmptyString","predicates","responses","NonEmptyArray","responseMode","CreateStubRequest","UpdateStubRequest"],"sources":["../../../src/schemas/StubSchema.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAAyC,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEzC;AACO,MAAMkB,SAAS,GAAAC,OAAA,CAAAD,SAAA,gBAAGvB,MAAM,CAACyB,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;AAGhE;AACO,MAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,gBAAG1B,MAAM,CAAC2B,MAAM,CAAC;EACvCC,SAAS,eAAE5B,MAAM,CAAC6B,MAAM,CAACC,IAAI,cAAC9B,MAAM,CAAC+B,OAAO,CAAC,cAAc,CAAC,CAAC;EAC7DC,IAAI,eAAEhC,MAAM,CAACiC,YAAY,CAACV,SAAS,EAAE;IAAET,OAAO,EAAEA,CAAA,KAAM;EAAsB,CAAE,CAAC;EAC/EoB,UAAU,eAAElC,MAAM,CAACmC,QAAQ,cAACnC,MAAM,CAACoC,MAAM,CAAC;IAAEC,GAAG,EAAErC,MAAM,CAAC6B,MAAM;IAAES,KAAK,EAAEtC,MAAM,CAAC6B;EAAM,CAAE,CAAC,CAAC;EACxFU,aAAa,eAAEvC,MAAM,CAACiC,YAAY,cAACjC,MAAM,CAACwC,KAAK,CAACxC,MAAM,CAAC6B,MAAM,CAAC,EAAE;IAAEf,OAAO,EAAEA,CAAA,KAAM;EAAW,CAAE,CAAC;EAC/F2B,eAAe,eAAEzC,MAAM,CAACiC,YAAY,CAACjC,MAAM,CAAC0C,OAAO,EAAE;IAAE5B,OAAO,EAAEA,CAAA,KAAM;EAAI,CAAE,CAAC;EAC7E6B,OAAO,eAAE3C,MAAM,CAACiC,YAAY,cAC1BjC,MAAM,CAAC4C,MAAM,CAACd,IAAI,cAAC9B,MAAM,CAAC6C,GAAG,EAAE,eAAE7C,MAAM,CAAC8C,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAC5D;IAAEhC,OAAO,EAAEA,CAAA,KAAM;EAAK,CAAE;CAE3B,CAAC;AAGF;AACO,MAAMiC,iBAAiB,GAAAvB,OAAA,CAAAuB,iBAAA,gBAAG/C,MAAM,CAACyB,OAAO,CAC7C,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,CACT;AAGD;AACO,MAAMuB,cAAc,GAAAxB,OAAA,CAAAwB,cAAA,gBAAGhD,MAAM,CAACyB,OAAO,CAC1C,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,CACP;AAGD;AACO,MAAMwB,SAAS,GAAAzB,OAAA,CAAAyB,SAAA,gBAAGjD,MAAM,CAAC2B,MAAM,CAAC;EACrCuB,KAAK,EAAEF,cAAc;EACrBG,QAAQ,EAAEJ,iBAAiB;EAC3BT,KAAK,EAAEtC,MAAM,CAACoD,OAAO;EACrBC,aAAa,eAAErD,MAAM,CAACiC,YAAY,CAACjC,MAAM,CAAC0C,OAAO,EAAE;IAAE5B,OAAO,EAAEA,CAAA,KAAM;EAAI,CAAE;CAC3E,CAAC;AAGF;AACO,MAAMwC,YAAY,GAAA9B,OAAA,CAAA8B,YAAA,gBAAGtD,MAAM,CAACyB,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAG5E;AACO,MAAM8B,cAAc,GAAA/B,OAAA,CAAA+B,cAAA,gBAAGvD,MAAM,CAAC2B,MAAM,CAAC;EAC1C6B,MAAM,eAAExD,MAAM,CAACiC,YAAY,cACzBjC,MAAM,CAAC4C,MAAM,CAACd,IAAI,cAAC9B,MAAM,CAAC6C,GAAG,EAAE,eAAE7C,MAAM,CAAC8C,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC1D;IAAEhC,OAAO,EAAEA,CAAA,KAAM;EAAG,CAAE,CACvB;EACD2C,OAAO,eAAEzD,MAAM,CAACmC,QAAQ,cAACnC,MAAM,CAACoC,MAAM,CAAC;IAAEC,GAAG,EAAErC,MAAM,CAAC6B,MAAM;IAAES,KAAK,EAAEtC,MAAM,CAAC6B;EAAM,CAAE,CAAC,CAAC;EACrF6B,IAAI,eAAE1D,MAAM,CAACmC,QAAQ,CAACnC,MAAM,CAACoD,OAAO,CAAC;EACrCO,KAAK,eAAE3D,MAAM,CAACmC,QAAQ,cAACnC,MAAM,CAAC4C,MAAM,CAACd,IAAI,cAAC9B,MAAM,CAAC6C,GAAG,EAAE,eAAE7C,MAAM,CAAC8C,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAClF,CAAC;AAGF;AACO,MAAMc,IAAI,GAAApC,OAAA,CAAAoC,IAAA,gBAAG5D,MAAM,CAAC2B,MAAM,CAAC;EAChCkC,EAAE,EAAEC,sBAAc;EAClBC,UAAU,eAAE/D,MAAM,CAACwC,KAAK,CAACS,SAAS,CAAC;EACnCe,SAAS,eAAEhE,MAAM,CAACiE,aAAa,CAACV,cAAc,CAAC;EAC/CW,YAAY,eAAElE,MAAM,CAACiC,YAAY,CAACqB,YAAY,EAAE;IAAExC,OAAO,EAAEA,CAAA,KAAM;EAAqB,CAAE;CACzF,CAAC;AAGF;AACO,MAAMqD,iBAAiB,GAAA3C,OAAA,CAAA2C,iBAAA,gBAAGnE,MAAM,CAAC2B,MAAM,CAAC;EAC7CoC,UAAU,eAAE/D,MAAM,CAACiC,YAAY,cAACjC,MAAM,CAACwC,KAAK,CAACS,SAAS,CAAC,EAAE;IAAEnC,OAAO,EAAEA,CAAA,KAAM;EAAW,CAAE,CAAC;EACxFkD,SAAS,eAAEhE,MAAM,CAACiE,aAAa,CAACV,cAAc,CAAC;EAC/CW,YAAY,eAAElE,MAAM,CAACiC,YAAY,CAACqB,YAAY,EAAE;IAAExC,OAAO,EAAEA,CAAA,KAAM;EAAqB,CAAE;CACzF,CAAC;AAGF;AACO,MAAMsD,iBAAiB,GAAA5C,OAAA,CAAA4C,iBAAA,gBAAGpE,MAAM,CAAC2B,MAAM,CAAC;EAC7CoC,UAAU,eAAE/D,MAAM,CAACmC,QAAQ,cAACnC,MAAM,CAACwC,KAAK,CAACS,SAAS,CAAC,CAAC;EACpDe,SAAS,eAAEhE,MAAM,CAACmC,QAAQ,cAACnC,MAAM,CAACiE,aAAa,CAACV,cAAc,CAAC,CAAC;EAChEW,YAAY,eAAElE,MAAM,CAACmC,QAAQ,CAACmB,YAAY;CAC3C,CAAC","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatDurationAsUptime = exports.currentDateTime = exports.StatusFilter = exports.ProtocolFilter = exports.Protocol = exports.PositiveInteger = exports.PortNumber = exports.PaginationQuery = exports.PaginationMeta = exports.NonEmptyString = exports.ImposterStatus = exports.ErrorResponse = exports.ErrorDetails = exports.ErrorCode = exports.DateTimeSchema = void 0;
7
+ var _effect = require("effect");
8
+ var Duration = _interopRequireWildcard(require("effect/Duration"));
9
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ // Common enums
12
+ const ImposterStatus = exports.ImposterStatus = /*#__PURE__*/Schema.Literal("running", "stopped", "starting", "stopping");
13
+ const Protocol = exports.Protocol = /*#__PURE__*/Schema.Literal("HTTP");
14
+ // Utility schemas for validation
15
+ const PositiveInteger = exports.PositiveInteger = /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive(), /*#__PURE__*/Schema.brand("PositiveInteger"));
16
+ const NonEmptyString = exports.NonEmptyString = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.minLength(1), /*#__PURE__*/Schema.brand("NonEmptyString"));
17
+ const PortNumber = exports.PortNumber = /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.between(1024, 65535), /*#__PURE__*/Schema.brand("PortNumber"));
18
+ const PaginationQuery = exports.PaginationQuery = /*#__PURE__*/Schema.Struct({
19
+ // PositiveInteger.make() is safe here — 50 is a compile-time constant that always passes validation
20
+ limit: /*#__PURE__*/Schema.optionalWith(PositiveInteger, {
21
+ default: () => PositiveInteger.make(50)
22
+ }),
23
+ offset: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()), {
24
+ default: () => 0
25
+ })
26
+ });
27
+ const PaginationMeta = exports.PaginationMeta = /*#__PURE__*/Schema.Struct({
28
+ total: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
29
+ limit: PositiveInteger,
30
+ offset: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()),
31
+ hasMore: Schema.Boolean
32
+ });
33
+ const ErrorCode = exports.ErrorCode = /*#__PURE__*/Schema.Union(/*#__PURE__*/
34
+ // Validation errors
35
+ Schema.Literal("VALIDATION_ERROR"), /*#__PURE__*/Schema.Literal("INVALID_ENDPOINT"), /*#__PURE__*/
36
+ // Resource errors
37
+ Schema.Literal("IMPOSTER_NOT_FOUND"), /*#__PURE__*/Schema.Literal("PORT_IN_USE"), /*#__PURE__*/Schema.Literal("IMPOSTER_BUSY"), /*#__PURE__*/
38
+ // System errors
39
+ Schema.Literal("SYSTEM_ERROR"), /*#__PURE__*/Schema.Literal("CONFIRMATION_REQUIRED"), /*#__PURE__*/
40
+ // Conflict errors
41
+ Schema.Literal("ENDPOINT_CONFLICT"));
42
+ const ErrorDetails = exports.ErrorDetails = /*#__PURE__*/Schema.Struct({
43
+ code: ErrorCode,
44
+ message: NonEmptyString,
45
+ field: /*#__PURE__*/Schema.optional(Schema.String),
46
+ value: /*#__PURE__*/Schema.optional(Schema.Unknown),
47
+ details: /*#__PURE__*/Schema.optional(/*#__PURE__*/Schema.Record({
48
+ key: Schema.String,
49
+ value: Schema.Unknown
50
+ }))
51
+ });
52
+ const ErrorResponse = exports.ErrorResponse = /*#__PURE__*/Schema.Struct({
53
+ error: ErrorDetails
54
+ });
55
+ // Common query filters
56
+ const StatusFilter = exports.StatusFilter = /*#__PURE__*/Schema.optional(ImposterStatus);
57
+ const ProtocolFilter = exports.ProtocolFilter = /*#__PURE__*/Schema.optional(Protocol);
58
+ // DateTime schemas using Effect's DateTime
59
+ const DateTimeSchema = exports.DateTimeSchema = Schema.DateTimeUtc;
60
+ // Helper to create current DateTime
61
+ const currentDateTime = exports.currentDateTime = /*#__PURE__*/_effect.Effect.map(_effect.Clock.currentTimeMillis, ms => _effect.DateTime.unsafeMake(ms));
62
+ // Helper to format duration as uptime string (HH:MM:SS)
63
+ const formatDurationAsUptime = duration => {
64
+ return Duration.format(duration);
65
+ };
66
+ exports.formatDurationAsUptime = formatDurationAsUptime;
67
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","names":["_effect","require","Duration","_interopRequireWildcard","Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ImposterStatus","exports","Literal","Protocol","PositiveInteger","Number","pipe","int","positive","brand","NonEmptyString","String","minLength","PortNumber","between","PaginationQuery","Struct","limit","optionalWith","make","offset","nonNegative","PaginationMeta","total","hasMore","Boolean","ErrorCode","Union","ErrorDetails","code","message","field","optional","value","Unknown","details","Record","key","ErrorResponse","error","StatusFilter","ProtocolFilter","DateTimeSchema","DateTimeUtc","currentDateTime","Effect","map","Clock","currentTimeMillis","ms","DateTime","unsafeMake","formatDurationAsUptime","duration","format"],"sources":["../../../src/schemas/common.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,uBAAA,CAAAF,OAAA;AAAuC,SAAAE,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEvC;AACO,MAAMkB,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAGpB,MAAM,CAACsB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;AAGnF,MAAMC,QAAQ,GAAAF,OAAA,CAAAE,QAAA,gBAAGvB,MAAM,CAACsB,OAAO,CAAC,MAAM,CAAC;AAG9C;AACO,MAAME,eAAe,GAAAH,OAAA,CAAAG,eAAA,gBAAGxB,MAAM,CAACyB,MAAM,CAACC,IAAI,cAC/C1B,MAAM,CAAC2B,GAAG,EAAE,eACZ3B,MAAM,CAAC4B,QAAQ,EAAE,eACjB5B,MAAM,CAAC6B,KAAK,CAAC,iBAAiB,CAAC,CAChC;AAGM,MAAMC,cAAc,GAAAT,OAAA,CAAAS,cAAA,gBAAG9B,MAAM,CAAC+B,MAAM,CAACL,IAAI,cAC9C1B,MAAM,CAACgC,SAAS,CAAC,CAAC,CAAC,eACnBhC,MAAM,CAAC6B,KAAK,CAAC,gBAAgB,CAAC,CAC/B;AAGM,MAAMI,UAAU,GAAAZ,OAAA,CAAAY,UAAA,gBAAGjC,MAAM,CAACyB,MAAM,CAACC,IAAI,cAC1C1B,MAAM,CAAC2B,GAAG,EAAE,eACZ3B,MAAM,CAACkC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,eAC3BlC,MAAM,CAAC6B,KAAK,CAAC,YAAY,CAAC,CAC3B;AAGM,MAAMM,eAAe,GAAAd,OAAA,CAAAc,eAAA,gBAAGnC,MAAM,CAACoC,MAAM,CAAC;EAC3C;EACAC,KAAK,eAAErC,MAAM,CAACsC,YAAY,CAACd,eAAe,EAAE;IAAEb,OAAO,EAAEA,CAAA,KAAMa,eAAe,CAACe,IAAI,CAAC,EAAE;EAAC,CAAE,CAAC;EACxFC,MAAM,eAAExC,MAAM,CAACsC,YAAY,cACzBtC,MAAM,CAACyB,MAAM,CAACC,IAAI,cAAC1B,MAAM,CAAC2B,GAAG,EAAE,eAAE3B,MAAM,CAACyC,WAAW,EAAE,CAAC,EACtD;IAAE9B,OAAO,EAAEA,CAAA,KAAM;EAAC,CAAE;CAEvB,CAAC;AAGK,MAAM+B,cAAc,GAAArB,OAAA,CAAAqB,cAAA,gBAAG1C,MAAM,CAACoC,MAAM,CAAC;EAC1CO,KAAK,eAAE3C,MAAM,CAACyB,MAAM,CAACC,IAAI,cAAC1B,MAAM,CAAC2B,GAAG,EAAE,eAAE3B,MAAM,CAACyC,WAAW,EAAE,CAAC;EAC7DJ,KAAK,EAAEb,eAAe;EACtBgB,MAAM,eAAExC,MAAM,CAACyB,MAAM,CAACC,IAAI,cAAC1B,MAAM,CAAC2B,GAAG,EAAE,eAAE3B,MAAM,CAACyC,WAAW,EAAE,CAAC;EAC9DG,OAAO,EAAE5C,MAAM,CAAC6C;CACjB,CAAC;AAGK,MAAMC,SAAS,GAAAzB,OAAA,CAAAyB,SAAA,gBAAG9C,MAAM,CAAC+C,KAAK;AACnC;AACA/C,MAAM,CAACsB,OAAO,CAAC,kBAAkB,CAAC,eAClCtB,MAAM,CAACsB,OAAO,CAAC,kBAAkB,CAAC;AAClC;AACAtB,MAAM,CAACsB,OAAO,CAAC,oBAAoB,CAAC,eACpCtB,MAAM,CAACsB,OAAO,CAAC,aAAa,CAAC,eAC7BtB,MAAM,CAACsB,OAAO,CAAC,eAAe,CAAC;AAC/B;AACAtB,MAAM,CAACsB,OAAO,CAAC,cAAc,CAAC,eAC9BtB,MAAM,CAACsB,OAAO,CAAC,uBAAuB,CAAC;AACvC;AACAtB,MAAM,CAACsB,OAAO,CAAC,mBAAmB,CAAC,CACpC;AAGM,MAAM0B,YAAY,GAAA3B,OAAA,CAAA2B,YAAA,gBAAGhD,MAAM,CAACoC,MAAM,CAAC;EACxCa,IAAI,EAAEH,SAAS;EACfI,OAAO,EAAEpB,cAAc;EACvBqB,KAAK,eAAEnD,MAAM,CAACoD,QAAQ,CAACpD,MAAM,CAAC+B,MAAM,CAAC;EACrCsB,KAAK,eAAErD,MAAM,CAACoD,QAAQ,CAACpD,MAAM,CAACsD,OAAO,CAAC;EACtCC,OAAO,eAAEvD,MAAM,CAACoD,QAAQ,cAACpD,MAAM,CAACwD,MAAM,CAAC;IAAEC,GAAG,EAAEzD,MAAM,CAAC+B,MAAM;IAAEsB,KAAK,EAAErD,MAAM,CAACsD;EAAO,CAAE,CAAC;CACtF,CAAC;AAGK,MAAMI,aAAa,GAAArC,OAAA,CAAAqC,aAAA,gBAAG1D,MAAM,CAACoC,MAAM,CAAC;EACzCuB,KAAK,EAAEX;CACR,CAAC;AAGF;AACO,MAAMY,YAAY,GAAAvC,OAAA,CAAAuC,YAAA,gBAAG5D,MAAM,CAACoD,QAAQ,CAAChC,cAAc,CAAC;AACpD,MAAMyC,cAAc,GAAAxC,OAAA,CAAAwC,cAAA,gBAAG7D,MAAM,CAACoD,QAAQ,CAAC7B,QAAQ,CAAC;AAEvD;AACO,MAAMuC,cAAc,GAAAzC,OAAA,CAAAyC,cAAA,GAAG9D,MAAM,CAAC+D,WAAW;AAGhD;AACO,MAAMC,eAAe,GAAA3C,OAAA,CAAA2C,eAAA,gBAAGC,cAAM,CAACC,GAAG,CAACC,aAAK,CAACC,iBAAiB,EAAGC,EAAE,IAAKC,gBAAQ,CAACC,UAAU,CAACF,EAAE,CAAC,CAAC;AAEnG;AACO,MAAMG,sBAAsB,GAAIC,QAA2B,IAAY;EAC5E,OAAO3E,QAAQ,CAAC4E,MAAM,CAACD,QAAQ,CAAC;AAClC,CAAC;AAAApD,OAAA,CAAAmD,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeWebHandler = exports.makeCompositeHandler = exports.FullLayer = void 0;
7
+ var _platform = require("@effect/platform");
8
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
9
+ var _ApiLayer = require("../layers/ApiLayer");
10
+ var _MainLayer = require("../layers/MainLayer");
11
+ var _AdminUiRouter = require("../ui/admin/AdminUiRouter");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const FullLayer = exports.FullLayer = /*#__PURE__*/_ApiLayer.ApiLayer.pipe(/*#__PURE__*/Layer.provide(_MainLayer.MainLayer));
14
+ const makeWebHandler = () => _platform.HttpApiBuilder.toWebHandler(FullLayer);
15
+ exports.makeWebHandler = makeWebHandler;
16
+ const makeCompositeHandler = adminPort => {
17
+ const {
18
+ dispose,
19
+ handler: apiHandler
20
+ } = _platform.HttpApiBuilder.toWebHandler(FullLayer);
21
+ const adminUiRouter = (0, _AdminUiRouter.makeAdminUiRouter)({
22
+ apiHandler,
23
+ adminPort
24
+ });
25
+ const handler = async request => {
26
+ const uiResponse = await adminUiRouter(request);
27
+ if (uiResponse !== null) return uiResponse;
28
+ return apiHandler(request);
29
+ };
30
+ return {
31
+ handler,
32
+ dispose
33
+ };
34
+ };
35
+ exports.makeCompositeHandler = makeCompositeHandler;
36
+ //# sourceMappingURL=AdminServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminServer.js","names":["_platform","require","Layer","_interopRequireWildcard","_ApiLayer","_MainLayer","_AdminUiRouter","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FullLayer","exports","ApiLayer","pipe","provide","MainLayer","makeWebHandler","HttpApiBuilder","toWebHandler","makeCompositeHandler","adminPort","dispose","handler","apiHandler","adminUiRouter","makeAdminUiRouter","request","uiResponse"],"sources":["../../../src/server/AdminServer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAA6D,SAAAE,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEtD,MAAMkB,SAAS,GAAAC,OAAA,CAAAD,SAAA,gBAAGE,kBAAQ,CAACC,IAAI,cAAC3B,KAAK,CAAC4B,OAAO,CAACC,oBAAS,CAAC,CAAC;AAEzD,MAAMC,cAAc,GAAGA,CAAA,KAAMC,wBAAc,CAACC,YAAY,CAACR,SAAS,CAAC;AAAAC,OAAA,CAAAK,cAAA,GAAAA,cAAA;AAEnE,MAAMG,oBAAoB,GAAIC,SAAiB,IAAI;EACxD,MAAM;IAAEC,OAAO;IAAEC,OAAO,EAAEC;EAAU,CAAE,GAAGN,wBAAc,CAACC,YAAY,CAACR,SAAS,CAAC;EAC/E,MAAMc,aAAa,GAAG,IAAAC,gCAAiB,EAAC;IAAEF,UAAU;IAAEH;EAAS,CAAE,CAAC;EAElE,MAAME,OAAO,GAAG,MAAOI,OAAgB,IAAuB;IAC5D,MAAMC,UAAU,GAAG,MAAMH,aAAa,CAACE,OAAO,CAAC;IAC/C,IAAIC,UAAU,KAAK,IAAI,EAAE,OAAOA,UAAU;IAC1C,OAAOJ,UAAU,CAACG,OAAO,CAAC;EAC5B,CAAC;EAED,OAAO;IAAEJ,OAAO;IAAED;EAAO,CAAE;AAC7B,CAAC;AAAAV,OAAA,CAAAQ,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ServerFactory = exports.BunServerFactoryLive = void 0;
7
+ var _effect = require("effect");
8
+ class ServerFactory extends _effect.Context.Tag("ServerFactory")() {}
9
+ exports.ServerFactory = ServerFactory;
10
+ const BunServerFactoryLive = exports.BunServerFactoryLive = /*#__PURE__*/_effect.Layer.succeed(ServerFactory, {
11
+ create: options => Bun.serve(options)
12
+ });
13
+ //# sourceMappingURL=BunServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BunServer.js","names":["_effect","require","ServerFactory","Context","Tag","exports","BunServerFactoryLive","Layer","succeed","create","options","Bun","serve"],"sources":["../../../src/server/BunServer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAcM,MAAOC,aAAc,SAAQC,eAAO,CAACC,GAAG,CAAC,eAAe,CAAC,EAAqC;AAAAC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAE7F,MAAMI,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,gBAAGC,aAAK,CAACC,OAAO,CAACN,aAAa,EAAE;EAC/DO,MAAM,EAAGC,OAAO,IAAKC,GAAG,CAACC,KAAK,CAACF,OAAO;CACvC,CAAC","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FiberManagerLive = exports.FiberManager = void 0;
7
+ var _effect = require("effect");
8
+ class FiberManager extends _effect.Context.Tag("FiberManager")() {}
9
+ exports.FiberManager = FiberManager;
10
+ const FiberManagerLive = exports.FiberManagerLive = /*#__PURE__*/_effect.Layer.scoped(FiberManager, /*#__PURE__*/_effect.Effect.gen(function* () {
11
+ const fiberMap = yield* _effect.FiberMap.make();
12
+ const start = (id, effect) => _effect.FiberMap.run(fiberMap, id, effect);
13
+ const stop = id => _effect.FiberMap.remove(fiberMap, id);
14
+ const isRunning = id => _effect.FiberMap.has(fiberMap, id);
15
+ return {
16
+ start,
17
+ stop,
18
+ isRunning
19
+ };
20
+ }));
21
+ //# sourceMappingURL=FiberManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiberManager.js","names":["_effect","require","FiberManager","Context","Tag","exports","FiberManagerLive","Layer","scoped","Effect","gen","fiberMap","FiberMap","make","start","id","effect","run","stop","remove","isRunning","has"],"sources":["../../../src/server/FiberManager.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAQM,MAAOC,YAAa,SAAQC,eAAO,CAACC,GAAG,CAAC,cAAc,CAAC,EAAmC;AAAAC,OAAA,CAAAH,YAAA,GAAAA,YAAA;AAEzF,MAAMI,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,gBAAGC,aAAK,CAACC,MAAM,CAC1CN,YAAY,eACZO,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAG,OAAOC,gBAAQ,CAACC,IAAI,EAAU;EAE/C,MAAMC,KAAK,GAAGA,CAACC,EAAU,EAAEC,MAAqC,KAC9DJ,gBAAQ,CAACK,GAAG,CAACN,QAAQ,EAAEI,EAAE,EAAEC,MAAM,CAAC;EAEpC,MAAME,IAAI,GAAIH,EAAU,IAA0BH,gBAAQ,CAACO,MAAM,CAACR,QAAQ,EAAEI,EAAE,CAAC;EAE/E,MAAMK,SAAS,GAAIL,EAAU,IAA6BH,gBAAQ,CAACS,GAAG,CAACV,QAAQ,EAAEI,EAAE,CAAC;EAEpF,OAAO;IAAED,KAAK;IAAEI,IAAI;IAAEE;EAAS,CAAE;AACnC,CAAC,CAAC,CACH","ignoreList":[]}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImposterServerLive = exports.ImposterServerError = exports.ImposterServer = void 0;
7
+ var _effect = require("effect");
8
+ var DateTime = _interopRequireWildcard(require("effect/DateTime"));
9
+ var _imposter = require("../domain/imposter");
10
+ var _RequestMatcher = require("../matching/RequestMatcher");
11
+ var _ResponseGenerator = require("../matching/ResponseGenerator");
12
+ var _ImposterRepository = require("../repositories/ImposterRepository");
13
+ var _common = require("../schemas/common");
14
+ var _MetricsService = require("../services/MetricsService");
15
+ var _ProxyService = require("../services/ProxyService");
16
+ var _RequestLogger = require("../services/RequestLogger");
17
+ var _UiRouter = require("../ui/UiRouter");
18
+ var _BunServer = require("./BunServer");
19
+ var _FiberManager = require("./FiberManager");
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
+ class ImposterServerError extends _effect.Data.TaggedError("ImposterServerError") {}
22
+ exports.ImposterServerError = ImposterServerError;
23
+ class ImposterServer extends _effect.Context.Tag("ImposterServer")() {}
24
+ exports.ImposterServer = ImposterServer;
25
+ const ImposterServerLive = exports.ImposterServerLive = /*#__PURE__*/_effect.Layer.effect(ImposterServer, /*#__PURE__*/_effect.Effect.gen(function* () {
26
+ const repo = yield* _ImposterRepository.ImposterRepository;
27
+ const fiberManager = yield* _FiberManager.FiberManager;
28
+ const serverFactory = yield* _BunServer.ServerFactory;
29
+ const requestLogger = yield* _RequestLogger.RequestLogger;
30
+ const metricsService = yield* _MetricsService.MetricsService;
31
+ const proxyService = yield* _ProxyService.ProxyService;
32
+ const stateMapRef = yield* _effect.Ref.make(_effect.HashMap.empty());
33
+ const start = id => _effect.Effect.gen(function* () {
34
+ const record = yield* repo.get(id);
35
+ const config = record.config;
36
+ // Create per-imposter state
37
+ const stubsRef = yield* _effect.Ref.make(record.stubs);
38
+ const proxyConfigRef = yield* _effect.Ref.make(config.proxy);
39
+ const responseState = yield* (0, _ResponseGenerator.makeResponseState)();
40
+ // Store state for hot-reload
41
+ yield* _effect.Ref.update(stateMapRef, _effect.HashMap.set(id, {
42
+ stubsRef,
43
+ proxyConfigRef
44
+ }));
45
+ // Capture runtime for running effects inside fetch handler
46
+ const rt = yield* _effect.Effect.runtime();
47
+ const runPromise = _effect.Runtime.runPromise(rt);
48
+ // UI router for /_admin pages
49
+ const uiRouter = (0, _UiRouter.makeUiRouter)({
50
+ id,
51
+ config,
52
+ stubsRef,
53
+ repo,
54
+ requestLogger,
55
+ runPromise
56
+ });
57
+ const handler = async request => {
58
+ // Try UI router first (returns null if not a /_admin path)
59
+ const uiResponse = await uiRouter(request);
60
+ if (uiResponse !== null) return uiResponse;
61
+ return runPromise(_effect.Effect.gen(function* () {
62
+ const startTime = Date.now();
63
+ const stubs = yield* _effect.Ref.get(stubsRef);
64
+ const ctx = yield* _effect.Effect.promise(() => (0, _RequestMatcher.extractRequestContext)(request));
65
+ const stub = (0, _RequestMatcher.findMatchingStub)(ctx, stubs);
66
+ let response;
67
+ let proxied = false;
68
+ if (!stub) {
69
+ const proxyConfig = yield* _effect.Ref.get(proxyConfigRef);
70
+ if (proxyConfig) {
71
+ const url = new URL(request.url);
72
+ response = yield* proxyService.forward(ctx, proxyConfig, url).pipe(_effect.Effect.catchTag("ProxyError", err => _effect.Effect.succeed(new Response(JSON.stringify({
73
+ error: "Proxy failed",
74
+ target: err.targetUrl,
75
+ reason: err.reason
76
+ }), {
77
+ status: 502,
78
+ headers: {
79
+ "content-type": "application/json"
80
+ }
81
+ }))));
82
+ proxied = true;
83
+ // Record mode: save as stub + update stubsRef
84
+ if (proxyConfig.mode === "record" && response.status < 500) {
85
+ const responseClone = response.clone();
86
+ const newStub = yield* proxyService.recordAsStub(ctx, responseClone);
87
+ yield* repo.addStub(id, newStub).pipe(_effect.Effect.catchAll(() => _effect.Effect.void));
88
+ const freshStubs = yield* repo.getStubs(id).pipe(_effect.Effect.catchAll(() => _effect.Effect.succeed([])));
89
+ yield* _effect.Ref.set(stubsRef, freshStubs);
90
+ }
91
+ } else {
92
+ response = new Response(JSON.stringify({
93
+ error: "No matching stub found",
94
+ method: ctx.method,
95
+ path: ctx.path
96
+ }), {
97
+ status: 404,
98
+ headers: {
99
+ "content-type": "application/json"
100
+ }
101
+ });
102
+ }
103
+ } else {
104
+ const responses = stub.responses;
105
+ const index = yield* responseState.getNextIndex(id, stub.id, responses.length, stub.responseMode);
106
+ const responseConfig = responses[index];
107
+ const delay = responseConfig.delay;
108
+ if (delay !== undefined && delay > 0) {
109
+ yield* _effect.Effect.sleep(`${delay} millis`);
110
+ }
111
+ response = yield* _effect.Effect.promise(() => (0, _ResponseGenerator.buildResponse)(responseConfig, ctx));
112
+ }
113
+ // Capture response for logging
114
+ const respText = yield* _effect.Effect.promise(() => response.text());
115
+ const respHeaders = {};
116
+ response.headers.forEach((val, key) => {
117
+ respHeaders[key] = val;
118
+ });
119
+ // Reconstruct since .text() consumed body
120
+ response = new Response(respText, {
121
+ status: response.status,
122
+ headers: response.headers
123
+ });
124
+ const logBody = respText.length > 10240 ? respText.slice(0, 10240) : respText || undefined;
125
+ const duration = Date.now() - startTime;
126
+ const logEntry = {
127
+ id: _common.NonEmptyString.make(crypto.randomUUID()),
128
+ imposterId: _common.NonEmptyString.make(id),
129
+ timestamp: DateTime.unsafeMake(startTime),
130
+ request: {
131
+ method: ctx.method,
132
+ path: ctx.path,
133
+ headers: ctx.headers,
134
+ query: ctx.query,
135
+ body: ctx.body
136
+ },
137
+ response: {
138
+ status: response.status,
139
+ headers: respHeaders,
140
+ ...(logBody !== undefined ? {
141
+ body: logBody
142
+ } : {}),
143
+ ...(stub ? {
144
+ matchedStubId: _common.NonEmptyString.make(stub.id)
145
+ } : {}),
146
+ proxied
147
+ },
148
+ duration
149
+ };
150
+ yield* requestLogger.log(logEntry).pipe(_effect.Effect.catchAll(() => _effect.Effect.void));
151
+ yield* metricsService.recordRequest(logEntry).pipe(_effect.Effect.catchAll(() => _effect.Effect.void));
152
+ return response;
153
+ }).pipe(_effect.Effect.catchAllCause(cause => _effect.Effect.succeed(new Response(JSON.stringify({
154
+ error: "Internal server error",
155
+ details: String(cause)
156
+ }), {
157
+ status: 500,
158
+ headers: {
159
+ "content-type": "application/json"
160
+ }
161
+ })))));
162
+ };
163
+ // Build the long-running fiber effect with acquireRelease
164
+ const fiberEffect = _effect.Effect.acquireRelease(_effect.Effect.try({
165
+ try: () => serverFactory.create({
166
+ port: config.port,
167
+ fetch: handler
168
+ }),
169
+ catch: err => new ImposterServerError({
170
+ imposterId: id,
171
+ reason: `Failed to bind port ${config.port}: ${err}`
172
+ })
173
+ }), server => _effect.Effect.sync(() => server.stop(true))).pipe(_effect.Effect.andThen(_effect.Effect.never), _effect.Effect.scoped);
174
+ // Wrap fiber in onError for crash supervision
175
+ const supervisedEffect = fiberEffect.pipe(_effect.Effect.onError(() => _effect.Effect.gen(function* () {
176
+ yield* _effect.Ref.update(stateMapRef, _effect.HashMap.remove(id));
177
+ yield* repo.update(id, r => ({
178
+ ...r,
179
+ config: (0, _imposter.ImposterConfig)({
180
+ ...r.config,
181
+ status: "stopped"
182
+ })
183
+ })).pipe(_effect.Effect.catchAll(() => _effect.Effect.void));
184
+ yield* responseState.reset(id);
185
+ })));
186
+ yield* fiberManager.start(id, supervisedEffect);
187
+ // Update status to running
188
+ yield* repo.update(id, r => ({
189
+ ...r,
190
+ config: (0, _imposter.ImposterConfig)({
191
+ ...r.config,
192
+ status: "running"
193
+ })
194
+ })).pipe(_effect.Effect.catchTag("ImposterNotFoundError", () => _effect.Effect.void));
195
+ });
196
+ const stop = id => _effect.Effect.gen(function* () {
197
+ yield* fiberManager.stop(id);
198
+ yield* _effect.Ref.update(stateMapRef, _effect.HashMap.remove(id));
199
+ yield* repo.update(id, r => ({
200
+ ...r,
201
+ config: (0, _imposter.ImposterConfig)({
202
+ ...r.config,
203
+ status: "stopped"
204
+ })
205
+ })).pipe(_effect.Effect.catchAll(() => _effect.Effect.void));
206
+ yield* requestLogger.removeImposter(id);
207
+ });
208
+ const updateStubs = id => _effect.Effect.gen(function* () {
209
+ const stubs = yield* repo.getStubs(id).pipe(_effect.Effect.catchAll(() => _effect.Effect.succeed([])));
210
+ const stateMap = yield* _effect.Ref.get(stateMapRef);
211
+ const state = _effect.HashMap.get(stateMap, id);
212
+ if (state._tag === "Some") {
213
+ yield* _effect.Ref.set(state.value.stubsRef, stubs);
214
+ }
215
+ });
216
+ const updateProxyConfig = id => _effect.Effect.gen(function* () {
217
+ const record = yield* repo.get(id).pipe(_effect.Effect.catchAll(() => _effect.Effect.succeed(null)));
218
+ if (record === null) return;
219
+ const stateMap = yield* _effect.Ref.get(stateMapRef);
220
+ const state = _effect.HashMap.get(stateMap, id);
221
+ if (state._tag === "Some") {
222
+ yield* _effect.Ref.set(state.value.proxyConfigRef, record.config.proxy);
223
+ }
224
+ });
225
+ const isRunning = id => fiberManager.isRunning(id);
226
+ return {
227
+ start,
228
+ stop,
229
+ updateStubs,
230
+ updateProxyConfig,
231
+ isRunning
232
+ };
233
+ }));
234
+ //# sourceMappingURL=ImposterServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImposterServer.js","names":["_effect","require","DateTime","_interopRequireWildcard","_imposter","_RequestMatcher","_ResponseGenerator","_ImposterRepository","_common","_MetricsService","_ProxyService","_RequestLogger","_UiRouter","_BunServer","_FiberManager","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ImposterServerError","Data","TaggedError","exports","ImposterServer","Context","Tag","ImposterServerLive","Layer","effect","Effect","gen","repo","ImposterRepository","fiberManager","FiberManager","serverFactory","ServerFactory","requestLogger","RequestLogger","metricsService","MetricsService","proxyService","ProxyService","stateMapRef","Ref","make","HashMap","empty","start","id","record","config","stubsRef","stubs","proxyConfigRef","proxy","responseState","makeResponseState","update","rt","runtime","runPromise","Runtime","uiRouter","makeUiRouter","handler","request","uiResponse","startTime","Date","now","ctx","promise","extractRequestContext","stub","findMatchingStub","response","proxied","proxyConfig","url","URL","forward","pipe","catchTag","err","succeed","Response","JSON","stringify","error","target","targetUrl","reason","status","headers","mode","responseClone","clone","newStub","recordAsStub","addStub","catchAll","void","freshStubs","getStubs","method","path","responses","index","getNextIndex","length","responseMode","responseConfig","delay","undefined","sleep","buildResponse","respText","text","respHeaders","forEach","val","key","logBody","slice","duration","logEntry","NonEmptyString","crypto","randomUUID","imposterId","timestamp","unsafeMake","query","body","matchedStubId","log","recordRequest","catchAllCause","cause","details","String","fiberEffect","acquireRelease","try","create","port","fetch","catch","server","sync","stop","andThen","never","scoped","supervisedEffect","onError","remove","ImposterConfig","reset","removeImposter","updateStubs","stateMap","state","_tag","value","updateProxyConfig","isRunning"],"sources":["../../../src/server/ImposterServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AppConfigLive = exports.AppConfig = void 0;
7
+ var _effect = require("effect");
8
+ class AppConfig extends _effect.Context.Tag("AppConfig")() {}
9
+ exports.AppConfig = AppConfig;
10
+ const config = /*#__PURE__*/_effect.Config.all({
11
+ adminPort: /*#__PURE__*/_effect.Config.number("ADMIN_PORT").pipe(/*#__PURE__*/_effect.Config.withDefault(2525)),
12
+ portRangeMin: /*#__PURE__*/_effect.Config.number("PORT_RANGE_MIN").pipe(/*#__PURE__*/_effect.Config.withDefault(3000)),
13
+ portRangeMax: /*#__PURE__*/_effect.Config.number("PORT_RANGE_MAX").pipe(/*#__PURE__*/_effect.Config.withDefault(4000)),
14
+ maxImposters: /*#__PURE__*/_effect.Config.number("MAX_IMPOSTERS").pipe(/*#__PURE__*/_effect.Config.withDefault(100)),
15
+ logLevel: /*#__PURE__*/_effect.Config.literal("debug", "info", "warn", "error")("LOG_LEVEL").pipe(/*#__PURE__*/_effect.Config.withDefault("info"))
16
+ });
17
+ const AppConfigLive = exports.AppConfigLive = /*#__PURE__*/_effect.Layer.effect(AppConfig, config);
18
+ //# sourceMappingURL=AppConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppConfig.js","names":["_effect","require","AppConfig","Context","Tag","exports","config","Config","all","adminPort","number","pipe","withDefault","portRangeMin","portRangeMax","maxImposters","logLevel","literal","AppConfigLive","Layer","effect"],"sources":["../../../src/services/AppConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAUM,MAAOC,SAAU,SAAQC,eAAO,CAACC,GAAG,CAAC,WAAW,CAAC,EAA6B;AAAAC,OAAA,CAAAH,SAAA,GAAAA,SAAA;AAEpF,MAAMI,MAAM,gBAAGC,cAAM,CAACC,GAAG,CAAC;EACxBC,SAAS,eAAEF,cAAM,CAACG,MAAM,CAAC,YAAY,CAAC,CAACC,IAAI,cAACJ,cAAM,CAACK,WAAW,CAAC,IAAI,CAAC,CAAC;EACrEC,YAAY,eAAEN,cAAM,CAACG,MAAM,CAAC,gBAAgB,CAAC,CAACC,IAAI,cAACJ,cAAM,CAACK,WAAW,CAAC,IAAI,CAAC,CAAC;EAC5EE,YAAY,eAAEP,cAAM,CAACG,MAAM,CAAC,gBAAgB,CAAC,CAACC,IAAI,cAACJ,cAAM,CAACK,WAAW,CAAC,IAAI,CAAC,CAAC;EAC5EG,YAAY,eAAER,cAAM,CAACG,MAAM,CAAC,eAAe,CAAC,CAACC,IAAI,cAACJ,cAAM,CAACK,WAAW,CAAC,GAAG,CAAC,CAAC;EAC1EI,QAAQ,eAAET,cAAM,CAACU,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CACpEN,IAAI,cAACJ,cAAM,CAACK,WAAW,CAAC,MAAe,CAAC;CAC5C,CAAC;AAEK,MAAMM,aAAa,GAAAb,OAAA,CAAAa,aAAA,gBAAGC,aAAK,CAACC,MAAM,CAAClB,SAAS,EAAEI,MAAM,CAAC","ignoreList":[]}