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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-present <PLACEHOLDER>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/Program.js",
3
+ "module": "../dist/esm/Program.js",
4
+ "types": "../dist/dts/Program.d.ts",
5
+ "sideEffects": []
6
+ }
package/README.md ADDED
@@ -0,0 +1,365 @@
1
+ # Imposters
2
+
3
+ A modern service virtualization tool built with TypeScript and [Effect](https://effect.website). Create mock HTTP services for testing and development — a lightweight, programmable alternative to [Mountebank](http://www.mbtest.org/).
4
+
5
+ ## What is Imposters?
6
+
7
+ Imposters lets you spin up fake HTTP servers ("imposters") that respond to requests based on configurable stubs. Each imposter listens on its own port and matches incoming requests against predicates, returning templated responses. Use it to isolate services in integration tests, prototype APIs, or simulate third-party dependencies.
8
+
9
+ ## Features
10
+
11
+ - **Stub matching** — Match requests by method, path, headers, query params, or body using operators like `equals`, `contains`, `startsWith`, `matches`, and `exists`
12
+ - **Response templates** — Use `{{key}}` for simple substitution or `${expr}` for JSONata expressions that reference the incoming request
13
+ - **Multiple responses** — Cycle through responses sequentially, randomly, or repeat the last one
14
+ - **Proxy mode** — Passthrough to a real service or record responses as stubs
15
+ - **Per-imposter admin UI** — HTMX-powered UI at each imposter's `/_admin` path
16
+ - **Admin dashboard** — Global dashboard at `/_ui` on the admin port
17
+ - **Config file support** — Declare imposters and stubs in a JSON file for repeatable setups
18
+ - **TypeScript client** — Programmatic client and test helpers built on `@effect/platform`
19
+ - **Request logging** — Inspect captured requests per imposter with stats and percentile metrics
20
+ - **Built on Effect** — Fiber-based concurrency, typed errors, and composable services
21
+
22
+ ## Quick Start
23
+
24
+ ```bash
25
+ # Install dependencies
26
+ bun install
27
+
28
+ # Start the admin server on the default port (2525)
29
+ bun tsx src/Program.ts start
30
+
31
+ # Create an imposter
32
+ curl -X POST http://localhost:2525/imposters \
33
+ -H "Content-Type: application/json" \
34
+ -d '{"name": "users-api", "port": 3000}'
35
+
36
+ # Add a stub
37
+ curl -X POST http://localhost:2525/imposters/<id>/stubs \
38
+ -H "Content-Type: application/json" \
39
+ -d '{
40
+ "predicates": [
41
+ { "field": "method", "operator": "equals", "value": "GET" },
42
+ { "field": "path", "operator": "equals", "value": "/users/1" }
43
+ ],
44
+ "responses": [{
45
+ "status": 200,
46
+ "headers": { "content-type": "application/json" },
47
+ "body": { "id": 1, "name": "Alice" }
48
+ }]
49
+ }'
50
+
51
+ # Start the imposter
52
+ curl -X PATCH http://localhost:2525/imposters/<id> \
53
+ -H "Content-Type: application/json" \
54
+ -d '{"status": "running"}'
55
+
56
+ # Hit your mock
57
+ curl http://localhost:3000/users/1
58
+ # => {"id":1,"name":"Alice"}
59
+ ```
60
+
61
+ ## CLI Usage
62
+
63
+ ```bash
64
+ imposters start [options]
65
+ ```
66
+
67
+ | Option | Alias | Description |
68
+ |---|---|---|
69
+ | `--port <number>` | `-p` | Admin server port (default: `2525`, or `ADMIN_PORT` env var) |
70
+ | `--config <path>` | `-c` | Path to a JSON config file |
71
+
72
+ ## Config File
73
+
74
+ Declare imposters and stubs declaratively. Pass the file with `--config`:
75
+
76
+ ```json
77
+ {
78
+ "admin": {
79
+ "port": 2525,
80
+ "portRangeMin": 3000,
81
+ "portRangeMax": 4000,
82
+ "maxImposters": 100,
83
+ "logLevel": "info"
84
+ },
85
+ "imposters": [
86
+ {
87
+ "name": "users-api",
88
+ "port": 3000,
89
+ "stubs": [
90
+ {
91
+ "predicates": [
92
+ { "field": "path", "operator": "equals", "value": "/health" }
93
+ ],
94
+ "responses": [
95
+ { "status": 200, "body": { "status": "ok" } }
96
+ ]
97
+ }
98
+ ]
99
+ }
100
+ ]
101
+ }
102
+ ```
103
+
104
+ ## API Reference
105
+
106
+ ### System
107
+
108
+ | Method | Path | Description |
109
+ |---|---|---|
110
+ | `GET` | `/health` | Health check with system info |
111
+ | `GET` | `/info` | Server info, configuration, and feature flags |
112
+
113
+ ### Imposters
114
+
115
+ | Method | Path | Description |
116
+ |---|---|---|
117
+ | `POST` | `/imposters` | Create an imposter |
118
+ | `GET` | `/imposters` | List imposters (supports `status` and `protocol` filters) |
119
+ | `GET` | `/imposters/:id` | Get imposter details |
120
+ | `PATCH` | `/imposters/:id` | Update imposter (name, status, port, proxy) |
121
+ | `DELETE` | `/imposters/:id` | Delete imposter (`?force=true` to skip confirmation) |
122
+
123
+ ### Stubs
124
+
125
+ | Method | Path | Description |
126
+ |---|---|---|
127
+ | `POST` | `/imposters/:id/stubs` | Add a stub |
128
+ | `GET` | `/imposters/:id/stubs` | List stubs |
129
+ | `PUT` | `/imposters/:id/stubs/:stubId` | Update a stub |
130
+ | `DELETE` | `/imposters/:id/stubs/:stubId` | Delete a stub |
131
+
132
+ ### Requests & Stats
133
+
134
+ | Method | Path | Description |
135
+ |---|---|---|
136
+ | `GET` | `/imposters/:id/requests` | List captured requests |
137
+ | `DELETE` | `/imposters/:id/requests` | Clear captured requests |
138
+ | `GET` | `/imposters/:id/stats` | Get imposter statistics |
139
+ | `DELETE` | `/imposters/:id/stats` | Reset imposter statistics |
140
+
141
+ ## Stub Matching
142
+
143
+ Each stub has an array of **predicates** that are AND-combined. A request matches a stub when all predicates pass. Stubs are evaluated in order — the first match wins.
144
+
145
+ ### Predicate fields
146
+
147
+ `method` | `path` | `headers` | `query` | `body`
148
+
149
+ ### Operators
150
+
151
+ | Operator | Description |
152
+ |---|---|
153
+ | `equals` | Exact match (deep subset match for objects/body) |
154
+ | `contains` | Substring match |
155
+ | `startsWith` | Prefix match |
156
+ | `matches` | Regular expression match |
157
+ | `exists` | Field is present (ignores `value`) |
158
+
159
+ All operators support `caseSensitive` (default: `true`).
160
+
161
+ ### Examples
162
+
163
+ ```json
164
+ // Match GET requests to any path starting with /api/
165
+ {
166
+ "predicates": [
167
+ { "field": "method", "operator": "equals", "value": "GET" },
168
+ { "field": "path", "operator": "startsWith", "value": "/api/" }
169
+ ],
170
+ "responses": [{ "status": 200, "body": { "ok": true } }]
171
+ }
172
+ ```
173
+
174
+ ```json
175
+ // Match requests with a specific header
176
+ {
177
+ "predicates": [
178
+ { "field": "headers", "operator": "exists", "value": { "authorization": "" } }
179
+ ],
180
+ "responses": [{ "status": 200 }]
181
+ }
182
+ ```
183
+
184
+ ```json
185
+ // Match POST with a JSON body subset
186
+ {
187
+ "predicates": [
188
+ { "field": "method", "operator": "equals", "value": "POST" },
189
+ { "field": "body", "operator": "equals", "value": { "action": "create" } }
190
+ ],
191
+ "responses": [{ "status": 201 }]
192
+ }
193
+ ```
194
+
195
+ ## Response Templates
196
+
197
+ Response bodies support two kinds of dynamic substitution:
198
+
199
+ ### `{{key}}` — Simple substitution
200
+
201
+ Reference flattened request context values:
202
+
203
+ ```json
204
+ {
205
+ "responses": [{
206
+ "body": {
207
+ "echo": "You requested {{request.path}} with method {{request.method}}",
208
+ "token": "{{request.headers.authorization}}",
209
+ "search": "{{request.query.q}}"
210
+ }
211
+ }]
212
+ }
213
+ ```
214
+
215
+ Available keys follow the pattern `request.method`, `request.path`, `request.headers.<name>`, `request.query.<name>`, and `request.body.<path>` for nested body fields.
216
+
217
+ ### `${expr}` — JSONata expressions
218
+
219
+ Use [JSONata](https://jsonata.org/) for computed values. The expression context is `{ request: { method, path, headers, query, body } }`.
220
+
221
+ ```json
222
+ {
223
+ "responses": [{
224
+ "body": {
225
+ "greeting": "${\"Hello, \" & request.query.name}",
226
+ "itemCount": "${$count(request.body.items)}",
227
+ "uppercasePath": "${$uppercase(request.path)}"
228
+ }
229
+ }]
230
+ }
231
+ ```
232
+
233
+ If an entire string is a single `${...}` expression, the raw result type is preserved (number, object, etc.). When mixed with other text, results are concatenated as strings.
234
+
235
+ ## Proxy Mode
236
+
237
+ Configure an imposter to forward unmatched requests to a real backend.
238
+
239
+ ```json
240
+ {
241
+ "name": "proxied-api",
242
+ "port": 3000,
243
+ "proxy": {
244
+ "targetUrl": "https://api.example.com",
245
+ "mode": "passthrough"
246
+ }
247
+ }
248
+ ```
249
+
250
+ ### Modes
251
+
252
+ | Mode | Description |
253
+ |---|---|
254
+ | `passthrough` | Forward requests to the target and return the response as-is |
255
+ | `record` | Forward requests and automatically save responses as new stubs |
256
+
257
+ ### Proxy options
258
+
259
+ | Option | Default | Description |
260
+ |---|---|---|
261
+ | `targetUrl` | *(required)* | Target base URL |
262
+ | `mode` | `passthrough` | `passthrough` or `record` |
263
+ | `addHeaders` | — | Headers to add to proxied requests |
264
+ | `removeHeaders` | `[]` | Headers to strip before proxying |
265
+ | `followRedirects` | `true` | Follow HTTP redirects |
266
+ | `timeout` | `10000` | Request timeout in milliseconds (100–60000) |
267
+
268
+ ## Programmatic Usage
269
+
270
+ ### TypeScript client
271
+
272
+ ```typescript
273
+ import { ImpostersClientFetchLive, ImpostersClient } from "imposters/client"
274
+ import { Effect } from "effect"
275
+
276
+ const program = Effect.gen(function*() {
277
+ const client = yield* ImpostersClient
278
+
279
+ const imposter = yield* client.imposters.createImposter({
280
+ payload: { name: "my-api", port: 4000, protocol: "HTTP", adminPath: "/_admin" }
281
+ })
282
+
283
+ yield* client.imposters.addStub({
284
+ path: { imposterId: imposter.id },
285
+ payload: {
286
+ responses: [{ status: 200, body: { hello: "world" } }]
287
+ }
288
+ })
289
+
290
+ yield* client.imposters.updateImposter({
291
+ path: { id: imposter.id },
292
+ payload: { status: "running" }
293
+ })
294
+ })
295
+
296
+ program.pipe(
297
+ Effect.provide(ImpostersClientFetchLive("http://localhost:2525")),
298
+ Effect.runPromise
299
+ )
300
+ ```
301
+
302
+ ### Test helpers
303
+
304
+ The `withImposter` helper manages the lifecycle of a test imposter — create, configure stubs, start, run your test, then clean up:
305
+
306
+ ```typescript
307
+ import { withImposter, makeTestServer } from "imposters/client"
308
+ import { Effect } from "effect"
309
+
310
+ const { clientLayer } = makeTestServer(FullLayer)
311
+
312
+ const test = withImposter(
313
+ {
314
+ port: 4001,
315
+ name: "test-api",
316
+ stubs: [{
317
+ predicates: [
318
+ { field: "path", operator: "equals", value: "/greet" }
319
+ ],
320
+ responses: [{ status: 200, body: { message: "hi" } }]
321
+ }]
322
+ },
323
+ (ctx) =>
324
+ Effect.gen(function*() {
325
+ const res = yield* Effect.promise(() =>
326
+ fetch(`http://localhost:${ctx.port}/greet`)
327
+ )
328
+ // assert on res...
329
+ })
330
+ )
331
+
332
+ Effect.provide(test, clientLayer).pipe(Effect.runPromise)
333
+ ```
334
+
335
+ ## Admin UI
336
+
337
+ - **`/_ui`** on the admin port — Global dashboard showing all imposters
338
+ - **`/_admin`** on each imposter port — Per-imposter UI with stubs, captured requests, and stats
339
+
340
+ Both UIs are HTMX-powered and require no additional setup.
341
+
342
+ ## Development
343
+
344
+ ```bash
345
+ bun check # Type check
346
+ bun run test # Run tests (vitest)
347
+ bun lint # Lint
348
+ bun lint-fix # Lint with auto-fix
349
+ bun coverage # Test coverage
350
+ ```
351
+
352
+ ## Architecture
353
+
354
+ Imposters is built entirely on [Effect](https://effect.website):
355
+
356
+ - **Effect services** — All components (`ImposterRepository`, `PortAllocator`, `ProxyService`, `MetricsService`, `RequestLogger`, `FiberManager`) are Effect services composed via layers
357
+ - **Fiber concurrency** — Each running imposter is managed as an Effect Fiber via `FiberMap`, allowing independent start/stop lifecycle
358
+ - **`@effect/platform` HTTP API** — Admin API is defined declaratively with `HttpApi`, `HttpApiGroup`, and `HttpApiEndpoint`, with schema-derived request validation and typed error handling
359
+ - **`@effect/cli`** — CLI commands and option parsing
360
+ - **Bun.serve()** — HTTP server runtime
361
+ - **JSONata** — Expression evaluation in response templates
362
+
363
+ ## License
364
+
365
+ MIT
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/AdminApi.js",
3
+ "module": "../../dist/esm/api/AdminApi.js",
4
+ "types": "../../dist/dts/api/AdminApi.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/ApiErrors.js",
3
+ "module": "../../dist/esm/api/ApiErrors.js",
4
+ "types": "../../dist/dts/api/ApiErrors.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/ApiSchemas.js",
3
+ "module": "../../dist/esm/api/ApiSchemas.js",
4
+ "types": "../../dist/dts/api/ApiSchemas.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/Conversions.js",
3
+ "module": "../../dist/esm/api/Conversions.js",
4
+ "types": "../../dist/dts/api/Conversions.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/ImpostersGroup.js",
3
+ "module": "../../dist/esm/api/ImpostersGroup.js",
4
+ "types": "../../dist/dts/api/ImpostersGroup.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/ImpostersHandlers.js",
3
+ "module": "../../dist/esm/api/ImpostersHandlers.js",
4
+ "types": "../../dist/dts/api/ImpostersHandlers.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/SystemGroup.js",
3
+ "module": "../../dist/esm/api/SystemGroup.js",
4
+ "types": "../../dist/dts/api/SystemGroup.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/api/SystemHandlers.js",
3
+ "module": "../../dist/esm/api/SystemHandlers.js",
4
+ "types": "../../dist/dts/api/SystemHandlers.d.ts",
5
+ "sideEffects": []
6
+ }
package/bin/imposters ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ const os = require("os");
4
+ const path = require("path");
5
+ const { execFileSync } = require("child_process");
6
+
7
+ const platform = os.platform();
8
+ const arch = os.arch();
9
+
10
+ const PLATFORMS = {
11
+ "linux-x64": "@imposters/linux-x64",
12
+ "linux-arm64": "@imposters/linux-arm64",
13
+ "darwin-x64": "@imposters/darwin-x64",
14
+ "darwin-arm64": "@imposters/darwin-arm64",
15
+ };
16
+
17
+ const key = `${platform}-${arch}`;
18
+ const pkg = PLATFORMS[key];
19
+
20
+ if (!pkg) {
21
+ console.error(
22
+ `Unsupported platform: ${platform}-${arch}\n` +
23
+ `Imposters supports: ${Object.keys(PLATFORMS).join(", ")}`
24
+ );
25
+ process.exit(1);
26
+ }
27
+
28
+ let binPath;
29
+ try {
30
+ binPath = require.resolve(`${pkg}/bin/imposters`);
31
+ } catch {
32
+ console.error(
33
+ `Could not find the Imposters binary for ${platform}-${arch}.\n` +
34
+ `The platform package "${pkg}" does not appear to be installed.\n\n` +
35
+ `Try reinstalling: npm install -g imposters`
36
+ );
37
+ process.exit(1);
38
+ }
39
+
40
+ try {
41
+ execFileSync(binPath, process.argv.slice(2), { stdio: "inherit" });
42
+ } catch (e) {
43
+ if (e.status !== null) {
44
+ process.exit(e.status);
45
+ }
46
+ throw e;
47
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/cli/Commands.js",
3
+ "module": "../../dist/esm/cli/Commands.js",
4
+ "types": "../../dist/dts/cli/Commands.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/cli/ConfigLoader.js",
3
+ "module": "../../dist/esm/cli/ConfigLoader.js",
4
+ "types": "../../dist/dts/cli/ConfigLoader.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/client/HandlerHttpClient.js",
3
+ "module": "../../dist/esm/client/HandlerHttpClient.js",
4
+ "types": "../../dist/dts/client/HandlerHttpClient.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/client/ImpostersClient.js",
3
+ "module": "../../dist/esm/client/ImpostersClient.js",
4
+ "types": "../../dist/dts/client/ImpostersClient.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/cjs/client/testing.js",
3
+ "module": "../../dist/esm/client/testing.js",
4
+ "types": "../../dist/dts/client/testing.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./cli/Commands.js");
4
+ //# sourceMappingURL=Program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Program.js","names":["require"],"sources":["../../src/Program.ts"],"sourcesContent":[null],"mappings":";;AAAAA,OAAA","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AdminApi = void 0;
7
+ var _platform = require("@effect/platform");
8
+ var _ImpostersGroup = require("./ImpostersGroup");
9
+ var _SystemGroup = require("./SystemGroup");
10
+ const AdminApi = exports.AdminApi = /*#__PURE__*/_platform.HttpApi.make("admin").add(_ImpostersGroup.ImpostersGroup).add(_SystemGroup.SystemGroup);
11
+ //# sourceMappingURL=AdminApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminApi.js","names":["_platform","require","_ImpostersGroup","_SystemGroup","AdminApi","exports","HttpApi","make","add","ImpostersGroup","SystemGroup"],"sources":["../../../src/api/AdminApi.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEO,MAAMG,QAAQ,GAAAC,OAAA,CAAAD,QAAA,gBAAGE,iBAAO,CAACC,IAAI,CAAC,OAAO,CAAC,CAC1CC,GAAG,CAACC,8BAAc,CAAC,CACnBD,GAAG,CAACE,wBAAW,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ApiServiceError = exports.ApiNotFoundError = exports.ApiConflictError = void 0;
7
+ var _platform = require("@effect/platform");
8
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
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
+ class ApiNotFoundError extends Schema.TaggedError()("ApiNotFoundError", {
11
+ message: Schema.String,
12
+ resourceType: Schema.String,
13
+ resourceId: Schema.String
14
+ }, _platform.HttpApiSchema.annotations({
15
+ status: 404
16
+ })) {}
17
+ exports.ApiNotFoundError = ApiNotFoundError;
18
+ class ApiConflictError extends Schema.TaggedError()("ApiConflictError", {
19
+ message: Schema.String
20
+ }, _platform.HttpApiSchema.annotations({
21
+ status: 409
22
+ })) {}
23
+ exports.ApiConflictError = ApiConflictError;
24
+ class ApiServiceError extends Schema.TaggedError()("ApiServiceError", {
25
+ message: Schema.String
26
+ }, _platform.HttpApiSchema.annotations({
27
+ status: 503
28
+ })) {}
29
+ exports.ApiServiceError = ApiServiceError;
30
+ //# sourceMappingURL=ApiErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiErrors.js","names":["_platform","require","Schema","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ApiNotFoundError","TaggedError","message","String","resourceType","resourceId","HttpApiSchema","annotations","status","exports","ApiConflictError","ApiServiceError"],"sources":["../../../src/api/ApiErrors.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAuC,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,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;AAEjC,MAAOkB,gBAAiB,SAAQrB,MAAM,CAACsB,WAAW,EAAoB,CAC1E,kBAAkB,EAClB;EAAEC,OAAO,EAAEvB,MAAM,CAACwB,MAAM;EAAEC,YAAY,EAAEzB,MAAM,CAACwB,MAAM;EAAEE,UAAU,EAAE1B,MAAM,CAACwB;AAAM,CAAE,EAClFG,uBAAa,CAACC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAAAC,OAAA,CAAAT,gBAAA,GAAAA,gBAAA;AAEK,MAAOU,gBAAiB,SAAQ/B,MAAM,CAACsB,WAAW,EAAoB,CAC1E,kBAAkB,EAClB;EAAEC,OAAO,EAAEvB,MAAM,CAACwB;AAAM,CAAE,EAC1BG,uBAAa,CAACC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAAAC,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAEK,MAAOC,eAAgB,SAAQhC,MAAM,CAACsB,WAAW,EAAmB,CACxE,iBAAiB,EACjB;EAAEC,OAAO,EAAEvB,MAAM,CAACwB;AAAM,CAAE,EAC1BG,uBAAa,CAACC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAAAC,OAAA,CAAAE,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PaginationUrlParams = exports.ListRequestsUrlParams = exports.ListImpostersUrlParams = exports.DeleteImposterUrlParams = void 0;
7
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
8
+ var _common = require("../schemas/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 PaginationUrlParams = exports.PaginationUrlParams = /*#__PURE__*/Schema.Struct({
11
+ limit: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.NumberFromString.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()), {
12
+ default: () => 50
13
+ }),
14
+ offset: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.NumberFromString.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.nonNegative()), {
15
+ default: () => 0
16
+ })
17
+ });
18
+ const ListImpostersUrlParams = exports.ListImpostersUrlParams = /*#__PURE__*/Schema.Struct({
19
+ ...PaginationUrlParams.fields,
20
+ status: /*#__PURE__*/Schema.optional(_common.ImposterStatus),
21
+ protocol: /*#__PURE__*/Schema.optional(_common.Protocol)
22
+ });
23
+ const DeleteImposterUrlParams = exports.DeleteImposterUrlParams = /*#__PURE__*/Schema.Struct({
24
+ force: /*#__PURE__*/Schema.optionalWith(Schema.BooleanFromString, {
25
+ default: () => false
26
+ })
27
+ });
28
+ const ListRequestsUrlParams = exports.ListRequestsUrlParams = /*#__PURE__*/Schema.Struct({
29
+ limit: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.NumberFromString.pipe(/*#__PURE__*/Schema.int(), /*#__PURE__*/Schema.positive()), {
30
+ default: () => 50
31
+ }),
32
+ method: /*#__PURE__*/Schema.optional(Schema.String),
33
+ path: /*#__PURE__*/Schema.optional(Schema.String),
34
+ status: /*#__PURE__*/Schema.optional(Schema.NumberFromString)
35
+ });
36
+ //# sourceMappingURL=ApiSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiSchemas.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","PaginationUrlParams","exports","Struct","limit","optionalWith","NumberFromString","pipe","int","positive","offset","nonNegative","ListImpostersUrlParams","fields","status","optional","ImposterStatus","protocol","Protocol","DeleteImposterUrlParams","force","BooleanFromString","ListRequestsUrlParams","method","String","path"],"sources":["../../../src/api/ApiSchemas.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}