@dooboostore/simple-boot-http-server 1.0.17 → 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 (328) hide show
  1. package/dist/cjs/SimpleBootHttpServer.js +930 -2
  2. package/dist/cjs/SimpleBootHttpServer.js.map +7 -0
  3. package/dist/cjs/codes/HttpHeaders.js +71 -1
  4. package/dist/cjs/codes/HttpHeaders.js.map +7 -0
  5. package/dist/cjs/codes/HttpMethod.js +41 -1
  6. package/dist/cjs/codes/HttpMethod.js.map +7 -0
  7. package/dist/cjs/codes/HttpStatus.js +49 -1
  8. package/dist/cjs/codes/HttpStatus.js.map +7 -0
  9. package/dist/cjs/codes/Mimes.js +57 -1
  10. package/dist/cjs/codes/Mimes.js.map +7 -0
  11. package/dist/cjs/codes/index.js +145 -1
  12. package/dist/cjs/codes/index.js.map +7 -0
  13. package/dist/cjs/decorators/MethodMapping.js +265 -2
  14. package/dist/cjs/decorators/MethodMapping.js.map +7 -0
  15. package/dist/cjs/decorators/index.js +267 -2
  16. package/dist/cjs/decorators/index.js.map +7 -0
  17. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js +55 -1
  18. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
  19. package/dist/cjs/endpoints/EndPoint.js +18 -1
  20. package/dist/cjs/endpoints/EndPoint.js.map +7 -0
  21. package/dist/cjs/endpoints/HeaderEndPoint.js +41 -1
  22. package/dist/cjs/endpoints/HeaderEndPoint.js.map +7 -0
  23. package/dist/cjs/endpoints/index.js +73 -1
  24. package/dist/cjs/endpoints/index.js.map +7 -0
  25. package/dist/cjs/errors/BadRequestError.js +45 -1
  26. package/dist/cjs/errors/BadRequestError.js.map +7 -0
  27. package/dist/cjs/errors/ForbiddenError.js +45 -1
  28. package/dist/cjs/errors/ForbiddenError.js.map +7 -0
  29. package/dist/cjs/errors/HttpError.js +36 -1
  30. package/dist/cjs/errors/HttpError.js.map +7 -0
  31. package/dist/cjs/errors/InternalServerError.js +45 -1
  32. package/dist/cjs/errors/InternalServerError.js.map +7 -0
  33. package/dist/cjs/errors/NotFoundError.js +45 -1
  34. package/dist/cjs/errors/NotFoundError.js.map +7 -0
  35. package/dist/cjs/errors/UnauthorizedError.js +45 -1
  36. package/dist/cjs/errors/UnauthorizedError.js.map +7 -0
  37. package/dist/cjs/errors/index.js +83 -1
  38. package/dist/cjs/errors/index.js.map +7 -0
  39. package/dist/cjs/filters/CacheFilter.js +153 -1
  40. package/dist/cjs/filters/CacheFilter.js.map +7 -0
  41. package/dist/cjs/filters/Filter.js +18 -1
  42. package/dist/cjs/filters/Filter.js.map +7 -0
  43. package/dist/cjs/filters/HttpStatusFilter.js +44 -1
  44. package/dist/cjs/filters/HttpStatusFilter.js.map +7 -0
  45. package/dist/cjs/filters/OpenApi3Filter.js +83 -2
  46. package/dist/cjs/filters/OpenApi3Filter.js.map +7 -0
  47. package/dist/cjs/filters/ResourceFilter.js +91 -2
  48. package/dist/cjs/filters/ResourceFilter.js.map +7 -0
  49. package/dist/cjs/filters/ThrowFilter.js +47 -1
  50. package/dist/cjs/filters/ThrowFilter.js.map +7 -0
  51. package/dist/cjs/filters/index.js +318 -2
  52. package/dist/cjs/filters/index.js.map +7 -0
  53. package/dist/cjs/index.js +1756 -2
  54. package/dist/cjs/index.js.map +7 -0
  55. package/dist/cjs/inject/InjectSituationType.js +33 -1
  56. package/dist/cjs/inject/InjectSituationType.js.map +7 -0
  57. package/dist/cjs/inject/index.js +35 -1
  58. package/dist/cjs/inject/index.js.map +7 -0
  59. package/dist/cjs/lifecycle/OnInit.js +18 -1
  60. package/dist/cjs/lifecycle/OnInit.js.map +7 -0
  61. package/dist/cjs/lifecycle/index.js +18 -1
  62. package/dist/cjs/lifecycle/index.js.map +7 -0
  63. package/dist/cjs/models/RequestResponse.js +500 -1
  64. package/dist/cjs/models/RequestResponse.js.map +7 -0
  65. package/dist/cjs/models/datas/HeaderData.js +35 -1
  66. package/dist/cjs/models/datas/HeaderData.js.map +7 -0
  67. package/dist/cjs/models/datas/MultipartData.js +18 -1
  68. package/dist/cjs/models/datas/MultipartData.js.map +7 -0
  69. package/dist/cjs/models/datas/ReqHeader.js +31 -1
  70. package/dist/cjs/models/datas/ReqHeader.js.map +7 -0
  71. package/dist/cjs/models/datas/Resource.js +550 -2
  72. package/dist/cjs/models/datas/Resource.js.map +7 -0
  73. package/dist/cjs/models/datas/body/ReqFormUrlBody.js +31 -1
  74. package/dist/cjs/models/datas/body/ReqFormUrlBody.js.map +7 -0
  75. package/dist/cjs/models/datas/body/ReqJsonBody.js +31 -1
  76. package/dist/cjs/models/datas/body/ReqJsonBody.js.map +7 -0
  77. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js +34 -1
  78. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js.map +7 -0
  79. package/dist/cjs/models/index.js +593 -2
  80. package/dist/cjs/models/index.js.map +7 -0
  81. package/dist/cjs/models/method/patch/PatchJson.js +49 -2
  82. package/dist/cjs/models/method/patch/PatchJson.js.map +7 -0
  83. package/dist/cjs/option/HttpServerOption.js +67 -1
  84. package/dist/cjs/option/HttpServerOption.js.map +7 -0
  85. package/dist/cjs/option/index.js +69 -1
  86. package/dist/cjs/option/index.js.map +7 -0
  87. package/dist/cjs/resolvers/Resolver.js +18 -1
  88. package/dist/cjs/resolvers/Resolver.js.map +7 -0
  89. package/dist/cjs/resolvers/{ResourceResorver.d.ts → ResourceResolver.d.ts} +2 -2
  90. package/dist/cjs/resolvers/{ResourceResorver.d.ts.map → ResourceResolver.d.ts.map} +1 -1
  91. package/dist/cjs/resolvers/ResourceResolver.js +571 -0
  92. package/dist/cjs/resolvers/ResourceResolver.js.map +7 -0
  93. package/dist/cjs/resolvers/index.d.ts +1 -1
  94. package/dist/cjs/resolvers/index.js +571 -2
  95. package/dist/cjs/resolvers/index.js.map +7 -0
  96. package/dist/cjs/session/SessionManager.js +577 -1
  97. package/dist/cjs/session/SessionManager.js.map +7 -0
  98. package/dist/cjs/session/index.js +579 -1
  99. package/dist/cjs/session/index.js.map +7 -0
  100. package/dist/esm/SimpleBootHttpServer.js +906 -2
  101. package/dist/esm/SimpleBootHttpServer.js.map +7 -0
  102. package/dist/esm/codes/HttpHeaders.js +47 -1
  103. package/dist/esm/codes/HttpHeaders.js.map +7 -0
  104. package/dist/esm/codes/HttpMethod.js +17 -1
  105. package/dist/esm/codes/HttpMethod.js.map +7 -0
  106. package/dist/esm/codes/HttpStatus.js +25 -1
  107. package/dist/esm/codes/HttpStatus.js.map +7 -0
  108. package/dist/esm/codes/Mimes.js +33 -1
  109. package/dist/esm/codes/Mimes.js.map +7 -0
  110. package/dist/esm/codes/index.js +116 -1
  111. package/dist/esm/codes/index.js.map +7 -0
  112. package/dist/esm/decorators/MethodMapping.js +211 -2
  113. package/dist/esm/decorators/MethodMapping.js.map +7 -0
  114. package/dist/esm/decorators/index.js +211 -2
  115. package/dist/esm/decorators/index.js.map +7 -0
  116. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js +31 -1
  117. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
  118. package/dist/esm/endpoints/EndPoint.js +1 -0
  119. package/dist/esm/endpoints/EndPoint.js.map +7 -0
  120. package/dist/esm/endpoints/HeaderEndPoint.js +17 -1
  121. package/dist/esm/endpoints/HeaderEndPoint.js.map +7 -0
  122. package/dist/esm/endpoints/index.js +46 -1
  123. package/dist/esm/endpoints/index.js.map +7 -0
  124. package/dist/esm/errors/BadRequestError.js +19 -1
  125. package/dist/esm/errors/BadRequestError.js.map +7 -0
  126. package/dist/esm/errors/ForbiddenError.js +19 -1
  127. package/dist/esm/errors/ForbiddenError.js.map +7 -0
  128. package/dist/esm/errors/HttpError.js +12 -1
  129. package/dist/esm/errors/HttpError.js.map +7 -0
  130. package/dist/esm/errors/InternalServerError.js +19 -1
  131. package/dist/esm/errors/InternalServerError.js.map +7 -0
  132. package/dist/esm/errors/NotFoundError.js +19 -1
  133. package/dist/esm/errors/NotFoundError.js.map +7 -0
  134. package/dist/esm/errors/UnauthorizedError.js +19 -1
  135. package/dist/esm/errors/UnauthorizedError.js.map +7 -0
  136. package/dist/esm/errors/index.js +52 -1
  137. package/dist/esm/errors/index.js.map +7 -0
  138. package/dist/esm/filters/CacheFilter.js +129 -1
  139. package/dist/esm/filters/CacheFilter.js.map +7 -0
  140. package/dist/esm/filters/Filter.js +1 -0
  141. package/dist/esm/filters/Filter.js.map +7 -0
  142. package/dist/esm/filters/HttpStatusFilter.js +20 -1
  143. package/dist/esm/filters/HttpStatusFilter.js.map +7 -0
  144. package/dist/esm/filters/OpenApi3Filter.js +57 -2
  145. package/dist/esm/filters/OpenApi3Filter.js.map +7 -0
  146. package/dist/esm/filters/ResourceFilter.js +57 -2
  147. package/dist/esm/filters/ResourceFilter.js.map +7 -0
  148. package/dist/esm/filters/ThrowFilter.js +23 -1
  149. package/dist/esm/filters/ThrowFilter.js.map +7 -0
  150. package/dist/esm/filters/index.js +278 -2
  151. package/dist/esm/filters/index.js.map +7 -0
  152. package/dist/esm/index.js +1662 -2
  153. package/dist/esm/index.js.map +7 -0
  154. package/dist/esm/inject/InjectSituationType.js +9 -1
  155. package/dist/esm/inject/InjectSituationType.js.map +7 -0
  156. package/dist/esm/inject/index.js +9 -1
  157. package/dist/esm/inject/index.js.map +7 -0
  158. package/dist/esm/lifecycle/OnInit.js +1 -0
  159. package/dist/esm/lifecycle/OnInit.js.map +7 -0
  160. package/dist/esm/lifecycle/index.js +1 -0
  161. package/dist/esm/lifecycle/index.js.map +7 -0
  162. package/dist/esm/models/RequestResponse.js +475 -1
  163. package/dist/esm/models/RequestResponse.js.map +7 -0
  164. package/dist/esm/models/datas/HeaderData.js +11 -1
  165. package/dist/esm/models/datas/HeaderData.js.map +7 -0
  166. package/dist/esm/models/datas/MultipartData.js +1 -0
  167. package/dist/esm/models/datas/MultipartData.js.map +7 -0
  168. package/dist/esm/models/datas/ReqHeader.js +7 -1
  169. package/dist/esm/models/datas/ReqHeader.js.map +7 -0
  170. package/dist/esm/models/datas/Resource.js +516 -2
  171. package/dist/esm/models/datas/Resource.js.map +7 -0
  172. package/dist/esm/models/datas/body/ReqFormUrlBody.js +7 -1
  173. package/dist/esm/models/datas/body/ReqFormUrlBody.js.map +7 -0
  174. package/dist/esm/models/datas/body/ReqJsonBody.js +7 -1
  175. package/dist/esm/models/datas/body/ReqJsonBody.js.map +7 -0
  176. package/dist/esm/models/datas/body/ReqMultipartFormBody.js +10 -1
  177. package/dist/esm/models/datas/body/ReqMultipartFormBody.js.map +7 -0
  178. package/dist/esm/models/index.js +549 -2
  179. package/dist/esm/models/index.js.map +7 -0
  180. package/dist/esm/models/method/patch/PatchJson.js +15 -2
  181. package/dist/esm/models/method/patch/PatchJson.js.map +7 -0
  182. package/dist/esm/option/HttpServerOption.d.ts +1 -1
  183. package/dist/esm/option/HttpServerOption.js +43 -1
  184. package/dist/esm/option/HttpServerOption.js.map +7 -0
  185. package/dist/esm/option/index.js +43 -1
  186. package/dist/esm/option/index.js.map +7 -0
  187. package/dist/esm/resolvers/Resolver.js +1 -0
  188. package/dist/esm/resolvers/Resolver.js.map +7 -0
  189. package/dist/esm/resolvers/{ResourceResorver.d.ts → ResourceResolver.d.ts} +2 -2
  190. package/dist/esm/resolvers/{ResourceResorver.d.ts.map → ResourceResolver.d.ts.map} +1 -1
  191. package/dist/esm/resolvers/ResourceResolver.js +538 -0
  192. package/dist/esm/resolvers/ResourceResolver.js.map +7 -0
  193. package/dist/esm/resolvers/index.d.ts +1 -1
  194. package/dist/esm/resolvers/index.js +538 -2
  195. package/dist/esm/resolvers/index.js.map +7 -0
  196. package/dist/esm/session/SessionManager.js +553 -1
  197. package/dist/esm/session/SessionManager.js.map +7 -0
  198. package/dist/esm/session/index.js +553 -1
  199. package/dist/esm/session/index.js.map +7 -0
  200. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +1662 -2
  201. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +7 -0
  202. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +1699 -2
  203. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +7 -0
  204. package/package.json +24 -21
  205. package/dist/cjs/SimpleBootHttpServer.js.LICENSE.txt +0 -20
  206. package/dist/cjs/decorators/MethodMapping.js.LICENSE.txt +0 -16
  207. package/dist/cjs/decorators/index.js.LICENSE.txt +0 -16
  208. package/dist/cjs/filters/OpenApi3Filter.js.LICENSE.txt +0 -16
  209. package/dist/cjs/filters/ResourceFilter.js.LICENSE.txt +0 -13
  210. package/dist/cjs/filters/index.js.LICENSE.txt +0 -30
  211. package/dist/cjs/index.js.LICENSE.txt +0 -46
  212. package/dist/cjs/models/datas/Resource.js.LICENSE.txt +0 -13
  213. package/dist/cjs/models/index.js.LICENSE.txt +0 -25
  214. package/dist/cjs/models/method/patch/PatchJson.js.LICENSE.txt +0 -11
  215. package/dist/cjs/resolvers/ResourceResorver.js +0 -2
  216. package/dist/cjs/resolvers/ResourceResorver.js.LICENSE.txt +0 -13
  217. package/dist/cjs/resolvers/index.js.LICENSE.txt +0 -13
  218. package/dist/esm/SimpleBootHttpServer.js.LICENSE.txt +0 -20
  219. package/dist/esm/decorators/MethodMapping.js.LICENSE.txt +0 -16
  220. package/dist/esm/decorators/index.js.LICENSE.txt +0 -16
  221. package/dist/esm/filters/OpenApi3Filter.js.LICENSE.txt +0 -16
  222. package/dist/esm/filters/ResourceFilter.js.LICENSE.txt +0 -13
  223. package/dist/esm/filters/index.js.LICENSE.txt +0 -30
  224. package/dist/esm/index.js.LICENSE.txt +0 -46
  225. package/dist/esm/models/datas/Resource.js.LICENSE.txt +0 -13
  226. package/dist/esm/models/index.js.LICENSE.txt +0 -25
  227. package/dist/esm/models/method/patch/PatchJson.js.LICENSE.txt +0 -11
  228. package/dist/esm/resolvers/ResourceResorver.js +0 -2
  229. package/dist/esm/resolvers/ResourceResorver.js.LICENSE.txt +0 -13
  230. package/dist/esm/resolvers/index.js.LICENSE.txt +0 -13
  231. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.LICENSE.txt +0 -54
  232. package/dist/umd-bundle/SimpleBootHttpServer.d.ts +0 -14
  233. package/dist/umd-bundle/SimpleBootHttpServer.d.ts.map +0 -1
  234. package/dist/umd-bundle/codes/HttpHeaders.d.ts +0 -42
  235. package/dist/umd-bundle/codes/HttpHeaders.d.ts.map +0 -1
  236. package/dist/umd-bundle/codes/HttpMethod.d.ts +0 -12
  237. package/dist/umd-bundle/codes/HttpMethod.d.ts.map +0 -1
  238. package/dist/umd-bundle/codes/HttpStatus.d.ts +0 -45
  239. package/dist/umd-bundle/codes/HttpStatus.d.ts.map +0 -1
  240. package/dist/umd-bundle/codes/Mimes.d.ts +0 -28
  241. package/dist/umd-bundle/codes/Mimes.d.ts.map +0 -1
  242. package/dist/umd-bundle/codes/index.d.ts +0 -5
  243. package/dist/umd-bundle/codes/index.d.ts.map +0 -1
  244. package/dist/umd-bundle/decorators/MethodMapping.d.ts +0 -74
  245. package/dist/umd-bundle/decorators/MethodMapping.d.ts.map +0 -1
  246. package/dist/umd-bundle/decorators/index.d.ts +0 -2
  247. package/dist/umd-bundle/decorators/index.d.ts.map +0 -1
  248. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.LICENSE.txt +0 -54
  249. package/dist/umd-bundle/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -16
  250. package/dist/umd-bundle/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -1
  251. package/dist/umd-bundle/endpoints/EndPoint.d.ts +0 -7
  252. package/dist/umd-bundle/endpoints/EndPoint.d.ts.map +0 -1
  253. package/dist/umd-bundle/endpoints/HeaderEndPoint.d.ts +0 -12
  254. package/dist/umd-bundle/endpoints/HeaderEndPoint.d.ts.map +0 -1
  255. package/dist/umd-bundle/endpoints/index.d.ts +0 -4
  256. package/dist/umd-bundle/endpoints/index.d.ts.map +0 -1
  257. package/dist/umd-bundle/errors/BadRequestError.d.ts +0 -8
  258. package/dist/umd-bundle/errors/BadRequestError.d.ts.map +0 -1
  259. package/dist/umd-bundle/errors/ForbiddenError.d.ts +0 -8
  260. package/dist/umd-bundle/errors/ForbiddenError.d.ts.map +0 -1
  261. package/dist/umd-bundle/errors/HttpError.d.ts +0 -12
  262. package/dist/umd-bundle/errors/HttpError.d.ts.map +0 -1
  263. package/dist/umd-bundle/errors/InternalServerError.d.ts +0 -8
  264. package/dist/umd-bundle/errors/InternalServerError.d.ts.map +0 -1
  265. package/dist/umd-bundle/errors/NotFoundError.d.ts +0 -8
  266. package/dist/umd-bundle/errors/NotFoundError.d.ts.map +0 -1
  267. package/dist/umd-bundle/errors/UnauthorizedError.d.ts +0 -8
  268. package/dist/umd-bundle/errors/UnauthorizedError.d.ts.map +0 -1
  269. package/dist/umd-bundle/errors/index.d.ts +0 -7
  270. package/dist/umd-bundle/errors/index.d.ts.map +0 -1
  271. package/dist/umd-bundle/filters/CacheFilter.d.ts +0 -45
  272. package/dist/umd-bundle/filters/CacheFilter.d.ts.map +0 -1
  273. package/dist/umd-bundle/filters/Filter.d.ts +0 -17
  274. package/dist/umd-bundle/filters/Filter.d.ts.map +0 -1
  275. package/dist/umd-bundle/filters/HttpStatusFilter.d.ts +0 -20
  276. package/dist/umd-bundle/filters/HttpStatusFilter.d.ts.map +0 -1
  277. package/dist/umd-bundle/filters/OpenApi3Filter.d.ts +0 -142
  278. package/dist/umd-bundle/filters/OpenApi3Filter.d.ts.map +0 -1
  279. package/dist/umd-bundle/filters/ResourceFilter.d.ts +0 -24
  280. package/dist/umd-bundle/filters/ResourceFilter.d.ts.map +0 -1
  281. package/dist/umd-bundle/filters/ThrowFilter.d.ts +0 -19
  282. package/dist/umd-bundle/filters/ThrowFilter.d.ts.map +0 -1
  283. package/dist/umd-bundle/filters/index.d.ts +0 -7
  284. package/dist/umd-bundle/filters/index.d.ts.map +0 -1
  285. package/dist/umd-bundle/index.d.ts +0 -13
  286. package/dist/umd-bundle/index.d.ts.map +0 -1
  287. package/dist/umd-bundle/inject/InjectSituationType.d.ts +0 -4
  288. package/dist/umd-bundle/inject/InjectSituationType.d.ts.map +0 -1
  289. package/dist/umd-bundle/inject/index.d.ts +0 -2
  290. package/dist/umd-bundle/inject/index.d.ts.map +0 -1
  291. package/dist/umd-bundle/lifecycle/OnInit.d.ts +0 -5
  292. package/dist/umd-bundle/lifecycle/OnInit.d.ts.map +0 -1
  293. package/dist/umd-bundle/lifecycle/index.d.ts +0 -2
  294. package/dist/umd-bundle/lifecycle/index.d.ts.map +0 -1
  295. package/dist/umd-bundle/models/RequestResponse.d.ts +0 -100
  296. package/dist/umd-bundle/models/RequestResponse.d.ts.map +0 -1
  297. package/dist/umd-bundle/models/datas/HeaderData.d.ts +0 -10
  298. package/dist/umd-bundle/models/datas/HeaderData.d.ts.map +0 -1
  299. package/dist/umd-bundle/models/datas/MultipartData.d.ts +0 -12
  300. package/dist/umd-bundle/models/datas/MultipartData.d.ts.map +0 -1
  301. package/dist/umd-bundle/models/datas/ReqHeader.d.ts +0 -68
  302. package/dist/umd-bundle/models/datas/ReqHeader.d.ts.map +0 -1
  303. package/dist/umd-bundle/models/datas/Resource.d.ts +0 -11
  304. package/dist/umd-bundle/models/datas/Resource.d.ts.map +0 -1
  305. package/dist/umd-bundle/models/datas/body/ReqFormUrlBody.d.ts +0 -4
  306. package/dist/umd-bundle/models/datas/body/ReqFormUrlBody.d.ts.map +0 -1
  307. package/dist/umd-bundle/models/datas/body/ReqJsonBody.d.ts +0 -4
  308. package/dist/umd-bundle/models/datas/body/ReqJsonBody.d.ts.map +0 -1
  309. package/dist/umd-bundle/models/datas/body/ReqMultipartFormBody.d.ts +0 -6
  310. package/dist/umd-bundle/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -1
  311. package/dist/umd-bundle/models/index.d.ts +0 -10
  312. package/dist/umd-bundle/models/index.d.ts.map +0 -1
  313. package/dist/umd-bundle/models/method/patch/PatchJson.d.ts +0 -8
  314. package/dist/umd-bundle/models/method/patch/PatchJson.d.ts.map +0 -1
  315. package/dist/umd-bundle/option/HttpServerOption.d.ts +0 -83
  316. package/dist/umd-bundle/option/HttpServerOption.d.ts.map +0 -1
  317. package/dist/umd-bundle/option/index.d.ts +0 -2
  318. package/dist/umd-bundle/option/index.d.ts.map +0 -1
  319. package/dist/umd-bundle/resolvers/Resolver.d.ts +0 -5
  320. package/dist/umd-bundle/resolvers/Resolver.d.ts.map +0 -1
  321. package/dist/umd-bundle/resolvers/ResourceResorver.d.ts +0 -6
  322. package/dist/umd-bundle/resolvers/ResourceResorver.d.ts.map +0 -1
  323. package/dist/umd-bundle/resolvers/index.d.ts +0 -3
  324. package/dist/umd-bundle/resolvers/index.d.ts.map +0 -1
  325. package/dist/umd-bundle/session/SessionManager.d.ts +0 -57
  326. package/dist/umd-bundle/session/SessionManager.d.ts.map +0 -1
  327. package/dist/umd-bundle/session/index.d.ts +0 -2
  328. package/dist/umd-bundle/session/index.d.ts.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts", "../../src/SimpleBootHttpServer.ts", "../../src/option/HttpServerOption.ts", "../../src/codes/HttpHeaders.ts", "../../src/models/RequestResponse.ts", "../../src/models/datas/body/ReqFormUrlBody.ts", "../../src/models/datas/body/ReqJsonBody.ts", "../../src/models/datas/ReqHeader.ts", "../../src/decorators/MethodMapping.ts", "../../src/codes/HttpMethod.ts", "../../src/codes/HttpStatus.ts", "../../src/codes/Mimes.ts", "../../src/models/datas/body/ReqMultipartFormBody.ts", "../../src/errors/HttpError.ts", "../../src/session/SessionManager.ts", "../../src/inject/InjectSituationType.ts", "../../src/endpoints/CrossDomainHeaderEndPoint.ts", "../../src/endpoints/HeaderEndPoint.ts", "../../src/errors/BadRequestError.ts", "../../src/errors/ForbiddenError.ts", "../../src/errors/InternalServerError.ts", "../../src/errors/NotFoundError.ts", "../../src/errors/UnauthorizedError.ts", "../../src/filters/CacheFilter.ts", "../../src/filters/HttpStatusFilter.ts", "../../src/filters/OpenApi3Filter.ts", "../../src/filters/ResourceFilter.ts", "../../src/filters/ThrowFilter.ts", "../../src/models/datas/HeaderData.ts", "../../src/models/datas/Resource.ts", "../../src/models/method/patch/PatchJson.ts", "../../src/resolvers/ResourceResolver.ts"],
4
+ "sourcesContent": ["export * from './SimpleBootHttpServer';\nexport * from './codes';\nexport * from './decorators';\nexport * from './endpoints';\nexport * from './errors';\nexport * from './filters';\nexport * from './inject';\nexport * from './lifecycle';\nexport * from './models';\nexport * from './option';\nexport * from './resolvers';\nexport * from './session';", "import {SimpleApplication} from '@dooboostore/simple-boot/SimpleApplication';\nimport {HttpServerOption} from './option/HttpServerOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport {IncomingMessage, Server as HttpServer, ServerResponse} from 'http'\nimport { Server as HttpsServer, ServerOptions as HttpsServerOption } from 'https'; // Add HTTPS support\nimport {RequestResponse} from './models/RequestResponse';\nimport {getUrlMapping, getUrlMappings, SaveMappingConfig, UrlMappingSituationType} from './decorators/MethodMapping';\nimport {HttpStatus} from './codes/HttpStatus';\nimport {HttpHeaders} from './codes/HttpHeaders';\nimport {Mimes} from './codes/Mimes';\nimport {Filter} from './filters/Filter';\nimport {ExceptionHandlerSituationType, targetExceptionHandler} from '@dooboostore/simple-boot/decorators/exception/ExceptionDecorator';\nimport {getInject, SituationTypeContainer, SituationTypeContainers} from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport {EndPoint} from './endpoints/EndPoint';\nimport {ReflectUtils} from '@dooboostore/core/reflect/ReflectUtils';\nimport {ReqFormUrlBody} from './models/datas/body/ReqFormUrlBody';\nimport {ReqJsonBody} from './models/datas/body/ReqJsonBody';\nimport {ReqHeader} from './models/datas/ReqHeader';\nimport {RouterModule} from '@dooboostore/simple-boot/route/RouterModule';\nimport {ReqMultipartFormBody} from './models/datas/body/ReqMultipartFormBody';\nimport {execValidationInValid, getValidIndex} from '@dooboostore/simple-boot/decorators/validate/Validation';\nimport {ValidException} from '@dooboostore/simple-boot/errors/ValidException';\nimport {HttpError} from './errors/HttpError';\nimport {getRoute} from '@dooboostore/simple-boot/decorators/route/Router';\nimport {OnInit} from './lifecycle/OnInit';\nimport {URLSearchParams} from 'url';\nimport {HttpMethod} from './codes/HttpMethod';\nimport {SessionManager} from './session/SessionManager';\nimport { InjectSituationType } from './inject/InjectSituationType';\n\nexport class SimpleBootHttpServer extends SimpleApplication {\n public server?: HttpServer | HttpsServer;\n private sessionManager: SessionManager;\n constructor(public option: HttpServerOption = new HttpServerOption()) {\n super(option);\n this.sessionManager = new SessionManager(this.option);\n }\n\n\n public run(otherInstanceSim?: Map<ConstructorType<any>, any>) {\n const simstanceManager = super.run(otherInstanceSim);\n const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];\n Promise.all(targets.map(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it as ConstructorType<any>}) : it) as OnInit).map(it => it.onInit(this))).then(it => {\n this.startServer();\n });\n return simstanceManager;\n }\n\n private startServer() {\n\n // const a = this.option.serverOption as HttpsServerOption;\n // this.option.serverOption?.\n\n if (this.option.serverOption && 'key' in this.option.serverOption && 'cert' in this.option.serverOption) {\n this.server = new HttpsServer(this.option.serverOption);\n const httpServer = new HttpServer();\n httpServer.on('request', (req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(301, { Location: `https://${req.headers.host}${req.url}` });\n res.end();\n });\n httpServer.listen(80, this.option.listen.hostname, () => {\n console.log('HTTP redirect server running on port 80');\n });\n } else if (this.option.serverOption) {\n this.server = new HttpServer(this.option.serverOption);\n } else {\n this.server = new HttpServer();\n }\n // const thisRef = this;\n this.server.on('request', async (req: IncomingMessage, res: ServerResponse) => {\n // console.log('request', req.url);\n const transactionManager = this.option.transactionManagerFactory ? await this.option.transactionManagerFactory() : undefined;\n res.on('close', async () => {\n if (this.option.closeEndPoints) {\n for (const it of this.option.closeEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n res.on('error', async () => {\n if (this.option.errorEndPoints) {\n for (const it of this.option.errorEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n const rr = new RequestResponse(req, res,{sessionManager: this.sessionManager, option: this.option});\n /*\n default setting first\n */\n rr.resSetHeader(HttpHeaders.Server, 'simple-boot-http-server');\n const cookie = rr.reqCookieGet(this.option.sessionOption.key);\n if (!cookie) {\n const session = await this.sessionManager.session();\n rr.resSetHeader(HttpHeaders.SetCookie, `${this.option.sessionOption.key}=${session.uuid}; Path=/; HttpOnly`);\n }\n\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(RequestResponse, rr);\n otherStorage.set(IncomingMessage, req);\n otherStorage.set(ServerResponse, res);\n try {\n transactionManager?.try();\n if (this.option.requestEndPoints) {\n for (const it of this.option.requestEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim<EndPoint>({target:it}) : it) as EndPoint;\n execute?.endPoint(rr, this);\n } catch (e) {\n }\n }\n }\n\n const filter = {\n carrier: new Map<string, any>(),\n filters: [] as { filter: Filter, sw: boolean }[]\n };\n for (let i = 0; this.option.filters && i < this.option.filters.length; i++) {\n const it = this.option.filters[i];\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as Filter;\n let sw = true;\n if (execute?.proceedBefore) {\n sw = await execute.proceedBefore({rr, app: this, carrier: filter.carrier});\n filter.filters.push({filter: execute, sw});\n }\n if (!sw) {\n break;\n }\n }\n\n // body.. something..\n if (!rr.resIsDone()) {\n const routerModule = await super.routing(rr.reqIntent);\n otherStorage.set(RouterModule, routerModule);\n const moduleInstance = routerModule?.getModuleInstance?.();\n let methods: SaveMappingConfig[] = [];\n if (routerModule && moduleInstance) {\n // router \uD074\uB798\uC2A4 \uB0B4\uBD80\uC5D0\uC11C \uC120\uC5B8\uB41C Route\uC77C\uB54C\n if (routerModule.propertyKeys) {\n const map = routerModule.propertyKeys?.map((it: string | symbol) => {\n return {propertyKey: it, config: getUrlMapping(moduleInstance, it)} as SaveMappingConfig\n });\n methods.push(...(map ?? []));\n } else {\n methods.push(...(getUrlMappings(moduleInstance).filter(it => !getRoute(moduleInstance, it.propertyKey)) ?? []));\n }\n\n // options\uB85C \uC694\uCCAD\uC624\uBA74\uC740 allow\uB85C \uB123\uACE0 \uADF8\uB0E5 200\uCC98\uB9AC\uD574\uC57C\uB428.\n if (rr.reqMethod()?.toUpperCase() === HttpMethod.OPTIONS.toUpperCase()) {\n rr.resSetHeader(HttpHeaders.Allow, methods.map(it => it.config.method).join(', '));\n rr.resStatusCode(HttpStatus.Ok);\n }\n\n // method \uCC3E\uAE30\n methods = methods.filter(it => it && it.propertyKey && it.config && rr.reqMethod()?.toUpperCase() === it.config.method.toUpperCase());\n methods.sort((a, b) => {\n return ((b.config?.req?.contentType?.length ?? 0) + (b.config?.req?.accept?.length ?? 0)) - ((a.config?.req?.contentType?.length ?? 0) + (a.config?.req?.accept?.length ?? 0));\n });\n methods = methods\n .filter(it => it.config?.req?.contentType ? (!!it.config?.req?.contentType?.find(sit => rr.reqHasContentTypeHeader(sit))) : true)\n .filter(it => it.config?.req?.accept ? (!!it.config?.req?.accept?.find(sit => rr.reqHasAcceptHeader(sit))) : true);\n\n if (methods[0]) {\n const it = methods[0];\n const paramTypes = ReflectUtils.getParameterTypes(moduleInstance, it.propertyKey)\n const injects = getInject(moduleInstance, it.propertyKey);\n const validIndexs = getValidIndex(moduleInstance, it.propertyKey);\n if (injects) {\n const isJson = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);\n const isFormUrl = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_FORM_URL_BODY);\n const isTransactionManager = injects.find(it => it.config?.situationType === InjectSituationType.TransactionManager);\n const siturationContainers = new SituationTypeContainers();\n if (isJson) {\n let data = await rr.reqBodyJsonData()\n if (isJson.type) {\n data = Object.assign(new isJson.type(), data);\n }\n if (validIndexs.includes(isJson.index)) {\n const inValid = execValidationInValid(data);\n if ((inValid?.length ?? 0) > 0) {\n throw new ValidException(inValid);\n }\n }\n siturationContainers.push(new SituationTypeContainer({\n situationType: UrlMappingSituationType.REQ_JSON_BODY,\n data\n }));\n }\n if (isFormUrl) {\n let data = await rr.reqBodyFormUrlData()\n if (isFormUrl.type) {\n data = Object.assign(new isFormUrl.type(), data);\n }\n if (validIndexs.includes(isFormUrl.index)) {\n const inValid = execValidationInValid(data);\n if ((inValid?.length ?? 0) > 0) {\n throw new ValidException(inValid);\n }\n }\n siturationContainers.push(new SituationTypeContainer({situationType: UrlMappingSituationType.REQ_FORM_URL_BODY, data}));\n }\n\n if (isTransactionManager && isTransactionManager.type && transactionManager && transactionManager.hasTransaction(isTransactionManager.type)) {\n let data = await transactionManager.getTransaction(isTransactionManager.type);\n if (data) {\n data = await data.try(isTransactionManager.config.argument);\n siturationContainers.push(new SituationTypeContainer({situationType: InjectSituationType.TransactionManager, data, index: isTransactionManager.index}));\n }\n }\n if (siturationContainers.length) {\n otherStorage.set(SituationTypeContainers, siturationContainers);\n }\n }\n\n for (const paramType of paramTypes) {\n if (paramType === ReqFormUrlBody) {\n otherStorage.set(ReqFormUrlBody, await rr.reqBodyReqFormUrlBody())\n } else if (paramType === ReqJsonBody) {\n otherStorage.set(ReqJsonBody, await rr.reqBodyReqJsonBody())\n } else if (paramType === URLSearchParams) {\n otherStorage.set(URLSearchParams, rr.reqUrlSearchParams)\n } else if (paramType === ReqMultipartFormBody) {\n otherStorage.set(ReqMultipartFormBody, rr.reqBodyMultipartFormData())\n } else if (paramType === ReqHeader) {\n otherStorage.set(ReqHeader, rr.reqHeaderObj)\n }\n }\n\n // execute !!!\n let data = await this.simstanceManager.executeBindParameterSimPromise({\n target: moduleInstance,\n targetKey: it.propertyKey\n }, otherStorage);\n /*\n \uC5EC\uAE30\uC5D0\uC11C \uC815\uD574\uC9C4 \uD0C0\uC785 \uB9AC\uD134\uC5D0 \uB530\uB978 \uC870\uCE58\n ...\n */\n if (it.config?.resolver) {\n const execute = typeof it.config.resolver === 'function' ? this.simstanceManager.getOrNewSim({target:it.config.resolver}) : it.config.resolver;\n data = await execute?.resolve?.(data, rr);\n }\n const status = it.config?.res?.status ?? HttpStatus.Ok;\n const headers = it.config?.res?.header ?? {};\n if (it.config?.res?.contentType) {\n headers[HttpHeaders.ContentType] = it.config?.res?.contentType;\n }\n if ((it.config?.res?.contentType?.toLowerCase().indexOf(Mimes.ApplicationJson.toLowerCase()) ?? -1) > -1) {\n data = JSON.stringify(data);\n } else if (data && typeof data === 'object') {\n data = JSON.stringify(data);\n }\n rr.resSetHeaders(headers)\n rr.resSetStatusCode(status); \n rr.resWrite(data);\n }\n }\n\n if (this.option.noSuchRouteEndPointMappingThrow && methods.length <= 0 && rr.reqMethod()?.toUpperCase() !== HttpMethod.OPTIONS) {\n throw this.option.noSuchRouteEndPointMappingThrow(rr);\n }\n }\n\n // after\n for (const it of filter.filters.reverse()) {\n if (it.filter?.proceedAfter && !await it.filter.proceedAfter({rr, app:this, before: it.sw, carrier: filter.carrier})) {\n break;\n }\n }\n } catch (e) {\n transactionManager?.catch(e);\n rr.resStatusCode(e instanceof HttpError ? e.status : HttpStatus.InternalServerError)\n const execute = typeof this.option.globalAdvice === 'function' ? this.simstanceManager.getOrNewSim(this.option.globalAdvice) : this.option.globalAdvice;\n if (!execute) {\n rr.resEnd();\n // rr.resEnd().catch(e => {\n // });\n return;\n }\n if (e && typeof e === 'object') {\n otherStorage.set(e.constructor as ConstructorType<any>, e);\n otherStorage.set(SituationTypeContainer, new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n }));\n }\n const target = targetExceptionHandler(execute, e);\n if (target) {\n await this.simstanceManager.executeBindParameterSimPromise({\n target: execute,\n targetKey: target.propertyKey\n }, otherStorage);\n }\n } finally {\n transactionManager?.finally();\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {\n this.option.listen.listeningListener?.(this, this.server);\n });\n }\n}\n", "import { InitOptionType, SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { Server as HttpServer, ServerOptions } from 'http';\nimport { Server as HttpsServer, ServerOptions as HttpsServerOption } from 'https';\nimport { Filter } from '../filters/Filter';\nimport { EndPoint } from '../endpoints/EndPoint';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { TransactionManager } from '@dooboostore/core/transaction/TransactionManager';\n\nexport type Listen = { port?: number, hostname?: string, backlog?: number, listeningListener?: (server: SimpleBootHttpServer, httpServer: HttpServer | HttpsServer) => void };\n\nexport interface ListenData extends Listen {\n port: number;\n hostname: string;\n}\n\nexport class HttpServerOption extends SimOption {\n public static readonly DEFAULT_PORT = 8081;\n public static readonly DEFAULT_HOSTNAME = '127.0.0.1';\n public serverOption?: ServerOptions | HttpsServerOption;\n public listen: ListenData;\n public filters?: (Filter | ConstructorType<Filter>)[];\n public fileUploadTempPath?: string;\n public requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public sessionOption: { key: string, expiredTime: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } };\n public globalAdvice?: any | ConstructorType<any>;\n public noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any;\n public transactionManagerFactory?: () => TransactionManager;\n\n constructor({serverOption, listen, filters, requestEndPoints, closeEndPoints, errorEndPoints, sessionOption, globalAdvice, fileUploadTempPath,noSuchRouteEndPointMappingThrow, transactionManagerFactory}: {\n serverOption?: ServerOptions | HttpsServerOption,\n listen?: Listen,\n filters?: (Filter | ConstructorType<Filter>)[],\n requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n sessionOption?: { key?: string, expiredTime?: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } },\n globalAdvice?: any | ConstructorType<any>,\n fileUploadTempPath?: string,\n noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any,\n transactionManagerFactory?: () => TransactionManager\n } = {}, initSimOption?: InitOptionType) {\n super(initSimOption);\n this.serverOption = serverOption;\n this.listen = Object.assign({port: HttpServerOption.DEFAULT_PORT, hostname: HttpServerOption.DEFAULT_HOSTNAME}, listen);\n this.filters = filters;\n this.requestEndPoints = requestEndPoints;\n this.closeEndPoints = closeEndPoints;\n this.errorEndPoints = errorEndPoints;\n this.sessionOption = Object.assign({key: 'SBSESSIONID', expiredTime: 1000 * 60 * 30}, sessionOption);\n this.globalAdvice = globalAdvice;\n this.fileUploadTempPath=fileUploadTempPath;\n this.noSuchRouteEndPointMappingThrow = noSuchRouteEndPointMappingThrow;\n this.transactionManagerFactory = transactionManagerFactory;\n }\n\n get hostname() {\n return this.listen.hostname;\n }\n\n get port() {\n return this.listen.port;\n }\n\n get protocol() {\n return this.isSecure ? 'https' : 'http';\n }\n\n get address() {\n return `${this.protocol}://${this.hostname}:${this.port}`;\n }\n\n get isSecure() {\n return this.serverOption && 'key' in this.serverOption && 'cert' in this.serverOption;\n }\n \n \n}\n", "export enum HttpHeaders {\n ContentLength = 'Content-Length',\n ContentType = 'Content-Type',\n ContentEncoding = 'Content-Encoding',\n Accept = 'Accept',\n Authorization = 'Authorization',\n CacheControl = 'Cache-Control',\n Connection = 'Connection',\n Date = 'Date',\n Host = 'Host',\n Pragma = 'Pragma',\n Trailer = 'Trailer',\n TransferEncoding = 'Transfer-Encoding',\n Upgrade = 'Upgrade',\n Via = 'Via',\n Warning = 'Warning',\n AcceptCharset = 'Accept-Charset',\n AcceptEncoding = 'Accept-Encoding',\n AcceptLanguage = 'Accept-Language',\n AccessControlAllowOrigin = 'Access-Control-Allow-Origin',\n AccessControlAllowMethods = 'Access-Control-Allow-Methods',\n AccessControlAllowHeaders = 'Access-Control-Allow-Headers',\n AccessControlExposeHeaders = 'Access-Control-Expose-Headers',\n Expect = 'Expect',\n From = 'From',\n MaxForwards = 'Max-Forwards',\n Referer = 'Referer',\n UserAgent = 'User-Agent',\n Cookie = 'Cookie',\n SetCookie = 'Set-Cookie',\n // SetHeader = 'Set-Header',\n Cookie2 = 'Cookie2',\n SetCookie2 = 'Set-Cookie2',\n Location = 'Location',\n IfModifiedSince = 'If-Modified-Since',\n IfUnmodifiedSince = 'If-Unmodified-Since',\n IfMatch = 'If-Match',\n IfNoneMatch = 'If-None-Match',\n IfRange = 'If-Range',\n Allow = 'Allow',\n Server = 'Server'\n}", "import { IncomingMessage, OutgoingHttpHeader, OutgoingHttpHeaders, ServerResponse } from 'http';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { Mimes } from '../codes/Mimes';\nimport { Intent } from '@dooboostore/simple-boot/intent/Intent';\nimport { URL, URLSearchParams } from 'url';\nimport { Buffer } from 'buffer';\nimport { MultipartData } from './datas/MultipartData';\nimport { ReqFormUrlBody } from './datas/body/ReqFormUrlBody';\nimport { ReqJsonBody } from './datas/body/ReqJsonBody';\nimport { ReqHeader } from './datas/ReqHeader';\nimport { ReqMultipartFormBody } from './datas/body/ReqMultipartFormBody';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { gzip } from 'node-gzip';\nimport { SessionManager } from '../session/SessionManager';\nimport { HttpServerOption } from '../option/HttpServerOption';\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils as CoreConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\n// https://masteringjs.io/tutorials/node/http-request\ntype Config = { sessionManager?: SessionManager, option: HttpServerOption };\n\n// https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/\nexport class RequestResponse {\n protected resWriteChunk: string | Buffer | undefined;\n protected reqBodyChunk?: Buffer;\n protected req: IncomingMessage;\n protected res: ServerResponse;\n protected config: Config;\n // protected sessionManager?: SessionManager;\n\n // constructor(req: IncomingMessage, res: ServerResponse);\n // constructor(req: RequestResponse);\n // constructor(req: IncomingMessage, res: ServerResponse, sessionManager?: SessionManager);\n // constructor(req: IncomingMessage | RequestResponse, res?: ServerResponse, sessionManager?: SessionManager) {\n // // this.req = req;\n // // this.res = res;\n // if (req instanceof RequestResponse) {\n // this.req = req.req;\n // this.res = req.res;\n // this.sessionManager = req.sessionManager;\n // } else {\n // this.req = req;\n // this.res = res!;\n // this.sessionManager = sessionManager;\n // }\n // }\n constructor(req: IncomingMessage | RequestResponse, res: ServerResponse, config: Config) {\n // this.req = req;\n // this.res = res;\n if (req instanceof RequestResponse) {\n this.req = req.req;\n this.res = req.res;\n this.config = config;\n } else {\n this.req = req;\n this.res = res!;\n this.config = config;\n }\n }\n\n get reqSocket() {\n return this.req.socket;\n }\n\n get reqCookieMap() {\n let cookies = this.reqHeader(HttpHeaders.Cookie) ?? '';\n if (Array.isArray(cookies)) {\n cookies = cookies.join(';')\n }\n\n const map = new Map<string, string>();\n cookies.split(';').map(it => it.trim().split('=')).forEach(it => {\n map.set(it[0], it[1]);\n });\n return map;\n }\n\n reqCookieGet(key: string) {\n return this.reqCookieMap.get(key);\n }\n\n get reqRemoteAddress(): string | undefined {\n const ipHeader = this.req.headers['x-forwarded-for'];\n let ip = this.req.socket.remoteAddress;\n if (Array.isArray(ipHeader)) {\n ip = ipHeader.join(',').split(',').shift();\n } else if (typeof ipHeader === 'string') {\n ip = ipHeader.split(',').shift();\n }\n return ip;\n }\n\n get reqUrlObject(): URL {\n return new URL(this.reqUrl, `${this.reqSocket ? 'https://' : 'http'}${this.reqHost ?? 'localhost'}`);\n }\n\n get reqUrlPathName(): string {\n // parse(rr.reqUrl ?? '', true)\n return this.reqUrlObj().pathname ?? '';\n }\n\n get reqUrl(): string {\n return this.req.url ?? '';\n }\n\n reqUrlObj(config?:{scheme?: string, host?: string}): URL {\n return new URL(`${config?.scheme??'http' }://${config?.host ? config?.host : (this.reqHeaderFirst(HttpHeaders.Host) ?? 'localhost')}${this.req.url ?? ''}`);\n }\n\n get reqUrlSearchParamTuples(): [string, string][] {\n return Array.from(this.reqUrlObj().searchParams as any);\n }\n\n get reqUrlSearchParams(): URLSearchParams {\n return this.reqUrlObj().searchParams;\n }\n\n get reqUrlSearchParamsObj(): {[p: string]: string | string[]} {\n const entries = this.reqUrlObj().searchParams;\n return CoreConvertUtils.toObject(entries);\n // return obj;\n // return Object.fromEntries(entries as any)\n }\n\n get reqPathSearchParamUrl(): string {\n const reqUrlObj = this.reqUrlObj();\n return reqUrlObj.pathname + (reqUrlObj.searchParams.toString() ? '?' + reqUrlObj.searchParams.toString() : '')\n }\n\n get reqReadable() {\n return this.req.readable;\n }\n\n get reqIntent() {\n return new Intent(this.reqPathSearchParamUrl);\n }\n\n reqHasContentTypeHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.ContentType) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqHasAcceptHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.Accept) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqBodyData(): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n if (this.reqReadable) {\n const data: Uint8Array[] = [];\n this.req.on('data', (chunk) => data.push(chunk));\n this.req.on('error', err => reject(err));\n this.req.on('end', () => {\n this.reqBodyChunk = Buffer.concat(data);\n resolve(this.reqBodyChunk);\n });\n } else {\n resolve(this.reqBodyChunk ?? Buffer.alloc(0));\n }\n });\n }\n \n resBodyData(): string | Buffer | undefined{\n return this.resWriteChunk;\n }\n\n\n\n async reqBodyMultipartFormDataObject<T>(): Promise<T> {\n const m = await this.reqBodyMultipartFormData();\n const formData = {} as any;\n\n for (const it of m) {\n if (it.isFile) {\n formData[it.name] = await FileUtils.writeFile(it.value, {originalName: it.filename });\n } else {\n const target = formData[it.name];\n if (Array.isArray(target)) {\n target.push(it.value);\n } else if (typeof target === 'string') {\n formData[it.name] = [target, it.value]\n } else {\n formData[it.name] = it.value;\n }\n }\n };\n return formData;\n }\n\n reqBodyMultipartFormData(): Promise<MultipartData[]> {\n return new Promise((resolve, reject) => {\n const contentTypeHeader = this.req.headers['content-type'];\n if (!contentTypeHeader || !contentTypeHeader.startsWith('multipart/form-data')) {\n return reject(new Error('Invalid Content-Type. Expected multipart/form-data.'));\n }\n\n const boundaryMatch = contentTypeHeader.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n if (!boundaryMatch) {\n return reject(new Error('Boundary not found in Content-Type header.'));\n }\n const boundary = boundaryMatch[1] || boundaryMatch[2]; // \uB530\uC634\uD45C \uC720\uBB34 \uCC98\uB9AC\n if (!boundary) {\n return reject(new Error('Failed to extract boundary.'));\n }\n\n const boundaryBuffer = Buffer.from(`--${boundary}`);\n const crlfBuffer = Buffer.from('\\r\\n');\n const doubleCrlfBuffer = Buffer.from('\\r\\n\\r\\n'); // \uD5E4\uB354\uC640 \uBC14\uB514 \uAD6C\uBD84\uC790\n\n const chunks: Buffer[] = [];\n let totalLength = 0;\n\n this.req.on('data', (chunk: Buffer) => {\n chunks.push(chunk);\n totalLength += chunk.length;\n });\n\n this.req.on('error', (err) => {\n reject(err);\n });\n\n this.req.on('end', () => {\n if (totalLength === 0) {\n return resolve([]); // \uBE48 \uC694\uCCAD \uCC98\uB9AC\n }\n\n const fullBuffer = Buffer.concat(chunks, totalLength);\n const parsedParts: MultipartData[] = [];\n let currentPosition = 0;\n\n // \uCCAB \uBC88\uC9F8 boundary \uCC3E\uAE30 (\uBCF4\uD1B5 \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC788\uC74C)\n let boundaryStartIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (boundaryStartIndex === -1) {\n return reject(new Error('Initial boundary not found.'));\n }\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n currentPosition = boundaryStartIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n\n while (currentPosition < fullBuffer.length) {\n // \uB2E4\uC74C boundary \uCC3E\uAE30 (\uD30C\uD2B8\uC758 \uB05D)\n const nextBoundaryIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (nextBoundaryIndex === -1) {\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778 \uD544\uC694\uD558\uB098, \uC5EC\uAE30\uC11C\uB294 \uB2E8\uC21C\uD558\uAC8C \uCC98\uB9AC\n // console.warn('Next boundary not found, assuming end of data or malformed.');\n break;\n }\n\n // \uD604\uC7AC \uD30C\uD2B8 \uB370\uC774\uD130 \uCD94\uCD9C (boundary \uC774\uC804\uAE4C\uC9C0)\n // \uC2E4\uC81C \uD30C\uD2B8 \uB370\uC774\uD130\uB294 \uB2E4\uC74C boundary \uBC14\uB85C \uC55E\uC758 \\r\\n\uC744 \uC81C\uC678\uD574\uC57C \uD568\n let partEndIndex = nextBoundaryIndex;\n if (partEndIndex > crlfBuffer.length && fullBuffer.slice(partEndIndex - crlfBuffer.length, partEndIndex).equals(crlfBuffer)) {\n partEndIndex -= crlfBuffer.length;\n }\n const partBuffer = fullBuffer.slice(currentPosition, partEndIndex);\n\n // \uD5E4\uB354\uC640 \uBC14\uB514 \uBD84\uB9AC\n const headerBodySeparatorIndex = partBuffer.indexOf(doubleCrlfBuffer);\n if (headerBodySeparatorIndex === -1) {\n console.warn('Skipping malformed part: no header/body separator found.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break; // \uB9C8\uC9C0\uB9C9 boundary\n continue;\n }\n\n const headerBuffer = partBuffer.slice(0, headerBodySeparatorIndex);\n const bodyBuffer = partBuffer.slice(headerBodySeparatorIndex + doubleCrlfBuffer.length);\n const headersStr = headerBuffer.toString('utf-8'); // \uD5E4\uB354\uB294 \uBCF4\uD1B5 ASCII/UTF-8\n\n // \uD5E4\uB354 \uD30C\uC2F1\n const headers: { [key: string]: string } = {};\n headersStr.split('\\r\\n').forEach(line => {\n const colonIndex = line.indexOf(':');\n if (colonIndex > 0) {\n const key = line.substring(0, colonIndex).trim().toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n headers[key] = value;\n }\n });\n\n const contentDisposition = headers['content-disposition'];\n if (!contentDisposition) {\n console.warn('Skipping part: no Content-Disposition header.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break;\n continue;\n }\n\n const nameMatch = contentDisposition.match(/name=\"([^\"]+)\"/i);\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/i);\n\n const name = nameMatch ? nameMatch[1] : null;\n const filename = filenameMatch ? filenameMatch[1] : null;\n const contentType = headers['content-type'] || null;\n\n if (name) {\n\n const isFile = !!filename;\n // @ts-ignore\n const multipartData:MultipartData = {\n name:name,\n isFile: isFile, // filename\uC774 \uC788\uC73C\uBA74 \uD30C\uC77C\uB85C \uAC04\uC8FC\n filename: filename,\n contentType: contentType,\n value: isFile ? bodyBuffer: bodyBuffer.toString('utf-8'),\n }\n parsedParts.push(multipartData);\n } else {\n console.warn(\"Skipping part: 'name' not found in Content-Disposition.\");\n }\n\n // \uB2E4\uC74C \uD30C\uD2B8 \uC2DC\uC791 \uC704\uCE58\uB85C \uC774\uB3D9\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778\uD558\uACE0 \uB8E8\uD504 \uC885\uB8CC\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') {\n break;\n }\n }\n resolve(parsedParts);\n });\n })\n // const form = formidable({});\n // return new Promise((resolve, reject) => {\n // form.parse(this.req, (err, fields, files) => {\n // if (err) {\n // reject(err);\n // return;\n // }\n //\n // console.log('----', files)\n // // this.res.set('Content-Type', 'application/json');\n // // ctx.status = 200;\n // // ctx.state = { fields, files };\n // // ctx.body = JSON.stringify(ctx.state, null, 2);\n // resolve(' ' as any);\n // });\n // });\n\n // return new Promise<MultipartData<any>[]>((resolve, reject) => {\n //\n //\n // const contentType = this.req.headers['content-type'];\n // const boundary = contentType.split('boundary=')[1];\n //\n // let body: Uint8Array[] = [];\n // this.req.on('data', chunk => body.push(chunk));\n // this.req.on('end', async () => {\n // const buffer = Buffer.concat(body);\n // // Boundary\uB85C \uD30C\uD2B8 \uBD84\uB9AC\n // const parts = buffer.toString().split(`--${boundary}`).slice(1, -1);\n // let jsonData = {};\n // let fileData = null;\n //\n // for (let part of parts) {\n // const [headerPart, ...bodyParts] = part.split('\\r\\n\\r\\n');\n // const headers = headerPart.split('\\r\\n').reduce((acc, line) => {\n // const [key, value] = line.split(': ').map(s => s.trim().toLowerCase());\n // if (key) acc[key] = value;\n // return acc;\n // }, {});\n //\n // const content = bodyParts.join('\\r\\n\\r\\n').trim();\n // const disposition = headers['content-disposition'];\n // const name = disposition?.match(/name=\"([^\"]+)\"/)?.[1];\n // const filename = disposition?.match(/filename=\"([^\"]+)\"/)?.[1];\n //\n // if (filename) {\n // // \uD30C\uC77C \uB370\uC774\uD130 (Blob)\n // fileData = { filename, contentType: headers['content-type'], data: Buffer.from(content, 'binary') };\n // } else if (name) {\n // // \uD14D\uC2A4\uD2B8 \uB370\uC774\uD130\n // if (name === 'metadata') jsonData = JSON.parse(content);\n // }\n // }\n //\n // // \uD30C\uC77C \uC800\uC7A5\n // if (fileData) {\n //\n //\n //\n //\n // const uploadPath = this.config.option.fileUploadTempPath || os.tmpdir();\n // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // const saveTempPath = `${uploadPath}/${RandomUtils.uuid4()}${fileData.filename}`;\n // console.log('saveTempPathsaveTempPath', saveTempPath)\n // await fs.promises.writeFile(saveTempPath, fileData.data);\n // this.res.writeHead(200, { 'Content-Type': 'application/json' });\n // this.res.end(JSON.stringify({ message: '\uC5C5\uB85C\uB4DC \uC131\uACF5', jsonData, filename: fileData?.filename }));\n // // const uploadPath = this.config.option.fileUploadTempPath ;\n // // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // // await fs.writeFile(`${uploadPath}/${fileData.filename}`, fileData.data);\n // }\n // });\n // });\n }\n\n async reqBodyStringData(): Promise<string> {\n const data = (await this.reqBodyData()).toString()\n return data;\n }\n\n async reqBodyJsonData<T>(): Promise<T> {\n return JSON.parse(await this.reqBodyStringData());\n }\n\n async reqBodyFormUrlData<T>(): Promise<T> {\n const data = (await this.reqBodyStringData())\n const formData = {} as any;\n Array.from(new URLSearchParams(data).entries()).forEach(([k, v]) => {\n const target = formData[k];\n if (Array.isArray(target)) {\n target.push(v);\n } else if (typeof target === 'string') {\n formData[k] = [target, v]\n } else {\n formData[k] = v;\n }\n });\n return formData;\n }\n\n async reqBodyReqFormUrlBody() {\n const data = await this.reqBodyFormUrlData()\n return Object.assign(new ReqFormUrlBody(), data);\n }\n\n async reqBodyReqJsonBody(): Promise<ReqJsonBody> {\n const data = (await this.reqBodyStringData());\n return Object.assign(new ReqJsonBody(), data ? JSON.parse(data) : {})\n }\n\n // reqBodyReqMultipartFormBody(): Promise<ReqMultipartFormBody> {\n // return this.reqBodyMultipartFormData().then(it => new ReqMultipartFormBody(it))\n // }\n\n resBodyJsonData<T>(): (T | null) {\n const data = ConvertUtils.toString(this.resBodyData());\n return data ? JSON.parse(data) : null;\n }\n\n resBodyStringData() {\n return ConvertUtils.toString(this.resBodyData());\n }\n\n reqMethod() {\n return this.req.method?.toUpperCase();\n }\n\n reqHeader(key: HttpHeaders | string) {\n return this.req.headers[key.toLowerCase()];\n }\n\n get reqHost() {\n return this.reqHeaderFirst(HttpHeaders.Host)\n }\n\n get reqHeaderObj(): ReqHeader {\n const h = new ReqHeader();\n Object.entries(this.req.headers).forEach(([k, v]) => {\n h[k] = v;\n });\n return h;\n }\n\n reqHeaderFirst(key: HttpHeaders | string, defaultValue?: string) {\n const header = this.req.headers[key.toLowerCase()];\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return (header as string) ?? defaultValue;\n }\n }\n\n public reqAuthorizationHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n reqRefreshTokenHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n resStatusCode(code?: undefined): number;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | HttpStatus): RequestResponseChain<number>;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | undefined | HttpStatus): number | RequestResponseChain<number> {\n if (code) {\n this.res.statusCode = code;\n return new RequestResponseChain<number>(this.req, this.res, this.config, this.res.statusCode);\n } else {\n return this.res.statusCode;\n }\n }\n\n resHeader(key: HttpHeaders | string) {\n return this.res.getHeader(key.toLowerCase());\n }\n\n resHeaderFirst(key: HttpHeaders | string, defaultValue?: string) {\n const header = this.res.getHeader(key.toLowerCase());\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return header ?? defaultValue;\n }\n }\n\n async reqSession(): Promise<{ [key: string]: any }> {\n if (this.config.sessionManager) {\n return (await this.config.sessionManager.session(this)).dataSet.data;\n } else {\n return Promise.reject(new Error('Not SessionManager'));\n }\n }\n\n reqSessionSet(key: string, value: any): void {\n (this.reqSession as any)[key] = value;\n }\n\n reqSessionGet<T = any>(key: string): T | undefined {\n const session = this.reqSession as any;\n if (session) {\n return session[key] as T;\n }\n }\n\n resSetStatusCode(statusCode: number) {\n this.res.statusCode = statusCode;\n return this.createRequestResponseChain(this.res.statusCode);\n }\n\n // resEnd() {\n // this.res.end();\n // }\n\n // eslint-disable-next-line no-undef\n resWrite(chunk: string | Buffer | any, encoding: BufferEncoding = 'utf8') {\n this.resWriteChunk = chunk;\n return this.createRequestResponseChain(this.resWriteChunk);\n }\n\n // eslint-disable-next-line no-undef\n resWriteJson(chunk: any, encoding: BufferEncoding = 'utf8') {\n return this.resWrite(JSON.stringify(chunk), encoding);\n }\n\n resSetHeader(key: HttpHeaders | string, value: string | string[]) {\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), value));\n }\n\n resAddHeader(key: HttpHeaders | string, value: string | string[]) {\n const existingValue = this.res.getHeader(key.toLowerCase());\n const newValue = Array.isArray(existingValue)\n ? existingValue.concat(value)\n : existingValue\n ? [existingValue.toString(), ...[].concat(value)]\n : value;\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), newValue));\n }\n\n resSetHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resSetHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n resAddHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resAddHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n // \uB9C8\uC9C0\uB9C9 \uC885\uB8CC\uB420\uB54C \uD0C0\uB294\uAC70.\n private async resEndChunk() {\n const encoding = this.reqHeaderFirst(HttpHeaders.AcceptEncoding);\n let data = this.resWriteChunk;\n if (encoding?.includes('gzip')) {\n data = await gzip(data);\n this.resSetHeader(HttpHeaders.ContentEncoding, 'gzip');\n }\n this.res.end(data);\n }\n\n async resEnd(chunk?: string | Buffer) {\n this.resWriteChunk = chunk ?? this.resWriteChunk;\n if (this.req.readable) {\n await this.reqBodyData();\n await this.resEndChunk();\n } else {\n await this.resEndChunk();\n }\n }\n\n // writeContinue(callback?: () => void) {\n // this.res.writeContinue(callback);\n // return new RequestResponseChain(this.req, this.res);\n // }\n\n // reqWrite(chunk?: any) {\n // this.resWriteChunk = chunk;\n // // this.res.write(chunk);\n // return this.createRequestResponseChain();\n // }\n\n resWriteHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n return this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n }\n resWriteHeadEnd(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n this.res.end();\n }\n\n resIsDone() {\n return this.res.finished || this.res.writableEnded || this.res.headersSent;\n // return new RequestResponseChain(this.req, this.res, this.res.finished || this.res.writableEnded);\n }\n\n createRequestResponseChain<T = any>(data?: T) {\n const requestResponseChain = new RequestResponseChain(this.req, this.res, this.config, data);\n requestResponseChain.resWriteChunk = this.resWriteChunk;\n requestResponseChain.reqBodyChunk = this.reqBodyChunk;\n return requestResponseChain;\n }\n\n // res.on(\"readable\", () => {\n // console.log('readable???')\n // });\n // res.on('complete', function (details) {\n // var size = details.req.bytes;\n // console.log('complete-->', size)\n // });\n // res.on('finish', function() {\n // console.log('finish??');\n // });\n // res.on('end', () => {\n // console.log('end--?')\n // });\n}\n\nexport class RequestResponseChain<T> extends RequestResponse {\n constructor(req: IncomingMessage, res: ServerResponse, config: Config, public result?: T) {\n super(req, res, config);\n }\n}", "export class ReqFormUrlBody {\n [key: string]: string | string[]\n}", "export class ReqJsonBody {\n [key: string]: any\n}", "import {IncomingHttpHeaders} from 'http';\n\nexport class ReqHeader implements IncomingHttpHeaders {\n [key: string]: string | string[] | undefined;\n\n 'accept-language': string | undefined;\n 'accept-patch': string | undefined;\n 'accept-ranges': string | undefined;\n 'access-control-allow-credentials': string | undefined;\n 'access-control-allow-headers': string | undefined;\n 'access-control-allow-methods': string | undefined;\n 'access-control-allow-origin': string | undefined;\n 'access-control-expose-headers': string | undefined;\n 'access-control-max-age': string | undefined;\n 'access-control-request-headers': string | undefined;\n 'access-control-request-method': string | undefined;\n 'alt-svc': string | undefined;\n 'cache-control': string | undefined;\n 'content-disposition': string | undefined;\n 'content-encoding': string | undefined;\n 'content-language': string | undefined;\n 'content-length': string | undefined;\n 'content-location': string | undefined;\n 'content-range': string | undefined;\n 'content-type': string | undefined;\n 'if-match': string | undefined;\n 'if-modified-since': string | undefined;\n 'if-none-match': string | undefined;\n 'if-unmodified-since': string | undefined;\n 'last-modified': string | undefined;\n 'proxy-authenticate': string | undefined;\n 'proxy-authorization': string | undefined;\n 'public-key-pins': string | undefined;\n 'retry-after': string | undefined;\n 'sec-websocket-accept': string | undefined;\n 'sec-websocket-extensions': string | undefined;\n 'sec-websocket-key': string | undefined;\n 'sec-websocket-protocol': string | undefined;\n 'sec-websocket-version': string | undefined;\n 'set-cookie': string[] | undefined;\n 'strict-transport-security': string | undefined;\n 'transfer-encoding': string | undefined;\n 'user-agent': string | undefined;\n 'www-authenticate': string | undefined;\n accept: string | undefined;\n age: string | undefined;\n allow: string | undefined;\n authorization: string | undefined;\n connection: string | undefined;\n cookie: string | undefined;\n date: string | undefined;\n etag: string | undefined;\n expect: string | undefined;\n expires: string | undefined;\n forwarded: string | undefined;\n from: string | undefined;\n host: string | undefined;\n location: string | undefined;\n origin: string | undefined;\n pragma: string | undefined;\n range: string | undefined;\n referer: string | undefined;\n tk: string | undefined;\n trailer: string | undefined;\n upgrade: string | undefined;\n vary: string | undefined;\n via: string | undefined;\n warning: string | undefined;\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", "export enum HttpMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n DELETE = 'DELETE',\n PATCH = 'PATCH',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n TRACE = 'TRACE',\n CONNECT = 'CONNECT',\n}", "export enum HttpStatus {\n Ok = 200,\n\n /**\n * HTTP 301 Moved Permanently \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL\uB85C \uC644\uC804\uD788 \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uD2B8\uD558\uACE0, \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uD574\uB2F9 \uB9AC\uC18C\uC2A4\uB85C \uC5F0\uACB0\uB418\uB294 \uB9C1\uD06C\uB97C \uAC31\uC2E0\uD569\uB2C8\uB2E4.\n */\n MovedPermanently = 301,\n /**\n * https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Status/302\n * HTTP(HyperText Transfer Protocol) 302 Found \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uC77C\uC2DC\uC801\uC73C\uB85C \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uC9C0\uB9CC \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB418\uC9C0 \uC54A\uB294\uB2E4\uACE0 \uD569\uB2C8\uB2E4).\n * \uBA85\uC138\uC11C\uC5D0\uC11C \uB9AC\uB514\uB809\uC158\uC774 \uC218\uD589\uB420 \uB54C \uBA54\uC11C\uB4DC(\uBC0F \uBCF8\uBB38)\uAC00 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uB3C4\uB85D \uC694\uAD6C\uD558\uB354\uB77C\uB3C4 \uBAA8\uB4E0 \uC0AC\uC6A9\uC790 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC774\uB97C \uC900\uC218\uD558\uB294 \uAC83\uC740 \uC544\uB2D9\uB2C8\uB2E4. \uC5EC\uB7EC\uBD84\uC740 \uC5EC\uC804\uD788 \uC774\uB7EC\uD55C \uC720\uD615\uC758 \uBC84\uADF8\uAC00 \uC788\uB294 \uC18C\uD504\uD2B8\uC6E8\uC5B4\uB97C \uCC3E\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB530\uB77C\uC11C \uB530\uB77C\uC11C 302 \uCF54\uB4DC\uB294 GET \uB610\uB294 HEAD \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC73C\uB85C\uB9CC \uC124\uC815\uD558\uACE0 \uC774 \uACBD\uC6B0 \uBA54\uC11C\uB4DC \uBCC0\uACBD\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uAE08\uC9C0\uB418\uBBC0\uB85C 307 Temporary Redirect \uB97C \uB300\uC2E0 \uC0AC\uC6A9\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n * \uC0AC\uC6A9\uD558\uB358 \uBA54\uC11C\uB4DC\uB97C GET\uC73C\uB85C \uBCC0\uACBD\uD558\uB824\uB294 \uACBD\uC6B0, 303 See Other\uC744 \uB300\uC2E0 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. PUT \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC744 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2C8\uB77C 'You successfully updown XYZ'\uC640 \uAC19\uC740 \uD655\uC778 \uBA54\uC2DC\uC9C0\uB85C \uC8FC\uACE0 \uC2F6\uC744\uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n */\n Found = 302,\n /**\n * HTTP(HyperText Transfer Protocol) 303 See Other \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uB9AC\uB514\uB809\uC158\uC774 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4 \uC790\uCCB4\uC5D0 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uACE0 \uB2E4\uB978 \uD398\uC774\uC9C0(\uC608: \uD655\uC778 \uD398\uC774\uC9C0, \uC2E4\uC81C \uAC1C\uCCB4 \uD45C\uC2DC(HTTP range-14 \uCC38\uC870) \uB610\uB294 \uC5C5\uB85C\uB4DC \uC9C4\uD589\uB960 \uD398\uC774\uC9C0)\uC5D0 \uC5F0\uACB0\uB428\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uC774 \uC751\uB2F5 \uCF54\uB4DC\uB294 PUT \uB610\uB294 POST\uC758 \uACB0\uACFC\uB85C \uB2E4\uC2DC \uC804\uC1A1\uB418\uB294 \uACBD\uC6B0\uAC00 \uB9CE\uC2B5\uB2C8\uB2E4. \uC774 \uB9AC\uB514\uB809\uC158 \uD398\uC774\uC9C0\uB97C \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uBC29\uBC95\uC740 \uD56D\uC0C1 GET\uC785\uB2C8\uB2E4.\n */\n SeeOther = 303,\n /**\n * \uD074\uB77C\uC774\uC5B8\uD2B8 \uB9AC\uB514\uB809\uC158 \uC751\uB2F5 \uCF54\uB4DC 304 Not Modified \uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uB97C \uC7AC\uC804\uC1A1\uD560 \uD544\uC694\uAC00 \uC5C6\uC74C\uC744 \uB098\uD0C0\uB0B8\uB2E4. \uCE90\uC2DC\uB41C \uC790\uC6D0\uC73C\uB85C\uC758 \uC554\uBB35\uC801\uC778 \uB9AC\uB514\uB809\uC158\uC774\uB2E4. \uC774 \uB294 GET \uB098 HEAD \uC694\uCCAD\uCC98\uB7FC \uC694\uCCAD \uBC29\uBC95\uC774 \uC548\uC804 \uD55C \uACBD\uC6B0 \uB610\uB294 \uC694\uCCAD\uC774 \uC870\uAC74\uBD80\uB85C If-None-Match \uB610\uB294 If-Modified-Since \uD5E4\uB354\uB97C \uC0AC\uC6A9\uD560 \uB54C \uC751\uB2F5 \uB41C\uB2E4.\n * \uC774\uC5D0 \uC0C1\uC751\uD558\uB294 200 OK \uC751\uB2F5\uC5D0\uB294 Cache-Control, Content-Location, Date, ETag, Expires, \uADF8\uB9AC\uACE0 Vary \uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC5C8\uC744 \uAC83\uC774\uB2E4.\n */\n NotModified = 304,\n /**\n * HTTP 307 Temporary Redirect \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL \uB85C \uC784\uC2DC\uB85C \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4.\n * \uC6D0\uB798 \uC694\uCCAD\uD55C \uBA54\uC18C\uB4DC\uC640 Body \uB97C \uC7AC\uC0AC\uC6A9\uD558\uC5EC \uC694\uCCAD\uC744 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uBC14\uAFB8\uAE30 \uC704\uD574\uC11C 303 See Other\uB97C \uC0AC\uC6A9\uD558\uC2DC\uBA74 \uB429\uB2C8\uB2E4. \uC774\uAC83\uC740 PUT\uC694\uCCAD\uC5D0 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2CC \"You successfully uploaded XYZ\"\uC640 \uAC19\uC740 \uD655\uC778\uBA54\uC2DC\uC9C0 \uC751\uB2F5\uC744 \uC81C\uACF5 \uD558\uB294\uB370\uC5D0 \uC720\uC6A9\uD569\uB2C8\uB2E4.\n * 307\uACFC 302\uAC00 \uC720\uC77C\uD558\uAC8C \uB2E4\uB978\uC810\uC740 307\uC740 Method \uC640 Body \uB97C \uBCC0\uACBD\uD558\uC9C0 \uC54A\uACE0 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC694\uCCAD\uC744 \uD558\uB3C4\uB85D \uBCF4\uC7A5\uD569\uB2C8\uB2E4. 302\uC751\uB2F5\uC73C\uB85C \uC778\uD558\uC5EC \uC77C\uBD80 \uC624\uB798\uB41C \uD074\uB77C\uC774\uC5B8\uD2B8\uB4E4\uC740 \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uD2C0\uB9AC\uAC8C \uBCC0\uACBD\uD558\uC600\uC2B5\uB2C8\uB2E4. GET\uC774 \uC544\uB2CC \uB2E4\uB978 \uBA54\uC18C\uB4DC\uC5D0 302\uB3D9\uC791\uC740 \uC6F9\uC5D0\uC11C \uC608\uC0C1\uB418\uC9C0 \uC54A\uC9C0\uB9CC 307 \uB3D9\uC791\uC740 \uC608\uC0C1\uD560\uC218 \uC788\uC2B5\uB2C8\uB2E4. GET \uC694\uCCAD\uC5D0 \uB300\uD574\uC11C\uB294 \uB3D9\uC77C\uD558\uAC8C \uB3D9\uC791 \uD569\uB2C8\uB2E4.\n */\n TemporaryRedirect = 307,\n /**\n * \uD558\uC774\uD37C\uD14D\uC2A4\uD2B8 \uC804\uC1A1 \uD504\uB85C\uD1A0\uCF5C (HTTP) 308 Permanent Redirect \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uD655\uC2E4\uD788 \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uAC00 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uACE0 \uAC80\uC0C9\uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB429\uB2C8\uB2E4).\n * \uC694\uCCAD \uBA54\uC11C\uB4DC\uC640 \uBCF8\uBB38\uC740 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC9C0\uB9CC, 301\uC740 \uB54C\uB54C\uB85C GET \uBA54\uC11C\uB4DC\uB85C \uC798\uBABB \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\n PermanentRedirect = 308,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505\n}\n", "export enum Mimes {\n ApplicationJson = 'application/json',\n ApplicationOctetStream = 'application/octet-stream',\n ApplicationXml = 'application/xml',\n ApplicationJsonPatch = 'application/json-patch+json',\n ApplicationXWwwFormUrlencoded = 'application/x-www-form-urlencoded',\n TextPlain = 'text/plain',\n TextHtml = 'text/html',\n All = '*/*',\n TextCss = 'text/css',\n TextJavascript = 'text/javascript',\n TextXml = 'text/xml',\n TextXslt = 'text/xslt',\n TextXmlDtd = 'text/xml-dtd',\n TextPlainUtf8 = 'text/plain; charset=utf-8',\n ImagePng = 'image/png',\n ImageGif = 'image/gif',\n ImageJpeg = 'image/jpeg',\n ImageSvg = 'image/svg+xml',\n ImageBmp = 'image/bmp',\n ImageTiff = 'image/tiff',\n ImagePdf = 'application/pdf',\n ImageXBmp = 'image/x-bmp',\n ImageXpixmap = 'image/x-xpixmap',\n ImageXxbm = 'image/x-xbm',\n MultipartFormData = 'multipart/form-data',\n}\n", "import {MultipartData} from '../MultipartData';\n\nexport class ReqMultipartFormBody {\n constructor(public field: MultipartData[] = []) {\n }\n}", "\nexport class HttpError {\n name: string = 'Error'\n message: string;\n stack?: string\n data?: any;\n public status: number;\n\n constructor({status, message = 'HttpError'}: { status: number, message?: string }) {\n // super(message);\n this.message = message;\n this.status = status;\n }\n}\n", "import {RandomUtils} from '@dooboostore/core/random/RandomUtils'\nimport {HttpServerOption} from '../option/HttpServerOption';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class SessionManager {\n private sessions = new Map<string, { access: number, data?: any }>();\n public sessionOption: { key: string; expiredTime: number, provider?: {uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void>} };\n\n constructor(private option: HttpServerOption) {\n this.sessionOption = option.sessionOption;\n setInterval(async () => {\n const uuids = (await this.getSessionUUIDs());\n for (const uuid of uuids) {\n const dataSet = await this.getSessionDataSet(uuid);\n if (dataSet && this.isExpired(dataSet.access)) {\n await this.deleteSession(uuid);\n }\n }\n }, this.sessionOption.expiredTime);\n }\n\n async getSessionUUIDs() {\n if (this.sessionOption.provider?.uuids) {\n return this.sessionOption.provider.uuids();\n } else {\n return Array.from(this.sessions.keys());\n }\n }\n\n async deleteSession(uuid: string) {\n if (this.sessionOption.provider?.delete) {\n this.sessionOption.provider.delete(uuid);\n } else {\n this.sessions.delete(uuid);\n }\n }\n\n async getSessionDataSet(uuid: string) {\n if (this.sessionOption.provider?.get) {\n return this.sessionOption.provider.get(uuid);\n } else {\n return this.sessions.get(uuid);\n }\n }\n\n async setSessionDataSet(uuid: string, dataSet: { access: number, data?: any }) {\n if (this.sessionOption.provider?.set) {\n this.sessionOption.provider.set(uuid, dataSet);\n } else {\n this.sessions.set(uuid, dataSet);\n }\n }\n\n isExpired(access: number, now: number = Date.now()) {\n return (now - access) >= this.option.sessionOption.expiredTime;\n }\n\n makeUUID() {\n return RandomUtils.uuid('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');\n }\n\n async session(): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(uuid: string): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rr: RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rrOrUUID?: string | RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } } >{\n let uuid: string;\n if (rrOrUUID instanceof RequestResponse) {\n uuid = rrOrUUID.reqCookieGet(this.sessionOption.key) ?? this.makeUUID();\n } else if (typeof rrOrUUID === 'string') {\n uuid = rrOrUUID;\n } else {\n uuid = this.makeUUID()\n }\n let dataSet = await this.getSessionDataSet(uuid);\n const now = Date.now();\n if (dataSet) {\n if (this.isExpired(dataSet.access, now)) {\n delete dataSet.data;\n }\n dataSet.access = now;\n } else {\n dataSet = {\n access: now\n }\n }\n await this.setSessionDataSet(uuid, dataSet);\n return {uuid, dataSet};\n }\n}", "export namespace InjectSituationType {\n export const TransactionManager = Symbol('TransactionManager');\n}", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport { HttpHeaders } from '../codes/HttpHeaders';\n\nexport type CrossDomainHeaderEndPointConfig = {\n accessControlAllowOrigin?: string | string[],\n accessControlAllowMethods?: string | string[],\n accessControlAllowHeaders?: string | string[],\n accessControlExposeHeaders?: string | string[]\n}\nexport class CrossDomainHeaderEndPoint implements EndPoint {\n constructor(private config?: CrossDomainHeaderEndPointConfig) {\n }\n\n /*\n rr.resSetHeader(\"Access-Control-Allow-Origin\", \"*\")\n rr.resSetHeader(\"Access-Control-Allow-Methods\", \"DELETE, POST, GET, OPTIONS\")\n rr.resSetHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization, X-Requested-With\")\n */\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.config?.accessControlAllowOrigin) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowOrigin, Array.isArray(this.config.accessControlAllowOrigin) ? this.config.accessControlAllowOrigin.join(', ') : this.config.accessControlAllowOrigin);\n }\n if (this.config?.accessControlAllowMethods) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowMethods, Array.isArray(this.config.accessControlAllowMethods) ? this.config.accessControlAllowMethods.join(', ') : this.config.accessControlAllowMethods);\n }\n if (this.config?.accessControlAllowHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowHeaders, Array.isArray(this.config.accessControlAllowHeaders) ? this.config.accessControlAllowHeaders.join(', ') : this.config.accessControlAllowHeaders);\n }\n if (this.config?.accessControlExposeHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlExposeHeaders, Array.isArray(this.config.accessControlExposeHeaders) ? this.config.accessControlExposeHeaders.join(', ') : this.config.accessControlExposeHeaders);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class HeaderEndPoint implements EndPoint {\n constructor(private headers?: { [key: string]: string | string[] }) {\n }\n\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.headers) {\n rr.resSetHeaders(this.headers);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class BadRequestError extends HttpError {\n constructor({status = HttpStatus.BadRequest, message = 'Bad Request'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class ForbiddenError extends HttpError {\n constructor({status = HttpStatus.Forbidden, message = 'Forbidden'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class InternalServerError extends HttpError {\n constructor({status = HttpStatus.InternalServerError, message = 'Internal Server Error'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class NotFoundError extends HttpError {\n constructor({status = HttpStatus.NotFound, message = 'Not Found'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class UnauthorizedError extends HttpError {\n constructor({status = HttpStatus.Unauthorized, message = 'Unauthorized'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "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 {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", "export class HeaderData<T> {\n constructor(public header: { [p: string]: [string] }, public data: T) {\n }\n}", "import fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { RequestResponse } from '../RequestResponse';\nimport { HttpStatus } from '../../codes/HttpStatus';\nimport { HttpHeaders } from '../../codes/HttpHeaders';\n\nexport class Resource {\n constructor(public path: string | RequestResponse | URL, public rootPath = process.cwd()) {\n }\n\n get absolutePath(): string {\n if (this.path instanceof RequestResponse) {\n return path.join(this.rootPath, this.path.reqUrlObj().pathname);\n } else if (this.path instanceof URL) {\n return path.join(this.rootPath, this.path.pathname);\n } else {\n return path.join(this.rootPath, this.path);\n }\n }\n\n get conTentType(): string {\n return mime.lookup(this.absolutePath).toString();\n }\n\n get data(): Promise<string> {\n const promise = new Promise<string>((resolve, reject) => {\n fs.readFile('', (error, fileBuffer) => {\n if (error) {\n reject(error);\n }\n const fileContent = fileBuffer.toString();\n resolve(fileContent);\n });\n });\n return promise;\n }\n\n async write(rr: RequestResponse) {\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, this.conTentType);\n await rr.resEnd(fs.readFileSync(this.absolutePath));\n }\n}", "import jsonpatch, { Operation as JsonOperation } from 'fast-json-patch';\n// export enum OP {\n// test = 'test',\n// remove = 'remove',\n// add = 'add',\n// replace = 'replace',\n// move = 'move',\n// copy = 'copy',\n//\n// }\n// export type RequestPatchBody = {\n// op: OP;\n// path?: string;\n// from?: string;\n// value?: string | any[] | any;\n// }\nexport type Operation = JsonOperation;\nexport class PatchJson {\n constructor(private patch: Operation[]) {\n }\n\n apply(obj: any) {\n obj = jsonpatch.applyPatch(obj, this.patch).newDocument;\n return obj;\n // switch (this.body.op) {\n // case OP.test:\n // return obj[this.body.path!] === this.body.value;\n // case OP.remove:\n // delete obj[this.body.path!];\n // return true;\n // case OP.add:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.replace:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.move:\n // obj[this.body.path!] = obj[this.body.from!];\n // delete obj[this.body.from!];\n // return true;\n // case OP.copy:\n // obj[this.body.path!] = obj[this.body.from!];\n // return true;\n // }\n }\n}\n", "import { Resolver } from './Resolver';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Resource } from '../models/datas/Resource';\nimport { Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';\n\n@Sim\nexport class ResourceResolver implements Resolver {\n resolve(data: string | undefined, rr: RequestResponse): Promise<void> {\n return new Resource(data ?? rr).write(rr);\n }\n}"],
5
+ "mappings": "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",
6
+ "names": ["HttpHeaders", "import_ConvertUtils", "CoreConvertUtils", "mime", "HttpMethod", "UrlMappingSituationType", "process", "propertyKey", "descriptor", "HttpStatus", "Mimes", "import_ReflectUtils", "import_url", "InjectSituationType", "HttpsServer", "HttpServer", "it", "data", "import_FileUtils", "import_ConvertUtils", "import_RandomUtils", "path", "path", "fs", "mime", "import_fs", "import_path", "import_mime_types", "path", "mime", "fs", "jsonpatch"]
7
+ }
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "@dooboostore/simple-boot-http-server",
3
- "version": "1.0.17",
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
3
+ "version": "1.0.18",
6
4
  "license": "MIT",
5
+ "type": "module",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.js",
8
+ "types": "./dist/esm/index.d.ts",
7
9
  "description": "back end http server frameworks",
8
10
  "files": [
9
11
  "dist"
10
12
  ],
11
- "publishConfig": {
12
- "access": "public"
13
- },
14
13
  "keywords": [
15
14
  "front",
16
15
  "spa",
@@ -32,6 +31,9 @@
32
31
  "require": "./dist/cjs/*.js"
33
32
  }
34
33
  },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
35
37
  "author": "dooboostore <dooboostore@gmail.com> (https://github.com/dooboostore)",
36
38
  "contributors": [
37
39
  "sewoo <sewooimda@nate.com> (https://github.com/sewoo)",
@@ -54,11 +56,11 @@
54
56
  "fast-json-patch": "^3.1.0",
55
57
  "mime-types": "^2.1.34",
56
58
  "node-gzip": "^1.1.2",
57
- "@dooboostore/core": "1.0.15",
58
- "@dooboostore/dom-render": "1.0.104",
59
- "@dooboostore/core-node": "1.0.3",
60
- "@dooboostore/core-web": "1.0.2",
61
- "@dooboostore/simple-boot": "1.0.45"
59
+ "@dooboostore/core": "1.0.17",
60
+ "@dooboostore/core-node": "1.0.5",
61
+ "@dooboostore/core-web": "1.0.4",
62
+ "@dooboostore/simple-boot": "1.0.47",
63
+ "@dooboostore/dom-render": "1.0.106"
62
64
  },
63
65
  "devDependencies": {
64
66
  "@babel/core": "^7.24.0",
@@ -79,19 +81,20 @@
79
81
  "tslib": "^2.8.1",
80
82
  "@types/node": "^20",
81
83
  "typescript": "^5.9.2",
82
- "@types/node-gzip": "^1.1.0"
84
+ "@types/node-gzip": "^1.1.0",
85
+ "esbuild": "^0.23.0"
83
86
  },
84
87
  "scripts": {
85
88
  "clean": "rm -rf dist",
86
- "build:esm": "webpack --config webpack.config.esm.cjs && tsc -p tsconfig.esm.json --emitDeclarationOnly",
87
- "watch:esm": "webpack --config webpack.config.esm.cjs --watch",
88
- "build:cjs": "webpack --config webpack.config.cjs.cjs && tsc -p tsconfig.cjs.json --emitDeclarationOnly && cp package.cjs.json dist/cjs/package.json",
89
- "watch:cjs": "webpack --config webpack.config.cjs.cjs --watch",
90
- "build": "pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:umd-bundle && pnpm run build:esm-bundle",
91
- "build:umd-bundle": "webpack --config webpack.config.umd-bundle.cjs",
92
- "watch:umd": "webpack --config webpack.config.umd-bundle.cjs --watch",
93
- "build:esm-bundle": "webpack --config webpack.config.esm-bundle.cjs",
94
- "watch:esm-bundle": "webpack --config webpack.config.esm-bundle.cjs --watch",
89
+ "build:esm": "node build.mjs esm && pnpm exec tsc -p tsconfig.esm.json --emitDeclarationOnly",
90
+ "watch:esm": "node build.mjs esm --watch",
91
+ "build:cjs": "node build.mjs cjs && pnpm exec tsc -p tsconfig.cjs.json --emitDeclarationOnly && cp package.cjs.json dist/cjs/package.json",
92
+ "watch:cjs": "node build.mjs cjs --watch",
93
+ "build": "node build.mjs all && pnpm exec tsc -p tsconfig.esm.json --emitDeclarationOnly && pnpm exec tsc -p tsconfig.cjs.json --emitDeclarationOnly && cp package.cjs.json dist/cjs/package.json",
94
+ "build:umd-bundle": "node build.mjs umd-bundle",
95
+ "watch:umd": "node build.mjs umd-bundle --watch",
96
+ "build:esm-bundle": "node build.mjs esm-bundle",
97
+ "watch:esm-bundle": "node build.mjs esm-bundle --watch",
95
98
  "publish:npm": "pnpm run build && cp package.json package.json.back && pnpm pack && TARBALL_NAME=$(ls dooboostore-simple-boot-http-server-*.tgz | head -n 1) && tar -xzf \"$TARBALL_NAME\" -C . --strip-components=1 package/package.json && rm \"$TARBALL_NAME\" && (pnpm publish --no-git-checks || true) && cp package.json.back package.json && rm -rf package.json.back ",
96
99
  "typecheck": "tsc --noEmit",
97
100
  "test": "echo test"
@@ -1,20 +0,0 @@
1
- /*! *****************************************************************************
2
- Copyright (C) Microsoft. All rights reserved.
3
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
- this file except in compliance with the License. You may obtain a copy of the
5
- License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
- MERCHANTABLITY OR NON-INFRINGEMENT.
11
-
12
- See the Apache Version 2.0 License for specific language governing permissions
13
- and limitations under the License.
14
- ***************************************************************************** */
15
-
16
- /*! For license information please see Inject.js.LICENSE.txt */
17
-
18
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
19
-
20
- /*! For license information please see SimpleApplication.js.LICENSE.txt */
@@ -1,16 +0,0 @@
1
- /*! *****************************************************************************
2
- Copyright (C) Microsoft. All rights reserved.
3
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
- this file except in compliance with the License. You may obtain a copy of the
5
- License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
- MERCHANTABLITY OR NON-INFRINGEMENT.
11
-
12
- See the Apache Version 2.0 License for specific language governing permissions
13
- and limitations under the License.
14
- ***************************************************************************** */
15
-
16
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
@@ -1,16 +0,0 @@
1
- /*! *****************************************************************************
2
- Copyright (C) Microsoft. All rights reserved.
3
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
- this file except in compliance with the License. You may obtain a copy of the
5
- License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
- MERCHANTABLITY OR NON-INFRINGEMENT.
11
-
12
- See the Apache Version 2.0 License for specific language governing permissions
13
- and limitations under the License.
14
- ***************************************************************************** */
15
-
16
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
@@ -1,16 +0,0 @@
1
- /*! *****************************************************************************
2
- Copyright (C) Microsoft. All rights reserved.
3
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
- this file except in compliance with the License. You may obtain a copy of the
5
- License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
- MERCHANTABLITY OR NON-INFRINGEMENT.
11
-
12
- See the Apache Version 2.0 License for specific language governing permissions
13
- and limitations under the License.
14
- ***************************************************************************** */
15
-
16
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
@@ -1,13 +0,0 @@
1
- /*!
2
- * mime-db
3
- * Copyright(c) 2014 Jonathan Ong
4
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
5
- * MIT Licensed
6
- */
7
-
8
- /*!
9
- * mime-types
10
- * Copyright(c) 2014 Jonathan Ong
11
- * Copyright(c) 2015 Douglas Christopher Wilson
12
- * MIT Licensed
13
- */
@@ -1,30 +0,0 @@
1
- /*!
2
- * mime-db
3
- * Copyright(c) 2014 Jonathan Ong
4
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
5
- * MIT Licensed
6
- */
7
-
8
- /*!
9
- * mime-types
10
- * Copyright(c) 2014 Jonathan Ong
11
- * Copyright(c) 2015 Douglas Christopher Wilson
12
- * MIT Licensed
13
- */
14
-
15
- /*! *****************************************************************************
16
- Copyright (C) Microsoft. All rights reserved.
17
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
18
- this file except in compliance with the License. You may obtain a copy of the
19
- License at http://www.apache.org/licenses/LICENSE-2.0
20
-
21
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
22
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
23
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
24
- MERCHANTABLITY OR NON-INFRINGEMENT.
25
-
26
- See the Apache Version 2.0 License for specific language governing permissions
27
- and limitations under the License.
28
- ***************************************************************************** */
29
-
30
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
@@ -1,46 +0,0 @@
1
- /*!
2
- * https://github.com/Starcounter-Jack/JSON-Patch
3
- * (c) 2017-2021 Joachim Wester
4
- * MIT license
5
- */
6
-
7
- /*!
8
- * https://github.com/Starcounter-Jack/JSON-Patch
9
- * (c) 2017-2022 Joachim Wester
10
- * MIT licensed
11
- */
12
-
13
- /*!
14
- * mime-db
15
- * Copyright(c) 2014 Jonathan Ong
16
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
17
- * MIT Licensed
18
- */
19
-
20
- /*!
21
- * mime-types
22
- * Copyright(c) 2014 Jonathan Ong
23
- * Copyright(c) 2015 Douglas Christopher Wilson
24
- * MIT Licensed
25
- */
26
-
27
- /*! *****************************************************************************
28
- Copyright (C) Microsoft. All rights reserved.
29
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
30
- this file except in compliance with the License. You may obtain a copy of the
31
- License at http://www.apache.org/licenses/LICENSE-2.0
32
-
33
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
34
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
35
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
36
- MERCHANTABLITY OR NON-INFRINGEMENT.
37
-
38
- See the Apache Version 2.0 License for specific language governing permissions
39
- and limitations under the License.
40
- ***************************************************************************** */
41
-
42
- /*! For license information please see Inject.js.LICENSE.txt */
43
-
44
- /*! For license information please see ReflectUtils.js.LICENSE.txt */
45
-
46
- /*! For license information please see SimpleApplication.js.LICENSE.txt */