@dooboostore/simple-boot-http-server 1.0.19 → 1.0.21

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 (288) hide show
  1. package/README.MD +24 -248
  2. package/dist/cjs/SimpleBootHttpServer.js +2 -4
  3. package/dist/cjs/SimpleBootHttpServer.js.map +2 -2
  4. package/dist/cjs/bundle-entry.js +44 -0
  5. package/dist/cjs/bundle-entry.js.map +7 -0
  6. package/dist/cjs/codes/HttpHeaders.js +42 -42
  7. package/dist/cjs/codes/HttpHeaders.js.map +3 -3
  8. package/dist/cjs/errors/HttpError.js +1 -5
  9. package/dist/cjs/errors/HttpError.js.map +1 -1
  10. package/dist/cjs/filters/CacheFilter.js +4 -3
  11. package/dist/cjs/filters/CacheFilter.js.map +1 -1
  12. package/dist/cjs/filters/OpenApi3Filter.js +0 -1
  13. package/dist/cjs/filters/OpenApi3Filter.js.map +1 -1
  14. package/dist/cjs/index.js.map +2 -2
  15. package/dist/cjs/models/RequestResponse.js +0 -5
  16. package/dist/cjs/models/RequestResponse.js.map +2 -2
  17. package/dist/cjs/models/datas/ReqHeader.js +0 -63
  18. package/dist/cjs/models/datas/ReqHeader.js.map +1 -1
  19. package/dist/cjs/option/HttpServerOption.js +6 -13
  20. package/dist/cjs/option/HttpServerOption.js.map +1 -1
  21. package/dist/cjs/package.json +2 -0
  22. package/dist/cjs/session/SessionManager.js +1 -2
  23. package/dist/cjs/session/SessionManager.js.map +1 -1
  24. package/dist/esm/SimpleBootHttpServer.js +2 -4
  25. package/dist/esm/SimpleBootHttpServer.js.map +2 -2
  26. package/dist/esm/bundle-entry.js +13 -0
  27. package/dist/esm/bundle-entry.js.map +7 -0
  28. package/dist/esm/codes/HttpHeaders.js +42 -42
  29. package/dist/esm/codes/HttpHeaders.js.map +3 -3
  30. package/dist/esm/errors/HttpError.js +1 -5
  31. package/dist/esm/errors/HttpError.js.map +1 -1
  32. package/dist/esm/filters/CacheFilter.js +4 -3
  33. package/dist/esm/filters/CacheFilter.js.map +1 -1
  34. package/dist/esm/filters/OpenApi3Filter.js +0 -1
  35. package/dist/esm/filters/OpenApi3Filter.js.map +1 -1
  36. package/dist/esm/index.js.map +2 -2
  37. package/dist/esm/models/RequestResponse.js +0 -5
  38. package/dist/esm/models/RequestResponse.js.map +2 -2
  39. package/dist/esm/models/datas/ReqHeader.js +0 -63
  40. package/dist/esm/models/datas/ReqHeader.js.map +1 -1
  41. package/dist/esm/option/HttpServerOption.js +6 -13
  42. package/dist/esm/option/HttpServerOption.js.map +1 -1
  43. package/dist/esm/session/SessionManager.js +1 -2
  44. package/dist/esm/session/SessionManager.js.map +1 -1
  45. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +15391 -3
  46. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  47. package/dist/{cjs → types}/SimpleBootHttpServer.d.ts +1 -2
  48. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -0
  49. package/dist/types/bundle-entry.d.ts +13 -0
  50. package/dist/types/bundle-entry.d.ts.map +1 -0
  51. package/dist/types/codes/HttpHeaders.d.ts +43 -0
  52. package/dist/types/codes/HttpHeaders.d.ts.map +1 -0
  53. package/dist/types/index.d.ts +41 -0
  54. package/dist/{esm → types}/index.d.ts.map +1 -1
  55. package/dist/{esm → types}/models/RequestResponse.d.ts +7 -7
  56. package/dist/types/models/RequestResponse.d.ts.map +1 -0
  57. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +15384 -7
  58. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  59. package/package.json +28 -16
  60. package/src/SimpleBootHttpServer.ts +329 -0
  61. package/src/bundle-entry.ts +12 -0
  62. package/src/codes/HttpHeaders.ts +43 -0
  63. package/src/codes/HttpMethod.ts +11 -0
  64. package/{dist/esm/codes/HttpStatus.d.ts → src/codes/HttpStatus.ts} +2 -2
  65. package/src/codes/Mimes.ts +27 -0
  66. package/{dist/esm/codes/index.d.ts → src/codes/index.ts} +0 -1
  67. package/src/decorators/MethodMapping.ts +233 -0
  68. package/src/decorators/index.ts +1 -0
  69. package/src/endpoints/CrossDomainHeaderEndPoint.ts +38 -0
  70. package/src/endpoints/EndPoint.ts +7 -0
  71. package/src/endpoints/HeaderEndPoint.ts +17 -0
  72. package/{dist/esm/endpoints/index.d.ts → src/endpoints/index.ts} +0 -1
  73. package/src/errors/BadRequestError.ts +8 -0
  74. package/src/errors/ForbiddenError.ts +8 -0
  75. package/src/errors/HttpError.ts +14 -0
  76. package/src/errors/InternalServerError.ts +8 -0
  77. package/src/errors/NotFoundError.ts +8 -0
  78. package/src/errors/UnauthorizedError.ts +8 -0
  79. package/{dist/esm/errors/index.d.ts → src/errors/index.ts} +0 -1
  80. package/src/filters/CacheFilter.ts +169 -0
  81. package/src/filters/Filter.ts +10 -0
  82. package/src/filters/HttpStatusFilter.ts +24 -0
  83. package/src/filters/OpenApi3Filter.ts +158 -0
  84. package/src/filters/ResourceFilter.ts +72 -0
  85. package/src/filters/ThrowFilter.ts +23 -0
  86. package/{dist/esm/filters/index.d.ts → src/filters/index.ts} +0 -1
  87. package/src/index.ts +13 -0
  88. package/src/inject/InjectSituationType.ts +3 -0
  89. package/{dist/esm/inject/index.d.ts → src/inject/index.ts} +0 -1
  90. package/src/lifecycle/OnInit.ts +5 -0
  91. package/src/lifecycle/index.ts +1 -0
  92. package/src/models/RequestResponse.ts +658 -0
  93. package/src/models/datas/HeaderData.ts +4 -0
  94. package/src/models/datas/MultipartData.ts +27 -0
  95. package/{dist/esm/models/datas/ReqHeader.d.ts → src/models/datas/ReqHeader.ts} +5 -4
  96. package/src/models/datas/Resource.ts +44 -0
  97. package/src/models/datas/body/ReqFormUrlBody.ts +3 -0
  98. package/src/models/datas/body/ReqJsonBody.ts +3 -0
  99. package/src/models/datas/body/ReqMultipartFormBody.ts +6 -0
  100. package/{dist/esm/models/index.d.ts → src/models/index.ts} +0 -1
  101. package/src/models/method/patch/PatchJson.ts +46 -0
  102. package/src/option/HttpServerOption.ts +81 -0
  103. package/{dist/esm/option/index.d.ts → src/option/index.ts} +0 -1
  104. package/src/resolvers/Resolver.ts +5 -0
  105. package/src/resolvers/ResourceResolver.ts +11 -0
  106. package/{dist/esm/resolvers/index.d.ts → src/resolvers/index.ts} +0 -1
  107. package/src/session/SessionManager.ts +89 -0
  108. package/src/session/index.ts +1 -0
  109. package/tsconfig.json +23 -0
  110. package/dist/cjs/SimpleBootHttpServer.d.ts.map +0 -1
  111. package/dist/cjs/codes/HttpHeaders.d.ts +0 -42
  112. package/dist/cjs/codes/HttpHeaders.d.ts.map +0 -1
  113. package/dist/cjs/index.d.ts +0 -3
  114. package/dist/cjs/index.d.ts.map +0 -1
  115. package/dist/cjs/models/RequestResponse.d.ts +0 -100
  116. package/dist/cjs/models/RequestResponse.d.ts.map +0 -1
  117. package/dist/esm/SimpleBootHttpServer.d.ts +0 -15
  118. package/dist/esm/SimpleBootHttpServer.d.ts.map +0 -1
  119. package/dist/esm/codes/HttpHeaders.d.ts +0 -42
  120. package/dist/esm/codes/HttpHeaders.d.ts.map +0 -1
  121. package/dist/esm/codes/HttpMethod.d.ts +0 -12
  122. package/dist/esm/codes/HttpMethod.d.ts.map +0 -1
  123. package/dist/esm/codes/HttpStatus.d.ts.map +0 -1
  124. package/dist/esm/codes/Mimes.d.ts +0 -28
  125. package/dist/esm/codes/Mimes.d.ts.map +0 -1
  126. package/dist/esm/codes/index.d.ts.map +0 -1
  127. package/dist/esm/decorators/MethodMapping.d.ts +0 -73
  128. package/dist/esm/decorators/MethodMapping.d.ts.map +0 -1
  129. package/dist/esm/decorators/index.d.ts +0 -2
  130. package/dist/esm/decorators/index.d.ts.map +0 -1
  131. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -16
  132. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -1
  133. package/dist/esm/endpoints/EndPoint.d.ts +0 -7
  134. package/dist/esm/endpoints/EndPoint.d.ts.map +0 -1
  135. package/dist/esm/endpoints/HeaderEndPoint.d.ts +0 -12
  136. package/dist/esm/endpoints/HeaderEndPoint.d.ts.map +0 -1
  137. package/dist/esm/endpoints/index.d.ts.map +0 -1
  138. package/dist/esm/errors/BadRequestError.d.ts +0 -8
  139. package/dist/esm/errors/BadRequestError.d.ts.map +0 -1
  140. package/dist/esm/errors/ForbiddenError.d.ts +0 -8
  141. package/dist/esm/errors/ForbiddenError.d.ts.map +0 -1
  142. package/dist/esm/errors/HttpError.d.ts +0 -12
  143. package/dist/esm/errors/HttpError.d.ts.map +0 -1
  144. package/dist/esm/errors/InternalServerError.d.ts +0 -8
  145. package/dist/esm/errors/InternalServerError.d.ts.map +0 -1
  146. package/dist/esm/errors/NotFoundError.d.ts +0 -8
  147. package/dist/esm/errors/NotFoundError.d.ts.map +0 -1
  148. package/dist/esm/errors/UnauthorizedError.d.ts +0 -8
  149. package/dist/esm/errors/UnauthorizedError.d.ts.map +0 -1
  150. package/dist/esm/errors/index.d.ts.map +0 -1
  151. package/dist/esm/filters/CacheFilter.d.ts +0 -45
  152. package/dist/esm/filters/CacheFilter.d.ts.map +0 -1
  153. package/dist/esm/filters/Filter.d.ts +0 -17
  154. package/dist/esm/filters/Filter.d.ts.map +0 -1
  155. package/dist/esm/filters/HttpStatusFilter.d.ts +0 -20
  156. package/dist/esm/filters/HttpStatusFilter.d.ts.map +0 -1
  157. package/dist/esm/filters/OpenApi3Filter.d.ts +0 -142
  158. package/dist/esm/filters/OpenApi3Filter.d.ts.map +0 -1
  159. package/dist/esm/filters/ResourceFilter.d.ts +0 -24
  160. package/dist/esm/filters/ResourceFilter.d.ts.map +0 -1
  161. package/dist/esm/filters/ThrowFilter.d.ts +0 -19
  162. package/dist/esm/filters/ThrowFilter.d.ts.map +0 -1
  163. package/dist/esm/filters/index.d.ts.map +0 -1
  164. package/dist/esm/index.d.ts +0 -3
  165. package/dist/esm/inject/InjectSituationType.d.ts +0 -4
  166. package/dist/esm/inject/InjectSituationType.d.ts.map +0 -1
  167. package/dist/esm/inject/index.d.ts.map +0 -1
  168. package/dist/esm/lifecycle/OnInit.d.ts +0 -5
  169. package/dist/esm/lifecycle/OnInit.d.ts.map +0 -1
  170. package/dist/esm/lifecycle/index.d.ts +0 -2
  171. package/dist/esm/lifecycle/index.d.ts.map +0 -1
  172. package/dist/esm/models/RequestResponse.d.ts.map +0 -1
  173. package/dist/esm/models/datas/HeaderData.d.ts +0 -10
  174. package/dist/esm/models/datas/HeaderData.d.ts.map +0 -1
  175. package/dist/esm/models/datas/MultipartData.d.ts +0 -12
  176. package/dist/esm/models/datas/MultipartData.d.ts.map +0 -1
  177. package/dist/esm/models/datas/ReqHeader.d.ts.map +0 -1
  178. package/dist/esm/models/datas/Resource.d.ts +0 -11
  179. package/dist/esm/models/datas/Resource.d.ts.map +0 -1
  180. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts +0 -4
  181. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts.map +0 -1
  182. package/dist/esm/models/datas/body/ReqJsonBody.d.ts +0 -4
  183. package/dist/esm/models/datas/body/ReqJsonBody.d.ts.map +0 -1
  184. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts +0 -6
  185. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -1
  186. package/dist/esm/models/index.d.ts.map +0 -1
  187. package/dist/esm/models/method/patch/PatchJson.d.ts +0 -8
  188. package/dist/esm/models/method/patch/PatchJson.d.ts.map +0 -1
  189. package/dist/esm/option/HttpServerOption.d.ts +0 -83
  190. package/dist/esm/option/HttpServerOption.d.ts.map +0 -1
  191. package/dist/esm/option/index.d.ts.map +0 -1
  192. package/dist/esm/resolvers/Resolver.d.ts +0 -5
  193. package/dist/esm/resolvers/Resolver.d.ts.map +0 -1
  194. package/dist/esm/resolvers/ResourceResolver.d.ts +0 -6
  195. package/dist/esm/resolvers/ResourceResolver.d.ts.map +0 -1
  196. package/dist/esm/resolvers/index.d.ts.map +0 -1
  197. package/dist/esm/session/SessionManager.d.ts +0 -57
  198. package/dist/esm/session/SessionManager.d.ts.map +0 -1
  199. package/dist/esm/session/index.d.ts +0 -2
  200. package/dist/esm/session/index.d.ts.map +0 -1
  201. /package/dist/{cjs → types}/codes/HttpMethod.d.ts +0 -0
  202. /package/dist/{cjs → types}/codes/HttpMethod.d.ts.map +0 -0
  203. /package/dist/{cjs → types}/codes/HttpStatus.d.ts +0 -0
  204. /package/dist/{cjs → types}/codes/HttpStatus.d.ts.map +0 -0
  205. /package/dist/{cjs → types}/codes/Mimes.d.ts +0 -0
  206. /package/dist/{cjs → types}/codes/Mimes.d.ts.map +0 -0
  207. /package/dist/{cjs → types}/codes/index.d.ts +0 -0
  208. /package/dist/{cjs → types}/codes/index.d.ts.map +0 -0
  209. /package/dist/{cjs → types}/decorators/MethodMapping.d.ts +0 -0
  210. /package/dist/{cjs → types}/decorators/MethodMapping.d.ts.map +0 -0
  211. /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
  212. /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
  213. /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -0
  214. /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -0
  215. /package/dist/{cjs → types}/endpoints/EndPoint.d.ts +0 -0
  216. /package/dist/{cjs → types}/endpoints/EndPoint.d.ts.map +0 -0
  217. /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts +0 -0
  218. /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts.map +0 -0
  219. /package/dist/{cjs → types}/endpoints/index.d.ts +0 -0
  220. /package/dist/{cjs → types}/endpoints/index.d.ts.map +0 -0
  221. /package/dist/{cjs → types}/errors/BadRequestError.d.ts +0 -0
  222. /package/dist/{cjs → types}/errors/BadRequestError.d.ts.map +0 -0
  223. /package/dist/{cjs → types}/errors/ForbiddenError.d.ts +0 -0
  224. /package/dist/{cjs → types}/errors/ForbiddenError.d.ts.map +0 -0
  225. /package/dist/{cjs → types}/errors/HttpError.d.ts +0 -0
  226. /package/dist/{cjs → types}/errors/HttpError.d.ts.map +0 -0
  227. /package/dist/{cjs → types}/errors/InternalServerError.d.ts +0 -0
  228. /package/dist/{cjs → types}/errors/InternalServerError.d.ts.map +0 -0
  229. /package/dist/{cjs → types}/errors/NotFoundError.d.ts +0 -0
  230. /package/dist/{cjs → types}/errors/NotFoundError.d.ts.map +0 -0
  231. /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts +0 -0
  232. /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts.map +0 -0
  233. /package/dist/{cjs → types}/errors/index.d.ts +0 -0
  234. /package/dist/{cjs → types}/errors/index.d.ts.map +0 -0
  235. /package/dist/{cjs → types}/filters/CacheFilter.d.ts +0 -0
  236. /package/dist/{cjs → types}/filters/CacheFilter.d.ts.map +0 -0
  237. /package/dist/{cjs → types}/filters/Filter.d.ts +0 -0
  238. /package/dist/{cjs → types}/filters/Filter.d.ts.map +0 -0
  239. /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts +0 -0
  240. /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts.map +0 -0
  241. /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts +0 -0
  242. /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts.map +0 -0
  243. /package/dist/{cjs → types}/filters/ResourceFilter.d.ts +0 -0
  244. /package/dist/{cjs → types}/filters/ResourceFilter.d.ts.map +0 -0
  245. /package/dist/{cjs → types}/filters/ThrowFilter.d.ts +0 -0
  246. /package/dist/{cjs → types}/filters/ThrowFilter.d.ts.map +0 -0
  247. /package/dist/{cjs → types}/filters/index.d.ts +0 -0
  248. /package/dist/{cjs → types}/filters/index.d.ts.map +0 -0
  249. /package/dist/{cjs → types}/inject/InjectSituationType.d.ts +0 -0
  250. /package/dist/{cjs → types}/inject/InjectSituationType.d.ts.map +0 -0
  251. /package/dist/{cjs → types}/inject/index.d.ts +0 -0
  252. /package/dist/{cjs → types}/inject/index.d.ts.map +0 -0
  253. /package/dist/{cjs → types}/lifecycle/OnInit.d.ts +0 -0
  254. /package/dist/{cjs → types}/lifecycle/OnInit.d.ts.map +0 -0
  255. /package/dist/{cjs → types}/lifecycle/index.d.ts +0 -0
  256. /package/dist/{cjs → types}/lifecycle/index.d.ts.map +0 -0
  257. /package/dist/{cjs → types}/models/datas/HeaderData.d.ts +0 -0
  258. /package/dist/{cjs → types}/models/datas/HeaderData.d.ts.map +0 -0
  259. /package/dist/{cjs → types}/models/datas/MultipartData.d.ts +0 -0
  260. /package/dist/{cjs → types}/models/datas/MultipartData.d.ts.map +0 -0
  261. /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts +0 -0
  262. /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts.map +0 -0
  263. /package/dist/{cjs → types}/models/datas/Resource.d.ts +0 -0
  264. /package/dist/{cjs → types}/models/datas/Resource.d.ts.map +0 -0
  265. /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts +0 -0
  266. /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts.map +0 -0
  267. /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts +0 -0
  268. /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts.map +0 -0
  269. /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts +0 -0
  270. /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -0
  271. /package/dist/{cjs → types}/models/index.d.ts +0 -0
  272. /package/dist/{cjs → types}/models/index.d.ts.map +0 -0
  273. /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts +0 -0
  274. /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts.map +0 -0
  275. /package/dist/{cjs → types}/option/HttpServerOption.d.ts +0 -0
  276. /package/dist/{cjs → types}/option/HttpServerOption.d.ts.map +0 -0
  277. /package/dist/{cjs → types}/option/index.d.ts +0 -0
  278. /package/dist/{cjs → types}/option/index.d.ts.map +0 -0
  279. /package/dist/{cjs → types}/resolvers/Resolver.d.ts +0 -0
  280. /package/dist/{cjs → types}/resolvers/Resolver.d.ts.map +0 -0
  281. /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts +0 -0
  282. /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts.map +0 -0
  283. /package/dist/{cjs → types}/resolvers/index.d.ts +0 -0
  284. /package/dist/{cjs → types}/resolvers/index.d.ts.map +0 -0
  285. /package/dist/{cjs → types}/session/SessionManager.d.ts +0 -0
  286. /package/dist/{cjs → types}/session/SessionManager.d.ts.map +0 -0
  287. /package/dist/{cjs → types}/session/index.d.ts +0 -0
  288. /package/dist/{cjs → types}/session/index.d.ts.map +0 -0
package/README.MD CHANGED
@@ -1,262 +1,38 @@
1
- SIMPLE-BOOT-HTTP-SERVER
2
- ===
1
+ # @dooboostore/simple-boot-http-server
3
2
 
4
- ### A lightweight and powerful HTTP web server framework for Node.js.
5
- ![typescript](https://img.shields.io/badge/-typescript-black?logo=typescript) [![typescript](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/@dooboostore/simple-boot-http-server) [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE.md)
3
+ [![NPM version](https://img.shields.io/npm/v/@dooboostore/simple-boot-http-server.svg?style=flat-square)](https://www.npmjs.com/package/@dooboostore/simple-boot-http-server)
4
+ [![Build and Test](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml/badge.svg?branch=main)](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
6
6
 
7
- - **Declarative Routing**: Use decorators (`@Router`, `@Route`) to map URLs to classes and methods.
8
- - **HTTP Method Mapping**: Decorators for all standard HTTP methods (`@GET`, `@POST`, `@PUT`, `@DELETE`, etc.).
9
- - **Request/Response Handling**: A unified `RequestResponse` object to manage the HTTP transaction.
10
- - **Middleware/Filters**: Intercept requests and responses for cross-cutting concerns like logging, authentication, or CORS.
11
- - **Endpoints**: Define logic to be executed at different stages of the request lifecycle (e.g., on request start, close, or error).
12
- - **Global Exception Handling**: Centralized error handling using `@Sim` advice classes.
13
- - **Session Management**: Built-in session management with customizable storage providers.
14
- - **HTTPS and HTTP/2 Support**: Configure the server to run over HTTPS.
7
+ **Full Documentation:** [https://dooboostore-develop.github.io/packages/simple-boot-http-server](https://dooboostore-develop.github.io/packages/simple-boot-http-server)
15
8
 
16
- ### Dependencies
9
+ A lightweight and powerful HTTP web server framework for Node.js, built on `@dooboostore/simple-boot`.
17
10
 
18
- - **simple-boot**: The core dependency injection and application framework.
11
+ ---
19
12
 
20
- ## 🚀 Quick Start
13
+ ## Features
21
14
 
22
- ```
23
- npm init @dooboostore/simple-boot-http-server projectname
24
- cd projectname
25
- npm start
26
- ```
27
-
28
- # 😃 Examples
29
-
30
- - [More examples](./examples)
31
-
32
- ## URL & Method Mapping
33
-
34
- Simple Boot provides decorators for all standard HTTP methods to map incoming requests to your class methods. These are combined with `@Route` from `@dooboostore/simple-boot` to define endpoints.
35
-
36
- ### Available Method Decorators
37
-
38
- - `@GET`
39
- - `@POST`
40
- - `@PUT`
41
- - `@DELETE`
42
- - `@PATCH`
43
- - `@OPTIONS`
44
- - `@HEAD`
45
- - `@TRACE`
46
- - `@CONNECT`
47
- - `@UrlMapping`: A generic decorator where you can specify the method as a string.
48
-
49
- ### Example Usage
50
-
51
- ```typescript
52
- import { Sim, Router, Route, RouterModule } from '@dooboostore/simple-boot';
53
- import {
54
- GET, POST, PUT, DELETE,
55
- Mimes,
56
- RequestResponse,
57
- ReqJsonBody
58
- } from '@dooboostore/simple-boot-http-server';
59
-
60
- @Sim
61
- @Router({ path: '/api/items' })
62
- export class ItemApi {
63
-
64
- @Route({ path: '' })
65
- @GET({ res: { contentType: Mimes.ApplicationJson } })
66
- getAllItems() {
67
- // Logic to get all items
68
- return [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];
69
- }
70
-
71
- @Route({ path: '/{id}' })
72
- @GET({ res: { contentType: Mimes.ApplicationJson } })
73
- getItemById(routerModule: RouterModule) {
74
- const itemId = routerModule.pathData?.id;
75
- // Logic to get item by ID
76
- return { id: itemId, name: `Item ${itemId}` };
77
- }
78
-
79
- @Route({ path: '' })
80
- @POST({
81
- req: { contentType: [Mimes.ApplicationJson] },
82
- res: { status: 201, contentType: Mimes.ApplicationJson }
83
- })
84
- createItem(body: ReqJsonBody) {
85
- console.log('Creating new item:', body);
86
- // Logic to create a new item
87
- return { success: true, id: 3, ...body };
88
- }
89
-
90
- @Route({ path: '/{id}' })
91
- @PUT({ req: { contentType: [Mimes.ApplicationJson] } })
92
- updateItem(routerModule: RouterModule, body: ReqJsonBody) {
93
- const itemId = routerModule.pathData?.id;
94
- console.log(`Updating item ${itemId}:`, body);
95
- // Logic to update an item
96
- return { success: true, id: itemId, ...body };
97
- }
98
-
99
- @Route({ path: '/{id}' })
100
- @DELETE({ res: { status: 204 } })
101
- deleteItem(routerModule: RouterModule) {
102
- const itemId = routerModule.pathData?.id;
103
- console.log(`Deleting item ${itemId}`);
104
- // Logic to delete an item
105
- // No content returned for 204
106
- }
107
- }
108
- ```
109
-
110
- ### Decorator Options
111
-
112
- The method decorators accept a `MappingConfig` object to control request and response properties.
113
-
114
- ```typescript
115
- export type MappingConfig = {
116
- method: HttpMethod | string;
117
- description?: { name?: string; detail?: string; };
118
- req?: {
119
- contentType?: (Mimes | string)[];
120
- accept?: (Mimes | string)[];
121
- };
122
- res?: {
123
- status?: number;
124
- header?: { [key: string]: string };
125
- contentType?: Mimes | string;
126
- }
127
- resolver?: Resolver | ConstructorType<Resolver>;
128
- }
129
- ```
130
-
131
- ## Filters
132
-
133
- Filters allow you to intercept the request-response cycle. The `before` method runs before the route handler, and `after` runs after. Returning `false` from `before` will stop the chain.
134
-
135
- ```typescript
136
- import { Filter, RequestResponse, SimpleBootHttpServer } from '@dooboostore/simple-boot-http-server';
15
+ - **Declarative Routing**: Use decorators like `@Router`, `@Route`, `@GET`, `@POST`, etc., to map URL paths and HTTP methods directly to your controller methods.
16
+ - **Middleware via Filters**: Intercept the request-response cycle with `Filter` classes to implement cross-cutting concerns like logging, authentication, and CORS.
17
+ - **Lifecycle Endpoints**: Hook into the request lifecycle with `EndPoint` classes that run on request start, close, or error.
18
+ - **Integrated Exception Handling**: Leverage `@simple-boot`'s AOP capabilities to create robust global error handlers.
19
+ - **Built-in Session Management**: Easily manage user sessions with a built-in session manager and customizable storage.
20
+ - **HTTPS and HTTP/2 Support**: Secure your server with HTTPS and HTTP/2 configuration.
137
21
 
138
- export class LoggingFilter implements Filter {
139
- async before(rr: RequestResponse, app: SimpleBootHttpServer): Promise<boolean> {
140
- console.log(`[${new Date().toISOString()}] Received ${rr.reqMethod()} request for ${rr.reqUrl}`);
141
- return true; // Continue the chain
142
- }
22
+ ## Quick Start
143
23
 
144
- async after(rr: RequestResponse, app: SimpleBootHttpServer, sw: boolean): Promise<boolean> {
145
- console.log(`Request finished with status ${rr.resStatusCode()}`);
146
- return true;
147
- }
148
- }
149
-
150
- // In HttpServerOption
151
- const option = new HttpServerOption({
152
- filters: [LoggingFilter]
153
- });
154
- ```
155
-
156
- ## Global Advice & Exception Handling
157
-
158
- Define global exception handlers in an `Advice` class. This class is managed by `@Sim` and can catch errors thrown from anywhere in the application.
159
-
160
- ### Preventing `ERR_HTTP_HEADERS_SENT`
161
-
162
- A common issue in asynchronous frameworks is the `ERR_HTTP_HEADERS_SENT` error. This occurs when an error is thrown *after* a response has already been sent by another part of the application (like a filter). The global exception handler then tries to send a *second* response, causing a crash.
163
-
164
- To prevent this, **always check if a response has already been sent** before sending a new one from your exception handler. The `RequestResponse` object provides the `resIsDone()` method for this purpose.
165
-
166
- ```typescript
167
- import { Sim, ExceptionHandler, Inject, ExceptionHandlerSituationType } from '@dooboostore/simple-boot';
168
- import { RequestResponse, NotFoundError, HttpError, InternalServerError, Mimes, HttpStatus } from '@dooboostore/simple-boot-http-server';
169
-
170
- @Sim
171
- export class GlobalErrorHandler {
172
-
173
- @ExceptionHandler({ type: NotFoundError })
174
- handleNotFound(rr: RequestResponse, e: NotFoundError) {
175
- // Critical check
176
- if (rr.resIsDone()) {
177
- console.error(`Not found error for URL: ${rr.reqUrl}, but response already sent.`, e);
178
- return;
179
- }
180
- rr.resStatusCode(404).resSetHeader('X-Error-Message', 'Resource not found');
181
- console.error(`Not found error for URL: ${rr.reqUrl}`, e);
182
- rr.resEnd(JSON.stringify({ error: 'Resource not found' }));
183
- }
184
-
185
- @ExceptionHandler()
186
- async catch(@Inject({situationType: ExceptionHandlerSituationType.ERROR_OBJECT}) e: any, rr: RequestResponse) {
187
- console.error(`GlobalAdvice.catch ${rr.reqUrl}`, e);
188
-
189
- // Critical check to prevent writing to an already-sent response
190
- if (rr.resIsDone()) {
191
- return;
192
- }
193
-
194
- rr.resStatusCode(HttpStatus.InternalServerError);
195
- rr.resSetHeader('Content-Type', Mimes.ApplicationJson);
196
-
197
- let data = '';
198
- if (e instanceof HttpError) {
199
- rr.resStatusCode(e.status);
200
- data = JSON.stringify(e);
201
- } else if (e instanceof Error){
202
- const error = new InternalServerError();
203
- error.data = {message: e.message, stack: e.stack}; // Be careful with stack in production
204
- data = JSON.stringify(error);
205
- } else {
206
- const error = new InternalServerError();
207
- error.data = e;
208
- data = JSON.stringify(error);
209
- }
210
- await rr.resEnd(data);
211
- }
212
- }
213
-
214
- // In HttpServerOption
215
- const option = new HttpServerOption({
216
- globalAdvice: GlobalErrorHandler,
217
- noSuchRouteEndPointMappingThrow: (rr) => new NotFoundError({ message: `No route for ${rr.reqUrl}` }),
218
- });
219
- ```
220
-
221
- ## Endpoints
222
-
223
- Endpoints are hooks that run at specific points in the request lifecycle.
224
-
225
- - **`requestEndPoints`**: Run as soon as a request is received.
226
- - **`closeEndPoints`**: Run when the client connection is closed.
227
- - **`errorEndPoints`**: Run if an error occurs on the response stream.
228
-
229
- ```typescript
230
- import { EndPoint, RequestResponse, SimpleBootHttpServer } from '@dooboostore/simple-boot-http-server';
231
-
232
- @Sim
233
- class ConnectionLogger implements EndPoint {
234
- async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {
235
- console.log(`Connection closed for ${rr.reqRemoteAddress}`);
236
- }
237
- }
238
-
239
- // In HttpServerOption
240
- const option = new HttpServerOption({
241
- closeEndPoints: [ConnectionLogger]
242
- });
24
+ ```bash
25
+ npx @dooboostore/create-simple-boot-http-server my-server
26
+ cd my-server
27
+ npm start
243
28
  ```
244
29
 
245
- ## Session Management
246
-
247
- The server has built-in session management. It automatically creates a session ID cookie and provides a `SessionManager` to store and retrieve session data.
30
+ ## Learn More
248
31
 
249
- ```typescript
250
- import { RequestResponse } from '@dooboostore/simple-boot-http-server';
32
+ The detailed API documentation, including all decorators and usage examples, is available on our documentation website.
251
33
 
252
- // In a route handler
253
- async function handleSession(rr: RequestResponse) {
254
- const session = await rr.reqSession();
34
+ **[Explore the full @dooboostore/simple-boot-http-server documentation &raquo;](https://dooboostore-develop.github.io/packages/simple-boot-http-server)**
255
35
 
256
- let visitCount = session.visitCount || 0;
257
- visitCount++;
258
- session.visitCount = visitCount;
36
+ ## License
259
37
 
260
- return { message: `You have visited ${visitCount} times.` };
261
- }
262
- ```
38
+ This package is licensed under the [MIT License](https://opensource.org/licenses/MIT).
@@ -51,15 +51,13 @@ class SimpleBootHttpServer extends import_SimpleApplication.SimpleApplication {
51
51
  this.option = option;
52
52
  this.sessionManager = new import_SessionManager.SessionManager(this.option);
53
53
  }
54
- server;
55
- sessionManager;
56
54
  run(otherInstanceSim) {
57
- const simstanceManager = super.run(otherInstanceSim);
55
+ super.run(otherInstanceSim);
58
56
  const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];
59
57
  Promise.all(targets.map((it) => typeof it === "function" ? this.simstanceManager.getOrNewSim({ target: it }) : it).map((it) => it.onInit(this))).then((it) => {
60
58
  this.startServer();
61
59
  });
62
- return simstanceManager;
60
+ return this;
63
61
  }
64
62
  startServer() {
65
63
  if (this.option.serverOption && "key" in this.option.serverOption && "cert" in this.option.serverOption) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SimpleBootHttpServer.ts"],
4
- "sourcesContent": ["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 } 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 { SimstanceManager } from '@dooboostore/simple-boot/simstance/SimstanceManager';\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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["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 } 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 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 this;\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"],
5
+ "mappings": "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",
6
6
  "names": ["HttpsServer", "HttpServer", "it", "data"]
7
7
  }
@@ -0,0 +1,44 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var bundle_entry_exports = {};
16
+ module.exports = __toCommonJS(bundle_entry_exports);
17
+ __reExport(bundle_entry_exports, require("./codes"), module.exports);
18
+ __reExport(bundle_entry_exports, require("./decorators"), module.exports);
19
+ __reExport(bundle_entry_exports, require("./endpoints"), module.exports);
20
+ __reExport(bundle_entry_exports, require("./errors"), module.exports);
21
+ __reExport(bundle_entry_exports, require("./filters"), module.exports);
22
+ __reExport(bundle_entry_exports, require("./inject"), module.exports);
23
+ __reExport(bundle_entry_exports, require("./lifecycle"), module.exports);
24
+ __reExport(bundle_entry_exports, require("./models"), module.exports);
25
+ __reExport(bundle_entry_exports, require("./option"), module.exports);
26
+ __reExport(bundle_entry_exports, require("./resolvers"), module.exports);
27
+ __reExport(bundle_entry_exports, require("./session"), module.exports);
28
+ __reExport(bundle_entry_exports, require("./SimpleBootHttpServer"), module.exports);
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ ...require("./codes"),
32
+ ...require("./decorators"),
33
+ ...require("./endpoints"),
34
+ ...require("./errors"),
35
+ ...require("./filters"),
36
+ ...require("./inject"),
37
+ ...require("./lifecycle"),
38
+ ...require("./models"),
39
+ ...require("./option"),
40
+ ...require("./resolvers"),
41
+ ...require("./session"),
42
+ ...require("./SimpleBootHttpServer")
43
+ });
44
+ //# sourceMappingURL=bundle-entry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bundle-entry.ts"],
4
+ "sourcesContent": ["export * 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';\nexport * from './SimpleBootHttpServer';"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,iCAAc,oBAAd;AACA,iCAAc,yBADd;AAEA,iCAAc,wBAFd;AAGA,iCAAc,qBAHd;AAIA,iCAAc,sBAJd;AAKA,iCAAc,qBALd;AAMA,iCAAc,wBANd;AAOA,iCAAc,qBAPd;AAQA,iCAAc,qBARd;AASA,iCAAc,wBATd;AAUA,iCAAc,sBAVd;AAWA,iCAAc,mCAXd;",
6
+ "names": []
7
+ }
@@ -20,48 +20,48 @@ __export(HttpHeaders_exports, {
20
20
  HttpHeaders: () => HttpHeaders
21
21
  });
22
22
  module.exports = __toCommonJS(HttpHeaders_exports);
23
- var HttpHeaders = /* @__PURE__ */ ((HttpHeaders2) => {
24
- HttpHeaders2["ContentLength"] = "Content-Length";
25
- HttpHeaders2["ContentType"] = "Content-Type";
26
- HttpHeaders2["ContentEncoding"] = "Content-Encoding";
27
- HttpHeaders2["Accept"] = "Accept";
28
- HttpHeaders2["Authorization"] = "Authorization";
29
- HttpHeaders2["CacheControl"] = "Cache-Control";
30
- HttpHeaders2["Connection"] = "Connection";
31
- HttpHeaders2["Date"] = "Date";
32
- HttpHeaders2["Host"] = "Host";
33
- HttpHeaders2["Pragma"] = "Pragma";
34
- HttpHeaders2["Trailer"] = "Trailer";
35
- HttpHeaders2["TransferEncoding"] = "Transfer-Encoding";
36
- HttpHeaders2["Upgrade"] = "Upgrade";
37
- HttpHeaders2["Via"] = "Via";
38
- HttpHeaders2["Warning"] = "Warning";
39
- HttpHeaders2["AcceptCharset"] = "Accept-Charset";
40
- HttpHeaders2["AcceptEncoding"] = "Accept-Encoding";
41
- HttpHeaders2["AcceptLanguage"] = "Accept-Language";
42
- HttpHeaders2["AccessControlAllowOrigin"] = "Access-Control-Allow-Origin";
43
- HttpHeaders2["AccessControlAllowMethods"] = "Access-Control-Allow-Methods";
44
- HttpHeaders2["AccessControlAllowHeaders"] = "Access-Control-Allow-Headers";
45
- HttpHeaders2["AccessControlExposeHeaders"] = "Access-Control-Expose-Headers";
46
- HttpHeaders2["Expect"] = "Expect";
47
- HttpHeaders2["From"] = "From";
48
- HttpHeaders2["MaxForwards"] = "Max-Forwards";
49
- HttpHeaders2["Referer"] = "Referer";
50
- HttpHeaders2["UserAgent"] = "User-Agent";
51
- HttpHeaders2["Cookie"] = "Cookie";
52
- HttpHeaders2["SetCookie"] = "Set-Cookie";
53
- HttpHeaders2["Cookie2"] = "Cookie2";
54
- HttpHeaders2["SetCookie2"] = "Set-Cookie2";
55
- HttpHeaders2["Location"] = "Location";
56
- HttpHeaders2["IfModifiedSince"] = "If-Modified-Since";
57
- HttpHeaders2["IfUnmodifiedSince"] = "If-Unmodified-Since";
58
- HttpHeaders2["IfMatch"] = "If-Match";
59
- HttpHeaders2["IfNoneMatch"] = "If-None-Match";
60
- HttpHeaders2["IfRange"] = "If-Range";
61
- HttpHeaders2["Allow"] = "Allow";
62
- HttpHeaders2["Server"] = "Server";
63
- return HttpHeaders2;
64
- })(HttpHeaders || {});
23
+ const HttpHeaders = {
24
+ ContentLength: "Content-Length",
25
+ ContentType: "Content-Type",
26
+ ContentEncoding: "Content-Encoding",
27
+ Accept: "Accept",
28
+ Authorization: "Authorization",
29
+ CacheControl: "Cache-Control",
30
+ Connection: "Connection",
31
+ Date: "Date",
32
+ Host: "Host",
33
+ Pragma: "Pragma",
34
+ Trailer: "Trailer",
35
+ TransferEncoding: "Transfer-Encoding",
36
+ Upgrade: "Upgrade",
37
+ Via: "Via",
38
+ Warning: "Warning",
39
+ AcceptCharset: "Accept-Charset",
40
+ AcceptEncoding: "Accept-Encoding",
41
+ AcceptLanguage: "Accept-Language",
42
+ AccessControlAllowOrigin: "Access-Control-Allow-Origin",
43
+ AccessControlAllowMethods: "Access-Control-Allow-Methods",
44
+ AccessControlAllowHeaders: "Access-Control-Allow-Headers",
45
+ AccessControlExposeHeaders: "Access-Control-Expose-Headers",
46
+ Expect: "Expect",
47
+ From: "From",
48
+ MaxForwards: "Max-Forwards",
49
+ Referer: "Referer",
50
+ UserAgent: "User-Agent",
51
+ Cookie: "Cookie",
52
+ SetCookie: "Set-Cookie",
53
+ // SetHeader : 'Set-Header',
54
+ Cookie2: "Cookie2",
55
+ SetCookie2: "Set-Cookie2",
56
+ Location: "Location",
57
+ IfModifiedSince: "If-Modified-Since",
58
+ IfUnmodifiedSince: "If-Unmodified-Since",
59
+ IfMatch: "If-Match",
60
+ IfNoneMatch: "If-None-Match",
61
+ IfRange: "If-Range",
62
+ Allow: "Allow",
63
+ Server: "Server"
64
+ };
65
65
  // Annotate the CommonJS export names for ESM import in node:
66
66
  0 && (module.exports = {
67
67
  HttpHeaders
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codes/HttpHeaders.ts"],
4
- "sourcesContent": ["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}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACH,EAAAA,aAAA,mBAAgB;AAChB,EAAAA,aAAA,iBAAc;AACd,EAAAA,aAAA,qBAAkB;AAClB,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,mBAAgB;AAChB,EAAAA,aAAA,kBAAe;AACf,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,sBAAmB;AACnB,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,mBAAgB;AAChB,EAAAA,aAAA,oBAAiB;AACjB,EAAAA,aAAA,oBAAiB;AACjB,EAAAA,aAAA,8BAA2B;AAC3B,EAAAA,aAAA,+BAA4B;AAC5B,EAAAA,aAAA,+BAA4B;AAC5B,EAAAA,aAAA,gCAA6B;AAC7B,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,iBAAc;AACd,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,eAAY;AAEZ,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,qBAAkB;AAClB,EAAAA,aAAA,uBAAoB;AACpB,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,iBAAc;AACd,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,YAAS;AAxCD,SAAAA;AAAA,GAAA;",
6
- "names": ["HttpHeaders"]
4
+ "sourcesContent": ["export const 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}\nexport type HttpHeadersType = keyof typeof HttpHeaders;"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;AAAA,EACvB,eAAgB;AAAA,EAChB,aAAc;AAAA,EACd,iBAAkB;AAAA,EAClB,QAAS;AAAA,EACT,eAAgB;AAAA,EAChB,cAAe;AAAA,EACf,YAAa;AAAA,EACb,MAAO;AAAA,EACP,MAAO;AAAA,EACP,QAAS;AAAA,EACT,SAAU;AAAA,EACV,kBAAmB;AAAA,EACnB,SAAU;AAAA,EACV,KAAM;AAAA,EACN,SAAU;AAAA,EACV,eAAgB;AAAA,EAChB,gBAAiB;AAAA,EACjB,gBAAiB;AAAA,EACjB,0BAA2B;AAAA,EAC3B,2BAA4B;AAAA,EAC5B,2BAA4B;AAAA,EAC5B,4BAA6B;AAAA,EAC7B,QAAS;AAAA,EACT,MAAO;AAAA,EACP,aAAc;AAAA,EACd,SAAU;AAAA,EACV,WAAY;AAAA,EACZ,QAAS;AAAA,EACT,WAAY;AAAA;AAAA,EAEZ,SAAU;AAAA,EACV,YAAa;AAAA,EACb,UAAW;AAAA,EACX,iBAAkB;AAAA,EAClB,mBAAoB;AAAA,EACpB,SAAU;AAAA,EACV,aAAc;AAAA,EACd,SAAU;AAAA,EACV,OAAQ;AAAA,EACR,QAAS;AACb;",
6
+ "names": []
7
7
  }