@dooboostore/simple-boot-http-server 1.0.16 → 1.0.18

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 (429) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.MD +6 -47
  3. package/dist/cjs/SimpleBootHttpServer.d.ts.map +1 -0
  4. package/dist/cjs/SimpleBootHttpServer.js +930 -0
  5. package/dist/cjs/SimpleBootHttpServer.js.map +7 -0
  6. package/dist/cjs/codes/HttpHeaders.d.ts.map +1 -0
  7. package/dist/cjs/codes/HttpHeaders.js +71 -0
  8. package/dist/cjs/codes/HttpHeaders.js.map +7 -0
  9. package/dist/cjs/codes/HttpMethod.d.ts.map +1 -0
  10. package/dist/cjs/codes/HttpMethod.js +41 -0
  11. package/dist/cjs/codes/HttpMethod.js.map +7 -0
  12. package/dist/cjs/codes/HttpStatus.d.ts +45 -0
  13. package/dist/cjs/codes/HttpStatus.d.ts.map +1 -0
  14. package/dist/cjs/codes/HttpStatus.js +49 -0
  15. package/dist/cjs/codes/HttpStatus.js.map +7 -0
  16. package/dist/cjs/codes/Mimes.d.ts.map +1 -0
  17. package/dist/cjs/codes/Mimes.js +57 -0
  18. package/dist/cjs/codes/Mimes.js.map +7 -0
  19. package/dist/cjs/codes/index.d.ts +5 -0
  20. package/dist/cjs/codes/index.d.ts.map +1 -0
  21. package/dist/cjs/codes/index.js +145 -0
  22. package/dist/cjs/codes/index.js.map +7 -0
  23. package/dist/cjs/decorators/MethodMapping.d.ts.map +1 -0
  24. package/dist/cjs/decorators/MethodMapping.js +265 -0
  25. package/dist/cjs/decorators/MethodMapping.js.map +7 -0
  26. package/dist/cjs/decorators/index.d.ts +2 -0
  27. package/dist/cjs/decorators/index.d.ts.map +1 -0
  28. package/dist/cjs/decorators/index.js +267 -0
  29. package/dist/cjs/decorators/index.js.map +7 -0
  30. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.d.ts.map +1 -0
  31. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js +55 -0
  32. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
  33. package/dist/cjs/endpoints/EndPoint.d.ts.map +1 -0
  34. package/dist/cjs/endpoints/EndPoint.js +18 -0
  35. package/dist/cjs/endpoints/EndPoint.js.map +7 -0
  36. package/dist/cjs/endpoints/HeaderEndPoint.d.ts.map +1 -0
  37. package/dist/cjs/endpoints/HeaderEndPoint.js +41 -0
  38. package/dist/cjs/endpoints/HeaderEndPoint.js.map +7 -0
  39. package/dist/cjs/endpoints/index.d.ts +4 -0
  40. package/dist/cjs/endpoints/index.d.ts.map +1 -0
  41. package/dist/cjs/endpoints/index.js +73 -0
  42. package/dist/cjs/endpoints/index.js.map +7 -0
  43. package/dist/cjs/errors/BadRequestError.d.ts.map +1 -0
  44. package/dist/cjs/errors/BadRequestError.js +45 -0
  45. package/dist/cjs/errors/BadRequestError.js.map +7 -0
  46. package/dist/cjs/errors/ForbiddenError.d.ts.map +1 -0
  47. package/dist/cjs/errors/ForbiddenError.js +45 -0
  48. package/dist/cjs/errors/ForbiddenError.js.map +7 -0
  49. package/dist/cjs/errors/HttpError.d.ts.map +1 -0
  50. package/dist/cjs/errors/HttpError.js +36 -0
  51. package/dist/cjs/errors/HttpError.js.map +7 -0
  52. package/dist/cjs/errors/InternalServerError.d.ts.map +1 -0
  53. package/dist/cjs/errors/InternalServerError.js +45 -0
  54. package/dist/cjs/errors/InternalServerError.js.map +7 -0
  55. package/dist/cjs/errors/NotFoundError.d.ts.map +1 -0
  56. package/dist/cjs/errors/NotFoundError.js +45 -0
  57. package/dist/cjs/errors/NotFoundError.js.map +7 -0
  58. package/dist/cjs/errors/UnauthorizedError.d.ts.map +1 -0
  59. package/dist/cjs/errors/UnauthorizedError.js +45 -0
  60. package/dist/cjs/errors/UnauthorizedError.js.map +7 -0
  61. package/dist/cjs/errors/index.d.ts +7 -0
  62. package/dist/cjs/errors/index.d.ts.map +1 -0
  63. package/dist/cjs/errors/index.js +83 -0
  64. package/dist/cjs/errors/index.js.map +7 -0
  65. package/dist/cjs/filters/CacheFilter.d.ts.map +1 -0
  66. package/dist/cjs/filters/CacheFilter.js +153 -0
  67. package/dist/cjs/filters/CacheFilter.js.map +7 -0
  68. package/dist/cjs/filters/Filter.d.ts.map +1 -0
  69. package/dist/cjs/filters/Filter.js +18 -0
  70. package/dist/cjs/filters/Filter.js.map +7 -0
  71. package/dist/cjs/filters/HttpStatusFilter.d.ts.map +1 -0
  72. package/dist/cjs/filters/HttpStatusFilter.js +44 -0
  73. package/dist/cjs/filters/HttpStatusFilter.js.map +7 -0
  74. package/dist/cjs/filters/OpenApi3Filter.d.ts.map +1 -0
  75. package/dist/cjs/filters/OpenApi3Filter.js +83 -0
  76. package/dist/cjs/filters/OpenApi3Filter.js.map +7 -0
  77. package/dist/cjs/filters/ResourceFilter.d.ts.map +1 -0
  78. package/dist/cjs/filters/ResourceFilter.js +91 -0
  79. package/dist/cjs/filters/ResourceFilter.js.map +7 -0
  80. package/dist/cjs/filters/ThrowFilter.d.ts.map +1 -0
  81. package/dist/cjs/filters/ThrowFilter.js +47 -0
  82. package/dist/cjs/filters/ThrowFilter.js.map +7 -0
  83. package/dist/cjs/filters/index.d.ts +7 -0
  84. package/dist/cjs/filters/index.d.ts.map +1 -0
  85. package/dist/cjs/filters/index.js +318 -0
  86. package/dist/cjs/filters/index.js.map +7 -0
  87. package/dist/cjs/index.d.ts +13 -0
  88. package/dist/cjs/index.d.ts.map +1 -0
  89. package/dist/cjs/index.js +1756 -0
  90. package/dist/cjs/index.js.map +7 -0
  91. package/dist/cjs/inject/InjectSituationType.d.ts.map +1 -0
  92. package/dist/cjs/inject/InjectSituationType.js +33 -0
  93. package/dist/cjs/inject/InjectSituationType.js.map +7 -0
  94. package/dist/cjs/inject/index.d.ts +2 -0
  95. package/dist/cjs/inject/index.d.ts.map +1 -0
  96. package/dist/cjs/inject/index.js +35 -0
  97. package/dist/cjs/inject/index.js.map +7 -0
  98. package/dist/cjs/lifecycle/OnInit.d.ts.map +1 -0
  99. package/dist/cjs/lifecycle/OnInit.js +18 -0
  100. package/dist/cjs/lifecycle/OnInit.js.map +7 -0
  101. package/dist/cjs/lifecycle/index.d.ts +2 -0
  102. package/dist/cjs/lifecycle/index.d.ts.map +1 -0
  103. package/dist/cjs/lifecycle/index.js +18 -0
  104. package/dist/cjs/lifecycle/index.js.map +7 -0
  105. package/{models → dist/cjs/models}/RequestResponse.d.ts +1 -3
  106. package/dist/cjs/models/RequestResponse.d.ts.map +1 -0
  107. package/dist/cjs/models/RequestResponse.js +500 -0
  108. package/dist/cjs/models/RequestResponse.js.map +7 -0
  109. package/dist/cjs/models/datas/HeaderData.d.ts.map +1 -0
  110. package/dist/cjs/models/datas/HeaderData.js +35 -0
  111. package/dist/cjs/models/datas/HeaderData.js.map +7 -0
  112. package/dist/cjs/models/datas/MultipartData.d.ts.map +1 -0
  113. package/dist/cjs/models/datas/MultipartData.js +18 -0
  114. package/dist/cjs/models/datas/MultipartData.js.map +7 -0
  115. package/dist/cjs/models/datas/ReqHeader.d.ts.map +1 -0
  116. package/dist/cjs/models/datas/ReqHeader.js +31 -0
  117. package/dist/cjs/models/datas/ReqHeader.js.map +7 -0
  118. package/dist/cjs/models/datas/Resource.d.ts.map +1 -0
  119. package/dist/cjs/models/datas/Resource.js +550 -0
  120. package/dist/cjs/models/datas/Resource.js.map +7 -0
  121. package/dist/cjs/models/datas/body/ReqFormUrlBody.d.ts.map +1 -0
  122. package/dist/cjs/models/datas/body/ReqFormUrlBody.js +31 -0
  123. package/dist/cjs/models/datas/body/ReqFormUrlBody.js.map +7 -0
  124. package/dist/cjs/models/datas/body/ReqJsonBody.d.ts.map +1 -0
  125. package/dist/cjs/models/datas/body/ReqJsonBody.js +31 -0
  126. package/dist/cjs/models/datas/body/ReqJsonBody.js.map +7 -0
  127. package/dist/cjs/models/datas/body/ReqMultipartFormBody.d.ts.map +1 -0
  128. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js +34 -0
  129. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js.map +7 -0
  130. package/dist/cjs/models/index.d.ts +10 -0
  131. package/dist/cjs/models/index.d.ts.map +1 -0
  132. package/dist/cjs/models/index.js +593 -0
  133. package/dist/cjs/models/index.js.map +7 -0
  134. package/dist/cjs/models/method/patch/PatchJson.d.ts.map +1 -0
  135. package/dist/cjs/models/method/patch/PatchJson.js +49 -0
  136. package/dist/cjs/models/method/patch/PatchJson.js.map +7 -0
  137. package/dist/cjs/option/HttpServerOption.d.ts.map +1 -0
  138. package/dist/cjs/option/HttpServerOption.js +67 -0
  139. package/dist/cjs/option/HttpServerOption.js.map +7 -0
  140. package/dist/cjs/option/index.d.ts +2 -0
  141. package/dist/cjs/option/index.d.ts.map +1 -0
  142. package/dist/cjs/option/index.js +69 -0
  143. package/dist/cjs/option/index.js.map +7 -0
  144. package/dist/cjs/package.json +3 -0
  145. package/dist/cjs/resolvers/Resolver.d.ts.map +1 -0
  146. package/dist/cjs/resolvers/Resolver.js +18 -0
  147. package/dist/cjs/resolvers/Resolver.js.map +7 -0
  148. package/{resolvers/ResourceResorver.d.ts → dist/cjs/resolvers/ResourceResolver.d.ts} +2 -2
  149. package/dist/cjs/resolvers/ResourceResolver.d.ts.map +1 -0
  150. package/dist/cjs/resolvers/ResourceResolver.js +571 -0
  151. package/dist/cjs/resolvers/ResourceResolver.js.map +7 -0
  152. package/dist/cjs/resolvers/index.d.ts +3 -0
  153. package/dist/cjs/resolvers/index.d.ts.map +1 -0
  154. package/dist/cjs/resolvers/index.js +571 -0
  155. package/dist/cjs/resolvers/index.js.map +7 -0
  156. package/dist/cjs/session/SessionManager.d.ts.map +1 -0
  157. package/dist/cjs/session/SessionManager.js +577 -0
  158. package/dist/cjs/session/SessionManager.js.map +7 -0
  159. package/dist/cjs/session/index.d.ts +2 -0
  160. package/dist/cjs/session/index.d.ts.map +1 -0
  161. package/dist/cjs/session/index.js +579 -0
  162. package/dist/cjs/session/index.js.map +7 -0
  163. package/dist/esm/SimpleBootHttpServer.d.ts +14 -0
  164. package/dist/esm/SimpleBootHttpServer.d.ts.map +1 -0
  165. package/dist/esm/SimpleBootHttpServer.js +906 -0
  166. package/dist/esm/SimpleBootHttpServer.js.map +7 -0
  167. package/dist/esm/codes/HttpHeaders.d.ts +42 -0
  168. package/dist/esm/codes/HttpHeaders.d.ts.map +1 -0
  169. package/dist/esm/codes/HttpHeaders.js +47 -0
  170. package/dist/esm/codes/HttpHeaders.js.map +7 -0
  171. package/dist/esm/codes/HttpMethod.d.ts +12 -0
  172. package/dist/esm/codes/HttpMethod.d.ts.map +1 -0
  173. package/dist/esm/codes/HttpMethod.js +17 -0
  174. package/dist/esm/codes/HttpMethod.js.map +7 -0
  175. package/dist/esm/codes/HttpStatus.d.ts +45 -0
  176. package/dist/esm/codes/HttpStatus.d.ts.map +1 -0
  177. package/dist/esm/codes/HttpStatus.js +25 -0
  178. package/dist/esm/codes/HttpStatus.js.map +7 -0
  179. package/dist/esm/codes/Mimes.d.ts +28 -0
  180. package/dist/esm/codes/Mimes.d.ts.map +1 -0
  181. package/dist/esm/codes/Mimes.js +33 -0
  182. package/dist/esm/codes/Mimes.js.map +7 -0
  183. package/dist/esm/codes/index.d.ts +5 -0
  184. package/dist/esm/codes/index.d.ts.map +1 -0
  185. package/dist/esm/codes/index.js +116 -0
  186. package/dist/esm/codes/index.js.map +7 -0
  187. package/dist/esm/decorators/MethodMapping.d.ts +74 -0
  188. package/dist/esm/decorators/MethodMapping.d.ts.map +1 -0
  189. package/dist/esm/decorators/MethodMapping.js +211 -0
  190. package/dist/esm/decorators/MethodMapping.js.map +7 -0
  191. package/dist/esm/decorators/index.d.ts +2 -0
  192. package/dist/esm/decorators/index.d.ts.map +1 -0
  193. package/dist/esm/decorators/index.js +211 -0
  194. package/dist/esm/decorators/index.js.map +7 -0
  195. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts +16 -0
  196. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts.map +1 -0
  197. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js +31 -0
  198. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
  199. package/dist/esm/endpoints/EndPoint.d.ts +7 -0
  200. package/dist/esm/endpoints/EndPoint.d.ts.map +1 -0
  201. package/dist/esm/endpoints/EndPoint.js +1 -0
  202. package/dist/esm/endpoints/EndPoint.js.map +7 -0
  203. package/dist/esm/endpoints/HeaderEndPoint.d.ts +12 -0
  204. package/dist/esm/endpoints/HeaderEndPoint.d.ts.map +1 -0
  205. package/dist/esm/endpoints/HeaderEndPoint.js +17 -0
  206. package/dist/esm/endpoints/HeaderEndPoint.js.map +7 -0
  207. package/dist/esm/endpoints/index.d.ts +4 -0
  208. package/dist/esm/endpoints/index.d.ts.map +1 -0
  209. package/dist/esm/endpoints/index.js +46 -0
  210. package/dist/esm/endpoints/index.js.map +7 -0
  211. package/dist/esm/errors/BadRequestError.d.ts +8 -0
  212. package/dist/esm/errors/BadRequestError.d.ts.map +1 -0
  213. package/dist/esm/errors/BadRequestError.js +19 -0
  214. package/dist/esm/errors/BadRequestError.js.map +7 -0
  215. package/dist/esm/errors/ForbiddenError.d.ts +8 -0
  216. package/dist/esm/errors/ForbiddenError.d.ts.map +1 -0
  217. package/dist/esm/errors/ForbiddenError.js +19 -0
  218. package/dist/esm/errors/ForbiddenError.js.map +7 -0
  219. package/dist/esm/errors/HttpError.d.ts +12 -0
  220. package/dist/esm/errors/HttpError.d.ts.map +1 -0
  221. package/dist/esm/errors/HttpError.js +12 -0
  222. package/dist/esm/errors/HttpError.js.map +7 -0
  223. package/dist/esm/errors/InternalServerError.d.ts +8 -0
  224. package/dist/esm/errors/InternalServerError.d.ts.map +1 -0
  225. package/dist/esm/errors/InternalServerError.js +19 -0
  226. package/dist/esm/errors/InternalServerError.js.map +7 -0
  227. package/dist/esm/errors/NotFoundError.d.ts +8 -0
  228. package/dist/esm/errors/NotFoundError.d.ts.map +1 -0
  229. package/dist/esm/errors/NotFoundError.js +19 -0
  230. package/dist/esm/errors/NotFoundError.js.map +7 -0
  231. package/dist/esm/errors/UnauthorizedError.d.ts +8 -0
  232. package/dist/esm/errors/UnauthorizedError.d.ts.map +1 -0
  233. package/dist/esm/errors/UnauthorizedError.js +19 -0
  234. package/dist/esm/errors/UnauthorizedError.js.map +7 -0
  235. package/dist/esm/errors/index.d.ts +7 -0
  236. package/dist/esm/errors/index.d.ts.map +1 -0
  237. package/dist/esm/errors/index.js +52 -0
  238. package/dist/esm/errors/index.js.map +7 -0
  239. package/dist/esm/filters/CacheFilter.d.ts +45 -0
  240. package/dist/esm/filters/CacheFilter.d.ts.map +1 -0
  241. package/dist/esm/filters/CacheFilter.js +129 -0
  242. package/dist/esm/filters/CacheFilter.js.map +7 -0
  243. package/dist/esm/filters/Filter.d.ts +17 -0
  244. package/dist/esm/filters/Filter.d.ts.map +1 -0
  245. package/dist/esm/filters/Filter.js +1 -0
  246. package/dist/esm/filters/Filter.js.map +7 -0
  247. package/dist/esm/filters/HttpStatusFilter.d.ts +20 -0
  248. package/dist/esm/filters/HttpStatusFilter.d.ts.map +1 -0
  249. package/dist/esm/filters/HttpStatusFilter.js +20 -0
  250. package/dist/esm/filters/HttpStatusFilter.js.map +7 -0
  251. package/dist/esm/filters/OpenApi3Filter.d.ts +142 -0
  252. package/dist/esm/filters/OpenApi3Filter.d.ts.map +1 -0
  253. package/dist/esm/filters/OpenApi3Filter.js +57 -0
  254. package/dist/esm/filters/OpenApi3Filter.js.map +7 -0
  255. package/dist/esm/filters/ResourceFilter.d.ts +24 -0
  256. package/dist/esm/filters/ResourceFilter.d.ts.map +1 -0
  257. package/dist/esm/filters/ResourceFilter.js +57 -0
  258. package/dist/esm/filters/ResourceFilter.js.map +7 -0
  259. package/dist/esm/filters/ThrowFilter.d.ts +19 -0
  260. package/dist/esm/filters/ThrowFilter.d.ts.map +1 -0
  261. package/dist/esm/filters/ThrowFilter.js +23 -0
  262. package/dist/esm/filters/ThrowFilter.js.map +7 -0
  263. package/dist/esm/filters/index.d.ts +7 -0
  264. package/dist/esm/filters/index.d.ts.map +1 -0
  265. package/dist/esm/filters/index.js +278 -0
  266. package/dist/esm/filters/index.js.map +7 -0
  267. package/dist/esm/index.d.ts +13 -0
  268. package/dist/esm/index.d.ts.map +1 -0
  269. package/dist/esm/index.js +1662 -0
  270. package/dist/esm/index.js.map +7 -0
  271. package/dist/esm/inject/InjectSituationType.d.ts +4 -0
  272. package/dist/esm/inject/InjectSituationType.d.ts.map +1 -0
  273. package/dist/esm/inject/InjectSituationType.js +9 -0
  274. package/dist/esm/inject/InjectSituationType.js.map +7 -0
  275. package/dist/esm/inject/index.d.ts +2 -0
  276. package/dist/esm/inject/index.d.ts.map +1 -0
  277. package/dist/esm/inject/index.js +9 -0
  278. package/dist/esm/inject/index.js.map +7 -0
  279. package/dist/esm/lifecycle/OnInit.d.ts +5 -0
  280. package/dist/esm/lifecycle/OnInit.d.ts.map +1 -0
  281. package/dist/esm/lifecycle/OnInit.js +1 -0
  282. package/dist/esm/lifecycle/OnInit.js.map +7 -0
  283. package/dist/esm/lifecycle/index.d.ts +2 -0
  284. package/dist/esm/lifecycle/index.d.ts.map +1 -0
  285. package/dist/esm/lifecycle/index.js +1 -0
  286. package/dist/esm/lifecycle/index.js.map +7 -0
  287. package/dist/esm/models/RequestResponse.d.ts +100 -0
  288. package/dist/esm/models/RequestResponse.d.ts.map +1 -0
  289. package/dist/esm/models/RequestResponse.js +475 -0
  290. package/dist/esm/models/RequestResponse.js.map +7 -0
  291. package/dist/esm/models/datas/HeaderData.d.ts +10 -0
  292. package/dist/esm/models/datas/HeaderData.d.ts.map +1 -0
  293. package/dist/esm/models/datas/HeaderData.js +11 -0
  294. package/dist/esm/models/datas/HeaderData.js.map +7 -0
  295. package/dist/esm/models/datas/MultipartData.d.ts +12 -0
  296. package/dist/esm/models/datas/MultipartData.d.ts.map +1 -0
  297. package/dist/esm/models/datas/MultipartData.js +1 -0
  298. package/dist/esm/models/datas/MultipartData.js.map +7 -0
  299. package/dist/esm/models/datas/ReqHeader.d.ts +68 -0
  300. package/dist/esm/models/datas/ReqHeader.d.ts.map +1 -0
  301. package/dist/esm/models/datas/ReqHeader.js +7 -0
  302. package/dist/esm/models/datas/ReqHeader.js.map +7 -0
  303. package/dist/esm/models/datas/Resource.d.ts +11 -0
  304. package/dist/esm/models/datas/Resource.d.ts.map +1 -0
  305. package/dist/esm/models/datas/Resource.js +516 -0
  306. package/dist/esm/models/datas/Resource.js.map +7 -0
  307. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts +4 -0
  308. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts.map +1 -0
  309. package/dist/esm/models/datas/body/ReqFormUrlBody.js +7 -0
  310. package/dist/esm/models/datas/body/ReqFormUrlBody.js.map +7 -0
  311. package/dist/esm/models/datas/body/ReqJsonBody.d.ts +4 -0
  312. package/dist/esm/models/datas/body/ReqJsonBody.d.ts.map +1 -0
  313. package/dist/esm/models/datas/body/ReqJsonBody.js +7 -0
  314. package/dist/esm/models/datas/body/ReqJsonBody.js.map +7 -0
  315. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts +6 -0
  316. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts.map +1 -0
  317. package/dist/esm/models/datas/body/ReqMultipartFormBody.js +10 -0
  318. package/dist/esm/models/datas/body/ReqMultipartFormBody.js.map +7 -0
  319. package/dist/esm/models/index.d.ts +10 -0
  320. package/dist/esm/models/index.d.ts.map +1 -0
  321. package/dist/esm/models/index.js +549 -0
  322. package/dist/esm/models/index.js.map +7 -0
  323. package/dist/esm/models/method/patch/PatchJson.d.ts +8 -0
  324. package/dist/esm/models/method/patch/PatchJson.d.ts.map +1 -0
  325. package/dist/esm/models/method/patch/PatchJson.js +15 -0
  326. package/dist/esm/models/method/patch/PatchJson.js.map +7 -0
  327. package/dist/esm/option/HttpServerOption.d.ts +83 -0
  328. package/dist/esm/option/HttpServerOption.d.ts.map +1 -0
  329. package/dist/esm/option/HttpServerOption.js +43 -0
  330. package/dist/esm/option/HttpServerOption.js.map +7 -0
  331. package/dist/esm/option/index.d.ts +2 -0
  332. package/dist/esm/option/index.d.ts.map +1 -0
  333. package/dist/esm/option/index.js +43 -0
  334. package/dist/esm/option/index.js.map +7 -0
  335. package/dist/esm/resolvers/Resolver.d.ts +5 -0
  336. package/dist/esm/resolvers/Resolver.d.ts.map +1 -0
  337. package/dist/esm/resolvers/Resolver.js +1 -0
  338. package/dist/esm/resolvers/Resolver.js.map +7 -0
  339. package/dist/esm/resolvers/ResourceResolver.d.ts +6 -0
  340. package/dist/esm/resolvers/ResourceResolver.d.ts.map +1 -0
  341. package/dist/esm/resolvers/ResourceResolver.js +538 -0
  342. package/dist/esm/resolvers/ResourceResolver.js.map +7 -0
  343. package/dist/esm/resolvers/index.d.ts +3 -0
  344. package/dist/esm/resolvers/index.d.ts.map +1 -0
  345. package/dist/esm/resolvers/index.js +538 -0
  346. package/dist/esm/resolvers/index.js.map +7 -0
  347. package/dist/esm/session/SessionManager.d.ts +57 -0
  348. package/dist/esm/session/SessionManager.d.ts.map +1 -0
  349. package/dist/esm/session/SessionManager.js +553 -0
  350. package/dist/esm/session/SessionManager.js.map +7 -0
  351. package/dist/esm/session/index.d.ts +2 -0
  352. package/dist/esm/session/index.d.ts.map +1 -0
  353. package/dist/esm/session/index.js +553 -0
  354. package/dist/esm/session/index.js.map +7 -0
  355. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +1662 -0
  356. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +7 -0
  357. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +1699 -0
  358. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +7 -0
  359. package/package.json +65 -46
  360. package/SimpleBootHttpServer.js +0 -313
  361. package/codes/HttpHeaders.js +0 -43
  362. package/codes/HttpMethod.js +0 -13
  363. package/codes/HttpStatus.d.ts +0 -20
  364. package/codes/HttpStatus.js +0 -21
  365. package/codes/Mimes.js +0 -29
  366. package/decorators/MethodMapping.js +0 -198
  367. package/endpoints/CrossDomainHeaderEndPoint.js +0 -37
  368. package/endpoints/EndPoint.js +0 -2
  369. package/endpoints/HeaderEndPoint.js +0 -26
  370. package/errors/BadRequestError.js +0 -8
  371. package/errors/ForbiddenError.js +0 -8
  372. package/errors/HttpError.js +0 -8
  373. package/errors/InternalServerError.js +0 -8
  374. package/errors/NotFoundError.js +0 -8
  375. package/errors/UnauthorizedError.js +0 -8
  376. package/filters/CacheFilter.js +0 -145
  377. package/filters/Filter.js +0 -2
  378. package/filters/HttpStatusFilter.js +0 -31
  379. package/filters/OpenApi3Filter.js +0 -57
  380. package/filters/ResourceFilter.js +0 -72
  381. package/filters/ThrowFilter.js +0 -34
  382. package/inject/InjectSituationType.js +0 -5
  383. package/lifecycle/OnInit.js +0 -2
  384. package/models/RequestResponse.js +0 -467
  385. package/models/datas/HeaderData.js +0 -7
  386. package/models/datas/MultipartData.js +0 -2
  387. package/models/datas/ReqHeader.js +0 -3
  388. package/models/datas/Resource.js +0 -55
  389. package/models/datas/body/ReqFormUrlBody.js +0 -3
  390. package/models/datas/body/ReqJsonBody.js +0 -3
  391. package/models/datas/body/ReqMultipartFormBody.js +0 -6
  392. package/models/method/patch/PatchJson.js +0 -11
  393. package/option/HttpServerOption.js +0 -35
  394. package/resolvers/Resolver.js +0 -2
  395. package/resolvers/ResourceResorver.js +0 -18
  396. package/session/SessionManager.js +0 -108
  397. /package/{SimpleBootHttpServer.d.ts → dist/cjs/SimpleBootHttpServer.d.ts} +0 -0
  398. /package/{codes → dist/cjs/codes}/HttpHeaders.d.ts +0 -0
  399. /package/{codes → dist/cjs/codes}/HttpMethod.d.ts +0 -0
  400. /package/{codes → dist/cjs/codes}/Mimes.d.ts +0 -0
  401. /package/{decorators → dist/cjs/decorators}/MethodMapping.d.ts +0 -0
  402. /package/{endpoints → dist/cjs/endpoints}/CrossDomainHeaderEndPoint.d.ts +0 -0
  403. /package/{endpoints → dist/cjs/endpoints}/EndPoint.d.ts +0 -0
  404. /package/{endpoints → dist/cjs/endpoints}/HeaderEndPoint.d.ts +0 -0
  405. /package/{errors → dist/cjs/errors}/BadRequestError.d.ts +0 -0
  406. /package/{errors → dist/cjs/errors}/ForbiddenError.d.ts +0 -0
  407. /package/{errors → dist/cjs/errors}/HttpError.d.ts +0 -0
  408. /package/{errors → dist/cjs/errors}/InternalServerError.d.ts +0 -0
  409. /package/{errors → dist/cjs/errors}/NotFoundError.d.ts +0 -0
  410. /package/{errors → dist/cjs/errors}/UnauthorizedError.d.ts +0 -0
  411. /package/{filters → dist/cjs/filters}/CacheFilter.d.ts +0 -0
  412. /package/{filters → dist/cjs/filters}/Filter.d.ts +0 -0
  413. /package/{filters → dist/cjs/filters}/HttpStatusFilter.d.ts +0 -0
  414. /package/{filters → dist/cjs/filters}/OpenApi3Filter.d.ts +0 -0
  415. /package/{filters → dist/cjs/filters}/ResourceFilter.d.ts +0 -0
  416. /package/{filters → dist/cjs/filters}/ThrowFilter.d.ts +0 -0
  417. /package/{inject → dist/cjs/inject}/InjectSituationType.d.ts +0 -0
  418. /package/{lifecycle → dist/cjs/lifecycle}/OnInit.d.ts +0 -0
  419. /package/{models → dist/cjs/models}/datas/HeaderData.d.ts +0 -0
  420. /package/{models → dist/cjs/models}/datas/MultipartData.d.ts +0 -0
  421. /package/{models → dist/cjs/models}/datas/ReqHeader.d.ts +0 -0
  422. /package/{models → dist/cjs/models}/datas/Resource.d.ts +0 -0
  423. /package/{models → dist/cjs/models}/datas/body/ReqFormUrlBody.d.ts +0 -0
  424. /package/{models → dist/cjs/models}/datas/body/ReqJsonBody.d.ts +0 -0
  425. /package/{models → dist/cjs/models}/datas/body/ReqMultipartFormBody.d.ts +0 -0
  426. /package/{models → dist/cjs/models}/method/patch/PatchJson.d.ts +0 -0
  427. /package/{option → dist/cjs/option}/HttpServerOption.d.ts +0 -0
  428. /package/{resolvers → dist/cjs/resolvers}/Resolver.d.ts +0 -0
  429. /package/{session → dist/cjs/session}/SessionManager.d.ts +0 -0
@@ -0,0 +1,57 @@
1
+ // src/decorators/MethodMapping.ts
2
+ import "reflect-metadata";
3
+ import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
4
+ var MappingMetadataKey = Symbol("MappingMetadataKey");
5
+ var getUrlMappings = (target) => {
6
+ if (target !== null && void 0 !== target && typeof target === "object") {
7
+ target = target.constructor;
8
+ }
9
+ return ReflectUtils.getMetadata(MappingMetadataKey, target);
10
+ };
11
+
12
+ // src/filters/OpenApi3Filter.ts
13
+ var DefulatData = {
14
+ openapi: "3.0.1",
15
+ info: {
16
+ title: "SimpleBootHttpServer OpenApi3",
17
+ description: "SimpleBootHttpServer OpenApi3"
18
+ }
19
+ };
20
+ var OpenApi3Filter = class {
21
+ constructor(config, openApiConfig) {
22
+ this.config = config;
23
+ this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {});
24
+ }
25
+ async onInit(app) {
26
+ }
27
+ async proceedBefore({ rr, app }) {
28
+ if (rr.reqUrl === this.config.path) {
29
+ const map = app.routerManager.routingMap();
30
+ const data = {
31
+ paths: {}
32
+ };
33
+ Object.entries(map).filter(([k, v]) => typeof v !== "string").forEach(([k, v]) => {
34
+ const method = data.paths[k] = {};
35
+ getUrlMappings(v)?.forEach((it) => {
36
+ method[it.config.method] = {
37
+ summary: it.propertyKey,
38
+ description: it.propertyKey
39
+ // operationId: it.operationId,
40
+ // parameters: it.parameters,
41
+ // responses: it.responses,
42
+ };
43
+ });
44
+ });
45
+ rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(200 /* Ok */).resEnd();
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ async proceedAfter({ rr, app }) {
51
+ return true;
52
+ }
53
+ };
54
+ export {
55
+ OpenApi3Filter
56
+ };
57
+ //# sourceMappingURL=OpenApi3Filter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/MethodMapping.ts", "../../../src/filters/OpenApi3Filter.ts"],
4
+ "sourcesContent": ["import 'reflect-metadata';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n"],
5
+ "mappings": ";AAAA,OAAO;AAGP,SAAS,oBAAoB;AA6B7B,IAAM,qBAAqB,OAAO,oBAAoB;AAyB/C,IAAM,iBAAiB,CAAC,WAAqC;AAChE,MAAI,WAAW,QAAQ,WAAc,UAAU,OAAO,WAAW,UAAU;AACvE,aAAS,OAAO;AAAA,EACpB;AACA,SAAO,aAAa,YAAY,oBAAoB,MAAM;AAC9D;;;ACiDA,IAAM,cAA2B;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,IACF,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AACJ;AAEO,IAAM,iBAAN,MAAuC;AAAA,EAG1C,YAAmB,QAA4E,eAAsC;AAAlH;AACf,SAAK,gBAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,GAAG,iBAAiB,CAAC,CAAC;AAAA,EAC1F;AAAA,EACA,MAAM,OAAO,KAA0B;AAAA,EACvC;AAAA,EACA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,QAAI,GAAG,WAAW,KAAK,OAAO,MAAM;AAChC,YAAM,MAAM,IAAI,cAAc,WAAW;AAEzC,YAAM,OAAO;AAAA,QACT,OAAO,CAAC;AAAA,MACZ;AAEA,aAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AAC9E,cAAM,SAAS,KAAK,MAAO,CAAC,IAAI,CAAC;AACjC,uBAAe,CAAC,GAAG,QAAQ,QAAM;AAC7B,iBAAO,GAAG,OAAO,MAAM,IAAI;AAAA,YACvB,SAAS,GAAG;AAAA,YACZ,aAAa,GAAG;AAAA;AAAA;AAAA;AAAA,UAIpB;AAAA,QACJ,CAAC;AAAA,MACL,CAAC;AAED,SAAG,aAAa,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,aAAa,GAAG,IAAI,CAAC,EAAE,0BAA2B,EAAE,OAAO;AAChH,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,WAAO;AAAA,EACX;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ import { Filter } from '../filters/Filter';
2
+ import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
3
+ import { RequestResponse } from '../models/RequestResponse';
4
+ export type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);
5
+ export declare class ResourceFilter implements Filter {
6
+ private resourceDistPath;
7
+ private resourceRegex;
8
+ constructor(resourceDistPath: string, resourceRegex?: (RequestFilterType | {
9
+ request: RequestFilterType;
10
+ dist: string;
11
+ })[]);
12
+ onInit(app: SimpleBootHttpServer): Promise<void>;
13
+ proceedBefore({ rr, app }: {
14
+ rr: RequestResponse;
15
+ app: SimpleBootHttpServer;
16
+ carrier: Map<string, any>;
17
+ }): Promise<boolean>;
18
+ proceedAfter({ rr, app }: {
19
+ rr: RequestResponse;
20
+ app: SimpleBootHttpServer;
21
+ carrier: Map<string, any>;
22
+ }): Promise<boolean>;
23
+ }
24
+ //# sourceMappingURL=ResourceFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/ResourceFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzL,qBAAa,cAAe,YAAW,MAAM;IAC7B,OAAO,CAAC,gBAAgB;IAAU,OAAO,CAAC,aAAa;gBAA/C,gBAAgB,EAAE,MAAM,EAAU,aAAa,GAAE,CAAC,iBAAiB,GAAG;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAO;IAGxI,MAAM,CAAC,GAAG,EAAE,oBAAoB;IAGhC,aAAa,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;IAkDpG,YAAY,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;CAG5G"}
@@ -0,0 +1,57 @@
1
+ // src/filters/ResourceFilter.ts
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import mime from "mime-types";
5
+ var ResourceFilter = class {
6
+ constructor(resourceDistPath, resourceRegex = []) {
7
+ this.resourceDistPath = resourceDistPath;
8
+ this.resourceRegex = resourceRegex;
9
+ }
10
+ async onInit(app) {
11
+ }
12
+ async proceedBefore({ rr, app }) {
13
+ const url = (rr.reqUrlPathName ?? "").replace(/\.\./g, "");
14
+ const urlObj = rr.reqUrlObject;
15
+ let sw = true;
16
+ const regExps = this.resourceRegex.filter((it) => {
17
+ if (it instanceof RegExp) {
18
+ return it.test(url);
19
+ }
20
+ if (typeof it === "string") {
21
+ return RegExp(it).test(url);
22
+ }
23
+ if (typeof it === "function") {
24
+ return it(rr, app);
25
+ }
26
+ if (typeof it === "object" && "request" in it) {
27
+ if (typeof it.request === "function") {
28
+ return it.request(rr, app);
29
+ }
30
+ return RegExp(it.request).test(url);
31
+ }
32
+ });
33
+ for (const it of regExps) {
34
+ const resourcePath = path.join(this.resourceDistPath, typeof it === "object" && "dist" in it ? it.dist : urlObj.pathname);
35
+ sw = false;
36
+ if (fs.existsSync(resourcePath)) {
37
+ rr.resStatusCode(200 /* Ok */);
38
+ rr.resSetHeader("Content-Type" /* ContentType */, mime.lookup(resourcePath).toString());
39
+ await rr.resEnd(fs.readFileSync(resourcePath));
40
+ break;
41
+ } else {
42
+ rr.resStatusCode(404 /* NotFound */);
43
+ await rr.resEnd();
44
+ break;
45
+ }
46
+ sw = false;
47
+ }
48
+ return sw;
49
+ }
50
+ async proceedAfter({ rr, app }) {
51
+ return true;
52
+ }
53
+ };
54
+ export {
55
+ ResourceFilter
56
+ };
57
+ //# sourceMappingURL=ResourceFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/ResourceFilter.ts"],
4
+ "sourcesContent": ["import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n"],
5
+ "mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AAQV,IAAM,iBAAN,MAAuC;AAAA,EAC1C,YAAoB,kBAAkC,gBAAsF,CAAC,GAAG;AAA5H;AAAkC;AAAA,EACtD;AAAA,EAEA,MAAM,OAAO,KAA2B;AAAA,EACxC;AAAA,EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,UAAM,OAAO,GAAG,kBAAkB,IAAI,QAAQ,SAAS,EAAE;AACzD,UAAM,SAAS,GAAG;AAElB,QAAI,KAAK;AACT,UAAM,UAAU,KAAK,cAAc,OAAO,QAAM;AAC5C,UAAI,cAAc,QAAQ;AACtB,eAAO,GAAG,KAAK,GAAG;AAAA,MACtB;AAEA,UAAI,OAAO,OAAO,UAAU;AACxB,eAAO,OAAO,EAAE,EAAE,KAAK,GAAG;AAAA,MAC9B;AAEA,UAAI,OAAO,OAAO,YAAY;AAC1B,eAAO,GAAG,IAAI,GAAG;AAAA,MACrB;AAEA,UAAI,OAAO,OAAO,YAAY,aAAa,IAAI;AAC3C,YAAI,OAAO,GAAG,YAAY,YAAY;AAClC,iBAAO,GAAG,QAAQ,IAAI,GAAG;AAAA,QAC7B;AACA,eAAO,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG;AAAA,MACtC;AAAA,IACJ,CAAC;AAGD,eAAW,MAAM,SAAS;AACtB,YAAM,eAAe,KAAK,KAAK,KAAK,kBAAkB,OAAO,OAAO,YAAY,UAAU,KAAK,GAAG,OAAO,OAAO,QAAQ;AAExH,WAAK;AAEL,UAAI,GAAG,WAAW,YAAY,GAAG;AAI7B,WAAG,0BAA2B;AAC9B,WAAG,+CAAsC,KAAK,OAAO,YAAY,EAAE,SAAS,CAAC;AAC7E,cAAM,GAAG,OAAO,GAAG,aAAa,YAAY,CAAC;AAC7C;AAAA,MACJ,OAAO;AACH,WAAG,gCAAiC;AACpC,cAAM,GAAG,OAAO;AAChB;AAAA,MACJ;AACA,WAAK;AAAA,IACT;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,WAAO;AAAA,EACX;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,19 @@
1
+ import { Filter } from '../filters/Filter';
2
+ import { RequestResponse } from '../models/RequestResponse';
3
+ import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
4
+ export declare class ThrowFilter implements Filter {
5
+ private error;
6
+ constructor(error: any);
7
+ onInit(app: SimpleBootHttpServer): Promise<void>;
8
+ proceedBefore({ rr, app }: {
9
+ rr: RequestResponse;
10
+ app: SimpleBootHttpServer;
11
+ carrier: Map<string, any>;
12
+ }): Promise<boolean>;
13
+ proceedAfter({ rr, app }: {
14
+ rr: RequestResponse;
15
+ app: SimpleBootHttpServer;
16
+ carrier: Map<string, any>;
17
+ }): Promise<boolean>;
18
+ }
19
+ //# sourceMappingURL=ThrowFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThrowFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/ThrowFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAE7D,qBAAa,WAAY,YAAW,MAAM;IAC1B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,GAAG;IAGxB,MAAM,CAAC,GAAG,EAAE,oBAAoB;IAGhC,aAAa,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;IAIpG,YAAY,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;CAO5G"}
@@ -0,0 +1,23 @@
1
+ // src/filters/ThrowFilter.ts
2
+ var ThrowFilter = class {
3
+ constructor(error) {
4
+ this.error = error;
5
+ }
6
+ async onInit(app) {
7
+ }
8
+ async proceedBefore({ rr, app }) {
9
+ return true;
10
+ }
11
+ async proceedAfter({ rr, app }) {
12
+ const sw = rr.resIsDone();
13
+ if (!sw) {
14
+ throw this.error;
15
+ }
16
+ ;
17
+ return false;
18
+ }
19
+ };
20
+ export {
21
+ ThrowFilter
22
+ };
23
+ //# sourceMappingURL=ThrowFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/ThrowFilter.ts"],
4
+ "sourcesContent": ["import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n"],
5
+ "mappings": ";AAIO,IAAM,cAAN,MAAoC;AAAA,EACvC,YAAoB,OAAY;AAAZ;AAAA,EACpB;AAAA,EAEA,MAAM,OAAO,KAA0B;AAAA,EACvC;AAAA,EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,UAAM,KAAK,GAAG,UAAU;AACxB,QAAI,CAAC,IAAI;AACL,YAAM,KAAK;AAAA,IACf;AAAC;AACD,WAAO;AAAA,EACX;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ export * from './CacheFilter';
2
+ export * from './Filter';
3
+ export * from './HttpStatusFilter';
4
+ export * from './OpenApi3Filter';
5
+ export * from './ResourceFilter';
6
+ export * from './ThrowFilter';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,278 @@
1
+ // src/filters/CacheFilter.ts
2
+ import { FileUtils } from "@dooboostore/core-node/file/FileUtils";
3
+ import { ConvertUtils } from "@dooboostore/core-node/convert/ConvertUtils";
4
+ import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
5
+ var CacheFilter = class _CacheFilter {
6
+ constructor(config) {
7
+ this.config = config;
8
+ this.storage = /* @__PURE__ */ new Map();
9
+ if (config.config.cacheDir && config.config.startUpClean) {
10
+ FileUtils.deleteSync(config.config.cacheDir, { options: { recursive: true } });
11
+ }
12
+ }
13
+ static {
14
+ this.CARRIER_KEY_NAME = "_CARRIER_CACHE_FILTER_KEY_NAME";
15
+ }
16
+ async onInit(app) {
17
+ }
18
+ async proceedBefore({ rr, app, carrier }) {
19
+ const filter = this.config.filter?.(rr, app);
20
+ if (!filter) {
21
+ return true;
22
+ }
23
+ if (this.config.config.cacheDir) {
24
+ FileUtils.mkdirSync(this.config.config.cacheDir, { recursive: true });
25
+ }
26
+ if (!this.cacheConfig && this.config.config.cacheDir) {
27
+ try {
28
+ this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, "cacheConfig.json"], { option: { encoding: "utf-8" } })));
29
+ } catch (e) {
30
+ }
31
+ }
32
+ const date = (/* @__PURE__ */ new Date()).toISOString();
33
+ this.cacheConfig ??= {
34
+ createDate: date,
35
+ updateDate: date,
36
+ // accessDate: date,
37
+ caches: {}
38
+ };
39
+ this.cacheConfig.createDate ??= date;
40
+ this.cacheConfig.updateDate ??= date;
41
+ this.cacheConfig.caches ??= {};
42
+ const rkey = this.config.key(rr, app);
43
+ const sessionData = { key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders };
44
+ const cache = this.cacheConfig.caches[sessionData.key];
45
+ if (cache) {
46
+ const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);
47
+ const diffTime = Date.now() - cache.createTime;
48
+ if (!existes || diffTime > cache.lifeTime) {
49
+ delete this.cacheConfig[sessionData.key];
50
+ this.deleteChunk(cache.path);
51
+ sessionData.isUpdate = true;
52
+ } else {
53
+ rr.resSetHeaders({
54
+ ...cache.responseHeader,
55
+ cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`
56
+ });
57
+ try {
58
+ const chunk = this.getChunk(cache.path);
59
+ await rr.resEnd(chunk);
60
+ } catch (e) {
61
+ console.log("--------e", e);
62
+ }
63
+ }
64
+ } else {
65
+ sessionData.isUpdate = true;
66
+ }
67
+ carrier.set(_CacheFilter.CARRIER_KEY_NAME, sessionData);
68
+ return sessionData.isUpdate;
69
+ }
70
+ deleteChunk(path2) {
71
+ if (this.config.config.cacheDir && FileUtils.existsSync(path2)) {
72
+ FileUtils.deleteFileSync(path2);
73
+ } else if (this.storage.has(path2)) {
74
+ this.storage.delete(path2);
75
+ }
76
+ }
77
+ getChunk(path2) {
78
+ return this.config.config.cacheDir ? FileUtils.readSync(path2) : this.storage.get(path2);
79
+ }
80
+ async proceedAfter({ rr, app, carrier }) {
81
+ const sessionData = carrier.get(_CacheFilter.CARRIER_KEY_NAME);
82
+ if (sessionData && sessionData.isUpdate) {
83
+ try {
84
+ if (this.config.config.cacheDir) {
85
+ FileUtils.mkdirSync([this.config.config.cacheDir, "caches"], { recursive: true });
86
+ }
87
+ const resBody = rr.resBodyData();
88
+ if (!resBody) {
89
+ return true;
90
+ }
91
+ let p = void 0;
92
+ const destFileUUID = RandomUtils.uuid4();
93
+ p = this.writeChunk(destFileUUID, resBody);
94
+ const updateDateNow = Date.now();
95
+ const updateDate = new Date(updateDateNow).toISOString();
96
+ this.cacheConfig.createDate ??= updateDate;
97
+ this.cacheConfig.updateDate = updateDate;
98
+ const responseHeaders = {};
99
+ sessionData.responseHeaders?.map((it) => it.toLowerCase()).forEach((it) => {
100
+ responseHeaders[it] = rr.resHeader(it);
101
+ });
102
+ this.cacheConfig.caches[sessionData.key] = {
103
+ path: p,
104
+ createTime: updateDateNow,
105
+ lifeTime: sessionData.lifeTime,
106
+ responseHeader: responseHeaders
107
+ };
108
+ if (this.config.config.cacheDir) {
109
+ FileUtils.write(JSON.stringify(this.cacheConfig), { path: [this.config.config.cacheDir, "cacheConfig.json"] });
110
+ }
111
+ } catch (e) {
112
+ console.log("---", e);
113
+ }
114
+ }
115
+ return true;
116
+ }
117
+ writeChunk(destFileUUID, resBody) {
118
+ if (this.config.config.cacheDir) {
119
+ return FileUtils.write(resBody, { path: [this.config.config.cacheDir, "caches", destFileUUID] });
120
+ } else {
121
+ this.storage.set(destFileUUID, resBody);
122
+ return destFileUUID;
123
+ }
124
+ }
125
+ };
126
+
127
+ // src/filters/HttpStatusFilter.ts
128
+ var HttpStatusFilter = class {
129
+ constructor(httpStatus) {
130
+ this.httpStatus = httpStatus;
131
+ }
132
+ async proceedBefore({ rr, app }) {
133
+ rr.resStatusCode(this.httpStatus);
134
+ rr.resEnd();
135
+ return false;
136
+ }
137
+ async proceedAfter({ rr, app }) {
138
+ return true;
139
+ }
140
+ async onInit(app) {
141
+ }
142
+ };
143
+
144
+ // src/decorators/MethodMapping.ts
145
+ import "reflect-metadata";
146
+ import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
147
+ var MappingMetadataKey = Symbol("MappingMetadataKey");
148
+ var getUrlMappings = (target) => {
149
+ if (target !== null && void 0 !== target && typeof target === "object") {
150
+ target = target.constructor;
151
+ }
152
+ return ReflectUtils.getMetadata(MappingMetadataKey, target);
153
+ };
154
+
155
+ // src/filters/OpenApi3Filter.ts
156
+ var DefulatData = {
157
+ openapi: "3.0.1",
158
+ info: {
159
+ title: "SimpleBootHttpServer OpenApi3",
160
+ description: "SimpleBootHttpServer OpenApi3"
161
+ }
162
+ };
163
+ var OpenApi3Filter = class {
164
+ constructor(config, openApiConfig) {
165
+ this.config = config;
166
+ this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {});
167
+ }
168
+ async onInit(app) {
169
+ }
170
+ async proceedBefore({ rr, app }) {
171
+ if (rr.reqUrl === this.config.path) {
172
+ const map = app.routerManager.routingMap();
173
+ const data = {
174
+ paths: {}
175
+ };
176
+ Object.entries(map).filter(([k, v]) => typeof v !== "string").forEach(([k, v]) => {
177
+ const method = data.paths[k] = {};
178
+ getUrlMappings(v)?.forEach((it) => {
179
+ method[it.config.method] = {
180
+ summary: it.propertyKey,
181
+ description: it.propertyKey
182
+ // operationId: it.operationId,
183
+ // parameters: it.parameters,
184
+ // responses: it.responses,
185
+ };
186
+ });
187
+ });
188
+ rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(200 /* Ok */).resEnd();
189
+ return false;
190
+ }
191
+ return true;
192
+ }
193
+ async proceedAfter({ rr, app }) {
194
+ return true;
195
+ }
196
+ };
197
+
198
+ // src/filters/ResourceFilter.ts
199
+ import fs from "fs";
200
+ import path from "path";
201
+ import mime from "mime-types";
202
+ var ResourceFilter = class {
203
+ constructor(resourceDistPath, resourceRegex = []) {
204
+ this.resourceDistPath = resourceDistPath;
205
+ this.resourceRegex = resourceRegex;
206
+ }
207
+ async onInit(app) {
208
+ }
209
+ async proceedBefore({ rr, app }) {
210
+ const url = (rr.reqUrlPathName ?? "").replace(/\.\./g, "");
211
+ const urlObj = rr.reqUrlObject;
212
+ let sw = true;
213
+ const regExps = this.resourceRegex.filter((it) => {
214
+ if (it instanceof RegExp) {
215
+ return it.test(url);
216
+ }
217
+ if (typeof it === "string") {
218
+ return RegExp(it).test(url);
219
+ }
220
+ if (typeof it === "function") {
221
+ return it(rr, app);
222
+ }
223
+ if (typeof it === "object" && "request" in it) {
224
+ if (typeof it.request === "function") {
225
+ return it.request(rr, app);
226
+ }
227
+ return RegExp(it.request).test(url);
228
+ }
229
+ });
230
+ for (const it of regExps) {
231
+ const resourcePath = path.join(this.resourceDistPath, typeof it === "object" && "dist" in it ? it.dist : urlObj.pathname);
232
+ sw = false;
233
+ if (fs.existsSync(resourcePath)) {
234
+ rr.resStatusCode(200 /* Ok */);
235
+ rr.resSetHeader("Content-Type" /* ContentType */, mime.lookup(resourcePath).toString());
236
+ await rr.resEnd(fs.readFileSync(resourcePath));
237
+ break;
238
+ } else {
239
+ rr.resStatusCode(404 /* NotFound */);
240
+ await rr.resEnd();
241
+ break;
242
+ }
243
+ sw = false;
244
+ }
245
+ return sw;
246
+ }
247
+ async proceedAfter({ rr, app }) {
248
+ return true;
249
+ }
250
+ };
251
+
252
+ // src/filters/ThrowFilter.ts
253
+ var ThrowFilter = class {
254
+ constructor(error) {
255
+ this.error = error;
256
+ }
257
+ async onInit(app) {
258
+ }
259
+ async proceedBefore({ rr, app }) {
260
+ return true;
261
+ }
262
+ async proceedAfter({ rr, app }) {
263
+ const sw = rr.resIsDone();
264
+ if (!sw) {
265
+ throw this.error;
266
+ }
267
+ ;
268
+ return false;
269
+ }
270
+ };
271
+ export {
272
+ CacheFilter,
273
+ HttpStatusFilter,
274
+ OpenApi3Filter,
275
+ ResourceFilter,
276
+ ThrowFilter
277
+ };
278
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/CacheFilter.ts", "../../../src/filters/HttpStatusFilter.ts", "../../../src/decorators/MethodMapping.ts", "../../../src/filters/OpenApi3Filter.ts", "../../../src/filters/ResourceFilter.ts", "../../../src/filters/ThrowFilter.ts"],
4
+ "sourcesContent": ["import { Filter } from '../filters/Filter';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type CacheFilterSessionType = { key: string, lifeTime: number, isUpdate: boolean, responseHeaders?: string[] };\n\ntype CacheConfigCacheItemType = { path: string, createTime: number, lifeTime: number, responseHeader: { [key: string]: string | number | string[] } };\n\ntype KeyAndConfig = { key: string, lifeTime?: number, responseHeaders?: string[] } ;\n\nexport class CacheFilter implements Filter {\n public static readonly CARRIER_KEY_NAME = '_CARRIER_CACHE_FILTER_KEY_NAME';\n private storage = new Map<string, string | Buffer>();\n private cacheConfig: {\n createDate: string;\n updateDate: string;\n caches: { [key: string]: CacheConfigCacheItemType }\n }\n\n constructor(private config: {\n config: {\n cacheDir?: string;\n lifeTime: number;\n startUpClean?: boolean;\n },\n filter?: (rr: RequestResponse, app: SimpleBootHttpServer) => boolean;\n key: (rr: RequestResponse, app: SimpleBootHttpServer) => KeyAndConfig;\n }) {\n\n if (config.config.cacheDir && config.config.startUpClean) {\n FileUtils.deleteSync(config.config.cacheDir, {options: {recursive: true}});\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // this.key = undefined;\n // this.lifeTime = undefined;\n // this.isUpdate = false;\n const filter = this.config.filter?.(rr,app);\n if (!filter) {\n return true;\n }\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync(this.config.config.cacheDir, {recursive: true});\n }\n if (!this.cacheConfig && this.config.config.cacheDir) {\n try {\n this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, 'cacheConfig.json'], { option: {encoding: 'utf-8'}})));\n } catch (e) {\n }\n }\n const date = new Date().toISOString();\n this.cacheConfig ??= {\n createDate: date,\n updateDate: date,\n // accessDate: date,\n caches: {}\n };\n this.cacheConfig.createDate ??= date;\n this.cacheConfig.updateDate ??= date;\n // this.cacheConfig.accessDate ??= date;\n this.cacheConfig.caches ??= {};\n\n\n const rkey = this.config.key(rr, app);\n // console.log('--path filter', rr.reqMethod(), rr.reqUrlPathName, filter, rkey)\n const sessionData: CacheFilterSessionType = {key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders};\n\n\n const cache = this.cacheConfig.caches[sessionData.key];\n if (cache) {\n const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);\n const diffTime = Date.now() - cache.createTime;\n if (!existes || diffTime > cache.lifeTime) {\n delete this.cacheConfig[sessionData.key];\n this.deleteChunk(cache.path);\n sessionData.isUpdate = true;\n } else {\n rr.resSetHeaders({\n ...cache.responseHeader,\n cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`\n });\n // console.log('chunk--->', cache.path);\n try {\n const chunk = this.getChunk(cache.path);\n // console.log('chunk--->', chunk);\n await rr.resEnd(chunk);\n } catch (e) {\n console.log('--------e', e)\n }\n }\n } else {\n sessionData.isUpdate = true;\n }\n carrier.set(CacheFilter.CARRIER_KEY_NAME, sessionData);\n return sessionData.isUpdate;\n }\n\n private deleteChunk(path: string) {\n if (this.config.config.cacheDir && FileUtils.existsSync(path)) {\n FileUtils.deleteFileSync(path);\n } else if (this.storage.has(path)) {\n this.storage.delete(path);\n }\n }\n\n private getChunk(path: string) {\n return this.config.config.cacheDir ? FileUtils.readSync(path) : this.storage.get(path);\n }\n\n async proceedAfter({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // const data = await rr.resBodyStringData()\n const sessionData = carrier.get(CacheFilter.CARRIER_KEY_NAME) as CacheFilterSessionType ;\n if (sessionData && sessionData.isUpdate) {\n try {\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync([this.config.config.cacheDir, 'caches'], {recursive: true});\n }\n const resBody = rr.resBodyData();\n if (!resBody) {\n return true;\n }\n let p: string | undefined = undefined;\n const destFileUUID = RandomUtils.uuid4();\n p = this.writeChunk(destFileUUID, resBody);\n const updateDateNow = Date.now();\n const updateDate = new Date(updateDateNow).toISOString();\n this.cacheConfig.createDate ??= updateDate;\n this.cacheConfig.updateDate = updateDate;\n const responseHeaders: {[key: string]: string | number | string[]} = {}\n sessionData.responseHeaders?.map(it=>it.toLowerCase()).forEach(it => {\n responseHeaders[it] = rr.resHeader(it);\n })\n this.cacheConfig.caches[sessionData.key] = {\n path: p,\n createTime: updateDateNow,\n lifeTime: sessionData.lifeTime,\n responseHeader: responseHeaders\n };\n\n if (this.config.config.cacheDir) {\n FileUtils.write(JSON.stringify(this.cacheConfig), {path: [this.config.config.cacheDir, 'cacheConfig.json']});\n }\n } catch (e) {\n console.log('---', e)\n }\n }\n\n return true;\n }\n\n private writeChunk(destFileUUID: string, resBody: string | Buffer ) {\n if (this.config.config.cacheDir) {\n return FileUtils.write(resBody, {path: [this.config.config.cacheDir, 'caches', destFileUUID]});\n } else {\n this.storage.set(destFileUUID, resBody);\n return destFileUUID;\n }\n }\n}\n", "import {Filter} from '../filters/Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class HttpStatusFilter implements Filter {\n\n constructor(private httpStatus: HttpStatus | number) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // res.writeHead(this.httpStatus);\n rr.resStatusCode(this.httpStatus);\n rr.resEnd();\n return false;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n}\n", "import 'reflect-metadata';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["path"]
7
+ }